unit type | 설명 |
---|---|
*.device | 시스템 장치 |
*.mount | 파일 시스템 마운트 포인트 |
*.automount | 파일 시스템 오토 마운트 포인트 |
*.path | 시스템에서 감시하는 경로 |
*.service | 시스템 서비스(daemon process) |
*.slice | 다른 유닛들에 사용되는 일부분 |
*.socket | 시스템에서 생성하는 소켓 |
*.swap | 스왑 공간 |
*.target | 유닛의 논리적 그룹 |
*.timer | 타이머 |
*.snapshot | 유저가 설정한 target |
% systemctl [option]
-t unittype
: unittype에 해당되는 유닛만 출력-a
: load되지 않은 유닛들도 출력--state==STATE
: 조건을 지정하여 출력-l
: long-format으로 보기jsg@jsg-ubuntu:~$ systemctl jsg@jsg-ubuntu:~$ systemctl -t service -a UNIT LOAD ACTIVE SUB DESCRIPTION accounts-daemon.service loaded active running Accounts Service acpid.service loaded active running ACPI event daemon alsa-restore.service loaded active exited Save/Restore Sound Card State ...
LOAD | ACTIVE | SUB |
---|---|---|
해당 유닛을 systemd가 인식했는지 | 유닛의 현재 상태 | ACTIVE의 low level 작동 |
- loaded : 메모리가 인식한 유닛 - not-found : 유닛을 찾지 못함 | - active : 동작중인 유닛 - in-active : 동작하지 않은 유닛 | - running : 프로세스가 작동 중 - excited : 프로세스가 성공의 종료 값을 리턴하고 종료됨 - dead : 프로세스가 알 수 없는 상태로 종료됨 - waiting : 다른 유닛의 이벤트를 기다리는 중 - listening : 소켓이 리스닝 상태임 - mounted : 파일 시스템이 마운트 됨 |
$ export SYSTEMD_PAGER=
로 환경변수 설정$ systemctl status [name]
... name값이 없으면 시스템 정보를 출력jsg@jsg-ubuntu:~$ systemctl status jsg-ubuntu State: running Jobs: 0 queued Failed: 0 units Since: 수 2020-12-16 17:05:46 KST; 5h 37min ago CGroup: / ├─user.slice │ └─user-1000.slice │ ├─user@1000.service │ │ └─init.scope │ │ ├─1620 /lib/systemd/systemd --user │ │ └─1621 (sd-pam) │ └─session-c2.scope │ ├─1259 lightdm --session-child 12 19 │ ├─1637 /usr/bin/gnome-keyring-daemon --daemonize --login │ ├─1639 /sbin/upstart --user │ ├─1721 upstart-udev-bridge --daemon --user ...
jsg@jsg-ubuntu:~$ systemctl status nginx ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-12-16 23:04:15 KST; 12s ago Main PID: 5670 (nginx) CGroup: /system.slice/nginx.service ├─5670 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─5671 nginx: worker process └─5672 nginx: worker process Dec 16 23:04:15 jsg-ubuntu systemd[1]: Starting A high performance web server and a reverse proxy server... Dec 16 23:04:15 jsg-ubuntu systemd[1]: Started A high performance web server and a reverse proxy server.
$ systemctl is-active name
: Active 상태인지 확인. Active면 exit code 0을 반환jsg@jsg-ubuntu:~$ systemctl is-active nginx active jsg@jsg-ubuntu:~$ echo $? 0
$ systemctl is-failed name
: 구동에 실패했는지 확인. 실패면 exit code 0 반환jsg@jsg-ubuntu:~$ systemctl is-failed nginx active jsg@jsg-ubuntu:~$ echo $? 1
# systemctl stop name
: 중지root@jsg-ubuntu:~# systemctl stop nginx root@jsg-ubuntu:~# systemctl is-active nginx inactive
# systemctl start name
: 시작root@jsg-ubuntu:~# systemctl start nginx root@jsg-ubuntu:~# systemctl is-active nginx active
# systemctl reset-failed
: failed된 유닛 재실행# systemctl kill name --signal=SIGNAL
root@jsg-ubuntu:~# systemctl kill nginx --signal=SIGABRT root@jsg-ubuntu:~# systemctl is-active nginx failed
# systemctl is-enabled name
: enable인지 확인. enable이면 exit code 0 반환# systemctl enable name
: enable 설정# systemctl enable --now name
: enable 설정하고 start시킴# systemctl disable name
: enable 해제$ systemctl -t target
: -a
옵션으로 inactive한 target도 볼수 있음
중요한 target으로는 multi-user.target(텍스트 모드) 와 graphical.target(X 윈도 모드)
jsg@jsg-ubuntu:~$ systemctl -t target UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System cryptsetup.target loaded active active Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network-online.target loaded active active Network is Online network-pre.target loaded active active Network (Pre) ...
# systemctl isolate target_name
$ systemctl get-default
: 기본값 보기jsg@jsg-ubuntu:~$ systemctl get-default graphical.target
# systemctl set-default target_name
: 기본값 변경root@jsg-ubuntu:~# systemctl set-default multi-user Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /lib/systemd/system/multi-user.target. root@jsg-ubuntu:~# systemctl get-default multi-user.target
$ systemcd-analyze
jsg@jsg-ubuntu:~$ systemd-analyze Startup finished in 3.676s (kernel) + 8.523s (userspace) = 12.200s
$ systemd-analyze blame
jsg@jsg-ubuntu:~$ systemd-analyze blame 5.519s NetworkManager-wait-online.service 3.352s fwupd.service 1.385s dev-sda1.device 775ms apparmor.service 395ms networking.service ...
$ systemd-analyze critical-chain
jsg@jsg-ubuntu:~$ systemd-analyze critical-chain graphical.target @6h 48min 16.386s └─multi-user.target @8.366s └─getty.target @8.366s └─getty@tty1.service @8.363s └─rc-local.service @8.339s +14ms └─network-online.target @8.336s └─NetworkManager-wait-online.service @2.816s +5.519s └─NetworkManager.service @2.494s +321ms └─dbus.service @2.355s └─basic.target @2.349s ...
$ systemd-analyze plot > svgfile.svg
$ systemctl -p LogLevel show
: 현재 로그 레벨jsg@jsg-ubuntu:~$ systemctl -p LogLevel show LogLevel=info
# systemd-analyze set-log-level <emerg|alert|crit|err|warning|notice|info|debug>
: 변경root@jsg-ubuntu:~# systemd-analyze set-log-level warning root@jsg-ubuntu:~# systemctl -p LogLevel show LogLevel=warning
# journalctl
: /run/log/journal-- Logs begin at 수 2020-12-16 17:05:47 KST, end at 목 2020-12-17 01:17:01 KST. -- 12월 16 17:05:47 jsg-ubuntu systemd-journald[323]: Runtime journal (/run/log/journal/) is 4.9M, max 39.2M, 34.3M free. 12월 16 17:05:47 jsg-ubuntu kernel: Linux version 4.15.0-112-generic (buildd@lcy01-amd64-021) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)) #113~16.04.1 12월 16 17:05:47 jsg-ubuntu kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.15.0-112-generic root=UUID=e65ee146-aea7-418b-8946-8993e297d5a6 ro quiet splash 12월 16 17:05:47 jsg-ubuntu kernel: KERNEL supported cpus: 12월 16 17:05:47 jsg-ubuntu kernel: Intel GenuineIntel 12월 16 17:05:47 jsg-ubuntu kernel: AMD AuthenticAMD 12월 16 17:05:47 jsg-ubuntu kernel: Centaur CentaurHauls 12월 16 17:05:47 jsg-ubuntu kernel: Disabled fast string operations ...
-n
: 최근 n개-f
: 실시간으로 출력-u unit
: 특정 유닛에 관한 것만 출력-p loglevel
: 특정 로그 레벨만 출력-k
: 커널 메세지만 출력-o format
: 지정한 포맷으로 출력--since -t<m/h>
: 최근 t분/시간 이내의 로그만 출력-r
: 역순으로 나열root@jsg-ubuntu:~# journalctl --since -3h -o short -ru nginx -p warning -- Logs begin at 수 2020-12-16 17:05:47 KST, end at 목 2020-12-17 01:17:01 KST. -- 12월 16 23:28:58 jsg-ubuntu systemd[1]: nginx.service: Failed with result 'core-dump'. 12월 16 23:22:57 jsg-ubuntu systemd[1]: nginx.service: Failed with result 'core-dump'.