FWIW 나는 그것을 여기에서 시도했고 그것은 나를 위해 일하는 것 같다. /Library/Logs/CrashPlan/history.log.0에 수동으로 무언가를 추가 할 때마다 스크립트가 트리거되었습니다.
따라서 이것은 실제로 답이 아니지만 디버깅에 대한 일련의 팁입니다 launchd
.
진단을위한 몇 가지 팁이 시작되었습니다.
1) stdout
및 stderr
경로를 사용하여 기록 된 것이 있는지 확인하십시오. 이 줄을 com.crashplan.status.plist
파일 에 추가하면 됩니다.
<key>StandardErrorPath</key>
<string>/tmp/com.crashplan.status.stderr.log</string>
<key>StandardOutPath</key>
<string>/tmp/com.crashplan.status.stdout.log</string>
(여러 사람이 동일한 Mac을 사용하는 경우 / tmp /와 다른 경로를 사용하고 싶을 수도 있지만 자신 만있는 경우에는 다른 곳과 마찬가지로 좋습니다.)
2) # 1을 사용하면 스크립트 시작 / 시간과 같은 디버깅 정보를 포함하도록 스크립트 (/ Users / Rax / Library / Automation / Shell / crashplan_status)를 조정할 수도 있습니다. 스크립트 상단 근처에 다음과 같이 추가 된 것처럼 간단 할 수 있습니다.
echo "$0: started at `date`"
그리고 끝 근처에서 이와 같은
echo "$0: finished at `date`"
3) # 2를 사용 하면 적어도 디버깅 단계를 지나갈 때까지 스크립트가 호출 될 때 표시하기 위해 터미널 알림 과 같은 것을 사용할 수도 있습니다 .
4) 그래도 도움이되지 않으면 호출중인 명령의 종료 상태를 확인하고 명령이 crashplan_status
올바르게 종료되는지 확인해야합니다. 예를 들어, 당신이 실행되었다고 가정 해 봅시다 echo
에crashplan_status
5) 환경이 launchd
쉘과 다른 점이 있습니까? 실행 된 스크립트 상단에 다음 줄을 추가하여 가장 잘 확인됩니다.
/usr/bin/printenv | /usr/bin/open -ef
그러면 printenv
stdout으로 전송되고 결과가 TextEdit에서 열립니다.
내가 겪는 가장 일반적인 '환경'문제는 $ PATH가 제대로 시작되지 않은 것입니다. 일반적으로 .bashrc와 같은 쉘 초기화 파일에 설정되며 터미널에서 실행하는 쉘 스크립트에 의해 상속되지만 launchd
.
다음 launchd
을 통해 사용 중인 경로를 확인할 수 있습니다 .
launchctl getenv PATH
설정하려면 다음과 같이 설정하십시오.
launchctl setenv PATH
예를 들어 내 시스템의 경우 다음과 같습니다.
launchctl setenv /Users/luomat/Dropbox/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
컴퓨터를 시작할 때마다 설정을 기억하지 않으려면 다음 줄을 추가하여 컴퓨터를 추가 할 수 있습니다 /etc/launchd.conf
.
setenv PATH /Users/luomat/Dropbox/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin
분명히 시스템과 일치하도록 변경하십시오. 또한 /etc/launchd.conf
시스템에 존재하지 않아도 놀라지 마십시오 . 작성해야 할 수도 있습니다. 그렇게하려면 간단한 것을 권장합니다.
sudo pico -w /etc/launchd.conf
편집이 끝나면 control+를 누르고 X프롬프트에 따라 변경 사항을 저장하십시오.