목차
1. 리눅스에서 서비스란?
리눅스 우분투에서 서비스란 실행 프로그램이 시스템 시작과 동시에 같이 시작되고 중지, 시작과 같은 명령으로 제어할 수 있는 상태를 의미한다. 또한 백그라운드 상태에서 계속 실행되고 있는 상태를 의미한다.
2. 서비스의 필요성
서비스는 백그라운드 상태에서 사용자의 요구에 응답하기위해 대기하거나 실시간으로 정보 처리가 필요한 경우 계산을 지속합니다. 즉, 끊기지 않는 서비스를 제공함으로써 우리는 시스템의 리소스를 더욱 더 효율적으로 사용할 수 있습니다.
만약 클라이언트가 1000대이고 이 클라이언트들의 요구를 처리하는 서버 프로그램이 있다고 생각해봅시다. 이 서버가 매일 저녁 8시에 종료되고 아침 9시에 켜진다면 8시부터 9시까지는 서비스 공백기간이 생겨 클라이언트들의 불만이 엄청날 겁니다. 서비스는 이러한 문제를 해결하기 위해 계속해서 실행되고 있는 프로그램입니다.
3. 서비스 등록 스크립트 작성
자 그러면 리눅스 우분투 환경에서 아래와 같이 서비스 스크립트를 작성해보도록 하겠습니다.
$ cd /tmp
$ vim test_service.sh
#! /bin/sh
cat > /etc/systemd/system/test_ss.service <<EOF
[Unit]
Description=test_ss.service
After=multi-user.target
[Service]
Type=idle
User=wonseok
WorkingDirectory=/tmp
ExecStart=/bin/sleep 100
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable test_ss.service
systemctl start test_ss.service
4. 서비스 등록하기 예제
위에서 작성한 스크립트를 bash 명령으로 실행시키면 서비스 등록이 완료됩니다. 이 때 반드시 sudo 권한으로 실행해야합니다. 서비스는 백그라운드에서 계속 실행되는 프로그램이기때문에 관리자의 권한이 필요합니다.
$ sudo bash test_service.sh
5. 서비스 상태 확인
아래 명령을 통해 서비스가 현재 동작중인지 확인할 수 있습니다. sleep 100 명령으로 인해 100초를 기다리고 있기때문에 프로그램이 실행중상태입니다.
$ sudo service test_ss status
6. 서비스 삭제하기 예제
서비스 삭제는 등록과 반대로 진행하면됩니다. 아래는 서비스 삭제를 위한 예제입니다. 우선 서비스를 중지합니다.
$ sudo systemctl stop test_ss.service
$ sudo systemctl disable test_ss.service
$ sudo rm /etc/systemd/system/test_ss.service
$ sudo systemctl daemon-reload
$ sudo service test_ss status