에 실행 스크립트를 넣었 /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
mplayer
및 spd-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-send
cron에서 그래픽 응용 프로그램 ( ) 을 실행하려고한다는 것 입니다. 약간의 조정이 필요합니다. 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
미리 정의 된 몇 줄이 있습니다. 분에서 시간 줄까지 편집하여 저장하십시오.
제대로 작동합니다.