왜 스크립트를 /etc/cron.hourly에 넣는 것이 작동하지 않습니까? 스크립트를 넣었 /etc/cron.hourly지만

에 실행 스크립트를 넣었 /etc/cron.hourly지만 해당 스크립트는 1 시간마다 실행되지 않았습니다. 실제로는 전혀 실행되지 않습니다.

내가 만든 스크립트 (시간 소리)는 다음과 같습니다.

#! / bin / bash
mplayer ~ / Music / sfx_msg-highlight.wv &> / dev / null &
spd-say -r -50 -p 50 -t male3 "지금 시간은 $ (날짜 +"% l % p ")"
통지 : "지금 :" "$ (date +"% l % p ")." -i ~ / Pictures / "first tee.png"-t 5000

내 crontab은 다음과 같습니다

DISPLAY=":0.0"
XAUTHORITY="/home/naruto/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"

0 * * * * /home/naruto/Hour-sound.sh

mplayerspd-say명령이 올바르게 실행 되는 동안에는 notify-send그렇지 않습니다. 또한 오류를 파일로 리디렉션하려고 시도했습니다.

0 * * * * /home/naruto/Hour-sound.sh 2>/tmp/error

그러나 그것은 출력을 보여주지 못했습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?



답변

귀하의 질문에 대한 의견에서 보셨 듯이 cronjobs /etc/cron.hourly(및 다른 유사한 디렉토리)는에 의해 실행됩니다 run-parts. run-parts파일 이름에 대해 약간 까다 롭습니다. 기본적으로 파일 이름에 ASCII 이외의 파일 이름이 포함 된 파일은 실행되지 않습니다.

  • 대문자
  • 소문자
  • 자릿수
  • 밑줄
  • 대시 ( “빼기 부호”)

따라서 스크립트의 파일 이름이 “myscript.sh”인 경우 run-parts점을 좋아하지 않기 때문에 무시 됩니다.


답변

한 가지 문제는 notify-sendcron에서 그래픽 응용 프로그램 ( ) 을 실행하려고한다는 것 입니다. 약간의 조정이 필요합니다. crontab에서 실행중인 X 세션에 연결할 수 있도록 변수 를 설정 XAUTHORITY하고 펄스 오디오 세션에 연결할 수 있도록 DISPLAY설정해야합니다 XDG_RUNTIME_DIR. 불행히도 이것들은 crontab 자체에서 설정해야하므로 사용할 수 없습니다 /etc/cron.hourly. 대신 crontab -e다음 행을 실행 하고 추가하십시오.

DISPLAY=":0.0"
XAUTHORITY="/home/YOURUSERNAME/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"

0 * * * * /path/to/script.sh 

터미널에서 값을 XDG_RUNTIME_DIR반환 할 때 값을 변경하십시오 echo. 내 시스템에서 이것은 다음과 같습니다.

$ echo $XDG_RUNTIME_DIR
/run/user/1001

아마 당신과 같을 것이지만, 먼저 확인하십시오. 이제 스크립트가 1 시간마다 실행되며 예상대로 작동합니다.


답변

폴더로 끝나는 스크립트 .sh/etc/cron.hourly폴더 에서 실행되지 않습니다 .

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=308911 마침표
/etc/cron.daily와 같이 run-pars에 의해 처리되는 디렉토리 내의 링크 또는 바이너리는 실행되지 않습니다. 그들의 이름.

스크립트 이름 바꾸기

mv /etc/cron.hourly/Hour-sound.sh /etc/cron.hourly/Hour-sound

또는 스크립트 호출을

/etc/crontab

.sh결말 을 허용


답변

확장자가있는 스크립트 (abc.sh)를 사용하지 말고 필요한 장소를 추가하십시오. (cron.hours).

abc 파일에 코드 내용을 추가하고 저장하십시오 (필요한 경우) (bash 명령이어야 함)

사용하다

sudo chmod +x abc

실행 파일을 만드는 명령입니다.

edit etc/cronrtab file

미리 정의 된 몇 줄이 있습니다. 분에서 시간 줄까지 편집하여 저장하십시오.

제대로 작동합니다.