现在的位置: 首页 > 综合 > 正文

crontab为什么不执行

2013年06月26日 ⁄ 综合 ⁄ 共 718字 ⁄ 字号 评论关闭

关键词:crontab, shell, notify-send, xauth,xhost 

写了一个脚本,在终端下运行没有问题:

#!/bin/sh

export DISPLAY=:0
time=`awk '{print $1}' /proc/uptime`
text="你已经连续开机${time%.*}小时了,请注意休息。系统将于5分钟后关闭,请及时保存."
if [ ${time%.*} -ge 7200 ]
then notify-send $text
fi

 

但是写到crontal中就是不行:

# m h dom mon dow usercommand
* * * * * root export DISPLAY=:0&&/home/xxx/notify.sh

这是为什么呢?

 

=======================================

更新: 经过查找原因,修改后OK。

首先,可以通过:/home/notify.sh >> /home/log.txt 2>&1
来deubg,看一下crontab是否有执行。

我的是可以执行的,只是GUI没有显示出来。为什么呢。应该是DISPLAY变量设置有问题。
但是在crontab中是添加了DISPLAY=:0的啊。

后来,看到网上有提到,如果在终端中执行GUI程序,切换用户后要重设DISPLAY变量才可以显示,
那么原因是否就是因为在/home目录下已经有.Xauthority这个文件了,如果用root去执行,这个变量不重设的话是无法显示的;
那我就用原始登录的用户来执行就好了,于是修改为如下:

# m h dom mon dow usercommand
*  *    * * *    xxx(myname)    export DISPLAY=:0 /home/xxx/notify.sh

大功告成!

【上篇】
【下篇】

抱歉!评论已关闭.