首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能执行smartctl吗?

不能执行smartctl吗?
EN

Server Fault用户
提问于 2020-08-31 08:25:09
回答 2查看 577关注 0票数 4

我安装了一个与根用户一起运行的cron作业(Ubuntu 16)。所以在

sudo crontab -e

我有以下条目:

10 5 * * mon /home/userA/raidchecker.sh

脚本raidchecker.sh这样做:

代码语言:javascript
复制
#!/bin/sh
mail=`which mail`
rec="myemail@gmail.com anotheremail@gmail.com"
now=$( date +%Y%m%d-%H%M-%S )
mdstat=$( cat /proc/mdstat )
details=$( /sbin/mdadm --detail /dev/md2 )
diskusg=$( df -kh )
disk1=$( smartctl -A /dev/sda | grep Realloc | grep Sector )
disk2=$( smartctl -A /dev/sdb | grep Realloc | grep Sector )
disk1f=$( smartctl -A /dev/sda )
disk2f=$( smartctl -A /dev/sdb )
buddyinfo=$( cat /proc/buddyinfo | grep Normal )

echo "Check from $now\n\n=================\nMemory Fragmentation:\n$buddyinfo\n\nAll partitions:\n\n$mdstat\n\n=================\nData Partition:\n\n$details\n\n=================\nDisk Usage:\n$diskusg\n\n=================\nSMARTCTL:\n\nData Disk /dev/sda and sdb:\n$disk1\n$disk2\n\nFull Reports:\nDisk1:\n$disk1f\n\nDisk2:\n$disk2f" | $mail -s "Check from $now" $rec

当我从shell ./raidchecker.sh手动执行脚本时,电子邮件将按预期包含所有信息。

执行脚本时,参数disk1、disk2、disk1f和disk2f为空(不包含任何数据)。

为什么?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2020-08-31 09:10:25

解决方案是在脚本中使用/usr/sbin/smartctl而不是smartctl,只有这样,cron作业才能执行这个命令。

票数 2
EN

Server Fault用户

发布于 2020-08-31 12:06:56

使用crontab,当脚本由cron自动运行时,常规用户登录通常设置的大多数环境都不存在或减少(除非您设置它)。

当然,最好要么提供相关的PATH,要么给出所有命令的绝对路径。

始终测试crontab (在当前时间后几分钟设置时间)。

  • 如果您希望(通过电子邮件)接收标准输出和错误输出,只需将2>&1添加到crontab中的命令中。
  • 如果不希望接收crontab命令的任何输出(通过电子邮件),请添加> /dev/null 2>&1
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1032109

复制
相关文章

相似问题

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