對於shell腳本執行,沒有任何報錯,也沒有找到看到任何日志的情況,運用這種執行日志重定向輸出,可以判斷執行出錯位置
1、linux中的 &符號
在Linux中,當在前台運行某個作業時,終端被該作業占據;而在后台運行作業時,它不會占據終端。
可以使用&命令把作業放到后台執行。實際上,這樣是將命令放入到一個作業隊列中了:
$ ./test.sh &
[1] 17208
$ jobs -l
[1]+ 17208 Running ./test.sh &
在后台運行作業時要當心:需要用戶交互的命令不要放在后台執行,因為這樣你的機器就會在那里傻等。
不過,作業在后台運行一樣會將結果輸出到屏幕上,干擾你的工作。
如果放在后台運行的作業會產生大量的輸出,最好使用下面的方法把它的輸出重定向到某個文件中:
command >out.file 2>&1 &
在上面的例子中,2>&1表示所有的標准輸出和錯誤輸出都將被重定向到一個叫做out.file 的文件中。
當你成功地提交進程以后,就會顯示出一個進程號,可以用它來監控該進程,或殺死它。
2、 退出賬號終端窗口后,還需進程執行,用nohup conmmand &
如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令。
該命令可以在你退出帳戶之后繼續運行相應的進程。nohup就是不掛起的意思( no hang up)。
該命令的一般形式為: nohup conmmand &
如果使用nohup命令提交作業,那么在缺省情況下該作業的所有輸出都被重定向到一個名為nohup.out的文件中,除非另外指定了輸出文件:
nohup command > myout.file 2>&1
在上面的例子中,輸出被重定向到myout.file文件中。