[ubuntu入门手册]-22-开机自动执行程序的两种方式

引言

这篇文章介绍Ubuntu中两种开机自动执行命令或脚本的方式,分别基于update-rc.d和rc.local,其中rc.local适用于执行一行或一段命令,update-rc.d适用于执行一个或多个脚本文件。

文章目录

0×1.如何使用update-rc.d开机执行

update-rc.d是基于service的,使用update-rc.d可以将程序或脚本添加到服务列表中,然后使用service来管理,请看下面的实例:

					#1.使用root权限,在/etc/init.d下创建一个sh文件
					qing@qingsword.com:~$ su - root 
					qing@qingsword.com:~# vim /etc/init.d/qingsword.com.sh

					#在qingsword.com.sh文件中,写入下面的测试内容,最后一句exit 0前,可以写多条shell语句,只要语句不报错,都会在系统启动时被执行,但是exit 0这一句必须写,否则系统不会执行这个文件的内容
					#!/bin/bash
					echo "qingsword.com">>~/qingsword.txt
					exit 0 

					#2.给文件设置执行权限
					qing@qingsword.com:~# chmod 755 /etc/init.d/qingsword.com.sh

					#3.使用update-rc.d将qingsword.com.sh文件添加到启动服务列表中
					#进入/etc/init.d目录,执行下面的语句,90表明一个优先级,越高表示执行的越晚 (优先级范围:0~90)
					qing@qingsword.com:~# cd /etc/init.d
					qing@qingsword.com:/etc/init.d# update-rc.d qingsword.com.sh defaults 90

					#4.查看服务列表,看看qingsword.com.sh是否在列表中
					qing@qingsword.com:~# service --status-all | grep qingsword.com.sh

					#服务启动列表前面的[]中有三种状态如下
					[+]–具有此标志的服务当前正在运行。
					[–]–具有此标志的服务当前未运行。
					[?]–没有状态开关的服务。

					#5.经过上面第三步之后,就可以使用service命令来控制和查看服务状态了
					#启动,启动后会自动开机启动,每次开机都会执行qingsword.com.sh这个脚本中的内容
					qing@qingsword.com:~# service qingsword.com.sh start
					#停止,停止后就不会开机启动了
					qing@qingsword.com:~# service qingsword.com.sh stop
					#重启
					qing@qingsword.com:~# service qingsword.com.sh restart
					#状态
					qing@qingsword.com:~# service qingsword.com.sh status

					#6.如果想删除这个服务,可以如下操作
					#首先停止服务
					qing@qingsword.com:~# service qingsword.com.sh stop
					#进入init.d文件夹,移除开机脚本
					qing@qingsword.com:~# cd /etc/init.d
					qing@qingsword.com:/etc/init.d# update-rc.d -f qingsword.com.sh remove
					#删除脚本文件
					qing@qingsword.com:/etc/init.d# rm -rf qingsword.com.sh
					

请使用自己的程序或者脚本替换上面的qingsword.com.sh文件,上面的实验在ubuntu22.04中测试通过,并且全程使用root权限,如果您使用的是非root权限用户,需要在命令之前添加sudo,并且部分目录(如/etc/init.d),可能只有root可写,请根据实际情况调整。

0×2.如何使用rc.local开机执行

rc-local是基于systemctl的一个服务,服务启动后,每次开机之后,都会自动去执行/etc/rc.local这个文件中的内容,请看下面的实例:

					#1.将rc-local.service文件复制到system目录下,这样就可以通过systemctl来控制它
					qing@qingsword.com:~# cp /usr/lib/systemd/system/rc-local.service /etc/systemd/system/

					#2.创建/etc/rc.local文件(如果不存在),并且设置权限
					qing@qingsword.com:~# touch /etc/rc.local
					qing@qingsword.com:~# chmod 755 /etc/rc.local

					#3.写入开机需要执行的命令到/etc/rc.local文件中即可
					qing@qingsword.com:~# vim /etc/rc.local

					#本例写入下面的测试语句(注意:最后一句exit 0必须写,所有需要执行的命令都可以写在这一句之前就行,否则服务会无法启动成功 )
					#!/bin/bash
					echo "qingsword.com" >> ~/qingsword.com.txt
					exit 0

					#4.设置rc-local服务开机启动
					qing@qingsword.com:~# systemctl start rc-local
					qing@qingsword.com:~# systemctl enable rc-local
					

上面这样设置之后,开机之后就会自动执行/etc/rc.local文件中的内容,请根据实际情况更改上面的内容。