簡體   English   中英

在系統啟動時作為守護進程運行 python 腳本

[英]Running a python script at at system boot as a daemon

我正在嘗試創建一個將在啟動時執行我的腳本的守護進程。

使用此代碼作為我的模板運行 python 腳本

當用戶登錄時,我的 python 腳本以交互方式工作。

def wait_for_network():
    while os.system("ping -c 1 8.8.8.8") != 0:
        time.sleep(1)
    return
from getmac import get_mac_address
from datetime import datetime
import RPi.GPIO as GPIO
import os
import time
import random
import RPi.GPIO as GPIO
import requests 

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(5, GPIO.IN)
GPIO.setup(6, GPIO.IN)
GPIO.setup(23, GPIO.IN)
GPIO.setup(24, GPIO.IN)
GPIO.setup(14, GPIO.IN)

eth_mac = get_mac_address()
#print(eth_mac)

API_ENDPOINT = "https://xxxxxx.com/handlers/receiveStatus.ashx"
CUSTOMER_KEY = "1234567890"

# Define a callback function that will be called by the GPIO
# event system:
def onButton(channel):
    if channel == 14:
      dt_string = (datetime.now().strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3])

     data = {'ID':CUSTOMER_KEY, 
            'UUID':str(eth_mac),
            'DT':dt_string,
            'A':str(GPIO.input(6)), 
            'B':str(GPIO.input(24)), 
            'C':str(GPIO.input(23)),
            'D':str(GPIO.input(5))
           } 

r = requests.post(url = API_ENDPOINT, data = data) 
#print r.text
#print data

GPIO.add_event_detect(14, GPIO.RISING, callback=onButton, bouncetime=20)

#input()

我的問題是這個 - #input() 作為守護進程運行時我需要它嗎?

有了它,腳本就會一直運行,直到用戶按下 ctrl-c 來退出。

當我將其注釋掉時,腳本會運行一次,然后返回到提示符。

GPIO 正在創建一個線程,主線程需要等待它。 這是通過 input() 完成的。 你可以做的是創建一個循環來代替 input()。

while True:
   time.sleep(1)

這將阻止進程退出,直到發生 ctrl c 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM