ubuntu 中的 Cron 作业未获得所需的输出

问题描述 投票:0回答:2

我正在尝试设置一个 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)

所以,我想知道我在这里做错了什么以及为什么我看不到我想要的输出(通知)。

linux cron
2个回答
2
投票

猜测,

notify-send
是一个使用X的程序;在这种情况下,它需要知道显示通知的 X 显示器的显示器编号。当您在 X 中启动终端时,它会自动设置,但 crontab 没有该环境。

作为一个简单的开始,尝试将 crontab 行更改为:

  * * * * * DISPLAY=:0.0 /home/noob/test.sh

0
投票

在某些系统上,

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
© www.soinside.com 2019 - 2024. All rights reserved.