pythnn调用linux指令,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!\n')

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

d8af88c1fd2857fe89b8f4a3407b770b.png

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

e147d296eab9da11df6d0476298710c2.png

a6e2d2336b7a573396da25c8a9741834.png

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

方法二: cron

vim time.py

1 with open('/home/titanxp/test/time.log', 'a+') as logfile:

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

c3fbd96e4c4867f0f066fbeb30e4ffcc.png

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

a79ccfa0c3244f191f0354e57cc12c6f.png

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

总结

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值