Linux后台運行命令nohub輸出pid到文件(轉)


用nohup可以啟動一個后台進程。讓一個占用前台的程序在后台運行,並靜默輸出日志到文件:

nohup command > logfile.txt &

但是如果需要結束這個進程,一般做法是用ps命令找出這個進程,用grep過濾進程名,最后得到pid,然后再用kill命令結束進程:

ps -ax | grep command  # 查看PID
kill -9 [PID] # 結束PID對應的進程

有一個更簡單的辦法是,在用nohup創建進程時,就用shell的特殊變量$!把最后一個后台進程的PID保存下來:

nohup command > logfile.txt & echo $! > pidfile.txt

需要結束進程的時候,直接進行kill:

kill -9 `cat pidfile.txt`

附:Shell中的特殊變量說明

變量 說明
$$ Shell本身的PID(ProcessID)
$! Shell最后運行的后台Process的PID
$? 最后運行的命令的結束代碼(返回值)
$- 使用Set命令設定的Flag一覽
$* 所有參數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$@ 所有參數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$# 添加到Shell的參數個數
$0 Shell本身的文件名
$1~$n 添加到Shell的各參數值。$1是第1參數、$2是第2參數…。

 

參考:

http://www.jianshu.com/p/5a04e2452e3f(以上內容轉自此篇文章)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM