一个崩溃的crontab命令

问题

写了一个脚本,比如在/root目录下有个a.sh,


date > /root/a.txt
hostname >> /root/a.txt
echo $PATH >> /root/a.txt
pwd >> /root/a.txt
lsmod >> /root/a.txt
whoami >> /root/a.txt

加到crontab里

[root@vm100-1-10-30 ~]# crontab -l
* * * * * sh /root/a.sh
[root@vm100-1-10-30 ~]# cat a.txt 
Wed Dec  2 10:18:01 CST 2020
vm100-1-10-30.ksc.com
/root
root

什么个情况,lsmod没有执行???

分析

手动执行下

[root@vm100-1-10-30 ~]# lsmod
Module                  Size  Used by
binfmt_misc            17468  1 
dm_mirror              22135  0 
dm_region_hash         20862  1 dm_mirror

直接执行脚本

[root@vm100-1-10-30 ~]# sh a.sh 
[root@vm100-1-10-30 ~]# cat a.txt 
Wed Dec  2 10:21:12 CST 2020
vm100-1-10-30.ksc.com
/root
Module                  Size  Used by
binfmt_misc            17468  1 
dm_mirror              22135  0 
dm_region_hash         20862  1 dm_mirror
dm_log                 18411  2 dm_region_hash,dm_mirror
dm_mod                114430  2 dm_log,dm_mirror
crc32_pclmul           13113  0 

那问题出在哪里了呢??

脚本里再增加一行

echo $PATH

crontab里输出

/usr/bin:/bin

在命令行里执行输出结果

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64/jre/bin:/opt/rh/devtoolset-8/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/tools/apache-jmeter-5.3/bin:/root/bin

再查看lsmod的路径

# which lsmod
/usr/sbin/lsmod

/usr/sbin不在crontab的标准路径里。

解决方法

  1. 在脚本里使用绝对路径
    /usr/sbin/lsmod
  2. 在脚本中先设置环境变量
    先执行source /etc/profile
  3. 修改crontab的配置/etc/crontab (好像不管用)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值