현재 매분마다 .sh 스크립트 파일을 실행하도록 cronjob을 예약하려고 합니다.
이것은 내 간단한 스크립트입니다.
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
저는 이것을 데스크탑에 저장하고 이름을 inform.sh로 지정했습니다. 그런 다음 새 터미널 창을 열고 crontab-e
. 그러면 다음과 같이 입력한 새 nano 파일이 열렸습니다.
* * * * * /Users/navania/Desktop/notify.sh
이 nano 파일을 저장하고 존재했습니다. cronjob이 성공적으로 실행되도록 하려면 다음에 무엇을 해야 합니까?
지금까지의 단계:
- 터미널 애플리케이션을 열고 를 입력합니다
crontab-e
. - 그러면 다음 명령을 입력하는 새 nano 파일이 열립니다.
* * * * * /Users/navania/Desktop/notify.sh
- 그런 다음 컨트롤 o를 눌러 저장한 다음 x를 눌러 CrontabTest라는 이름으로 저장합니다.
- 종료하면 crontab에 변경 사항이 없다는 메시지가 표시되는데 이는 말이 되지 않습니다.
- 그런 다음 로그 파일을 열고 Hello World가 1분마다 인쇄되는지 확인했지만 그렇지 않았습니다.
어떤 도움이라도 주시면 감사하겠습니다. 감사해요!
답변1
귀하의 스크립트는 1분마다 실행을 시도할 가능성이 높습니다.
/bin/sh를 포함하도록 crontab 줄을 변경하는 방법에 대한 Kamil의 단계를 따르세요.
명령이 터미널에서 실행되지 않으므로 화면에 쓰는 대신 파일로 출력하도록 스크립트를 약간 변경하십시오. 대신 자체 프로세스에서 실행되므로 출력이 표시되지 않습니다.
예를 들어 스크립트를 다음과 같이 변경하세요.
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
.log 파일을 검사하여 새 줄이 기록되고 있는지 확인하세요.
답변2
스크립트를 실행 가능하게 만들어야 합니다.
chmod +x /Users/navania/Desktop/notify.sh
그리고 스크립트가 포함된 파일 시스템이 noexec
. 그런 다음 명령
/Users/navania/Desktop/notify.sh
작동해야 하며 cronjob도 작동해야 합니다.
또는 crontab의 명령은 다음과 같아야 합니다.
/bin/sh /Users/navania/Desktop/notify.sh
이 경우 실행 권한은 중요하지 않습니다(스크립트의 shebang도 마찬가지임).
참고하세요cronjob의 텍스트 출력이 어떤 터미널에도 나타날 것이라고 기대해서는 안 됩니다..
그리고 이런 문제가 있습니다.
- 그런 다음 컨트롤 o를 눌러 저장한 다음 x를 눌러
CrontabTest
.- 종료하면 crontab에 변경 사항이 없다는 메시지가 표시되는데 이는 말이 되지 않습니다.
새 파일이 아니라 열린 임시 파일을 모두 저장해야 한다고 생각합니다. 저장 중에는 이름을 변경하지 마세요.