2015-05-07 2 views
0

Я хочу, чтобы автоматически запустить программу, если она выходит из строя (проверить, если процесс существует, если нет, то перезапустить его), поэтому использование кронтабом является простым решением, нозадача в кронтабе не работает

Я creatd простого кронтаб задача при использовании crontab -e или в /etc/crontab файл, например так:

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

он не работает, он никогда не запускает gnome-terminal, я могу видеть, он выполняет задачу в/вар/журнал/системный журнал (Ubuntu) или/вар/log/cron (CentOS), гном-терминал никогда не появляется.

если вы говорите, так как гном-терминал является программой графического интерфейса, то этот скрипт для создания службы с поддержкой BLUETOOTH не будет работать либо:

использованием crontab -e или /etc/crontab:

* * * * * /home/username/run-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 сценарий, но Bluetooth служба не будет запускаться, даже если остановить Bluetooth обслуживание вручную.

но:

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

работает, как ожидалось.

Что случилось?

ответ

0

Фактически crontab не загружает все переменные окружения текущего пользователя, для которого он работает, только некоторые из них.

Возможно, некоторые из этих переменных окружения требуются сценариями, которые вы пытаетесь запустить?

+0

Я просто прошу crob выполнить '/ usr/bin/gnome-terminal', какие еще переменные среды ему нужны? – CodyChan

+0

Не знаю ... Во всяком случае, зачем вы хотите, чтобы gnome-терминал исполнялся на второй основе ??? – Yannoff

+0

Это просто очень простой пример, показывающий, что работа crob не работает должным образом. – CodyChan