You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在runit发行版中配置仅执行一次的开机root脚本且无残留进程

解决方案

方法1:使用自带的local.d目录(最简便)

Artix的runit默认预装了local服务,会在开机时自动执行/etc/local.d/目录下所有后缀为.start的可执行文件,执行完成后不会残留进程,完全符合你的需求:

  • 将你的自定义脚本写入/etc/local.d/my-custom-script.start,示例内容:
#!/bin/bash
# 这里替换成你要执行的命令
echo "测试开机执行" > /tmp/test_runit_oneshot
  • 给脚本添加可执行权限:
    sudo chmod +x /etc/local.d/my-custom-script.start

操作完成后下次开机就会自动以root身份执行该脚本,不需要额外创建单独的runit服务。

方法2:编写独立的runit oneshot服务(适合需要控制启动顺序的场景)

如果你需要为这个脚本配置启动依赖、指定运行时机,可以单独创建runit服务,通过sv d命令通知runit执行完成后停止服务,避免重复启动和进程驻留:

  1. 创建服务目录:
    sudo mkdir /etc/runit/sv/my-oneshot-service
  2. 编写/etc/runit/sv/my-oneshot-service/run脚本:
#!/bin/sh
# 替换为你的自定义命令
<your command here>
# 执行完成后停用当前服务,runit不会再重启它
exec sv d "$PWD"
  1. 给run脚本添加可执行权限:
    sudo chmod +x /etc/runit/sv/my-oneshot-service/run
  2. 启用服务开机自启:
    sudo ln -s /etc/runit/sv/my-oneshot-service /etc/runit/runsvdir/default/

你之前的写法里用& pause会让run脚本一直挂起停留在pause命令,所以会产生无用的驻留进程,上述两种方法都不会出现这个问题。

内容的提问来源于stack exchange,提问作者Gontran Zipper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:54:02