git 명령으로 systemd 서비스가 실패함

git 명령으로 systemd 서비스가 실패함

나는 전환 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

관련 정보