Обратите внимание, что если вы выполните 0-процесс, он будет работать «бесконечно», пока вы не назовете на него kill <PID>
. Кроме того, если он связывается с HTTP-портом, вам нужно запомнить, как убить текущий процесс, иначе ваш новый/перестроенный процесс не сможет связываться.
Использование чего-то простого, такого как Supervisor (guide here), или daemontools - более разумный способ запуска процессов управления. Вот быстрый руководитель конфигурации для приложения Go:
[program:index]
command=/home/yourappuser/bin/index
autostart=true
autorestart=true
startretries=10
# the user your app should run as (i.e. *not* root!)
user=yourappuser
# where your application runs from
directory=/srv/www/yourapp.com/
# environmental variables
environment=APP_SETTINGS="/srv/www/yourapp.com/prod.env"
redirect_stderr=true
# the name of the log file.
stdout_logfile=/var/log/supervisor/yourapp.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
Это будет работать, если приложение Go не нужно выполнить привязку к порту 80. Если это не делает, используйте setcap
(и не запускать приложения как корень) с setcap cap_net_bind_service=+ep /home/yourappuser/bin/index
.
Является ли 'index' ваше имя приложения? Скомпилированный исполняемый файл Go обычно является обычным исполняемым файлом, который читает/записывает в stdin/stdout, открывает сокеты и т. Д. –
@AlexAtNet да, мое приложение называется index.go – user2650277
'index' работает на переднем плане,' Ctrl + C' отправляет SIGINT, чтобы «index» завершил процесс. – jmaloney