背景:之前做完一個項目,想把它放到雲服務器上 24 小時不間斷運行,在雲服務器上面折騰了不少時間,總算搞定了
因爲是 C++ 項目,而且寫的服務器也是基於 httplib 庫實現的,所以不需要在雲服務器上進行配置,只需要在 Linux shell 命令下將生成的可執行文件變爲後臺進程就可以了
命令如下:
nohup ./ 可執行的程序 > 正確輸出日誌文件 2>錯誤輸出流 &
例如
nohup ./system > tmp/right.log 2> tmp/error.log &
爲什麼這樣寫呢?因爲我們的前臺進程一般都會在命令界面進行輸出,但是對於後臺進程我們需要把輸出的內容重定向到一個文件中去.
什麼叫重定向,就是我本來要顯示在界面,但是通過 shell 命令放到了指定文件中,或者我本來想要讓輸出到 A 文件,但是可以重定向到 B 文件中
Linux 進程默認情況下會有 3 個缺省打開的文件描述符,分別是標準輸入0, 標準輸出1, 標準錯誤2.
0,1,2對應的物理設備一般是:鍵盤,顯示器,顯示器
但是按照上面那樣寫,如果退出 shell 命令依然訪問不到
可以把日誌寫到**.log 中,如下圖:
可以將命令寫成這樣
./system & >**.log 2>&1