首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rc.local是添加pon启动和网络路由更改的最佳位置吗?

rc.local是添加pon启动和网络路由更改的最佳位置吗?
EN

Unix & Linux用户
提问于 2023-01-12 14:58:53
回答 2查看 80关注 0票数 0

我跟踪本指南,得到了一个4G帽子与我的圆周率零,一切似乎都好。一旦pon在后台启动并添加了一条路由,我就可以退出。

我想要的是pi启动,pon已经在运行,路由已经添加了。

我目前正在rc.local文件中这样做,但我很确定这是一种非常脏的方法:

代码语言:javascript
复制
sleep 20
sudo pon &
sleep 20
sudo route add -net "0.0.0.0" ppp0

exit 0

最后,在执行任何python之前,我希望确保网络已处于新定义的ppp0路由上。

我看过这个类似的问题,但不确定正确的方法:这可以用pre-up.d来完成吗?或者某种接口会改变吗?

任何帮助都将不胜感激。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2023-01-14 13:22:12

回答我自己的问题:

我是如何创建x2 systemd服务和对路由表进行更改的。

  1. 4gpon.service用于在后台启动pon:
代码语言:javascript
复制
[Unit]
Description=4G hat networing

[Service]
Type=forking
ExecStart=/usr/bin/pon
ExecStop=/usr/bin/poff
Restart=always

[Install]
WantedBy=multi-user.target
  1. 默认情况下更新路由表以启用ppp0
代码语言:javascript
复制
sudo ip route delete default
sudo ip route add default dev ppp0
代码语言:javascript
复制
sudo nano /etc/network/interfaces.d/ppp0

# add:
auto ppp0
iface ppp0 inet provider
up ip route add default dev ppp0

然后,除了这个文件的在这里定义的值之外,还添加这个文件:

代码语言:javascript
复制
sudo nano /etc/ppp/peers/provider

# add at bottom:
replacedefaultroute
  1. 在知道第一个服务之后调用python的garage-motion.service已经启动。
代码语言:javascript
复制
[Unit]
Description=Motion detector service
After=network.target network-online.target 4gpon.service

[Service]
Type=simple
Environment="AWS_DEFAULT_REGION=***your-region***"
Environment="AWS_ACCESS_KEY_ID=***your-key***"
Environment="AWS_SECRET_ACCESS_KEY=***your-secret-key***"
ExecStart=/bin/sh -c '/home/pi/projects/garage-motion/venv/python3 /home/pi/projects/garage-motion/venv/garage-motion.ph --serve-in-foreground'
Restart=on-abort

[Install]
WantedBy=multi-user.target
票数 0
EN

Unix & Linux用户

发布于 2023-01-12 15:36:10

您可以通过systemd创建一个在启动时执行的脚本。

首先,为命令创建一个脚本。确保它具有执行权限。

接下来,在/etc/systemd/system中创建一个以.service结尾并包含以下部分的文件名的服务文件:

代码语言:javascript
复制
[Unit]
Description=Description of script/service

[Service]
ExecStart=/bin/bash [path to script]

[Install]
WantedBy=multi-user.target

然后重新加载systemctl守护进程。

代码语言:javascript
复制
systemctl daemon-reload

最后,使用systemctl安装脚本,文件名为servicename

代码语言:javascript
复制
systemctl enable --now [servicename]

相关信息:

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/731507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档