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 中斷任務。

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!\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 日志,可看到任務是否在執行。

image

中斷:通過 crontab -e 打開進行任務編輯,只需刪除或注釋(#)定時任務即可中斷。

image

拓展:crontab命令Linux定時執行腳本

 

總結

方法一運用 Python 的 time 庫實現簡單的定時循環執行腳本,可適用變量需累加的情況。

方法二結合 cron 命令可實現復雜的定時循環循環執行腳本。

上述表述可能不到位,歡迎交流討論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM