Мне нужно отключать и перезапускать мой сервер ngrok
каждые 24 часа, поэтому я подумал об использовании cronjob для запуска сценария оболочки. Проблема, с которой я столкнулся, заключается в том, что когда я перезапускаю ngrok
в сценарии оболочки, он запускает его в рамках данного сеанса оболочки.
Как я могу запустить ngrok
в другом сеансе, чтобы продолжить выполнение других проверок в том же скрипте?
Код, который у меня есть:
# grabs the PID for the current running ngrok
ngrok_pid=$(pgrep ngrok)
echo "Current ngrok PID = ${ngrok_pid}"
# kills ngrok
kill_ngrok_pid=$(kill -9 $ngrok_pid)
# get exit status code for last command
check=$?
# check if the exit status returned success
if [ $check -eq 0 ]; then
# re-start ngrok
$(./ngrok http 5000 &)
# do more checks below...
else
echo "NO ngrok PID found"
fi
Я не вижу, что $(./ngrok http 5000 &)
добавляет никаких преимуществ. Я ожидаю, что ./ngrok http 5000 &
позволит сценарию продолжить работу и делать другие вещи (если вам нужен screen
для захвата вывода или позволяет использовать внутреннюю (для ngrok) командную строку), тогда я думаю, что screen
- единственный выход. Удачи.
Как насчет запуска ngrok в отдельном сеансе GNU Screen?
screen -d -m ngrok http 5000
. Затем вы можете просто подключиться к сеансу экрана, чтобы увидеть стандартный вывод ngrok. Также обратите внимание на опцию Screen-h
.