crontab中无MDADM -D输出



我有以下脚本:

#!/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的任何路径问题。

最新更新