crontab을 통해 쉘 스크립트를 실행하는 방법은 무엇입니까?


22

나는이 notify.sh모양이 좋아하는 스크립트를 :

notify-send "hi welcome"

오후 2시 내 crontab 알림 :

0 14 * * * home/hacks/notify.sh

그러나 이것은 작동하지 않습니다. 무엇이 문제입니까?

답변:


39

스크립트에 #이 없습니다! 스크립트 시작에 어떤 명령 인터프리터가 사용되는지를 말하기 위해 커널에 의해 해석되는 마법 인 시작시 줄.

다음과 같이 보이게하십시오 :

#!/bin/sh
notify-send "hi welcome"

스크립트가 실행 가능한지 확인하십시오.

ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh

또한이 작업을 하루에 한 번만 요구하기 때문에 crontab의 시간대가 자신의 시간대와 동일합니까? GMT 오후 2시에 이러한 상황이 발생할 수 있습니다.


+1이 답변은 훌륭합니다. 특히 스크립트가 실행 가능해야한다는 점에 주목하십시오! 감사!
FXQuantTrader

매우 미묘한 설명. 나의
공감

18

crontab을 쉽게 실행할 수 있습니다. 여기서는 crontab 작업을 실행하는 방법에 대해 설명하겠습니다. crontab에 붙어있는 사람에게 유용합니다.

*/1 * * * * cd /home/hacks && sh notify.sh

스크립트를 실행 가능하게하려면 다음을 수행해야합니다.

chmod +x home/hacks/notify.sh

여기서 나는 1 분 마다이 스크립트를 실행합니다 ... 아래 스크립트를 수행하면 로그 파일에 작성하여 작동하는지 확인할 수 있습니다

로그 작성

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log

메일을 보내다

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com

2
"* / 1 * * * * sh /home/hacks/notify.sh"도 작동합니까?
user1179459

5

4 가설 :

  • cron 데몬이 실행되고 있지 않습니다 (a ps axfww | grep cron및 점검).

  • notify-send는 터미널 또는 X 세션으로 출력을 보내려고 시도하지만 cron환경 내에서 실행되며 "누가 대화해야"할지 모릅니다.

  • 스크립트가 실행되지 않습니다

  • home/crontab 스크립트 의 경로는 스크립트가 실행되는 사용자를 기준으로합니다. 전체 경로를 사용해보십시오


1

export DISPLAY=:0스크립트에서 알림 보내기 행 위에 추가하십시오 . 이것은 lornezog의 두 번째 요점을 다룹니다.


0

다음 명령으로 crontab을 열어야합니다.

crontab -u username -e (to edit) -l(to list) -r(to remove) 10(minutes) 8-15(hours) *(Day of month) *(month) 1,3,5(days of week) /path/to/script/script_name.sh

이렇게하면 월요일, 수요일 및 금요일마다 시간당 10 분에 오전 8 시부 터 오후 3 시까 지 한 시간에 한 번씩 스크립트가 실행됩니다.


0

우선, Command를 사용하여 crontab을 편집해야합니다 .Inside crontab -e보다 Crontab실행 경로 스크립트를 추가하고 케이스에 다음과 같이 추가하십시오 * 14 * * * home/hacks/notify.sh >/dev/null 2>&1.

cron 서비스 시작 / 중지 / 다시 시작

  • /etc/init.d/crond start /stop / restart
  • service crond start /stop /restart
  • systemctl stop crond.service

systemctl 중지 crond.service


-2

아주 간단하게 crontab 파일의 맨 아래에 다음 줄을 추가하십시오. sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &


이것은 질문에 대한 답변이 아닌 것 같습니다.
Ljm Dullaart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.