본문 바로가기
Linux

daemon

by oncerun 2023. 6. 14.
반응형

 

사용자가 직접적으로 제어하지 않고, 백그라운드에서 여러 작업을 처리하는 프로그램이다.

 

서비스란, 서버 /클라이언트 모델에서 출발하여, 요청에 응답하는 프로그램을 말한다.(주로 데몬 형태로 구동되긴 한다)

 

실제 예시를 살펴보자.

 

웹서버, 파일 서버는 데몬형태로 구동되는 서비스 프로그램이다. 

 

이에 반해 syslogd. rsyslogd, cupsd, lpd, inetd와 같은 시스템 로깅, 프린터, 네트워크서비스 등은 사용자 상호작용 없이 구동된다. 

 

윈도에서는 데몬이라는 용어를 사용하지 않고 서비스라는 이름을 사용한다. 

 

우분투의 서비스 데몬을 살펴보자.

 

oncerun@DESKTOP-GAC7M8H:~$ service --status-all
 [ - ]  apparmor
 [ ? ]  apport
 [ - ]  console-setup.sh
 [ - ]  cron
 [ - ]  dbus
 [ ? ]  hwclock.sh
 [ + ]  irqbalance
 [ - ]  keyboard-setup.sh
 [ ? ]  kmod
 [ ? ]  plymouth
 [ ? ]  plymouth-log
 [ - ]  procps
 [ - ]  rsync
 [ - ]  screen-cleanup
 [ + ]  udev
 [ - ]  ufw
 [ - ]  unattended-upgrades
 [ - ]  uuidd

 

service 명령어는 내부적으로 systemctl로 호출되고 이는 하위 버전 호환용으로 사용된다. 

 

그래서 요즘은 systemctl을 많이 사용한다. 

 

systemd를 사용하는 systemctl 서비스를 확인하기 위해선 systemctl status, start, stop, restart < daemon.service> 형태로 사용되나. service는 생략하는 경우가 많다.

 

가끔 책이나, 블로그에 service를 붙이는 경우가 있으니 참고하자.

 

데몬 프로세스는 systemd라는 데몬이 관리합니다. 

 

이 systemd를 관리하기 위해 systemctl 명령어가 있고, 각 프로세스를 모니터링하면서 현황을 관리하기 위해 journalctl이라는 명령어가 있다.

 

/lib/systemd/system 내부에 다양한 서비스 목록과 규칙 및 설정파일이 존재한다.

해당 서비스가 활성화 된경우에는 /etc/systemd/system/*. service에 씸볼릭 링크형태로 존재한다. 

 

 

 

간단한 systemctl 명령어를 알아보자.

 

실행 중인 서비스 목록을 확인하기 위해선 systemctl list-units 명령어를 활용할 수 있다.

 

구체적인 설정도 가능하다. systemctl list-units --type=service --state-running (failed, active, running)

 

target 유형은 그룹을 말하고, 하나 이상 서비스를 실행하는 걸 target이라고 부릅니다. 

 

현재 runlevel도 systemctl get-default로 확인할 수 있습니다. 

 

systemctl set-default <target>으로 부팅 시 기본 옵션도 변경이 가능합니다.

 

 

추가적으로 알아보는 명령어는 다음과 같다.

 

Nginx 웹 서비스 같은 경우 설정파일 변경 시 reload 기능을 구현하여 서버 재시작없이 설정파일만 읽어서 종료 없이 변경사항을 반영할 수 있다. 

systemctl reload nginx 와 같은 명령어로 자주 사용한다.

 

혹은 부팅 시 서비스가 자동 시작되거나 이를 삭제하기 위해 systemctl enable, disable 명령어도 자주 사용한다.

 

 

Journalctl은 모든 서비스의 전체 로그를 볼 수 있다.

 

-b는 부팅 이후 로그, -f로 최근 로그 및 로그 트래킹 대기하기 위해 사용한다.

 

특정 서비스 로그만 보기 위해선 journalctl -u <service.name>으로 볼 수 있다.

 

실제 로그 레벨이라는 것이 존재해서 특정 레벨만 볼 수 있다.

 

자주 쓰는 건 특정 날짜로 조회하는 기능인데 다음 journalctl -u <service-name> --since=2023-06-14 --until=today와 같이 사용할 수 있으니 자세한 건 man page를 살펴보자.

 

로그 디렉터리는 /var/log/journal에 있고, 크기는 journal --disk-usage로 확인할 수 있다.

일반 시스템 로그 파일은 logrotated이 알아서 설정만 해주고 기본적인 것은 지워준다. 

 

하지만 데몬 프로세스 로그들은 시스템 리부팅하지 않으면 관리가 되지 않는다.  그래서 위와 같은 용량, 위치를 확인해 삭제해주어야 한다.

 

 

 

 

 

 

 

 

 

반응형

'Linux' 카테고리의 다른 글

Disk 추가해보자.  (0) 2023.06.13
hostnamectl  (0) 2023.06.13
Linux FileSystem (1)  (0) 2023.06.11
명령어 [복습]  (0) 2022.03.10
환경 구축 (2)  (0) 2022.03.09

댓글