Perl 스크립트는 대화형 셸에서는 잘 실행되지만 cron 작업으로는 실행되지 않습니다.

Perl 스크립트는 대화형 셸에서는 잘 실행되지만 cron 작업으로는 실행되지 않습니다.

나는 설치했다데비쉬일부 백업에 사용됩니다. Vault(호스트)를 초기화했습니다. 이제 다음 스크립트를 사용하여 실행합니다.

#!/bin/sh 
/sbin/dirvish-expire --quiet && /sbin/dirvish-runall --quiet
rc=$?
exit $rc

문제는 더 이상 해결 방법을 찾을 수 없다는 것입니다. 어떤 이유로 dirvish-runall --quietcron 작업으로 실행될 때 두 번째 명령은 상태 1로 종료됩니다. 대화형 모드에서는 문제 없이 잘 작동됩니다.

도울 수 있니?

답변1

@TomHunt는 그의 의견에서 이것을 지적했으며 그의 답변에 대한 공로를 인정받을 가치가 있습니다. 나는 단지 미래의 크론 작업 문제가 더 쉽게 해결될 수 있도록 그의 요점을 확장하고 싶었습니다.

내 제안은 현재(기능적) 환경과 cron 작업 스크립트 환경을 캡처한 다음 두 가지를 비교하여 무엇이 누락되었는지 확인하는 것입니다. cron은 부팅 시 시작되며 개인 쉘 환경 파일(~/.bashrc, ~/.bash_profile 또는 거기에서 로드된 기타 파일)을 절대 읽지 않는다는 점을 기억하십시오.

  1. set | sort > /tmp/set.out
  2. set | sort > /tmp/cron-set.out크론 작업의 쉘 스크립트에 임시로 추가
  3. diff /tmp/cron-set.out /tmp/set.out
  4. 누락된 환경 변수를 찾아서 cron 작업의 셸 스크립트에 추가합니다( set위의 임시 추가 항목도 제거).

관련 정보