[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文件中的内容,请根据实际情况更改上面的内容。