我设置了两个 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 unmute 命令:
/usr/bin/amixer -q set Master unmute
...音频立即取消静音。
我在将这两个命令输入 crontab 之前测试了它们,并且它们立即静音和取消静音(即,不需要两次取消静音来抵消单个静音或类似的东西)。
任何人都可以阐明为什么这不起作用吗?
答案1
我发现其他人的帖子也有完全相同的问题。问题似乎是 cron 作业运行没有必要的上下文,并将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
.这对我的情况没有影响,但如果第一个解决方案不能解决您的问题,您可能想尝试这个。