phpsessionclean 일정을 예로 들어 보겠습니다. cron.d 파일은 다음과 같습니다:
09,39 * * * * root [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi
systemd가 시스템에 없으면 스크립트를 실행하라는 메시지가 표시됩니다 /usr/lib/php/sessionclean
.
systemd가 존재하면 실행되지 않고 대신 systemd 타이머가 실행됩니다. 파일 phpsessionclean.timer
은 다음과 같습니다.
[Unit]
Description=Clean PHP session files every 30 mins
[Timer]
OnCalendar=*-*-* *:09,39:00
Persistent=true
[Install]
WantedBy=timers.target
자신만의 .timer 파일을 생성하고 실행 중인 스크립트가 포함된 관련 .service 파일을 생성하는 방법에 대해 자세히 읽었지만 이 경우에는 certbot, apt 등과 같은 패키지로 설치된 다른 .timer 파일과 함께) 연관된 .service 파일이 없습니다. 그렇다면 이 타이머가 실행될 때 어떤 명령이 실행될지 어떻게 추론할 수 있나요?
답변1
잘못된 곳을 찾고 있을 수도 있습니다. 장치는 여러 위치에 있을 수 있습니다.
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
...
(여기서 명령을 볼 수도 있습니다.
$ systemctl status systemd-tmpfiles-clean.service
● systemd-tmpfiles-clean.service - Cleanup of Temporary Directories
Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-clean.service; static)
Active: inactive (dead) since Sun 2017-07-16 17:34:00 BST; 16h ago
Docs: man:tmpfiles.d(5)
man:systemd-tmpfiles(8)
Process: 28580 ExecStart=/bin/systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
Main PID: 28580 (code=exited, status=0/SUCCESS)
관련 서비스를 다시 확인하려면:
$ systemctl show -p Unit systemd-tmpfiles-clean.timer
Unit=systemd-tmpfiles-clean.service