天天看點

linux nohup

If standard output is a terminal, append output to 'nohup.out'

If standard error is a terminal, redirect it to standard output.  To save output to FILE, use 'nohup COMMAND > FILE'.

nohup: ignoring input and appending output to `nohup.out'

nohup sh test.sh &

會将腳本中的輸出(标準輸出和錯誤輸出)都append到本路徑下的nohup.out檔案中

如果使用nohup指令送出作業,那麼在預設情況下該作業的所有輸出都被重定向到一個名為nohup.out的檔案中,除非另外指定了輸出檔案:

nohup command > myout.file 2>&1 &

應用: 

1 我不需要将腳本中的錯誤輸出寫到nohup檔案中

nohup sh test.sh 2>/dev/null &

2 我需要将腳本中的輸出輸出到一個檔案中而不是nohup.out中

疑問如果我退出了終端,我在ps -ef |grep "test.sh"的時候,并不會顯示是重定向到哪個檔案,這個時候如何找出呢?

方法

第一步:

ps -ef |grep "test.sh"   找出這個程序的pid

[root@master scripts]# ps -ef |grep "test.sh"

root      2700     1  0 20:38 ?        00:00:00 sh test.sh

第二步: 利用lsof列出這個程序所占用的檔案

lsof -p 2700

注意: nohup python test.py & 可能tail -f nohup.out 得到的結果不是你想要得,這個就要了解python中的(print 函數 sys.stdout.write() sys.stdout.flush()) 得深入了解一下了。有個緩沖的概念。

本文轉自殘劍部落格51CTO部落格,原文連結http://blog.51cto.com/cuidehua/1812430如需轉載請自行聯系原作者

cuizhiliang