参考:关于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 time
-
- def 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 #查看执行状态