執(zhí)行shell 腳本將日志全部輸出到文件的多種方法
在執(zhí)行 Shell 腳本時(shí),如果需要將 所有輸出(包括標(biāo)準(zhǔn)輸出 stdout 和錯(cuò)誤輸出 stderr) 重定向到日志文件,可以使用以下方法:
方法 1:直接重定向(推薦)
/appdata/mysql_backup_dump.sh > /var/log/mysql_backup.log 2>&1
>:將標(biāo)準(zhǔn)輸出(stdout)重定向到/var/log/mysql_backup.log。2>&1:將錯(cuò)誤輸出(stderr)合并到標(biāo)準(zhǔn)輸出(即也寫入日志文件)。- 效果:所有輸出(包括
echo、mysqldump正常信息、錯(cuò)誤信息)都會(huì)寫入日志文件。
方法 2:追加模式(不覆蓋舊日志)
/appdata/mysql_backup_dump.sh >> /var/log/mysql_backup.log 2>&1
>>:追加到日志文件(而不是覆蓋),適合長(zhǎng)期運(yùn)行的備份任務(wù)。
方法 3:使用 tee 命令(同時(shí)輸出到屏幕和文件)
/appdata/mysql_backup_dump.sh 2>&1 | tee -a /var/log/mysql_backup.log
tee -a:將輸出 同時(shí)顯示在終端 并 追加到日志文件(-a表示追加)。- 適用場(chǎng)景:調(diào)試時(shí)想實(shí)時(shí)查看輸出,同時(shí)保留日志。
方法 4:在腳本內(nèi)部重定向
如果腳本是自己編寫的,可以在腳本開頭指定日志文件:
#!/bin/bash exec > /var/log/mysql_backup.log 2>&1 # 所有后續(xù)輸出都重定向到日志 echo "Backup started at $(date)" # 備份命令(如 mysqldump)
exec:重定向整個(gè)腳本的輸出,包括后續(xù)所有命令。
方法 5:使用 logger 寫入系統(tǒng)日志
如果希望日志進(jìn)入系統(tǒng)日志(如 /var/log/syslog 或 /var/log/messages):
/appdata/mysql_backup_dump.sh > /tmp/backup.log 2>&1 logger -t "MySQL_BACKUP" -f /tmp/backup.log # 寫入系統(tǒng)日志 rm -f /tmp/backup.log # 可選:刪除臨時(shí)日志文件
logger -t "TAG":給日志添加標(biāo)簽(方便過濾)。-f:指定日志文件路徑。
最佳實(shí)踐
- 推薦方法 1 或 2(簡(jiǎn)單可靠)。
- 日志輪轉(zhuǎn):使用
logrotate管理日志文件,避免日志過大:# /etc/logrotate.d/mysql_backup /var/log/mysql_backup.log { daily rotate 7 compress missingok notifempty } - 在 cron 中記錄日志:
0 2 * * * /appdata/mysql_backup_dump.sh > /var/log/mysql_backup.log 2>&1
驗(yàn)證日志是否生效
tail -f /var/log/mysql_backup.log # 實(shí)時(shí)查看日志
或手動(dòng)運(yùn)行腳本并檢查日志:
/appdata/mysql_backup_dump.sh > /var/log/mysql_backup.log 2>&1 cat /var/log/mysql_backup.log
總結(jié)
| 方法 | 命令 | 特點(diǎn) |
|---|---|---|
| 覆蓋日志 | > log 2>&1 | 每次運(yùn)行覆蓋舊日志 |
| 追加日志 | >> log 2>&1 | 保留歷史日志 |
| 屏幕+文件 | 2>&1 | tee -a log | 調(diào)試時(shí)使用 |
| 腳本內(nèi)重定向 | exec > log 2>&1 | 整個(gè)腳本生效 |
| 系統(tǒng)日志 | logger -t TAG -f log | 集成到系統(tǒng)日志 |
選擇最適合你的方式即可!
到此這篇關(guān)于執(zhí)行shell 腳本將日志全部輸出到文件的多種方法的文章就介紹到這了,更多相關(guān)shell腳本日志輸出到文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux中執(zhí)行shell腳本的4種方法總結(jié)
這篇文章主要介紹了Linux中執(zhí)行shell腳本的4種方法總結(jié),即在Linux中運(yùn)行shell腳本的4種方法,需要的朋友可以參考下2014-08-08
Linux下使用nextcloud搭建個(gè)人網(wǎng)盤代碼實(shí)例
這篇文章主要介紹了Linux下使用nextcloud搭建個(gè)人網(wǎng)盤代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06
詳解Linux 操作系統(tǒng)下安裝rpm包的方法步驟
這篇文章主要介紹了詳解Linux 操作系統(tǒng)下安裝rpm包的方法步驟的相關(guān)資料,需要的朋友可以參考下2015-11-11

