lp 명령은 cron 작업으로 실행되지 않습니다(로그 항목이 없기 때문에).

lp 명령은 cron 작업으로 실행되지 않습니다(로그 항목이 없기 때문에).

이 lp 명령을 주기적으로 실행해야 합니다.

lp /Users/denniscook/Documents/PrinterManagement/UseInk.pdf 2>&1 >>/Users/denniscook/.cronlogs/runPrinter.log

runPrinter.zsh 스크립트에 다음 명령이 있습니다.

#!/usr/bin/env zsh

cat >>/Users/denniscook/.cronlogs/runPrinter.log <<EOF

***************************
Enter Job `date`
EOF

lp /Users/denniscook/Documents/PrinterManagement/UseInk.pdf 2>&1 >>/Users/denniscook/.cronlogs/runPrinter.log

cat >> /Users/denniscook/.cronlogs/runPrinter.log <<EOF
Exit Job `date`

EOF

lp 명령은 터미널에서 직접 실행되거나 터미널에서 스크립트로 실행될 때(프린터가 로그를 인쇄하고 업데이트한다는 의미) 올바르게 실행됩니다. 그러나 cron에서 명령이나 스크립트를 실행하면 둘 다 작동하지 않습니다.

crontab에서는 아래 crontab을 사용하여 한 항목을 주석 처리하고 다른 항목을 사용하여 두 가지 방법을 모두 시도했습니다. 첫 번째는 스크립트를 실행하고 두 번째는 명령을 직접 실행하려고 시도합니다.

#-----------#
# cron jobs #
#-----------#
#06 11 * * * /Users/denniscook/.scripts/runPrinter.zsh
13 11 * * * lp /Users/denniscook/Documents/PrinterManagement/UseInk.pdf 2>&1 >>/Users/denniscook/.cronlogs/runPrinter.log

~                                                                                                                                       
~                                                                                                                                       

터미널에서 스크립트를 실행하고 제대로 작동하면 로그 항목은 다음과 같습니다.

***************************
Enter Job Sun Jan 29 11:07:26 HST 2023
request id is EPSON_WorkForce_845-1286 (1 file(s))
Exit Job Sun Jan 29 11:07:26 HST 2023

cron이 스크립트를 실행할 때 로그 항목은 다음과 같습니다(lp cmd의 출력 없음).

***************************
Enter Job Sun Jan 29 12:15:00 HST 2023
Exit Job Sun Jan 29 12:15:00 HST 2023

cron이 lp 명령을 직접 실행하면 로그 항목이 없습니다.

cron이 작업을 실행하는 것과 터미널에서 작업을 실행하는 것의 차이점이 무엇인지 모르겠습니다. 내 연구는 답을 찾지 못했습니다.

어떤 도움이라도 주시면 감사하겠습니다...

답변1

문제는 cron 프로세스에 전체 디스크 액세스 권한이 없다는 것입니다.

해결책:

  • 설정 > 보안 및 개인정보 보호로 이동하여 왼쪽 목록에서 전체 디스크 액세스를 선택하세요.
  • 새 애플리케이션을 추가하려면 더하기 버튼을 클릭하세요.
  • 직접 입력 모드로 전환하려면 파일 브라우저에 슬래시를 입력하세요. 경로를 입력하세요 /usr/sbin/cron. (터미널에 "which cron"을 입력하여 찾으세요)

또는 cron 대신 Automator를 사용하십시오. (새로운 도구를 배우고 싶지만 이것이 귀찮게 들리신다면...)

(이 답변은 댓글에 있습니다. 다음 사람이 답변을 얻기 위해 모든 댓글을 읽을 필요가 없도록 여기에 공식적인 답변으로 게시했습니다. 최종 솔루션을 공유해 주신 gpaCook에게 감사드립니다.)

관련 정보