Linux定時任務,執行shell文件失敗問題&&mailed 73 bytes of output but got status 0x004b#012報錯解決

Linux定時任務,執行shell文件失敗問題

1 前言

最近一直被別人攻擊數據庫,ε=(´ο`*)))唉。又不是什麼重要數據,怎麼一直逮住我不放了。實在沒有什麼辦法了,只能把數據庫做做備份,將損失降到最低吧o(╥﹏╥)o

2 編寫shell腳本

2.1 創建shell腳本文件

touch xxx.sh

2.2 編輯shell腳本文件

vim xxx.sh

MySQL備份基本命令

mysqldump -uxxx -pxxx dbname > backup.sql

將上面MySQL的基本導出語句的用戶名,密碼,數據庫,導出的SQL文件名補全就可以了(根據自己的需求)

3 創建定時任務

使用crontab命令創建定時任務

crontab -e

我自己設置的是中午11:30與晚上的23:30進行備份,時間根據自己的需求來確定。表達式後面是腳本所在的位置(注意名字與路徑的正確)

4 出現的問題

當我覺得萬事大吉時,我做了一個測試,將定時任務改成每分鐘執行,官產效果。問題出現了。首先並沒有導出相應的SQL文件,然後我查看了日誌,日誌如下

我在網上找這個錯誤是什麼意思,但是基本沒有說是什麼意思的(發送郵件失敗),大多是叫我去找在/var/sppol/cron文件夾下找一個名叫root的文件,下面有具體的報錯信息,但是當我去下面找這個文件時,哪裏有什麼root文件ヽ(ー_ー)ノ

5 解決問題

5.1 重定向找出錯誤信息

上面的信息是發送郵件報錯,沒有具體的報錯信息。首先我想到的是,可能是我的語句寫錯了,但是經過一番檢驗,發現並沒有錯。那究竟是什麼問題呢?

爲了找到錯誤的具體信息,我把語句改成了

mysqldump -uxxx -pxxx dbname > backup.sql >xxx.log 2>&1

將它的標準輸出錯誤輸出信息都重定向到了一個日誌中

經過一番操作,我發現了日誌中的信息

/bin/sh: /usr/xxx.sh: Permission denied

拒絕訪問(我是root用戶,排除需要root才能執行的原因,然後就在這時突然想到了還有文件的執行權限問題)

查看文件是否有執行權限,結果果然不出所料

馬上添加執行權限(看情況添加權限,我只添加了文件所有者的執行權限)

chmod u+x xxx.sh 

5.2 報錯仍未解決

終於,這次shell腳本執行了,導出了SQL文件,但是通過查看日誌,發現還是會出現mailed 73 bytes of output but got status 0x004b#012這個問題,這是爲什麼呢?(都快哭了o(╥﹏╥)o)

通過查看maillog,發現了下面的報錯

cat  /var/log/maillog

postfix/sendmail[8087]: fatal: parameter inet_interfaces: no local interface found for ::1這是什麼錯誤了(參數inet_interfaces:未找到::1的本地接口),又經過一番查找,終於找到了解決辦法
/etc/postfix/main.cf文件中inet_interfaces值改爲all

vim /etc/postfix/main.cf

再次查看日誌,發現沒有報錯了,也在/var/sppol/cron文件夾下找到了名叫root的文件了,開心(✪ω✪)

至此,問題全部解決,完結撒花✿✿ヽ(°▽°)ノ✿

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章