2017-06-03 38 views
1

沒有的mdadm -D輸出我有以下腳本:crontab中

#!/bin/bash 
# wait, just in case hdd md0 in not mountet yet  
sleep 30 
# write Raid state in log-file 
mdadm -D /dev/md0 > /home/main_usr/myScripts/raidHealth.log 
#just check if it writes to the file 
echo "just a Test" >> /home/main_usr/myScripts/raidHealth.log 

從來就做了以下幾件事:1。 發文件的可執行2.改變所有者剷除3.寫腳本放到crontab( sudo crontab -e | @reboot /home/main_usr/myScripts/checkRaid.sh)

因此繼承人我的問題: 當我運行腳本時,一切正常完美。但是,當我重新啓動我的電腦腳本運行,但我的.log文件只包含「只是一個測試」。沒有輸出mdadm命令。我不能解釋爲什麼在這種情況下mdadm命令是空的。也許有人可以幫助我。

我還要提到的是,我需要sudo來運行腳本(mdadm的命令)

+1

也將stderr重定向到您的文件。 'mdadm -D/dev/md0> /home..../raildHealth.log 2>&1'查看失敗消息。 –

+1

將'crontab -l'的輸出添加到您的問題中。 – Cyrus

+1

請注意,這個問題將更多的關於superuser.com上的主題作爲一般的linux(不是編程)問題,或者serverfault.com作爲RAID管理問題。 –

回答

0

我的猜測是,mdadm程序文件沒有的crond的路徑上找到。

結合別人已經建議,增加痛苦的細節:

  • 確保mdadm是路徑
  • 檢查和記錄$?mdadm
  • 運行mdadm冗長
  • 時間盒的mdadm調用
  • 檢查/var/log/*,$ man cron$ man crontab,man7.org等

所以像:

#!/bin/bash 
logfile="/home/main_usr/myScripts/raidHealth.$$.log" 
touch $logfile || (echo "could not touch ${logfile}" && exit 1) 
echo "$(date) - BEGIN sleep" >> ${logfile} 
# wait, just in case hdd md0 in not mountet yet  
sleep 30 
echo "$(date) - END sleep." >> ${logfile} 
which mdadm > /dev/null 
rc=$? 
if [ $rc -ne 0 ] 
then 
    echo "$(date) - FAIL - could not find cmd" >> ${logfile} 
    exit $c 
fi 
echo "$(date) - BEGIN mdadm - will run $(which mdadm)" >> ${logfile} 
# write Raid state in log-file 
mdadm --verbose -D /dev/md0 > ${logfile} 2>&1 
rc=$? 
echo "$(date) - END mdadm - rc=[${rc}]" >> ${logfile} 
exit $rc 

警告:目前沒有訪問GNU/Linux系統,元日誌記錄將攪渾你可能已經想成爲在您的日誌文件中輸出簡單的mdadm。

0

感謝您的幫助。

問題是,crontab -e部分不能找到mdadm命令(我是一個路徑問題)。

所以here's我如何修復它以另一種方式:

  • 動了我的腳本/usr/local/sbin/checkRaid.sh
  • 鴕鳥政策使用crontab -e命令,而是使用/ etc/crontab文件,進入有

    */10 * * * *根/usr/local/sbin/checkRaid.sh

正常的話:每10分鐘跑我腳本作爲根。 它沒有任何mdadm命令的任何路徑問題,完美工作。

+0

所以我的猜測是對的:) – 0xb304