Systemd 서비스 시작 및 중지
systemdLinux에서 서비스를 실행하는 새로운 방법입니다. systemd 에는 대체 된 sysvinit이 있습니다. systemd 는 Linux에 더 빠른 부팅 시간을 제공하며 이제는 Linux 서비스를 관리하는 표준 방법입니다. 안정적이지만 systemd 는 여전히 진화하고 있습니다.
systemd 는 init 시스템으로, Linux 커널이 부팅 된 후 상태 변경이 필요한 서비스와 데몬을 모두 관리하는 데 사용됩니다. 상태 변경에 따라 시작, 중지, 다시로드 및 조정 서비스 상태가 적용됩니다.
먼저 서버에서 현재 실행중인 systemd의 버전을 확인하겠습니다.
[centos@localhost ~]$ systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
[centos@localhost ~]$
CentOS 버전 7부터는이 작성 시점에 완전히 업데이트 된 systemd 버전 219가 현재 안정 버전입니다.
systemd-analyze를 사용하여 마지막 서버 부팅 시간을 분석 할 수도 있습니다.
[centos@localhost ~]$ systemd-analyze
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s
[centos@localhost ~]$
시스템 부팅 시간이 더 느리면 systemd-analyze blame 명령을 사용할 수 있습니다 .
[centos@localhost ~]$ systemd-analyze blame
40.882s kdump.service
5.775s NetworkManager-wait-online.service
4.701s plymouth-quit-wait.service
3.586s postfix.service
3.121s systemd-udev-settle.service
2.649s tuned.service
1.848s libvirtd.service
1.437s network.service
875ms packagekit.service
855ms gdm.service
514ms firewalld.service
438ms rsyslog.service
436ms udisks2.service
398ms sshd.service
360ms boot.mount
336ms polkit.service
321ms accounts-daemon.service
systemd로 작업 할 때 단위 의 개념을 이해하는 것이 중요합니다 .Unitssystemd 가 해석하는 방법을 알고 있는 리소스 입니다. 단위는 다음과 같이 12 가지 유형으로 분류됩니다.
- .service
- .socket
- .device
- .mount
- .automount
- .swap
- .target
- .path
- .timer
- .snapshot
- .slice
- .scope
대부분의 경우 .service를 단위 대상으로 사용합니다. 다른 유형에 대한 추가 연구를 수행하는 것이 좋습니다. .service 단위 만 systemd 서비스 시작 및 중지에 적용됩니다 .
각 단위 는 다음 위치에있는 파일에 정의되어 있습니다.
/lib/systemd/system − 기본 유닛 파일
/etc/systemd/system − 런타임에 시작된 수정 된 단위 파일
systemctl로 서비스 관리
systemd로 작업하려면 systemctl 명령에 매우 익숙해 져야합니다 . 다음은 systemctl에 대한 가장 일반적인 명령 줄 스위치입니다 .
스위치 | 동작 |
---|---|
-티 | 서비스 또는 소켓과 같은 단위 유형의 쉼표로 구분 된 값 |
-ㅏ | 로드 된 모든 장치를 표시합니다. |
--상태 | 정의 된 상태 (부하, 하위, 활성, 비활성 등)의 모든 장치를 표시합니다. |
-H | 원격으로 작업을 실행합니다. 호스트 이름 또는 호스트 및 사용자를 @로 구분하여 지정하십시오. |
기본 systemctl 사용법
systemctl [operation]
example: systemctl --state [servicename.service]
박스에서 실행되는 모든 서비스를 간략히 살펴보십시오.
[root@localhost rdc]# systemctl -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service loaded active running Accounts Service
alsa-state.service loaded active running Manage Sound Card State (restore and store)
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
blk-availability.service loaded active exited Availability of block devices
bluetooth.service loaded active running Bluetooth service
chronyd.service loaded active running NTP client/server
서비스 중지
먼저 블루투스 서비스를 중지하겠습니다.
[root@localhost]# systemctl stop bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded inactive dead Bluetooth service
[root@localhost]#
보시다시피 블루투스 서비스가 비활성화되었습니다.
블루투스 서비스를 다시 시작하려면.
[root@localhost]# systemctl start bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded active running Bluetooth service
[root@localhost]#
Note− .service 가 함축되어 있으므로 bluetooth.service를 지정하지 않았습니다 . 우리가 다루는 서비스를 추가하는 단위 유형 을 생각하는 것이 좋습니다 . 따라서 여기서부터는 .service 확장을 사용하여 서비스 단위 작업에 대한 작업을 명확히 할 것입니다.
서비스에서 수행 할 수있는 주요 작업은 다음과 같습니다.
스타트 | 서비스 시작 |
중지 | 서비스를 중지합니다. |
새로 고침 | 중지하지 않고 서비스의 활성 구성을 다시로드합니다 (예 : system v init의 kill -HUP). |
재시작 | 서비스를 시작한 다음 중지합니다. |
활성화 | 부팅시 서비스 시작 |
비활성화 | 런타임에 서비스가 자동으로 시작되지 않도록 중지합니다. |
위의 작업은 주로 다음 시나리오에서 사용됩니다.
스타트 | 중지 상태에있는 서비스를 시작합니다. |
중지 | 서비스를 일시적으로 종료하려면 (예 : 서비스를 업그레이드 할 때와 같이 서비스에 의해 잠긴 파일에 액세스하기 위해 서비스를 중지해야하는 경우) |
새로 고침 | 구성 파일이 편집되고 서비스를 중지하지 않고 새 변경 사항을 적용하려는 경우. |
재시작 | reload와 동일한 시나리오이지만 서비스는 reload를 지원하지 않습니다 . |
활성화 | 비활성화 된 서비스가 부팅시 실행되기를 원할 때. |
비활성화 | 주로 서비스를 중지해야하지만 부팅시 시작될 때 사용됩니다. |
서비스 상태를 확인하려면-
[root@localhost]# systemctl status network.service
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago
Docs: man:systemd-sysv-generator(8)
Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)
localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking...
localhost.localdomain network[923]: Bringing up loopback interface: [ OK ]
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.
[root@localhost]#
네트워킹 서비스 의 현재 상태를 보여주십시오 . 네트워킹과 관련된 모든 서비스를보고 싶다면 다음을 사용할 수 있습니다.
[root@localhost]# systemctl --all -t service | grep -i network
network.service loaded active exited LSB: Bring up/
NetworkManager-wait-online.service loaded active exited Network Manager
NetworkManager.service loaded active running Network Manager
ntpd.service loaded inactive dead Network Time
rhel-import-state.service loaded active exited Import network
[root@localhost]#
익숙한 사람들을 위해 sysinit서비스를 관리하는 방법은 systemd로 전환하는 것이 중요합니다 . systemd 는 Linux에서 데몬 서비스를 시작하고 중지하는 새로운 방법입니다.