我正在尝试设置一个 cronjob 每分钟执行一个脚本。
我的 test.sh 脚本:
#!/bin/bash
notify-send hello
我已使上述脚本可执行。
这是我的
crontab -e
文件的输出 http://pastie.org/4316348
现在,当我看到
syslog
的输出时,它表明 cronjob 每分钟都在执行,但我看不到我想要的输出。
系统日志:
Jul 24 17:42:01 noob CRON[5291]: (noob) CMD (/home/noob/test.sh)
Jul 24 17:43:01 noob CRON[5364]: (noob) CMD (/home/noob/test.sh)
Jul 24 17:44:01 noob CRON[5374]: (noob) CMD (/home/noob/test.sh)
Jul 24 17:45:01 noob CRON[5386]: (noob) CMD (/home/noob/test.sh)
所以,我想知道我在这里做错了什么以及为什么我看不到我想要的输出(通知)。
猜测,
notify-send
是一个使用X的程序;在这种情况下,它需要知道显示通知的 X 显示器的显示器编号。当您在 X 中启动终端时,它会自动设置,但 crontab 没有该环境。
作为一个简单的开始,尝试将 crontab 行更改为:
* * * * * DISPLAY=:0.0 /home/noob/test.sh
在某些系统上,
DISPLAY=:0.0 /path/to/shell_script.sh
可能不起作用。
相反,下面的脚本可以工作:
#! /bin/bash
export XDG_RUNTIME_DIR=/run/user/$(id -u)
set -x
notify-send "Hello"
Crontab 将如下所示。
* * * * * bash /path/to/shell_script.sh