systemd 명령어
systemd는 리눅스 시스템 및 서비스 매니저로 부팅 시 서비스의 시작 및 관리를 담당하며 시스템 자원과 프로세스를 제어합니다. systemctl 명령어를 사용하여 systemd 기반 시스템에서 서비스를 관리할 수 있습니다.
1. systemd와 systemctl의 기본 개념
- systemd : 리눅스에서 부팅 및 시스템 관리 작업을 제어하는 시스템 및 서비스 관리자.
- systemctl : systemd 서비스 및 유닛(unit)을 관리하기 위한 명령어.
2. 주요 systemctl 명령어
서비스 관리
서비스 시작
sudo systemctl start <서비스 이름>
서비스 중지
sudo systemctl stop <서비스 이름>
서비스 재시작
sudo systemctl restart <서비스 이름>
서비스 상태 확인
sudo systemctl status <서비스 이름>
서비스 활성화(부팅 시 자동 시작 설정)
sudo systemctl enable <서비스 이름>
서비스 비활성화(부팅 시 자동 시작 비활성화)
sudo systemctl disable <서비스 이름>
서비스 다시 로드(구성 파일 변경 사항 적용)
sudo systemctl reload <서비스 이름>
유닛(Unit) 파일 관리
유닛 다시 로드 : 변경된 유닛 파일을 다시 읽어들이는 명령어
sudo systemctl daemon-reload
시스템 재부팅 및 종료
시스템 재부팅
sudo systemctl reboot
시스템 종료
sudo systemctl poweroff
시스템 정지(전원은 끄지 않음)
sudo systemctl halt
시스템 Rescue 모드 전환
sudo systemctl rescue
시스템을 구동 중인 모든 유닛 상태 확인
sudo systemctl list-units
타이머 유닛 관리
타이머는 주기적인 작업을 예약하는 데 사용됩니다.
타이머 유닛 상태 확인
sudo systemctl list-timers
타이머 시작
sudo systemctl start <타이머 이름>
타이머 활성화
sudo systemctl enable <타이머 이름>
3. 유용한 systemctl 명령어
시스템을 구동 중인 모든 유닛 상태 확인
sudo systemctl list-units
UNIT | 시스템(systemd) 단위 이름 |
LOAD |
단위 정의가 제대로 로드되었는지 여부를 반영합니다.
|
ACTIVE | 상위 단위 활성화 상태, 즉 SUB의 일반화. |
SUB |
저수준 유닛 활성화 상태, 값은 유닛 유형에 따라 다릅니다.
|
DESCRIPTION | 단위가 무엇인지/하는 일에 대한 간단한 텍스트 설명입니다. |
전체 서비스 목록 확인
sudo systemctl list-units --type=service
활성화된 서비스만 확인
sudo systemctl list-units --type=service --state=active
systemctl list-units --all
systemctl list-units --all --state=inactive
systemctl list-units --type=service
모든 단위 파일(unit files) 나열
systemctl list-unit-files
4. journalctl 명령어
journalctl은 systemd에서 관리하는 로그를 확인할 수 있는 명령어입니다.
부팅 시부터 전체 로그 확인
journalctl
실시간 로그 스트리밍
journalctl -f
지정한 서비스 로그 확인
journalctl -u <서비스 이름>
최근 로그만 확인
journalctl -e
5. systemd 유닛(Unit) 종류
서비스 유닛 : .service 확장자로 끝나며 데몬 또는 백그라운드 서비스 관리
타이머 유닛 : .timer 확장자로 끝나며 주기적 작업 관리
타켓 유닛 : .target 확장자로 끝나며 시스템의 특정 상태를 정의
6. 사용 예시
NGINX 서비스 상태 확인
systemctl status nginx
MySQL 서비스를 시작하고 부팅 시 자동으로 시작되게 설정
sudo systemctl start mysqld
sudo systemctl enable mysqld
타이머 유닛 활성화
sudo systemctl enable example.timer
단위(unit) 관리
systemctl cat sshd.service
$ systemctl cat sshd.service
# /lib/systemd/system/ssh.service
[Unit]
Description=OpenBSD Secure Shell server
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run
[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd -t
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/usr/sbin/sshd -t
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
Alias=sshd.service
종속성 표시
systemctl list-dependencies sshd.service
단위(unit) 속성 확인
systemctl show sshd.service
단위(unit) 파일 편집
systemctl edit sshd.service
### Editing /etc/systemd/system/ssh.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
### Lines below this comment will be discarded
### /lib/systemd/system/ssh.service
# [Unit]
# Description=OpenBSD Secure Shell server
# Documentation=man:sshd(8) man:sshd_config(5)
# After=network.target auditd.service
# ConditionPathExists=!/etc/ssh/sshd_not_to_be_run
#
# [Service]
# EnvironmentFile=-/etc/default/ssh
# ExecStartPre=/usr/sbin/sshd -t
# ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
# ExecReload=/usr/sbin/sshd -t
# ExecReload=/bin/kill -HUP $MAINPID
# KillMode=process
# Restart=on-failure
# RestartPreventExitStatus=255
# Type=notify
# RuntimeDirectory=sshd
# RuntimeDirectoryMode=0755
#
# [Install]
# WantedBy=multi-user.target
# Alias=sshd.service
Editing "/etc/systemd/system/ssh.service.d/override.conf" canceled: temporary file is empty.
기본 target 가져오기 및 설정
systemctl get-default
$ systemctl get-default
graphical.target
systemctl set-default graphical.target
참고URL
- systemd 시스템 및 서비스 관리자 : https://www.freedesktop.org/wiki/Software/systemd/
- systemd 서비스 list : https://scbyun.com/457
- fedoraproject DOCS : https://docs.fedoraproject.org/en-US/quick-docs/understanding-and-administering-systemd/index.html
- How To Use Systemctl to Manage Systemd Services and Units : https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units
'리눅스' 카테고리의 다른 글
CentOS 7 Yum Repository 서버에 MariaDB Repository를 추가하는 방법 (0) | 2015.07.16 |
---|---|
ipcalc 명령어 (0) | 2015.06.30 |
CentOS 7에서 기본 저장소를 변경하는 방법 (0) | 2015.05.08 |
우분투에서 sysstat 설치 및 sar 명령어 사용 방법 (0) | 2015.04.29 |
Zabbix에서 Item과 Trigger를 설정하는 방법 (0) | 2015.04.21 |