首页 系统教程 操作系统 crontab定时任务不执行的一些原因,你知道吗?

crontab定时任务不执行的一些原因,你知道吗?

Mar 09, 2024 am 09:49 AM
定时任务 crontab 蟒蛇脚本

crontab定时任务不执行的一些缘由总结

更新时间:2019年01月09日09:34:57作者:田野上的希望

这篇文章主要给你们总结介绍了关于crontab定时任务不执行的一些缘由,对每种可能发生的诱因都给出了解决方式,对遇见这个问题的同事们具有一定的参考学习价值,须要的同学们下边随着小编来一起学习学习吧

序言

近来在工作中遇见了一些问题,crontab定时任务竟然不执行,后来我在网上找的时侯发觉网上主要说了这5个诱因:

1crond服务未启动

crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动其实也可以停止。假如停止了就难以执行任何定时任务了,解决的方式是打开它:

crond
登录后复制

service crond start
登录后复制

假如提示crond命令不存在,可能被删掉不仅,CentOS下可以通过这个命令重新安装:

yum -y install crontabs
登录后复制

2权限问题

例如:脚本没有x执行权限,解决方式:

降低执行权限,或则用bashabc.sh的方式执行

也有可能crontab任务所属的用户对某个目录没有写权限,也会失败

3路径问题

有的命令在shell中执行正常,然而在crontab执行却总是失败。有可能是由于crontab使用的sh未正确辨识路径,例如:以root身分登入shell后执行一个/root/test.sh,只要执行

./test.sh
登录后复制

就可以了。并且在crontab中,都会找不到这个脚本,例如写完整:

/root/test.sh
登录后复制

4时差问题

linux任务计划_linux 计划任务没执行_linux任务计划不生效

由于服务器与顾客端时差问题linux是什么,所以crontab的时间以服务器时间为准。

时差这个问题还真是搞人,这个我亲身体验了,现象如下:

(1)我设置了一个定时脚本,用date命令观察服务器的时间到了脚本执行的时间点,发觉没有执行

(2)并且我把脚本设置成每分钟执行一次,就是OK的

见鬼了,服务器时间是对的啊?难道是要加个哪些时区?于是把脚本的时间减10或则12或则8个小时都尝试了下,发觉都不行。

然而很显著是时间不一致引起的不执行。

最后用如下两行解决了问题:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
service crond restart
登录后复制

参考这篇文章:

5变量问题

有时侯命令中富含变量,但crontab执行时却没有,也会导致执行失败。

验证后,我的定时脚本test.sh不执行不是上述任何一种缘由,虽然我的脚本就一句话:

#!/bin/bash
echo 123 >> testFile
登录后复制

我希望通过这些方法来测试我设置的定时脚本起作用了,于是我设置了该脚本每分钟执行一次,而且死活在脚本所在目录看不到这个文件linux 计划任务没执行,我自动执行

# sh test.sh
登录后复制

却能看见在脚本所在目录能看见这个文件

我怀疑是crontab根本没有执行,于是我在crontab中直接添加了

*/1 * * * * echo 123 >> /home/denglinjie/testFile
登录后复制

testFile文件生成了,说明crontab是执行了的,那看来是我脚本自身存在问题

最后发觉,原先是testFile这儿必须写完整的路径,我天真的以为testFile会生成在脚本所在的目录,所以改成了如下方式

#!/bin/bash
echo 123 >> /data/denglinjie/testFile
登录后复制

之后就可以了。

linux任务计划_linux 计划任务没执行_linux任务计划不生效

虽然路径是个十分容易出问题的地方,假定在/home/denglinjie目录下有一个脚本文件test1.sh,之后在该目录下还有一个脚本文件test2.sh

在test1.sh中执行了test2.sh,并且用的是相对路径,即相对test1.sh所在的路径。

若果在crontab-e中编辑的时侯,执行的方法是

sh/home/denglinjie/test1.sh,当执行到调用shtest2.sh的时侯,系统会觉得是从crontab文件所在的目录去找test2.sharm linux,而且显然是找不到的,导致执行失败

最开始我想的方式是,我要将我写的待执行的脚本文件以及被调用的其他的脚本和crontab文件放在一个地方,这样就可以拉,并且失败了,可能是由于权限问题,我进不去/var/spool/cron目录。

所以另外一个解决方式就是在执行脚本之前先通过cd/home/denglinjie命令步入到脚本所在目录

------------------------------------------------------------------

近来又发觉一种新的导致crontab不执行的诱因

这儿我要执行的是python脚本,我python脚本的目录为:

/data/denglinjie/work/UpdateModuleSwitch
登录后复制

一开始我的定时任务是这样写的:

linux任务计划_linux任务计划不生效_linux 计划任务没执行

0 * * * * cd /data/denglinjie/work/UpdateModuleSwitch;python update_switch.py
登录后复制

发觉到了时间点竟然没有执行,其中update_switch.py的部份内容如下:

import pymongo
登录后复制

就是我的脚本中引入了自己安装的pymongo,注意,这个pymongo是安装到了指定的python版本上的

不执行缘由:crontab定时任务执行的时侯,使用的python不是我的那种python,使用的这个python没有安装pymongo,致使import失败

解决办法,改成如下方式:

0 * * * * cd /data/denglinjie/work/UpdateModuleSwitch;/data/zhoumi/install_evn/bin/python update_switch.py
登录后复制

