Если вы хотите перезапустить процесс, используя скрипт bash, не делайте ошибку, полагаясь на сломанные инструменты, такие как pgrep. Более того, ваш bash-код сильно страдает от разделения слов и неожиданных ошибок расширения пути.
Сделайте это:
#!/usr/bin/env bash
until "$@"; do
echo "$1 exited with exit code: $?. Respawning .."
sleep 1
done
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1007
Также обратите внимание на использование "$@"
.
Ключевое слово until
будет перезапускать ваш процесс до тех пор, пока он не завершится корректно (с кодом выхода 0), что означает, что он завершился без ошибок (возможно, потому что вы попросили его остановить, например, при перезагрузке системы).
Предполагая, что он называется 'respawn
' и находится в PATH, используйте его так:
respawn mycommand --foo=bar