• Linux 定时循环执行 python 脚本


    本文主要介绍在linux环境下,定时循环执行python脚本的两种方法。

    方法一: nohup

    vim time.py

      1 import time
      2 while(True):
      3     #time.sleep(1)
      4     with open('time.log', 'a+') as logfile:
      5         logfile.write('Hello, World!
    ')
      6     time.sleep(1)
      7     #break

    在终端运行如下命令

    nohup python time.py &

    功能:实现了每秒将 "Hello, World!" 字符串,写入当前目录下的 time.log 文件中。

    原理:利用 python 的无限循环 while(True) ,并使用 time.sleep() 方法设置相应的秒数时停,最后通过 nohup 和 & 命令将脚本挂在后台不挂断的运行。

    nohup command &:在后台运行 command,原程序的标准输出和错误重定向到当前目录下的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

    查看:通过 tail -f time.log 在当前终端追踪显示 time.log 文件,可用 Ctrl+c 中断显示。

    中断:通过 jobs 命令查看当前后台中运行的任务,再使用 fg %n 将第n项挂到前台,最后用 Ctrl+c 中断任务。

    image

    或者通过 ps aux | grep python 命令查看 python 进程,找到挂起的脚本的 PID ,再使用 kill -9 PID 中断挂起的脚本。

    imageimage

    拓展:nohup和&后台运行,进程查看及终止Linux的nohup命令的用法

    方法二: cron

    vim time.py

      1 with open('/home/titanxp/test/time.log', 'a+') as logfile:
      2     logfile.write('Hello, World!
    ')
    

    在终端中使用 crontab -e 命令建立如下任务

    */1 * * * * /usr/bin/python /home/titanxp/test/time.py

    功能:实现了每分钟将 "Hello, World!" 字符串,写入指定目录下的 time.log 文件中。

    原理:通过 crontab -e 命令建立周期性任务。要注意的是,脚本中和脚本路径需要写全路径。

    crontab 格式:minute hour day-of-month month-of-year day-of-week commands

    查看:通过 tail -f /var/log/cron.log 命令查看 cron 日志,可看到任务是否在执行。

    image

    中断:通过 crontab -e 打开进行任务编辑,只需删除或注释(#)定时任务即可中断。

    image

    拓展:crontab命令Linux定时执行脚本

    总结

    方法一运用 Python 的 time 库实现简单的定时循环执行脚本,可适用变量需累加的情况。

    方法二结合 cron 命令可实现复杂的定时循环循环执行脚本。

    上述表述可能不到位,欢迎交流讨论。

  • 相关阅读:
    Oracle 函数
    ecplise 修改编码
    mysql json 使用 类型 查询 函数
    java 子类强转父类 父类强转子类
    java UUID
    Java Number & Math 类
    java String类
    apache StringUtils 工具类
    apache ArrayUtils 工具类
    java Properties
  • 原文地址:https://www.cnblogs.com/sherlockChen/p/8196590.html
Copyright © 2020-2023  润新知