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