Linux中的輸入文件、輸出文件、錯誤輸出
| 文件名稱 | 文件描述符 |
|---|---|
| 標准輸入 | 0 (默認是鍵盤) |
| 標准輸出 | 1 (默認是屏幕) |
| 標准錯誤 | 2 (默認是屏幕) |
輸出重定向
Linux中&表示后台運行,>表示輸出重定向
| 命令 | 描述 |
|---|---|
| command > file | 標准輸出重定向到文件中,文件不存在時會自動創建再寫入,文件存在時會先刪除文件中的內容再寫入 |
| command >> file | 標准輸出重定向到文件中,文件不存在時會自動創建再寫入命令產生的標准輸出,文件存在時不改變原文件內容寫入再寫入命令產生的標准輸出 |
| command > file 2>&1 | 標准輸出和錯誤輸出重定向到文件中,若文件不存在則會新建文件再寫入,若文件存在會先刪除文件中的原本內容再寫入(2>&1表示標准錯誤以后台模式重新向到標准輸出中) |
| command >> file 2>&1 | 標准輸出和錯誤輸出重定向到文件中,若文件不存在,則會新建文件再寫入;若文件存在,則會在不改變文件原本內容的情況下再寫入文件 |
| command 2 > file | 標准錯誤重定向到文件中,若文件不存在則會新建文件再寫入,若文件存在會先刪除文件中的原本內容再寫入 |
| command 2 >> file | 標准錯誤重定向到文件中,若文件不存在,則會新建文件再寫入;若文件存在,則會在不改變文件原本內容的情況下再寫入文件 |
輸入重定向
<表示輸入重定向
| 命令 | 描述 |
|---|---|
| command < file1 > file2 | command命令以file1為標准輸入,以file2為標准輸出 |
| command < file | command命令以file為標准輸入 |
| command << del | command以鍵盤為標准輸入,直到遇到del結束 |
/dev/null
/dev/null在Linux中充當黑洞的作用,任何寫入到/dev/null中的內容都會被自動刪除
# 將命令產生的錯誤重定向到/dev/null,即命令執行不會在屏幕上顯示任何錯誤信息
command 2 > /dev/null
# 將命產生的日志重定向到文件中,將命令產生的錯誤信息寫入到/dev/null,以此達到日志寫入文件,錯誤直接忽略,屏幕不會顯示任何信息
command > file 2>&1
nohup command > file 2>&1 &
nohup
nohup表示不掛斷地執行命令
通常我們在執行Linux命令時會使用&使命令在后台運行而不影響terminal的正常使用,而&存在一個問題:關閉terminal會導致使用&的命令中斷,這時就需要nohup command &,最直接簡單的命令就是:
nohup command > file &
命令執行,正常日志會自定寫入到file中,但如果有錯誤信息,則錯誤信息會直接打印到屏幕上
nohup command > file 2>&1 &
命令執行,生成的正常日志和錯誤信息會記錄在file中
jobs
查看使用nohup命令提交的job
fg %n
關閉某個job
