近期研究Golang,將編譯好的可執行文件複製到服務器後,遇到以下執行問題:
- 需要一個一個手動啓動
- 啓動後會接管控制檯,無法進行其他操作
- Ctrl+C退出或關閉SSH控制檯後程序立刻停止,無法在後臺運行
- 服務器重啓後無法自啓動
針對以上問題,研究了一陣子,終於全部解決,索性記錄一下。
先將最終要用到的文件展示一下,然後慢慢解釋:
/home/www/app_goodee_cn/public/test/serverAutoRun.sh
#! /bin/bash
allfile=`ls /home/www/app_goodee_cn/public/test/go`
for onefile in $allfile
do
nohup /home/www/app_goodee_cn/public/test/go/$onefile >>/dev/null 2>&1 &
done
/etc/rc.d/rc.local
/home/www/app_goodee_cn/public/test/serverAutoRun.sh &
兩個文件都需要賦予可執行權限。
serverAutoRun.sh:
shell腳本,用於控制執行哪些程序
本示例中的循環表示循環執行/home/www/app_goodee_cn/public/test/go目錄下的所有程序,也可以加一些篩選條件,這裏不進行擴展了,有需要的看官自行搜索。
nohup表示可以脫離終端運行,也就是可以關閉SSH連接窗口,依然運行
命令最後的&不能省略,這表示後臺執行,不接管控制檯輸出
rc.local:
開機自啓動列表,用於控制開機執行什麼腳本,最後的&同上