crontab定时任务不生效问题解决

导致crontab定时任务不生效问题可能的原因非常多
首先,排查一些可能会导致问题出现的简单原因。
1.Linux的时间与互联网时间不一致
2.定时执行的.sh文件无执行权限
3.crontab进程未启动
4.定时任务重定向日志的路径不存在
5.环境变量问题
6.没有写绝对路径

通过排查,一一否定了上述所有可能,不是某个定时任务有问题,而是所有定时任务均不生效。
继续查看crontab的日志

tail -f /var/log/cron
Dec  3 08:30:01test crond[21199]: (root) FAILED to open PAM security session (拒绝权限)

可以看到确实有报错,但是没有具体报错的原因,只知道是PAM验证有问题。
通过查阅网上的文章将/etc/pam.d/crond 中的session required pam_loginuid.so required改为sufficient可以解决。经测试,确实成功了,但是文章没有说明原因,其他机器也是相同设置crontab却没有问题,说明这里不是根本原因,这里涉及pam模块认证的知识。
PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so。PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下)
pam验证控制类型。

1、required验证失败时仍然继续,但返回Fail(用户不会知道哪里失败)。
2、requisite验证失败则立即结束整个验证过程,返回Fail。
3、sufficient验证成功则立即返回,不再继续,否则忽略结果并继续。
4、optional无论验证结果如何,均不会影响(通常用于session类型)。
可以看到这里是通过改为sufficient验证成功则立即返回,不再继续来达到忽略报错的目的,但是这样做有一定的风险。

继续查看系统日志var/log/secure

tail -f var/log/secure
Dec  3 15:19:01 hdyy1 crond[25439]: pam_limits(crond:session): Could not set limit for 'nofile': 不允许的操作

可以看到是nofile参数有问题,查看该参数的配置文件

cat vi /etc/security/limits.d/90-nproc.conf
*          soft    nproc     196605
root       soft    nproc     unlimited
*          soft    nofile    19660500
*          hard    nofile    19660500
*          soft    core      512000
*          hard    core      512000

可以看到此时该参数值为19660500,超出了系统的最大可设置值,将参数改为196605后crontab定时任务生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值