首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >crontab中没有mdadm -D输出

crontab中没有mdadm -D输出
EN

Stack Overflow用户
提问于 2017-06-03 08:41:37
回答 3查看 553关注 0票数 2

我有以下脚本:

代码语言:javascript
复制
#!/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)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-03 19:00:50

谢谢你的帮助。

问题是crontab -e部分找不到mdadm命令(我认为这是路径问题)。

下面是我用另一种方式修复它的方法:

  • 将我的脚本移至/usr/local/sbin/checkRaid.sh
  • don´t,使用crontab -e,而不是使用/etc/crontab文件并在其中输入

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

用普通的话说:每10分钟以root身份运行一次我的脚本。它工作得很好,没有mdadm-命令的任何路径问题。

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 18:09:21

在脚本中,您只需添加mdadm的完整路径,缺省情况下为/sbin/mdadm

您的脚本如下所示:

代码语言:javascript
复制
#!/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并粘贴以下内容即可

代码语言:javascript
复制
@reboot /home/main_usr/myScripts/checkRaid.sh
票数 1
EN

Stack Overflow用户

发布于 2017-06-03 12:40:12

我猜测在crond的路径中找不到mdadm程序文件。

结合其他人已经提出的建议,并添加令人痛苦的细节:

mdadm

  • run invocation

  • check /var/log/*、<代码>D17、<代码>D18、man7.org等<代码>H219<代码>F220确保mdadm is on path

  • $? mdadm mdadm /var/log/*$ man cron$ man crontab、MAN7.org等

所以就像这样:

代码语言:javascript
复制
#!/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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44339182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档