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


16

에 실행 스크립트를 넣었 /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

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


스크립트를 실행 가능하게 했습니까? 루트 소유? 터미널에서 스크립트를 실행하거나 간단한 스크립트를 넣으면 어떻게됩니까? 음주자 /etc/crontabrun-parts매시간 실행하기위한 온라인 cron디렉토리에서 작업을?
heemayl

실행 파일 : 예, 스크립트 실행은 /etc/cron.hourly 디렉토리에서 아무 문제가 없습니다.이를 확인하는 방법을 모르십니까? 시작 응용 프로그램에 있습니까? @heemayl
Black Block

1
않는 /etc/crontab파일은 라인을 가지고 17 * * * * root cd / && run-parts --report /etc/cron.hourly?
heemayl


1
제발 텍스트의 스크린 샷을 게시하지 않습니다 . 특히 해당 텍스트가 투명 터미널 창에 표시되고 색상이 산만해질 때.
terdon

답변:


24

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

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

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


1- 여기 내 파일이 있습니다 : mediafire.com/view/rg8r85xb7qw26zs/cron.hourly_017.png 2- /etc/cron.hourly에서 스크립트를 사용해 보았습니까?
Black Block

2
방금 / tmp의 파일에 "Hello"를 쓴 간단한 스크립트를 테스트했는데 문제없이 작동했습니다. 만일의 경우에, 당신은 스크립트 /etc/cron.hourly가 반드시 "정시에"실행되는 것은 아니라는 것을 알고 있습니까? cronjob /etc/crontab의 분 위치에 17이 있으면 스크립트는 00:17, 01:17 등에서 실행됩니다. 그리고 다시 한 번, 스크립트 권한으로 인해 사용자 루트가이를 실행할 수 있습니까?
Henning Kockerbeck

아뇨,하지만 저의 대본은 결코 실행되지 않습니다.
Black Block

실제로 권한 문제 일 수 있습니다. 더 일반적인 스크립트에는 /etc/cron.d/"group"또는 "others"에 대한 쓰기 또는 실행 권한이 없어야 한다는 것을 알고 있습니다. "소유자"는 실행 권한이 필요하고 "그룹"및 "다른 사용자"에게는 읽기 권한 만 있어야합니다. /etc/cron.hourly테스트하지는 않았지만 아마도 해당 사항에도 적용됩니다 .
Henning Kockerbeck

좋아, 내 파일 mediafire.com/view/s2lq63u7z54ohbo/에 대한 권한을 변경했습니다 ... 루트 그룹 인 그룹을 읽기 전용으로 만들고 다른 그룹도 문제가됩니까?
Black Block

5

한 가지 문제는 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 시간마다 실행되며 예상대로 작동합니다.


이것이 바로 mediafire.com/view/ucjpvu8b41n3hue/… 입니다. 이것은 나를 위해 작동하지 않았습니다.
Black Block

문제가 notify-send에 있다면 왜 다른 명령 (mplayer와 같은)도 실행되지 않았습니까?
Black Block

@BlackBlock에는 여러 가지 문제가 있습니다. ⅰ) notify-send필요 XAUTHORITYDISPLAY변수를 설정할 수 및 ⅱ) mplayer요구 XDG_RUNTIME_DIR되도록 설정한다. 내 제안을 시도 했습니까? 두 가지 문제를 모두 해결해야합니다. run-parts다른 답변에서 설명한 것처럼 이름 지정 문제가있을 수도 있습니다 .
terdon

그렇다면 왜 이것이 효과가 없었습니까? 화낼거야! 답에 대한 첫 번째 코멘트에서 내 이미지를보십시오
Black Block

@BlackBlock 아니! 편집 /etc/crontab중입니다. 그렇게하지 마십시오. 루트가 아닌 사용자로 실행하고 파일의 형식이 다릅니다. 대답에서 내가 말한 것을하고 실행 crontab -e하고 거기에 줄을 추가하십시오.
terdon

3

폴더로 끝나는 스크립트 .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결말 을 허용


1

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

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

사용하다

sudo chmod +x abc

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

edit etc/cronrtab file

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

제대로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.