繁体   English   中英

如何在 Linux 启动时运行 python 程序?

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

我想运行一个简单的 python 程序,它在 PMOD OLED 上显示我的 PYNQ 板(运行 Linux 操作系统)的 IP 地址。

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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM