Un camino por recorrer:
a=$(cat file1 | wc -c)
esto no genera el nombre del archivo y su expr
funcionará.
Возможно, простой скрипт может помочь:
ps -axu | grep '[n]grok' 2>&1 1>/dev/null || bash -c "ngrok"
Приведенный выше скрипт проверяет состояние запущенного ngrok
, если он не запущен, выполните команду для его запуска. Скобки в команде grep
помогают отфильтровать саму команду grep в результатах.
Добавьте это в cron
конфигурационный файл, он будет периодически проверяться.
ПРИМЕЧАНИЕ:
Вам может понадобиться добавить некоторую задержку между проверкой и перезапуском, также необходимо установить верхний предел повторных попыток для предотвращения ситуаций, когда ngrok
имеет какую-то критическую ошибку и не может запуститься снова.
Как бы мне ни не нравился systemd
, я должен признать, что он определенно может это делать.
Не все системы init
поддерживают автоматический перезапуск неудачных процессов.
Однако обратите внимание, что проверка того, что процесс по-прежнему «запущен», - это только самая элементарная проверка работоспособности, которую вы можете сделать. Лучше, если основной цикл программы сможет проверять какое-то "вы еще живы?" сообщение и ответьте на него. Тогда вы знаете, что он не застрял в бесконечном цикле или не застрял в ожидании ввода-вывода, который не завершится.