OpenWRT(IstoreOS)的启动项管理方案Procd

GoodTsing 8月前 521

OpenWrt 的这种基于 /etc/init.d/ 目录下的启动脚本和服务管理机制通常被称为 “Procd”“Procd 服务管理”。Procd 是 OpenWrt 的一个核心组件,用于管理和控制系统的初始化和服务运行。

Procd 的特点:

  1. 基于 /etc/init.d/ 脚本:每个服务通过一个独立的启动脚本进行管理,这些脚本存放在 /etc/init.d/ 目录下。
  2. 灵活的启动顺序控制:通过脚本中的 STARTSTOP 参数,可以定义服务的启动和停止顺序。
  3. 支持多种操作:通过命令行工具(如 startstoprestartenabledisable)来控制服务的运行状态。
  4. 与系统紧密结合:Procd 是 OpenWrt 的默认服务管理器,与系统的其他组件(如 LuCI 界面)无缝集成。

Procd 的命名来源:

  • ProcdProcess Daemon 的缩写,意为“进程守护进程”,它负责管理系统的进程和服务。

与其他服务管理器的对比:

  • 在传统的 Linux 系统中,服务管理通常使用 SystemdSysVinit
  • OpenWrt 使用 Procd 是因为它轻量级、高效且专为嵌入式设备优化。

**************************************************************************************************************

OpenWrt 的启动项管理主要通过 /etc/init.d/ 目录下的启动脚本实现,这些脚本负责控制各种服务的启动、停止和重启。以下是关于 OpenWrt 启动项的详细说明:

1. 启动脚本的存放位置

OpenWrt 的启动脚本存放在 /etc/init.d/ 目录下,每个脚本对应一个服务。

2. 启动脚本的格式

启动脚本通常以 #!/bin/sh /etc/rc.common 开头,并定义服务的启动顺序(START 参数)和启动逻辑。例如frps脚本:
#!/bin/sh /etc/rc.common

START=99
STOP = 10
#代表顺序,99为最后启动,第10个关闭

start() {
    echo "Starting Frps..."
    /usr/local/frp/frps -c /usr/local/frp/frps.toml &

stop() {
    echo "Stoping Frps..."
    killall frps
 }

restart() {
    echo "Stoping Frps..."
     stop
     start
   }
此脚本会在系统启动时执行 start 函数。
 
给他执行权限
chmod +x /etc/init.d/frps

3. 启动项的管理命令

  • 启动服务/etc/init.d/frps start
  • 停止服务/etc/init.d/frps stop
  • 重启服务/etc/init.d/frps restart
  • 启用开机自启/etc/init.d/frps enable
  • 禁用开机自启/etc/init.d/frps disable
  • 检查状态/etc/init.d/frps status

4. 其他启动相关文件

  • /etc/rc.local:用于在系统启动完成后执行自定义命令。可以在此文件中添加需要在启动末尾执行的脚本。
  • /etc/inittab:用于定义系统的初始化行为,但 OpenWrt 主要通过 /etc/init.d/ 脚本管理。

5. Web 界面管理

OpenWrt 的 LuCI 界面也提供了启动项管理功能。用户可以在 系统 -> 启动项 中查看和管理服务的开机自启状态。
通过以上方法,用户可以灵活地定制 OpenWrt 的启动过程,满足不同的需求。
——————————————————————————————————————————————
另外,还可以利用Crontable 来进行计划执行,也即istoreos中的计划任务,但他的语法比较奇怪,例如:
# see https://man7.org/linux/man-pages/man5/crontab.5.html
0 22 * * *  /sbin/poweroff
00 23 * * * /usr/libexec/timeset/handler poweroff
0 7 * * * /usr/share/shadowsocksr/ssrplusupdate.sh >/var/log/ssrplus.log
最新回复 (0)
返回
发新帖