크론이 작동하지 않습니다

크론이 작동하지 않습니다

데스크탑 배경을 무작위로 변경하기 위해 짧은 쉘 스크립트 "wallch.sh"를 작성했습니다.

DIR="/home/user/Wallpapers"
PIC=$(ls $DIR/*.jpg | shuf -n1)
FIL="file://"
gsettings set org.gnome.desktop.background picture-uri $FIL$PIC

그리고 그것을 에 복사한 /bin/다음 sudo chmod 755 /bin/wallch.sh거기에 복사했습니다. 이것은 오류 없이 터미널에서 원활하게 쉽게 실행될 수 있습니다.

그러나 crontab에 다음과 같은 줄을 추가하면(터미널에서 사용자로 수행) 다음과 같습니다.

* * * * * /bin/wallch.sh

그냥 실행되지 않을 것입니다. 이론적으로는 1분마다 실행되어야 합니다.

/var/log/syslog말한다:

Feb 25 19:36:01 user-Ubuntu CRON[11762]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:36:01 user-Ubuntu CRON[11761]: (CRON) info (No MTA installed, discarding output)
Feb 25 19:37:01 user-Ubuntu CRON[11790]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:37:01 user-Ubuntu CRON[11789]: (CRON) info (No MTA installed, discarding output)
Feb 25 19:38:01 user-Ubuntu CRON[11828]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:38:01 user-Ubuntu CRON[11827]: (CRON) info (No MTA installed, discarding output)

어떤 제안이 있으십니까?

업데이트:

내가 작성한 스크립트(파일 이름을 변경했는데 지금은 입니다 . 또한 shebang을 제외 /bin/wallch하고로 시작하는 주석 줄을 제거했습니다 ):#

#!/bin/sh
DIR="/home/user/Wallpapers"
PIC=$(ls $DIR/*.jpg | shuf -n1)
FIL="file://"
gsettings set org.gnome.desktop.background picture-uri $FIL$PIC

출력 stat /bin/wallch:

user@user-Ubuntu:~$ stat /bin/wallch
File: `/bin/wallch'
Size: 484           Blocks: 8          IO Block: 4096   regular file
Device: 806h/2054d  Inode: 130389      Links: 1
Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-02-26 11:03:01.727198732 -0600
Modify: 2013-02-26 10:37:46.727135926 -0600
Change: 2013-02-26 11:02:06.215196433 -0600
Birth: -
user@user-Ubuntu:~$ 

답변을 보내주셔서 감사합니다!

답변1

예, 모든 MTA 패키지를 설치할 수 있습니다. 이미 사용할 수 있는 SMTP 서버(MTA)가 있는 경우 을 선택하세요 nullmailer. 그렇지 않으면 postfix(몇 가지 작업이 필요함) courier-mta정상적인 기본값이 제공되는 것을 사용할 수도 있습니다 (초보자에게는 다소 쉬운 IMO입니다).

위의 고정 너비 이름은 Ubuntu의 패키지 이름입니다. 그러면 apt-get install <packagename>MTA가 설치됩니다. 주요 문제는 MTA를 구성하지 않아 cron메일을 보낼 수 없다는 것입니다. 작업 자체는 내가 볼 수 있는 로그 출력에서 ​​오류를 나타내지 않습니다.

참고 사항: 작업 줄에 다음을 추가하여 작업의 출력을 억제할 수도 있습니다.

> /dev/null 2>&1

... 추가로 오류 종료 코드를 억제할 수도 있습니다(추가).

|| /bin/true

... 하지만 추천하지는 않습니다. 또한 여기 MAILTO에서 설정하는 또 다른 옵션이 있습니다 crontab( 참조 ). man 5 crontab그러나 그것은 각각에 대해 일종의 "글로벌"입니다 crontab.

MAILTO=""

cron실행한 작업의 출력(MTA를 찾은 경우 stdout/stderr)은 어떤 메일인가요? 그리고 기본적으로 그렇게 합니다. 그렇습니다. 또한 오류 종료 코드(0이 아님)로 인해 출력이 메일로 전송됩니다.

그러나 작업을 실행할 수 있어야 하며, chmod a+x ...이를 위해서는 모든 경우에 파일이 실행 가능해야 하며( ) 스크립트의 경우 스크립트 해석기 앞에 경로를 추가해야 하고 스크립트의 경우에는 경로를 추가해야 합니다. , 파일 시작 부분에 적절한 해시뱅 라인이 존재합니다.

답변2

대신 이 크론 라인을 사용하세요

* * * * * DISPLAY=:0 GSETTINGS_BACKEND=dconf /bin/wallch.sh

2시간마다(모두 짝수 시간) 배경 변경을 위해 시간 열에 */2를 사용할 수도 있습니다.

/usr/local/bin주제에서 벗어난 조언: 이것은 스크립트를 분리하기 위한 규칙일 뿐이며 관리 스크립트에 사용하기 위한 형식입니다 . :)

관련 정보