나는 전환 cron
으로부터 systemd
아주 간단한 일을 성취 하려고 노력하고 있습니다. sync_org_git
기본적으로 특정 폴더에 CD를 넣고 일부 git 작업을 수행하는 작은 bash 스크립트가 있습니다 . git 명령은 무언가 stdout
(추적되지 않은 파일, 커밋 후 피드백 등)를 작성하는데, 이는 git에서는 특이한 일이 아니지만 systemctl --user start sync-org-git.timer
작업이 실패했음을 의미합니다. 스크립트나 시스템 파일을 수정해야 합니까?
서비스 및 타이머 파일은 다음과 같습니다.
❯ cat sync-org-git.service
[Unit]
Description=sync org to git
[Service]
ExecStart=/home/fbence/bin/sync_org_git
❯ cat sync-org-git.timer
[Unit]
Description=Sync org git timer
Requires=sync-org-git.service
[Timer]
OnBootSec=0min
OnCalendar=*:*:0/5
Unit=sync_org_git.service
[Install]
WantedBy=multi-user.target
고쳐 쓰다
사용ExecStart=-/home/fbence/bin/sync_org_git
밝혀지다
sync-org-git.timer: Refusing to start, unit sync_org_git.service to trigger not loaded.
하지만 실제로 로그에서 쉘 스크립트의 출력을 볼 수 있습니다.
답변1
명령이 0이 아닌 반환 코드로 종료되면 systemd는 이를 실행 실패로 처리합니다. -
접두사(예: )를 추가하여 반환 코드를 무시 하거나 ExecStart=-/home/fbence/bin/sync_org_git
추가 줄을 추가하여 반환 코드의 의미를 나열할 수 있습니다. 예를 들면 다음과 같습니다.
SuccessExitStatus=0 1 7