Linux 定时循环执行 python 脚本 方法一: nohup 方法二: cron 总结

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

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 中断任务。

Linux 定时循环执行 python 脚本
方法一: nohup
方法二: cron
总结

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

Linux 定时循环执行 python 脚本
方法一: nohup
方法二: cron
总结Linux 定时循环执行 python 脚本
方法一: nohup
方法二: cron
总结

拓展: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 日志,可看到任务是否在执行。

Linux 定时循环执行 python 脚本
方法一: nohup
方法二: cron
总结

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

Linux 定时循环执行 python 脚本
方法一: nohup
方法二: cron
总结

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

总结

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

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

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