欢迎光临散文网 会员登陆 & 注册

记录一则Linux任务调度异常

2022-11-12 14:33 作者:张方兴  | 我要投稿


    有一台测试服务器的任务调度设置本没问题,脚本也没问题,但始终都启动不起来。

我确定我写的是全路径格式,所以全路径不应该出现问题。脚本也无异常,表达式也是生成出来的也不该有错。

    所以这个问题纠结了我很久。

  1. 首先确定我的运行脚本无异常。手动执行后可用。

  2. 查看一下Linux的版本。

uname -a

3. 查看一下Linux的发行版

cat /proc/version

4. 查看cron任务调度在linux中的配置

cat /etc/crontab

MAILTO=root:这个字段说明了当/etc/crontab文件中的例行性命令发生错误时,会将错误信息或屏幕显示的信息传递给谁?由于root无法在客户端收信,因此,可以将这个email改成自己普通用户帐号。 

注意:基本上,/etc/crontab支持两种输入指令的方式,一种是直接以指令形式输入,一种则是以目录形式输入。


5. 确定我的脚本开头含有脚本环境变量#!/bin/bash

6. 确定任务调度中是全路径编写的

7. 不断尝试cron启动,本身应该一天执行一次的任务,让我改成了5秒执行一次。 然后看到了 cron日志中的错误.

tail -f /var/log/cron

实际有3个错误,但是此时我截图只截图到了2个错误。

分别是

WRONG FILE OWNER (/etc/cron.d/sysstat)

此错误代表Linux的cron任务调度中的sysstat文件并不归属于root用户

(root) COMD(? sh /home/mes/weback/weback.sh)

此错误代表cron表达式中的? 问号莫名其妙被归属到了命令行之中,本身是cron表达式的内容 

我怀疑是这个发行版的问题 。切,绝对不是我表达式写错了。

所以后续操作的时候我都将cron表达式中的?给删除掉了。目前还在观察。


针对WRONG FILE OWNER (/etc/cron.d/sysstat)错误的解决办法如下所示。

查看/etc/cron.d/sysstat文件的归属权

ls /etc/cron.d/sysstat -lh

将/etc/cron.d/sysstat文件的所属组进行更改。

chown root:root /etc/crontab

重启crond任务调度

systemctl reload crond.service

查看crond任务调度状态

systemctl status crond.service

=====至此就解决了当前的问题,即先删掉了?问号,再配置了一下文件所属权。

其他有关crond命令如下所示。

systemctl start crond.service

systemctl stop crond.service


其次记录一下crontab相关的命令。

crontab 是 crond任务调度的模板命令,很多文章都提到了crontab -e命令是修改任务调度内容。如下所示。


crontab -r 删除任务调度

任务调度执行效果成不成功 注意查看/var/log/cron 文件。

另外要注意的是:crontab 会进行语法检查。如果不通过的语法不允许进行使用。如果没有指定crontab表达式的编辑器,则linux需要用户指定一下,此时只需要使用vim即可。

不管是crontab -e 还是 /etc/crontab 修改哪个文件都可修改任务调度,修改之后不需重启crond服务器,同样可以进行执行(一般linux发行版都没问题)。


记录一则Linux任务调度异常的评论 (共 条)

分享到微博请遵守国家法律