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에서 데몬 서비스를 시작하고 중지하는 새로운 방법입니다.