Linux系统crontab定时执行Shell脚本常用命令和踩坑记录

您所在的位置:网站首页 bash脚本权限 Linux系统crontab定时执行Shell脚本常用命令和踩坑记录

Linux系统crontab定时执行Shell脚本常用命令和踩坑记录

2023-12-31 20:11| 来源: 网络整理| 查看: 265

文章目录 crontab定时执行Shell脚本打开cron的log功能踩坑记录加解决方案

crontab是cron的配置文件,可将其成为作业列表。

crontab定时执行Shell脚本

常用指令:

#省略-u username表表示操作当前用户的 crontab -u username   #编辑工作表([-u username]可以缺省)    crontab -u username -e #列出工作表里的命令([-u username]可以缺省) crontab -u username -l #删除工作列表 crontab -u username -r

定时执行Shell脚本示例:

# 开启服务,首次开启需要选择编辑器,按需选取即可 sudo service crontab restart # 继续输入以下指令进行工作表配置 crontab -u username -e

执行后,打开编辑器可以看到以下提示信息: 在这里插入图片描述 设定定时任务:

* * * * * test.sh #从左到右,解释一下如果要更改执行时间,怎么修改上面的五个星号 # 第一个*代表分,可以填写0-59中的任意数值 # 第二个*代表时,可以填写0-23中的任意数值 # 第三个*代表天,可以填1-31中的任意数值 # 第四个*代表月,可以填1-12中的任意数值,或者jan,feb... # 第五个*代表一星期中的某一天,可以填0-6中的任意数值,其中0代表星期天 #下面以每周的1,3,5早上9点执行tesh.sh为例 0 9 * * 1,3,5 test.sh 打开cron的log功能

方便调试,我们还需要设置让cron的log功能开启。

#打开conf文件,# 取消cron.log行注释 sudo vim /etc/rsyslog.d/50-default.conf # 重启服务 sudo service rsyslog restart # 查看cron.log vim /var/log/cron.log 踩坑记录加解决方案

尝试定时运行后,发现没有执行成功,查看log之后,看到以下错误。

(CRON) info (No MTA installed, discarding output)

查询了一下,是因为我的定时脚本包含smtp发送邮件的功能,而Ubuntu系统不含MTA(Mail Transfer Agent),因此需要通过sudo apt-get install postfix安装邮件服务。

安装后,发现脚本依然没有执行成功,log信息过于简单,还是需要查看标准输出信息和执行时的错误信息才方便debug。

#修改示例脚本 0 9 * * 1,3,5 test.sh>test.out 2>&1

其中>test.out 表示将标准输出重定向写入到test.out文件中。2>&1表示将错误输出重定向到标准输出。 加入以上代码,则错误提示和脚本的标准输出都会打印到test.out中,也就是说,test.sh执行完成后,test.out中能看到所有输出的信息。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3