![Perl 스크립트는 대화형 셸에서는 잘 실행되지만 cron 작업으로는 실행되지 않습니다.](https://linux55.com/image/72597/Perl%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94%20%EB%8C%80%ED%99%94%ED%98%95%20%EC%85%B8%EC%97%90%EC%84%9C%EB%8A%94%20%EC%9E%98%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%EB%A7%8C%20cron%20%EC%9E%91%EC%97%85%EC%9C%BC%EB%A1%9C%EB%8A%94%20%EC%8B%A4%ED%96%89%EB%90%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
나는 설치했다데비쉬일부 백업에 사용됩니다. Vault(호스트)를 초기화했습니다. 이제 다음 스크립트를 사용하여 실행합니다.
#!/bin/sh
/sbin/dirvish-expire --quiet && /sbin/dirvish-runall --quiet
rc=$?
exit $rc
문제는 더 이상 해결 방법을 찾을 수 없다는 것입니다. 어떤 이유로 dirvish-runall --quiet
cron 작업으로 실행될 때 두 번째 명령은 상태 1로 종료됩니다. 대화형 모드에서는 문제 없이 잘 작동됩니다.
도울 수 있니?
답변1
@TomHunt는 그의 의견에서 이것을 지적했으며 그의 답변에 대한 공로를 인정받을 가치가 있습니다. 나는 단지 미래의 크론 작업 문제가 더 쉽게 해결될 수 있도록 그의 요점을 확장하고 싶었습니다.
내 제안은 현재(기능적) 환경과 cron 작업 스크립트 환경을 캡처한 다음 두 가지를 비교하여 무엇이 누락되었는지 확인하는 것입니다. cron은 부팅 시 시작되며 개인 쉘 환경 파일(~/.bashrc, ~/.bash_profile 또는 거기에서 로드된 기타 파일)을 절대 읽지 않는다는 점을 기억하십시오.
set | sort > /tmp/set.out
set | sort > /tmp/cron-set.out
크론 작업의 쉘 스크립트에 임시로 추가diff /tmp/cron-set.out /tmp/set.out
- 누락된 환경 변수를 찾아서 cron 작업의 셸 스크립트에 추가합니다(
set
위의 임시 추가 항목도 제거).