在Linux中將nohup輸出重定向到指定文件

一、nohup命令簡介

在Linux中,nohup命令可以在用戶退出登錄後仍然運行指定的命令或腳本,不會受到HUP(掛起)信號的影響,即使關閉終端窗口或退出當前會話,被nohup的命令仍然會在後台運行。nohup命令常用於長時間運行的任務,如定時備份、數據掃描等。

nohup具有如下語法:

nohup COMMAND [ARGS] [&]

其中COMMAND是要執行的命令或腳本,[ARGS]是命令或腳本的參數,&符號表示在後台啟動命令。

二、nohup輸出重定向

1. 將nohup輸出追加到文件

在使用nohup啟動腳本後,我們可以通過重定向符號”>>”指定輸出到文件中,對於長時間運行的程序,比如備份腳本,在nohup命令後加上”>>”選項可以將命令的輸出追加到指定的文件中,以便我們在後續查看輸出日誌,示例代碼如下:

nohup command >> log.txt &

其中,command是要執行的命令或腳本,log.txt是輸出日誌文件名,&符號表示在後台啟動命令。

2. 將nohup輸出覆蓋到文件

如果我們希望每次運行腳本時將輸出覆蓋到同一個文件中,可以用重定向符號”>”代替”>>”,示例代碼如下:

nohup command > log.txt &

其中,command是要執行的命令或腳本,log.txt是輸出日誌文件名,&符號表示在後台啟動命令。

3. 將nohup輸出同時輸出到終端和文件

還有一種場景是既需要將nohup輸出到文件中,又需要將輸出實時的展示在終端上,此時可以通過tee命令實現,示例代碼如下:

nohup command | tee log.txt &

其中command是要執行的命令或腳本,log.txt是輸出日誌文件名,tee命令會將數據重定向到指定文件同時輸出到屏幕上。

三、小技巧:nohup輸出後台運行進程PID的獲取

1. 使用$!獲取PID

在使用nohup啟動後台進程時,通常需要獲取進程的PID,以便於後續的停止等操作,這個時候可以通過$!獲取進程的PID,示例代碼如下:

nohup command &
echo $! > pid

上面的命令的含義是:啟動command命令,並將進程的PID輸出到pid文件中。注意,$!只能獲取到最近一個後台進程的PID,如果要獲取上一個後台進程的PID,可以使用歷史命令中的!-n,其中n是歷史記錄數目,例如!-2表示執行倒數第二條命令。

2. 使用pidof獲取PID

另外,我們還可以使用pidof命令獲取nohup啟動的後台進程的PID,示例代碼如下:

nohup command &
pidof command > pid

上面的命令的含義是:啟動command命令,通過pidof命令獲取命令的PID,並將PID輸出到pid文件中。

以上是將nohup輸出重定向到指定文件的方法和小技巧,可以實現將運行的腳本或命令在後台運行,並將輸出到指定文件中,可以有效的避免在終端崩潰或關閉時運行的腳本停止運行,同時方便後續查看運行日誌。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/189297.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 08:02
下一篇 2024-11-29 08:02

相關推薦

發表回復

登錄後才能評論