我有以下脚本:
#!/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.将所有者更改为root 3.将脚本写入crontab(sudo crontab -e | @reboot/home/main_usr/myscripts/checkraid.sh(
所以我的问题是我的问题:当我运行脚本时,一切正常。但是,当我重新启动计算机时,脚本会运行,但是我的.log文件只包含"仅测试"。没有MDADM-Command的输出。我无法解释为什么在这种情况下,MDADM-Command是空的。也许有人可以帮助我。
我还应该提到我需要sudo来运行脚本(mdadm-command(
在您的脚本中,您只需要添加 MDADM的完整路径,它默认为/sbin/mdadm
您的脚本将就像:
#!/bin/bash
# wait, just in case hdd md0 in not mountet yet
sleep 30
# write Raid state in log-file
#-------------------just change this area-------------------------
/sbin/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
,也无需更改您的脚本文件位置,也可以使用" crontab -e"更改脚本文件,只需键入 crontab -e
并粘贴
@reboot /home/main_usr/myScripts/checkRaid.sh
我的猜测是mdadm
程序文件在Crond的路径上找不到。
结合其他人已经建议的内容并添加了令人难以置信的细节:
- 确保
mdadm
在路径上 - 从
mdadm
检查和LOG - 运行
mdadm
derbosely - 时箱
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系统,Meta-Logging会在您的日志文件中陷入困境。
感谢您的帮助。
问题是crontab -e部分找不到mdadm命令(我是一个路径问题(。
因此,这是我以另一种方式修复它的方式:
- 将我的脚本移至/USR/local/sbin/checkraid.sh
-
不要使用crontab -e,而是用过/etc/crontab文件,然后在那里输入
*/10 * * * * root/usr/local/sbin/checkraid.sh
在普通词中:每10分钟将我的脚本作为root运行。它可以完美地工作,没有MDADM-Command的任何路径问题。