指定运行使用的python,这个python早已安装绑定了pymongo,或则用如下方式:

0 * * * * export PATH=/data/zhoumi/install_evn/bin/:$PATH;cd /data/denglinjie/work/UpdateModuleSwitch;python update_switch.py
登录后复制

由于我的这个python是安装在我自己的用户目录下linux 计划任务没执行,所以系统找不到这个python,所以只要将我的python也加入到系统PATH环境变量中就可以了

总结

以上就是这篇文章的全部内容了,希望本文的内容对你们的学习或则工作具有一定的参考学习价值,假如有疑惑你们可以留言交流,感谢你们对本站的支持。

以上是crontab定时任务不执行的一些原因,你知道吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

crontab定时任务不执行的一些原因,你知道吗? crontab定时任务不执行的一些原因,你知道吗? Mar 09, 2024 am 09:49 AM

crontab定时任务不执行的一些缘由总结更新时间:2019年01月09日09:34:57作者:田野上的希望这篇文章主要给你们总结介绍了关于crontab定时任务不执行的一些缘由,对每种可能发生的诱因都给出了解决方式,对遇见这个问题的同事们具有一定的参考学习价值,须要的同学们下边随着小编来一起学习学习吧序言近来在工作中遇见了一些问题,crontab定时任务竟然不执行,后来我在网上找的时侯发觉网上主要说了这5个诱因:1crond服务未启动crontab不是Linux内核的功能,而是依赖一个cron

探秘Orange3:打开数据挖掘与机器学习新世界! 探秘Orange3:打开数据挖掘与机器学习新世界! Mar 04, 2024 pm 08:16 PM

Orange3是一个功能强大的开源数据可视化和机器学习工具,它具备丰富的数据处理、分析和建模功能,为用户提供了简单快捷的数据挖掘和机器学习解决方案。本文将简要介绍Orange3的基本功能和使用方法,同时结合实际应用场景和Python代码案例,帮助读者更好地掌握Orange3的使用技巧。Orange3的基本功能包括数据加载、数据预处理、特征选择、模型建立和评估等。用户可以利用直观的界面拖放组件,轻松构建数据流程。同时,通过Python脚本,也能完成更复杂的数据处理和建模任务。下面我们将通过一个实际

PyCharm高级教程:利用PyInstaller将代码打包为EXE格式 PyCharm高级教程:利用PyInstaller将代码打包为EXE格式 Feb 20, 2024 am 09:34 AM

PyCharm是一款功能强大的Python集成开发环境,提供了丰富的功能和工具来帮助开发者提高效率。其中,PyInstaller是一个常用的工具,可以将Python代码打包为可执行文件(EXE格式),方便在没有Python环境的机器上运行。在本篇文章中,我们将介绍如何在PyCharm中使用PyInstaller将Python代码打包为EXE格式,并提供具体的

python怎么重复字符串_python重复字符串教程 python怎么重复字符串_python重复字符串教程 Apr 02, 2024 pm 03:58 PM

1、首先打开pycharm,进入到pycharm主页。2、然后新建python脚本,右键--点击new--点击pythonfile。3、输入一段字符串,代码:s="-"。4、接着需要把字符串里面的符号重复20次,代码:s1=s*20。5、输入打印输出代码,代码:print(s1)。6、最后运行脚本,在最底部会看到我们的返回值:-就重复了20次。

pycharm怎么读取excel数据 pycharm怎么读取excel数据 Apr 03, 2024 pm 08:42 PM

如何使用PyCharm读取Excel数据?步骤如下:安装openpyxl库;导入openpyxl库;加载Excel工作簿;访问特定工作表;访问工作表中的单元格;遍历行和列。

Flask安装配置教程:轻松搭建PythonWeb应用的利器 Flask安装配置教程:轻松搭建PythonWeb应用的利器 Feb 20, 2024 pm 11:12 PM

Flask安装配置教程:轻松搭建PythonWeb应用的利器,需要具体代码示例引言:随着Python的日益流行,Web开发也成为了Python程序员的必备技能之一。而要进行Python的Web开发,我们需要选择合适的Web框架。在众多的PythonWeb框架中,Flask是一款简洁、易上手且灵活的框架,备受开发者们的青睐。本文将介绍Flask框架的安装、

网站子域名查询工具有哪些 网站子域名查询工具有哪些 Mar 07, 2024 am 09:49 AM

网站子域名查询工具有:1、Whois Lookup:可以查询域名的注册信息,包括子域名;2、Sublist3r:可以在搜索引擎和其他工具的帮助下自动扫描域名的子域名;3、DNSdumpster:可以查询域名的子域名、IP地址和DNS记录等信息;4、Fierce:可以通过DNS服务器查询域名的子域名信息:5、Nmap;6、Recon-ng;7、Google Hacking。

PHP定时任务实现:每10分钟取消订单操作步骤 PHP定时任务实现:每10分钟取消订单操作步骤 Mar 01, 2024 pm 09:18 PM

标题:PHP定时任务实现:每10分钟取消订单操作步骤在电商平台或者在线交易网站中,订单的处理是一个重要的环节。有时候可能会遇到用户下单后长时间不付款或者其他原因导致订单需要被取消。为了自动化地取消订单,我们可以借助PHP定时任务来实现每10分钟检查一次订单并取消。下面是具体的操作步骤和代码示例:步骤一:设置定时任务首先,我们需要在服务器上设置一个定时任务,让

See all articles