CentOS 中 crontab 定时任务找不到命令问题

说明

在 Linux 中,经常会使用定时任务,定时执行指定的脚本或二进制程序文件。但是发现有时候 crontab 在执行的时候,总是提示找不到命令。但是手动执行的时候,却没有该问题。
crontab 定时任务的执行日志,可以在 /var/log/ 目录中找到。

分析

出现上面的问题,其实就是环境变量不一样的问题。crontab 执行时的环境变量与手动执行时的环境变量不一样。

解决方法

使用一个脚本包装环境变量,同时在该脚本内调用要执行的二进制程序文件。
定义 runBinaryFile.sh 文件,用于包装环境变量。

#!/bin/bash
#### Environments ####
. ~/.bash_profile
. /etc/profile
######################
# 下面是要执行的脚本文件,以及参数
/Softwares/theTool -a -b -c

定时执行的时候,就执行 runBinaryFile.sh 脚本文件即可 。

总结

  1. 写 shell 脚本的时候,一定要注意文件开头要有
#!/bin/bash
  1. 对于 crontab 无法执行的二进制文件,使用一个包装的 shell 脚本执行。
    定义 runBinaryFile.sh 文件,用于包装环境变量。
#!/bin/bash
#### Environments ####
. ~/.bash_profile
. /etc/profile
######################
# 下面是要执行的脚本文件,以及参数
/Softwares/theTool -a -b -c
  1. 要执行的脚本一定要有执行权限。
    例如:要执行的脚本名称为:myShell.sh
chmod 777 myShell.sh
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容