如果程序崩溃,我想自动启动程序(检查进程是否存在,如果没有,重新启动它),所以使用crontab是一个简单的解决方案,但是
我使用crontab -e
或/etc/crontab
文件创建了一个简单的crontab任务,如下所示:
* * * * * /usr/bin/gnome-terminal
它不起作用,它永远不会启动gnome-terminal
,我可以看到它执行/ var / log / syslog(Ubuntu)或/ var / log / cron(CentOS)中的任务,gnome-terminal永远不会出现。
如果你说因为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
按预期工作。
怎么了?
答案 0 :(得分:0)
实际上crontab
不会加载它所运行的当前用户的所有环境变量,只是其中一些。
您尝试运行的脚本可能需要其中一些环境变量吗?