克朗不工作

克朗不工作

寫了一個簡短的 shell 腳本「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

它只是無法運行。理論上它應該每分鐘運行一次。

/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是它運行的作業的輸出(stdout/stderr,如果它找到 MTA)。預設情況下它會這樣做,是的。此外,錯誤退出代碼(非零)將導致輸出被郵寄。

但是,它還需要能夠運行作業,在所有情況下都要求檔案可執行 ( chmod a+x ...),或者在腳本的情況下,您需要在腳本解釋器的前面加上路徑,在腳本的情況下,檔案開頭存在正確的hashbang 行。

答案2

使用這個 cron 行代替

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

也可以在小時列中使用 */2 每兩小時(所有偶數小時)背景變更一次

題外話建議:這不是一條規則,只是一種將腳本分開的形式,/usr/local/bin供您管理腳本使用。 :)

相關內容