리눅스를 실행시키면 systemd라는 프로세스를 한번 쯤 보신 적이 있으실 겁니다.
systemd는 PID1에 속해있을 만큼 굉장히 중요한 역할을 하는데 바로 Linux 운영체제용 시스템 및 서비스를 관리하는 역할을 수행합니다.
PID1이므로 부모 프로세스가 없고 Linux가 부팅되었을 때 가장 먼저 실행되며 사용자가 Linux를 사용할 수 있도록 초기 서비스들을 병렬적으로 실행시켜주는 역할을 합니다.
그리고 가장 마지막에 종료되어 시스템 및 서비스를 종료시키는 역할도 합니다.
기존에는 가장 오래된 init 시스템 중 하나인 Unix System V init system(SysV)와 같은 init 시스템을 사용하고 있었는데 2015년 부터 systemd를 공식 채택하였습니다.
처음엔 많은 우려 곡절이 있었지만 기존 init 시스템에 비해 훨씬 빠른 병렬 처리와 서비스 간 종속적인 실행도 더욱 효율적으로 처리하며 서비스들을 관리하는 측면에서 훨씬 나았기 때문에 이를 공식으로 채택한게 아닐까 생각됩니다.
Systemd를 이용해서 서비스를 만들기
systemd는 서비스들을 실행시키기 위한 스크립트들을 /etc/systemd/system/ 에서 관리합니다. 해당 디렉토리를 ls -al 명령어로 살펴보면 심볼릭 링크로 가득한 것을 확인하실 수 있습니다. 만약 부팅 시 실행시키고 싶은 서비스가 있다면 위 디렉토리에 서비스를 심볼릭 링크로 연결시켜야 합니다.
테스트용 Script 생성
아래와 같이 테스트용 스크립트를 만들어봅시다!
$ vi /root/my-test-script.sh
#!/bin/bash
while :
do
echo -e "Hi! this service is run by systemd"
sleep 1
done
서비스 생성 및 등록
$ vi /root/my-systemd-daemon.service
[Unit]
Description=My Systemd Daemon
[Service]
Type=simple
ExecStart=/root/my-test-script.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
$ sudo ln -s /root/my-systemd-daemon.service /etc/systemd/system/my-systemd-daemon.service
사실 바로 /etc/systemd/system 아래에다가 service를 생성해도 됩니다.
하지만 관리의 편의성을 위해서 테스트용 스크립트와 동일 디렉토리에 위치시켰습니다.
systemctl 명령어 모음
systemctl start: 서비스 시작
서비스를 실행하기 위한 명령어 입니다.
$ systemctl start my-systemd-daemon
systemctl status: 서비스 상태 확인
서비스의 상태를 확인하기 위한 명령어 입니다. 간단한 로그도 확인할 수 있습니다.
$ systemctl status my-systemd-daemon
systemctl stop: 서비스 중지
서비스를 중지할 때 사용하는 명령어 입니다.
$ systemctl stop my-systemd-daemon
systemctl restart: 서비스 재시작
서비스를 중지 -> 시작 순으로 실행합니다.
$ systemctl restart my-systemd-daemon
systemctl enable: 재부팅 시 자동 실행되도록 설정
enable은 단지 시작 프로그램에 추가시켜 부팅 시 실행되도록 하기 위해 사용합니다.
$ systemctl enable my-systemd-daemon
systemctl disable: 재부팅 시 자동 실행되지 않도록 설정
enable한 서비스를 시작 프로그램에서 제외시키기 위해 disable 명령어를 사용할 수 있습니다.
$ systemctl disable my-systemd-daemon
systemctl reload: 서비스 리로드
reload는 restart와 다르게 서비스를 종료했다가 실행시키는게 아닌 해당 서비스의 configuration만 수정했을 경우 빠르게 리로드하여 반영하기 위해 사용합니다.
$ systemctl reload my-systemd-daemon
systemctl daemon-reload: 전체 서비스 리로드
daemon-reload는 reload와 다르게 전체 서비스에 대해서 configuration을 리로드 합니다.
$ systemctl daemon-reload
REFERENCES
'[AWS-FRF] > EC2' 카테고리의 다른 글
[중요][AWS][BASTION 터널링] WinSCP 를 이용해 Linux 인스턴스로 파일 전송하기!! (55) | 2024.10.07 |
---|---|
[중요][AWS] 유닉스에서 $?의 의미 !! (12) | 2024.09.25 |
[중요2][AWS][BACKUP] 백업파일 보관 쉘스크립트 !! (13) | 2024.09.25 |
[중요2][AWS][장애처리] EC2 루트/EBS볼륨 Attach 장애복구!! (11) | 2024.09.10 |
[중요][AWS] Putty 자동로그인 설정 / GITLAB 터널링 설정!! (25) | 2024.08.26 |
[중요][AWS][JMeter] 서버의 성능을 JMeter로 테스트해보자 (+분산환경 테스팅, TPS) (92) | 2024.08.12 |
[중요][AWS] Linux, 접속 로그 확인 !! (87) | 2024.08.08 |
[중요][AWS] 키 페어 ppk To pem 파일 변환하기!! (90) | 2024.08.06 |
댓글