【问题标题】:task in crontab does not workcrontab 中的任务不起作用
【发布时间】:2015-05-07 10:33:17
【问题描述】:

我想在程序崩溃时自动启动(检查进程是否存在,如果不存在则重新启动它),所以使用crontab是一个简单的解决方案,但是

我使用 crontab -e 或在 /etc/crontab 文件中创建了一个简单的 crontab 任务,如下所示:

* * * * * /usr/bin/gnome-terminal

它不起作用,它永远不会启动 gnome-terminal,我可以看到它在 /var/log/syslog (Ubuntu) 或 /var/log/cron (CentOS) 中执行任务,gnome 终端永远不会出现起来。

如果你说由于 gnome-terminal 是一个 gui 程序,那么这个创建蓝牙服务的脚本也不会工作:

使用crontab -e/etc/crontab

* * * * * /home/username/run-bt

运行-BT:

#!/bin/sh

# find bt pid
/usr/bin/pgrep bluetoothd
# if not running
if [ $? -ne 0 ]
then
    /usr/sbin/service bluetooth restart
fi⏎

我已经使run-bt 脚本可执行,但是即使我手动停止蓝牙服务,蓝牙服务也不会启动。

但是这个:

* * * * * /bin/ls > /tmp/ls.output

按预期工作。

怎么了?

【问题讨论】:

    标签: cron crontab cron-task


    【解决方案1】:

    其实crontab不会加载它运行的当前用户的所有环境变量,只是其中的几个。

    您尝试运行的脚本可能需要其中一些环境变量?

    【讨论】:

    • 我只是让crob执行/usr/bin/gnome-terminal,它还需要什么环境变量?
    • 不知道......无论如何,你为什么要让 gnome-terminal 二次执行???
    • 这只是一个非常简单的示例,表明 crob 作业没有按预期工作。
    • 首先您可以尝试* * * * * /usr/bin/gnome-terminal >/tmp/mylog 2>&1 看看该命令是否触发了一些错误(/usr/bin/gnome-terminal 的所有输出都将记录到/tmp/mylog 文件中)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2011-12-19
    • 2013-11-12
    • 2018-12-21
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多