Linux
取消靜音的 cron 任務不起作用
我設置了兩個 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
. 這對我的情況沒有影響,但如果第一個解決方案不能解決您的問題,您可能想嘗試一下。