欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux 定时循环执行 python 脚本

程序员文章站 2022-03-19 23:43:17
...

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

 

方法一: nohup

vim time.py

import time
while(True):
    #time.sleep(1)
    with open('time.log', 'a+') as logfile:
        logfile.write('Hello, World!\n')
    time.sleep(1)
    #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 中断任务。

Linux 定时循环执行 python 脚本

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

Linux 定时循环执行 python 脚本Linux 定时循环执行 python 脚本

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

 

方法二: cron

vim time.py

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

在终端中使用 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 日志,可看到任务是否在执行。

Linux 定时循环执行 python 脚本

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

Linux 定时循环执行 python 脚本

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

 

总结

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

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

 

转自https://www.cnblogs.com/sherlockChen/p/8196590.html

相关标签: nohup