我有以下脚本:
#!/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文件只包含"just a Test“。mdadm-命令无输出。我无法解释为什么mdadm-命令在这种情况下是空的。也许有人能帮我。
我还应该提到,我需要sudo来运行脚本(mdadm-command)
发布于 2017-06-03 19:00:50
谢谢你的帮助。
问题是crontab -e部分找不到mdadm命令(我认为这是路径问题)。
下面是我用另一种方式修复它的方法:
*/10 ***根/usr/local/sbin/checkRaid.sh
用普通的话说:每10分钟以root身份运行一次我的脚本。它工作得很好,没有mdadm-命令的任何路径问题。
发布于 2018-05-31 18:09:21
在脚本中,您只需添加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
发布于 2017-06-03 12:40:12
我猜测在crond的路径中找不到mdadm
程序文件。
结合其他人已经提出的建议,并添加令人痛苦的细节:
从mdadm
/var/log/*
、<代码>D17、<代码>D18、man7.org等<代码>H219<代码>F220确保mdadm
is on path
$?
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输出变得混乱。
https://stackoverflow.com/questions/44339182
复制相似问题