精华内容
下载资源
问答
  • linux定时任务执行python脚本失败原因

    千次阅读 2019-04-20 14:39:09
    linux定时任务执行python脚本失败原因 环境:centos7 python3 定时任务详解 crontab 命令 -u :只有 root 才有权限执行这个任务,也就是帮其他使用者创建/移除 crontab 定时任务 -e :编辑 crontab 的内容 -l :显示...

    linux定时任务执行python脚本失败原因

    环境:centos7 python3

    定时任务详解

    crontab 命令

    -u :只有 root 才有权限执行这个任务,也就是帮其他使用者创建/移除 crontab 定时任务

    -e :编辑 crontab 的内容

    -l :显示 crontab 的内容

    -r :移除所有 crontab 的内容,若仅要移除某一项,请用 -e 编辑

    时间格式:分钟 小时 日期 月份 周 命令

    数字范围: 0-59 0-23 1-31 1-12 0-7 echo “hello” >> abc.log

    特殊字符的含义

    *(星号) 代表任何时刻都接受。

    ,(逗号) 代表分隔时段的意思。

    -(减号) 代表一段时间范围内。

    /n(斜线) 那个 n 代表数字,每隔 n 单位间隔。

    链接: crontab命令详解参考

    定时任务执行python脚本不执行原因:

    30 8 * * * python3 /home/lino/xxx.py
    

    单独执行定时任务时候没有问题,单独执行python脚本没有问题,此定时任务不执行原因是因为python路径要写绝对路径
    首先在linux上执行命令:

    whereis python3
    

    在这里插入图片描述

    30 8 * * * /usr/local/bin/python3 /home/lino/xxx.py
    

    这样便解决了不执行原因

    展开全文
  • linux 定时任务 crontab

    2016-04-06 18:43:52
    linux 定时任务 crontab

    crontab 的时间表达式

    基本格式 :
    *(分)  *(时)  *(日)  *(月)  *(周)  command(命令)
    
    # Example of job definition:
    # .---------------- 分 (0 - 59)
    # |  .------------- 时 (0 - 23)
    # |  |  .---------- 日 (1 - 31)
    # |  |  |  .------- 月 (1 - 12)
    # |  |  |  |  .---- 周 (0 - 6) (Sunday=0 or 7)
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    

    然后来几个实际的例子

    // 每分钟执行一次            
    *  *  *  *  * 
    
    // 每隔一小时执行一次        
    0  *  *  *  * 
    或
    * */1 * * *  (/表示频率)
    
    // 每小时的15和30分各执行一次 
    15,45 * * * * (,表示并列)
    
    // 在每天上午 8- 11时中间每小时 15 ,45分各执行一次
    15,45 8-11 * * * command (-表示范围)
    
    // 每个星期一的上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * 1 command
    
    // 每隔两天的上午8点到11点的第3和第15分钟执行
    3,15 8-11 */2 * * command
    

    其他命令介绍

    crontab file -用指定的文件替代目前的crontab。
    
    crontab -u // 指定操作那个用户的crontab
    
    crontab -1 // 列出用户目前的crontab.
    
    crontab -e // 编辑用户目前的crontab.
    
    crontab -d // 删除用户目前的crontab.
    
    crontab -c // 指定crontab的目录。 
    

    crond 安装与配置服务

    # 安装crontab
    yum install crontabs
    
    # 服务操作说明
    service crond start //启动服务
    service crond stop //关闭服务
    service crond restart //重启服务
    service crond reload //重新载入配置
    
    # 查看crontab服务状态
    service crond status
    
    # 手动启动crontab服务
    service crond start
    
    # 查看crontab服务是否已设置为开机启动
    ntsysv // 按tab键可以跳到下面,选择quit或者cannal
    
    # 加入开机自动启动
    chkconfig –level 35 crond on
    

    查看运行中的 corn 服务

    ps aux|grep cron
    

    注意

    在使用 sh 文件执行定时任务时,不要忘记给文件添加【执行权限】

    chmod +x xxxx.sh
    

    或加上【可读、写、执行权限】

    chmod 777 xxxx.sh
    

    上面的方法更不可取,使用 +x 即可


    示例 sh 文件脚本

    #!/bin/bash
    
    # 导入环境变量
    export LANG="en_US.UTF-8"
    
    # jdk 路径
    JDK_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre
    
    # jar 所在的路径
    FILE_HOME=/home
    
    # jar 文件名字
    FILE_NAME=test.jar
    
    # 传入 main 方法参数。不支持多个参数。即不能用空格
    # ARGS="hello word"
    ARGS=helllo
    
    echo -e "【`date +%Y-%m-%d_%H:%M:%S`】开始执行 $FILE_NAME 程序......"
    cd $FILE_HOME && echo -e "进入目录:$FILE_HOME" 
    $JDK_HOME/bin/java -jar $FILE_HOME/$FILE_NAME $ARGS && echo "执行 $FILE_NAME 完成!" || echo "执行 $FILE_NAME 失败!"
    echo -e "【`date +%Y-%m-%d_%H:%M:%S`】$FILE_NAME 程序运行完毕,等待下次执行"
    echo -e ""
    
    展开全文
  • linux 定时任务不执行

    千次阅读 2020-04-13 15:37:53
    最近尝试linux上执行定时任务,本来以为设置定时任务很简单,然而,真正执行的时候处处打脸,一直找不到为什么不执行。关于设置定时任务我的另一篇博客里总结的有,这里不做赘述,下面就讲一讲关于解决不执行的几点...

    最近尝试linux上执行定时任务,本来以为设置定时任务很简单,然而,真正执行的时候处处打脸,一直找不到为什么不执行。关于设置定时任务我的另一篇博客里总结的有,这里不做赘述,下面就讲一讲关于解决不执行的几点思路。(因为每个人的情况可能不一样,这里就只讲理论方法)

    第一点:

    定时任务功能未启动,这种出现的可能性比较低,解决方法就是命令行启动,然后看一下状态,不多讲(命令行百度到处都能找到)

    第二点:

    权限问题,刚开始我以为root用户对所有文件都有权限,就没有考虑这方面的问题,实际上我错了,root只是用户权限,文件的执行权限还是需要设置一下的,具体可以看chmod的用法。

    第三点:

    路径问题,也可以说是环境问题,举个例子,如果我们用定时任务来执行pyhton文件,就需要把python的环境写上,也需要把文件的路径写上,还有一种可能如下:

    有的命令在shell中执行正常,但是在crontab执行却总是失败。有可能是因为crontab使用的sh未正确识别路径,比如:以root身份登录shell后执行一个/root/test.sh,只要执行

    1

    ./test.sh

    就可以了。但是在crontab中,就会找不到这个脚本,比如写完整:

    1

    /root/test.sh

     第四点:

    时差问题,这个只是个别案例,就是服务器的时间设置与客户端的时间不一致,也会误认为不执行,时间上可能是因为服务器上的时间还没到定时任务执行的时间。

    如果还有其他的原因,可以留言讨论!

    展开全文
  • Linux 定时任务

    千次阅读 多人点赞 2018-08-20 18:45:46
    Linux下的crontab定时执行任务命令详解Linux中的定时任务crontab   在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其...

    参考文章:

    Linux下的crontab定时执行任务命令详解
    Linux中的定时任务crontab

     

    • 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
    • cron的配置文件称为“crontab”,是“cron table”的简写。

     

    一. cron服务

    cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
    service crond start    //启动服务
    service crond stop     //关闭服务
    service crond restart  //重启服务
    service crond reload   //重新载入配置
    service crond status   //查看服务状态 

     

    二. cron在3个地方查找配置文件

    ①/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。

    ②/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab

    ③/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

     

    三. 权限

    crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
    用法如下: 
    1、如果两个文件都不存在,则只有root用户才能使用crontab命令。 
    2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。 
    3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。 
    4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,
    以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。

     

    四. cron的具体使用

    • 使用命令crontab -e即可编辑crontab,在里面添加需要的定时任务。用户的定时任务文件为 /var/spool/cron/用户名 ,crontab -e命令将相当于vim /var/spool/cron/用户名。

     

    1. 如何写crontab

    • crontab中每一行代表一个任务,每个任务由周期和任务名组成。如下形式   

    59 23 10 5 2014 /home/root/tesh.sh

    #分 时 日 月 年 |<-------命令串------->|

     

            表示2014年5月10日23点59分,执行/home/root下的tesh.sh脚本。

    • 时间周期中可以使用一些辅助字符,如:
      *    表示任何时刻都可以
      ,  若有多个时刻,用逗号分隔
      -     表示一个时刻到另一时刻之间的时间段
      /n   表示每过n个时间单位
    • 比如,*/10 3-6 10,11 * * /home/root/tesh.sh 就表示 每年每月的10号和11号,3点到6点之间,每过10分钟执行一次tesh.sh

    • Cron表达式是一个字符串,字符串以4或5个空格隔开,分为5或7个域,每一个域代表一个含义,Cron有如下两种语法格式: 
      Minutes Hours DayofMonth Month DayofWeek Year或 
      Minutes Hours DayofMonth Month DayofWeek

      每一个域可出现的字符如下: 
      Minutes:可出现", - * /"四个字符,有效范围为0-59的整数 
      Hours:可出现", - * /"四个字符,有效范围为0-23的整数 
      DayofMonth:可出现", - * / ? L W C"八个字符,有效范围为1-31的整数 
      Month:可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc 
      DayofWeek:可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推 
      Year:可出现", - * /"四个字符,有效范围为1970-2099年

     

    • 每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是: 
      ①*:表示匹配该域的任意值,假如在Minutes域使用*, 即表示每分钟都会触发事件。
      ②?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。 
      ③-:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次 
      ④/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次. 
      ⑤,:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。 
      ⑥L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。 
      ⑦W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份 
      ⑧LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。 
      ⑨#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。

     

    2. crontab注释

    • 在crontab中,#代表了注释,注释的存在,能够简化crontab的一些复杂操作。

     

    • 比如,如果有一个任务test.sh,每天都需要执行,每过10分钟执行一次,我们可以写成 */10 * * * * tesh.sh。现在有新要求,每天1点到1点10分不能执行,其余时间照旧。

      一种写法就是:将它拆成多条crontab,比如每天2点到0点执行,每天0点到1点执行,每天1点10分到2点执行。三条语句。这种方法的问题就是,如果再来新的要求呢,比如在此基础之上,每天8点到8点10分不能执行,这又怎么处理,写更多的crontab任务吗?

      另一种比较好的解决方案是:写一个run.sh脚本,每10分钟执行一次,首先判断当前时间是否是在1点到1点10分之间,如果不是,就执行tesh.sh,如果是,可以sleep10分钟。

      第三种非常好的方案就是利用注释。我们可以在1点时,将tesh.sh任务给注释掉,在1点10分,将tesh.sh任务的注释消除。要实现这种想法,需要使用sed命令。可以在crontab里面这样写:

    #每隔10分钟执行一次
    */10 * * * * tesh.sh
     
    #每天1点钟,将命令注释掉
    0 1 * * * sudo sed -i 's\%\(\*\/10 \* \* \* \* tesh.sh\)\%#\1\%' /var/spool/cron/用户名
     
    #每天1点零10分,将被注释的命令恢复
    10 1 * * * sudo sed -i 's\%\(^##*\)\(\*\/10 \* \* \* \* tesh.sh\)\%\2\%' /var/spool/cron/用户名
     

    • sed -i表示直接修改文件内容,之后的动作必须用单引号括上,单引号之后的是文件。单引号内部s表示替换,s之后的%是分隔符,代替默认的/分隔符,括弧表示将括号里面的内容保存下来,标记为1,#表示把注释扩展到下一个换行符以前,\1表示选取括号中的内容。
    • 这里出现了众多的反斜杠,都是用来做转义的,否则会被解析。
    • %前面的反斜杠是用来转义crontab的,crontab中会将%解析成换行符。括弧和*前的反斜杠是因为sed会解析它们。
    • 如果不是在crontab中,这个命令可以写成 sed -i 's%\*\/10\*\*\*\*tesh.sh\*\/10\*\*\*\*tesh.sh%#\1%'  file

     

    3. crontab的调试方式

    • 如果crontab不执行,我们可以使用 sudo vim /var/spool/mail/用户名查看系统发给用户的mail,可以通过时间点,来找出执行失败的原因。
    展开全文
  • linux系统提供at和crontab两个命令来执行定时任务,at主要针对一次性的定时任务,crontab则执行周期性的定时任务。在linux运维中使用较多的还是cronjob,当安装完linux系统后,linux会自动启动crond进程,这是周期性...
  • Linux定时任务不执行排查方法

    千次阅读 2020-11-10 09:39:08
    实现linux定时任务有:cron、anacron、at等,但平常工作中接触到的是cron服务。cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。项目中经常用到定时任务实现某些功能,最近遇到定时任务不执行的...
  • linux定时任务(crontab)

    千次阅读 2021-02-23 10:53:19
    linux crontab定时任务 ,crontab发送邮件
  • 创建定时任务时,所有的路径都需要写绝对路径,包括配置文件。 若定时文件为定时执行sh文件,而sh文件中需要的配置文件也需要写绝对路径。 在linux服务器上新建jar的crontab 定时任务时,发现定时任务不生效,此时...
  • Linux定时任务,执行shell文件失败问题 1 前言 最近一直被别人攻击数据库,ε=(´ο`*)))唉。又不是什么重要数据,怎么一直逮住我不放了。实在没有什么办法了,只能把数据库做做备份,将损失降到最低吧o(╥﹏╥)o 2...
  • 0x0 系统:centos7 内核:3.10.0-1160.15.2....今天用crontab创建定时任务,在测试时发现任务并没有按预期执行, 使用systemctl status crond 查看crond的状态 > # systemctl status crond ● crond.service - C
  • 因工作需要,需要在服务器中写一个定时任务,定时把redis数据库中的数据查询出来存放在mysql数据库中,奈何没写过shell脚本,只能用python代替了。确定好思路开始行动。 写脚本 #!/usr/local/bin/pyhton import ...
  • Linux定时任务crond

    2020-05-13 16:03:53
    定时任务说明与分类 定时任务的应用场景举例 定时任务的三种分类 用户与系统定时任务 系统定时任务 用户的定时任务 定时任务的使用 定时任务相关的文件 定时任务格式与常见写法 格式说明 两个...
  • 首先,需要了解一下Linux定时任务的使用,可以参考我写的另一篇文章 https://blog.csdn.net/zxc_user/article/details/80658709   然后就是我今晚自己想写一个脚本来坚持Tomcat是否挂掉,是的话就重启 这是我...
  • 在对之前的项目提供运维服务的时候...由于挂载盘空间有限,所以决定写一个删除缓存文件的定时任务 (一).写一个shell脚本,删除指定文件夹下的文件 1.创建一个test01.sh的shell脚本 #进入home目录下(非必要) cd..
  • Linux中的定时任务

    2019-04-16 22:25:03
    Linux中的定时任务 cron和crond是linux下的定时任务,是一个服务,crontab是一...用户自己的定时任务在/var/spool/cron目录中以自己的用户名为文件名创建,使用crontab -e编辑的就是这个文件 cron.allow文件包含了...
  • Spark:使用Crontab定时执行Spark任务一、使用Crontab定时执行Spark任务 一、使用Crontab定时执行Spark任务 CSDN:Trigl 使用Crontab定时执行Spark任务
  • 之前第一次要在生产环境部署定时任务,无奈的是,博主对定时任务这块还是个小白,但是任务却需要部署一连串的定时任务,前后的定时任务之间还有关联。。。由于数据采集的时间有特殊要求,所以整个流程就挺恶心的更别...
  • Linux定时任务crontab 和sudo授权管理

    千次阅读 2018-11-07 17:29:20
    一、crontab是一种周期性执行任务的工具;1、系统执行的工作:系统周期性要执行的工作,如备份系统数据、清理缓存2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作...
  • 第一:手动执行.sh文件是没有问题的,而定时任务执行.sh文件则提示没有连接到数据库。 处理方法: 在脚本最前面加上一句: source ~/.bash_profile 这样运行环境就一摸一样了。加上这句后,直接执行能成功的脚本...
  • Linux下实现Mysql定时任务备份数据

    千次阅读 2018-11-14 21:59:32
    创建备份目录 本实例将创建目录放置于/mnt目录下,可根据具体情况放置于其他目录: cd /mnt mkdir dbback pwd /mnt/dbback 创建shell脚本 脚本名称可根据自己规范进行自定义: vim bcmysql.sh 进入编辑器,输入...
  • 使用定时任务 安装定时任务:yum install crontabs crontab -e 编辑并且添加一行新的任务:*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh 重启定时任务:service crond restart 附:常用定时任务命令:...
  • 那么这些需求都可以所使用linux中crontab定时任务来完成。 Crontab: 用于设置周期性被执行的指令 该命令读取指令存放于crontab文件中供后续读取和执行 crond为其守护进程,一般在后台默默运行,不间断的检查是否...
  • 文件中添加的定时任务命令,但是一直执行失败,本来以为是因为项目用户和用户组都是nginx,而执行可能是root用户所以不成功。 后来使用 crontab -e 命令直接编辑,加入如下命令: */1 * * * * /app/bin/...
  • Linux C语言定时任务的实现

    千次阅读 2020-08-27 18:42:16
    } int main() { while(flag) { //读取数据代码 } } 所以这里需要一个定时任务,一到时间就调用fun函数设置flag。在此,我使用了POSIX的定时器来达到我的目的。 2. POSIX相关函数介绍 posix相关的定时器函数...
  • 大家都建议使用Linux内置的定时任务crontab命令来调用php脚本来实现。PHP定时任务的两种方法: 1、web方式调用php网页,但是这样存在安全问题,外部用户同时也可以调用此文件。*/1 * * * * /usr/bin/wget -q -O ...
  • Linux 查看或设置定时任务

    千次阅读 2020-03-03 17:47:37
    Linux 查看所有定时任务 crontab 命令选项基本只对用户操作的选项: -u 指定一个用户 -l 列出某个用户的任务计划 -r 删除某个用户的任务 -e 编辑某个用户的任务 所以,要查看所有用户的,只能根据 /etc/passwd 文件...
  • crond服务是Linux系统默认会安装的服务工具,与windows下的计划任务类似,用来周期性的执行某种任务或等待处理某些事件的一个守护进程,并且启动主机会自动默认启动crond进程,crond进程会定期检查是否有要执行的...
  • 网上查询了一下,决定使用linux 定时任务 crontab,这里只是我自己的操作步骤:(1)在linux下执行 crontab -e (2)设定任务时间,如下: #每天晚上14点到15点每10钟执行一次(测试时间) */10 14-15 * * * ...
  • 今天写了一个sh脚本备份数据库,使用linux 定时任务每天执行。 sh脚本: #!/bin/bash #数据库用户名 DB_USER='xxxx' #数据库密码 DB_PASSWD='xxxx' #数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,115
精华内容 7,246
关键字:

linux定时任务创建失败

linux 订阅