crontab为什么不执行

关键词: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

大功告成!

你可能感兴趣的:(crontab)