编程 linux设置开机自启动

2024-11-17 05:09:12 +0800 CST views 2566

一.、在/etc/rc.local文件中添加自启动命令
执行命令: 编辑"/etc/rc.local",添加你想开机运行的命令

运行程序脚本:然后在文件最后一行添加要执行程序的全路径。

例如,每次开机时要执行一个test.sh,这个脚本放在/usr下面,那就可以在"/etc/rc.local"中加一行"/usr/./test.sh",或者" cd /opt && ./test.sh "

注意,你的命令应该添加在:exit 0 之前

liunx.png

二、在/etc/init.d目录下添加自启动脚本
linux在“/etc/rc.d/init.d”下有很多的文件,每个文件都是可以看到内容的,其实都是一些shell脚本或者可执行二进制文件
Linux开机的时候,会加载运行/etc/init.d目录下的程序,因此我们可以把想要自动运行的脚本放到这个目录下即可。系统服务的启动就是通过这种方式实现的。

三、运行级别设置
简单的说,运行级就是操作系统当前正在运行的功能级别。

不同的运行级定义如下:

# 0 - 停机(千万不能把initdefault 设置为0 )
# 1 - 单用户模式         进入方法#init s = init 1
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 - 没有用到
# 5 - X11 多用户图形模式(xwindow)
# 6 - 重新启动 (千万不要把initdefault 设置为6 )

例:在Ubuntu/debain里,可以使用update-rc.d命令来把示例脚本:/etc/init.d/proxy安装到各个runlevel中。

update-rc.d proxy defaults 99
update-rc.d后面有三个参数,分别是/etc/init.d下的脚本名字,默认安装方式,运行的优先级。优先级的数字越大,表示越迟运行,这里我们把自己写的服务放在最后运行。

如果要卸载随机启动的服务,执行

update-rc.d -f proxy remove
在update-rc.d安装的时候提示了警告信息,是因为我们写的/etc/init.d/proxy太简陋了,只包含了我们想要的命令,连LSB的信息也没有提供。

update-rc.d: warning: /etc/init.d/proxy missing LSB information
update-rc.d: see http://wiki.debian.org/LSBInitScripts
只需要对自启动脚本做一些小改动,就可以避免那个警告了。如下:

#!/bin/sh
### BEGIN INIT INFO
# Provides: proxy
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the HTTP Proxy.
### END INIT INFO

case "$1" in
start)
start-stop-daemon --start --background --exec /root/proxy.py
;;
stop)
start-stop-daemon --stop --name proxy.py
esac

到此,一个最简单的随机启动服务写好了,看起来文章挺长的,但其实也就几个命令而已。
在下次开机启动的时候,proxy.py就会以root用户身份被自动运行。

四、把脚本注册为系统服务
在/etc/init.d下新建示例脚本文件(startTest.sh),该脚本会启动/opt/test.sh。内容如下:


. /etc/init.d/functions
start() {
echo "Starting my process "
cd /opt
./test.sh
}
stop() {
killall test.sh
echo "Stoped"
}

写了脚本文件之后事情还没有完,继续完成以下几个步骤:

chmod +x startTest         #增加执行权限
chkconfig --add startTest     #把startTest添加到系统服务列表
chkconfig startTest on       #设定startTest的开关(on/off)
chkconfig --list startTest.sh   #就可以看到已经注册了startTest的服务
复制全文 生成海报 Linux 系统管理 自启动

推荐文章

js生成器函数
2024-11-18 15:21:08 +0800 CST
markdown语法
2024-11-18 18:38:43 +0800 CST
Golang 中你应该知道的 noCopy 策略
2024-11-19 05:40:53 +0800 CST
Vue3中如何处理权限控制?
2024-11-18 05:36:30 +0800 CST
内网穿透技术详解与工具对比
2025-04-01 22:12:02 +0800 CST
Claude:审美炸裂的网页生成工具
2024-11-19 09:38:41 +0800 CST
PHP 如何输出带微秒的时间
2024-11-18 01:58:41 +0800 CST
Vue3 结合 Driver.js 实现新手指引
2024-11-18 19:30:14 +0800 CST
MyLib5,一个Python中非常有用的库
2024-11-18 12:50:13 +0800 CST
随机分数html
2025-01-25 10:56:34 +0800 CST
智慧加水系统
2024-11-19 06:33:36 +0800 CST
小技巧vscode去除空格方法
2024-11-17 05:00:30 +0800 CST
jQuery `$.extend()` 用法总结
2024-11-19 02:12:45 +0800 CST
Vue3中如何实现状态管理?
2024-11-19 09:40:30 +0800 CST
JavaScript设计模式:发布订阅模式
2024-11-18 01:52:39 +0800 CST
Python设计模式之工厂模式详解
2024-11-19 09:36:23 +0800 CST
Vue中的样式绑定是如何实现的?
2024-11-18 10:52:14 +0800 CST
资源文档库
2024-12-07 20:42:49 +0800 CST
7种Go语言生成唯一ID的实用方法
2024-11-19 05:22:50 +0800 CST
介绍Vue3的Tree Shaking是什么?
2024-11-18 20:37:41 +0800 CST
Rust 中的所有权机制
2024-11-18 20:54:50 +0800 CST
Rust开发笔记 | Rust的交互式Shell
2024-11-18 19:55:44 +0800 CST
程序员茄子在线接单