[Lunix] 將 Python 任務設爲守護進程(一)

一般來說守護進程是通過shell腳本來實現的,大致過程如下:

  1. 創建shell腳本,在文件開頭加上#!/bin/sh, 然後寫入要執行的任務。
  2. 創建service文件,在文件中寫入要執行的shell文件路徑,路徑必須爲絕對路徑。
  3. 使用systemctl啓動守護進程。

如果想要把一個python任務設置爲守護進程,可以省略第一步,直接將要執行的python文件寫入service文件即可,詳細過程如下:

1. 安裝systemd

Ubuntu: sudo apt-get install systemd
Centos: sudo yum install systemd

2. 配置service文件

創建一個名字爲python_taskd.service的service文件,文件名最後的字母d表示守護進程的意思,需要注意的是文件中凡是涉及到路徑的地方, 不能使用相對路徑。

2.1 service文件所在路徑

注意 Centos 與 Ubuntu 中存放 service 文件的路徑不同
Centos:vim /usr/lib/systemd/system/python_taskd.service
Ubuntu:vim /lib/systemd/system/python_taskd.service

2.2 service文件內容

假設 python 所在路徑爲 /usr/bin/python3 ,要執行的python文件爲 /root/python_task.py,則service文件中應寫入以下內容

[Unit]
Description=start news spider
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 /root/python_task.py
ExecReload=/usr/bin/python3 /root/python_task.py
ExecStop=

[Install]
WantedBy=multi-user.target

3. 啓動守護進程

管理守護進程的常用命令有:

systemctl daemon-reload
systemctl start python_taskd.service
systemctl restart python_taskd.service
systemctl status -l python_taskd.service

4. 查看日誌

使用journalctl可以查看系統運行的日誌

sudo journalctl -u python_taskd.service --since="2019-09-16 00:00:00" --until "2019-09-16 12:00:00"

其中 -u python_taskd.service 表示過濾出與python_taskd相關的日誌,--since--until 表示要查看的起止日期。

5. 常見錯誤

  1. shell腳本的開頭沒加上#!/bin/sh
  2. shell腳本沒有添加執行權限
  3. service文件裏有相對路徑
  4. service文件放置在錯誤的目錄

通過報錯信息很難看出問題出在什麼地方,所以需要逐一排查,一般報錯信息如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章