debian 添加开机启动项

有的时候,经常有自己需要的程序,官方并没有提供添加开机启动的方法,但我们却需要让他们开机启动(比如探针类、飞机类、服务类程序等)。可能有的人会说,可以使用 /etc/rc.local 啊。是可以使用这个,但不是所有的系统都有 rc.local 。今天介绍一个简单的方法,实现将自己需要的程序添加到开机启动项中,并使其在系统启动后自动执行。

首先,进入 /etc/init.d 目录中:

复制代码
cd /etc/init.d/

然后,我们使用 ls 命令,会发现里面有一些文件。这些文件就是在开机启动时自动运行的程序。我们现在来开始添加一个自定义的开机启动项 MyTest

复制代码
vim MyTest

文件名严格区分大小写,请注意!

你可以使用你自己喜欢的文本编辑工具进行编辑工作。此文以 vim 为例。

然后,在继续之前,先看一下开机启动项文件的一个模板:

复制代码
#!/bin/sh

### BEGIN INIT INFO
# Provides: [程序名称,唯一]
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: [启动项的简短说明]
# Description: [启动项的完整说明]
### END INIT INFO

[需要执行的命令]

exit 0

在这个模板中,Provides唯一的,也就是在所有的开机启动项中,Provides不能有任何同名冲突。

Short-DescriptionDescription 随心情写。

需要执行的命令,按照正常的Bash Shell书写方式书写即可。

友情提示:需要后台静默运行的程序,请使用 nohup 需要执行的命令 >/dev/null 2>&1 & 方式来启动!

最后的 exit 0 请不要删除!这个是返回正常退出信号的一个传值!

那么,我们设想我们需要创建一个名为 MyTest 的开机启动项,并要求其在开机时在 /root/mytest.txt 文件中写入一句话:"Hello Linux World !",根据上面的模板,我们需要修改成这个样子:

复制代码
#!/bin/sh

### BEGIN INIT INFO
# Provides: MyTest
# Required-Start: $network $remote_fs $local_fs
# Required-Stop: $network $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: MyTest
# Description: MyTest Test Program
### END INIT INFO

echo "Hello Linux World !" >> /root/mytest.txt

exit 0

之后将文件保存,关闭编辑器。

接下来,我们将刚才编辑好的 MyTest 文件加上可执行的属性(如果不加属性,启动脚本将无法运行):

复制代码
chmod +x MyTest

然后,将这个启动脚本加入开机启动项中:

复制代码
update-rc.d MyTest defaults

然后重新启动系统,或者命令行执行 /etc/init.d/MyTest ,执行启动脚本,然后使用 cat /root/mytest.txt,验证文件是否正确创建。

那么,还有一个问题:那就是如何删除我们刚才创建的开机启动项呢?

答案很简单,只需要一条命令:

复制代码
update-rc.d -f MyTest remove
相关推荐
JavaPub-rodert7 小时前
Docker 多阶段构建:为什么生产环境镜像可以小 90%
运维·docker·容器
2601_962218477 小时前
万象生鲜系统多账套隔离技术适配集团生鲜企业集团化数字化管控
大数据·运维·微服务·云原生·架构
王志来137944730087 小时前
安防监控工控工业服务器配套
运维·服务器·python
hanchenxing7 小时前
自动化脚本“卡住无输出“怎么办: 一次 WebSocket 挂死的排查与自愈模板
运维·javascript·chrome·websocket·自动化·自动化爬虫
吴声子夜歌7 小时前
Shell编程——条件测试与比较
linux·运维·shell
吴声子夜歌8 小时前
Shell编程——函数
linux·运维·shell
PC2005-cloud8 小时前
Qdrant 连接失败排查:localhost 解析到 __1,而 Docker 只绑了 IPv4
运维·docker·容器
电子制造自留地9 小时前
AI服务器PCB的超低损耗材料选型逻辑
运维·服务器·人工智能·科技·制造·科普·pcb工艺
蓝速科技10 小时前
会议室门牌触控预约选型与落地实战指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
PatrickYao042210 小时前
Linux安装UV
linux·运维·uv