2015-07-20 79 views
-4

我剛開始學習golang,我想按照here試圖建立一個hello world網頁。但是當我通過SSH使用runbuild時,我不會「重新獲得」提示的控制權。樓宇圍棋應用

enter image description here

如果我做Ctrl + C,我的應用程序不再工作,我想我誤解了如何去工作

+0

索引是你的應用程序的名字嗎?編譯後的Go可執行文件通常只是一個常規的可執行文件,可讀/寫stdin/stdout,打開套接字等。 –

+0

@AlexAtNet yes我的應用程序被命名爲index.go – user2650277

+3

'index'在前臺運行,'Ctrl + C'發送SIGINT到'index'關閉進程。 – jmaloney

回答

0

請注意,如果您nohup該過程將「無限期」運行,直到您致電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 

如果您轉到應用程序不需要綁定到端口80。如果是的話,使用setcap(永不運行應用程序的根目錄)這將工作與setcap cap_net_bind_service=+ep /home/yourappuser/bin/index

1

您可以使用nohup對於這樣的:

nohup ./index &

nohup用於防止用戶註銷後終止進程,並且&用於在後臺啓動進程。 之後你可以退出控制檯。

+3

請注意,如果你'nohup'這個過程將會「無限期地」運行,直到你調用'kill '爲止。此外,如果它綁定到HTTP端口,則需要記住要殺死正在運行的進程,否則新的/重建進程將無法綁定。使用一些簡單的Supervisor([guide here](https://elithrar.github.io/article/running-go-applications-in-the-background/))或daemontools是運行管理進程的更爲理智的方式。 – elithrar

+0

@elithrar這正是我所需要的。謝謝你的指導,並善意發表上述作爲我的問題的答案,以便我可以接受它 – user2650277