我时不时会关闭 workrave 程序。例如,当我正在看电影时。然后我忘记重新启动它。
所以,我想反复重启它。不知何故,cron不起作用。以下给出总结:
Ubuntu 仿生 (18.04)
我是普通用户(不是 root)
$ xhost
access control enabled, only authorized clients can connect
INET:localhost
INET6:localhost
SI:localuser:USERNAME
$ echo $DISPLAY
:0
$ crontab -l
* * * * * export DISPLAY=:0 && /usr/bin/workrave
当我打开 tilix 终端并输入时/usr/bin/workrave
,程序启动正常。
命令
* * * * * env DISPLAY=:0 /usr/bin/workrave
也不起作用。
答案1
假设您的用户名是tiger
- 只需将名称下方的所有位置替换为您的真实用户名。在用户的主目录中创建 bash 脚本:
touch /home/tiger/workrave.sh
使创建的脚本可执行:
chmod +x /home/tiger/workrave.sh
在文本编辑器中打开脚本,例如将其设为 nano:
nano /home/tiger/workrave.sh
将其内容插入脚本(不要忘记替换tiger
):
#!/bin/bash
ifrun=$(pgrep -cxu tiger -f /usr/bin/workrave)
if [[ $ifrun == 0 ]] ;
then
DISPLAY=:0 /usr/bin/workrave &
fi
保存更改并关闭文本编辑器。打开 crontab 为tiger
:
crontab -e
在 crontab 的末尾添加以下行(不要忘记替换tiger
):
*/1 * * * * /home/tiger/workrave.sh
保存并关闭 crontab。检查一切是否正常(cron 将每分钟运行一次脚本)。设置脚本执行的时间。就这样。
评论。仅当其他实例未运行时,该脚本才会执行 workrave。
更新
用于测试目的的脚本(替换tiger
):
#!/bin/bash
DISPLAY=:0 /usr/bin/workrave 2>> /home/tiger/workrave-errors.log