Запуск программы с использованием задания cron

Программа видеонаблюдения работает на ПК, и мне нужно, чтобы она всегда работала и сверху, но иногда может возникнуть проблема в программе и завершить ее. Поэтому мне нужен скрипт, чтобы проверить, не запущена ли программа и запустить ее.

Я использовал задачу cron для задания, я написал это задание cron для запуска скрипта:

*/1 * * * * /home/masoud/Desktop/vision3/cron.sh 

и cron.sh:

 cd "${0%/*}" if pgrep -x "video" > /dev/null then echo "running" else /home/masoud/Desktop/vision3/video & fi 

Cron.sh делает работу корректно, задание cron запускает скрипт, но он кратковременно завершает его. Я вижу, что мой светодиод веб-камеры включается на секунду. Что я делаю не так?

Работы Cron не подходят для управления настольными приложениями. Вам было бы лучше запустить приложение из сценария цикла цикла; на его простейшем

 #!/bin/sh cd /home/masoud/Desktop/vision3 while :; do ./vision; done 

Таким образом, когда vision прекращается, оно будет запущено снова.

Возможно, вам захочется спланировать стратегию выхода, когда вы действительно хотите остановить программу. Это сделало бы:

 #!/bin/sh cd /home/masoud/Desktop/vision3 while [ ! -f no_vision ]; do ./vision; done 

Затем, когда вы хотите остановить программу,

 touch /home/masoud/Desktop/vision3/no_vision 

и закройте его – скрипт оболочки тоже остановится.