Shell
標準輸入、標準錯誤、重定向和日誌
這兩條線有區別嗎?
/home/user/script.sh >> /home/user/stdout_and_error.log 2>&1 /home/user/script.sh 2>&1 >> /home/user/stdout_and_error.log
知道我想將腳本的標準輸出和執行錯誤放在日誌文件中。如果沒有差異,如果我想記錄日誌記錄本身怎麼辦?
是,有一點不同。
/home/user/script.sh >> /home/user/stdout_and_error.log 2>&1
這會將 STDOUT 和 STDERR 發送到
/home/user/stdout_and_error.log
./home/user/script.sh 2>&1 >> /home/user/stdout_and_error.log
這會將 STDOUT 發送到
/home/user/stdout_and_error.log
,並將 STDERR 發送到以前的 STDOUT。
當您執行 shell 重定向時,重定向的左側將轉到重定向右側目前所在的位置。意思是
2>&1
,它將 STDERR (2) 發送到 STDOUT (1) 目前所在的任何位置。但是,如果您之後將 STDOUT 重定向到其他地方,則 STDERR 不會使用它。它繼續前進到 STDOUT 之前去的任何地方。這就是為什麼在你的第一個例子中,STDOUT 和 STDERR 都會去同一個地方,但在第二個例子中它們不會。