使用rsync作为备份工具,实现电子文件的增量备份,写了一个脚本,在linux命令行调用 sh shell.sh进行测试,成功实现了电子文件的备份功能,然后在Crontab增加了定时任务,每天凌晨1点进行同步。
00 01 * * * /task/shell.sh
后来发现文件同步失败了,后来排查发现应该是脚本虽然被执行,但是没有成功,但是在Linux控制台中测试又没问题,这是什么原因呢?
查找资料之后发现,crontab有一个问题,就是它不会从profile文件中读取环境变量参数,经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。
所以原因就在于,crontab没有去读环境变量,需要再脚本中手动引入环境变量。
在脚本中加入了引入环境变量的配置:
#!bin/bash
source /etc/profile
source ~/.bash_profile
需要执行的命令
再执行时,问题解决。文章来源:https://www.toymoban.com/news/detail-721365.html
原来就是因为crontab在执行脚本时没有读取环境变量,导致执行rsync命令行出错文章来源地址https://www.toymoban.com/news/detail-721365.html
到了这里,关于Linux Crontab定时执行脚本不执行,但手动执行脚本正常原因及解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!