参考:关于rc.local 自启动多个应用问题_rc.local启动多个服务-CSDN博客
Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决_rc.local文件启动不生效-CSDN博客
Ask GPT
如果第一个命令 sudo pppd call dial
不返回并且一直在运行,而你需要等待一段时间后执行第二个命令 sudo route add -net 0.0.0.0 ppp0
,你可以使用Python来编写一个脚本,以便在不同线程中运行这两个命令。Python的threading
模块可用于创建多线程应用。以下是一个Python脚本示例:
import subprocess
import threading
import timedef run_pppd():# 启动第一个命令subprocess.call(["sudo", "pppd", "call", "dial"])def run_route_add():# 等待一段时间(例如,10秒),这里的时间长度会影响执行,确保第一个执行后再执行第二个time.sleep(30)# 启动第二个命令subprocess.call(["sudo", "route", "add", "-net", "0.0.0.0", "ppp0"])if __name__ == "__main__":# 创建两个线程分别运行两个命令thread1 = threading.Thread(target=run_pppd)thread2 = threading.Thread(target=run_route_add)# 启动线程thread1.start()thread2.start()# 等待线程结束thread1.join()thread2.join()
这个Python脚本创建了两个线程,一个用于运行第一个命令,另一个用于运行第二个命令。你可以根据需要调整等待的时间(time.sleep(10)
)以确保第一个命令有足够的时间来运行,然后再执行第二个命令。
将这个Python脚本保存为一个文件(例如,run_commands.py),然后在系统启动时运行它。确保Python解释器可用,因为你会在脚本中使用Python。
pi@raspberrypi:~ $ sudo gedit /etc/rc.local
# add python ./../.py
pi@raspberrypi:~ $ systemctl status rc-local #查看执行状态