我如何 运行 Linux 的 python 程序启动?

How do I run a python program at Linux start up?

我想要 运行 一个简单的 python 程序,它在 PMOD 上显示我的 PYNQ 开发板 (运行 Linux OS) 的 IP 地址OLED.

from netifaces import ifaddresses
IP_addr = ifaddresses('eth0:1')[2][0]['addr']

from pynq.overlays.base import BaseOverlay from pynq.lib import Pmod_OLED

base = BaseOverlay("base.bit")
display = Pmod_OLED(base.PMODA)

display.clear()
display.write("Board IP",1,0)
display.write(IP_addr,1,3)

为了在系统启动时实现 运行,我遵循了 Raspberry Pi 上针对相同内容制作的教程。以下是步骤:

sudo nano /lib/systemd/system/sample.service

添加了以下文本:

 [Unit]
 Description=My Sample Service
 After=multi-user.target

 [Service]
 Type=idle
 ExecStart=/usr/bin/python3 /home/xilinx/sample.py

 [Install]
 WantedBy=multi-user.target

然后执行以下命令:

$ ExecStart=/usr/bin/python3 /home/xilinx/sample.py > /home/xilinx/sample.log 2>&1

$ sudo chmod 644 /lib/systemd/system/sample.service

$ sudo systemctl daemon-reload
$ sudo systemctl enable sample.service

重新启动系统后,IP 会显示一小会儿,因为系统已终止程序并清除显示而被清除。 如何使代码 运行 停止?

我的问题的答案如下:

原来还有另一个优先级更高的python脚本(/usr/local/bin/flash_leds.py)正在清除硬件并中断我程序的执行。

因此,更简单的解决方案是将我的代码添加到已经存在的代码中,它工作得很好。

更好的解决方案是在 /etc/init.d/ 中创建一个脚本 startup.sh,让它调用 python3 /home/xilinx/display_ip.py,使其可执行,然后最后将其配置为在启动时启动命令:

sudo update-rc.d /etc/init.d/startup.sh defaults 100