우분투처럼 systemd를 쓰는 배포판에서는 서비스의 시작과 로그를 systemctl과 journalctl로 본다. 정해진 시각의 반복 작업은 cron에 둔다.
systemctl
systemctl status nginx
systemctl status nginx --no-pager
systemctl list-units --type=service --state=runningstatus는 서비스가 돌고 있는지, 메인 프로세스 번호, 최근 로그를 보여 준다. `active (running)`이면 실행 중이다. `inactive (dead)`면 멈춰 있다. 페이저 없이 끝까지 출력하려면 `--no-pager`를 붙인다.
시작과 중지는 관리자 권한이 필요하다.
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginxrestart는 프로세스를 멈추고 다시 시작한다. reload는 프로세스를 유지한 채 설정을 다시 읽으라고 알린다. 그 서비스를 만든 쪽이 reload를 지원해야 한다. 지원하지 않으면 실패하거나 restart와 같이 동작한다.
sudo systemctl enable nginx
sudo systemctl disable nginxenable은 부팅할 때 시작하도록 연결한다. disable은 그 연결을 끊는다. 지금 돌고 있는 프로세스를 바로 멈추지는 않는다. 지금 멈추려면 stop을 쓴다.
유닛 파일의 위치와 의존 관계를 보려면 `systemctl cat nginx`와 `systemctl list-dependencies nginx`를 쓴다.
journalctl
journalctl은 systemd가 모은 로그다.
journalctl -u nginx -n 50 --no-pager
journalctl -u nginx -f
journalctl -b --no-pager
journalctl -p err -b --no-pager`-u`는 그 유닛만, `-n`은 끝에서 몇 줄, `-f`는 새 로그를 따라간다. `-b`는 이번 부팅 이후다. `-p err`는 error와 그보다 심각한 수준만 보여 준다.
시각을 제한할 수도 있다.
journalctl -u nginx --since '2026-10-24 09:00' --until '2026-10-24 10:00' --no-pagercron
crontab은 계정별로 반복 시각을 적는 표다.
crontab -l
crontab -e`-l`은 현재 표를 보여 준다. 표가 없으면 없다고 알려 준다. `-e`는 `EDITOR`로 연다. vim을 쓰려면 그 값을 vim으로 둔다. man 글의 export를 본다.
한 줄은 분, 시, 일, 월, 요일, 그리고 명령이다.
15 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1이 줄은 매일 03:15에 그 스크립트를 실행하고, 출력과 오류를 로그 파일에 붙인다. 별 `*`은 그 칸의 모든 값이다. 요일은 0과 7이 일요일이다.
cron이 쓰는 PATH는 로그인 셸보다 짧다. 명령과 스크립트는 절대 경로로 적는다. 화면에 나올 출력은 메일로 가거나 사라질 수 있으니 파일로 보낸다.
`/etc/crontab`과 `/etc/cron.d/`의 줄에는 요일과 명령 사이에 실행할 계정 이름이 하나 더 있다. 계정용 crontab과 칸 수가 다르다. `man 5 crontab`에 표가 있다.
COMMENTS
댓글 0
이 글에 대한 의견이나 질문을 남겨 주세요.
댓글은 구글이나 카카오로 시작한 뒤에 남길 수 있습니다.
등록된 댓글이 없습니다.