Linux

取消靜音的 cron 任務不起作用

  • February 12, 2017

我設置了兩個 cron 任務,在晚上將桌面的音頻靜音,然後在早上取消靜音(這樣電子郵件和其他通知就不會喚醒我):

lumpy@cheetoserver:~$ crontab -e

# At 10:15 PM every night, mute the volume
15 22 * * * /usr/bin/amixer -q set Master mute

# At 7AM every morning, unmute the volume
0 7 * * * /usr/bin/amixer -q set Master unmute

音頻在晚上靜音,但在早上永遠不會取消靜音。然而,如果我只是在 shell 中執行 7AM 取消靜音命令:

/usr/bin/amixer -q set Master unmute

…音頻立即取消靜音。

我在將它們輸入 crontab 之前測試了這兩個命令,它們立即靜音和取消靜音(即,不需要兩次取消靜音來抵消單個靜音或類似的東西)。

誰能闡明為什麼這不起作用?

我發現有完全相同問題的人的其他文章。問題似乎是 cron 作業在沒有必要 context 的情況下執行,添加export DISPLAY=:0到每個任務是解決方案:

lumpy@cheetoserver:~$ crontab -e

# At 10:15 PM every night, mute the volume
15 22 * * * export DISPLAY=:0 && /usr/bin/amixer -q set Master mute

# At 7AM every morning, unmute the volume
0 7 * * * export DISPLAY=:0 && /usr/bin/amixer -q set Master unmute

為了完整起見,我將添加上述set Master兩個任務中提到的幾個解決方案更改為set Master playback. 這對我的情況沒有影響,但如果第一個解決方案不能解決您的問題,您可能想嘗試一下。

引用自:https://unix.stackexchange.com/questions/344073