首页 > 网络运维 > Linux > 正文

《Linux开机自启动脚本编写指南》

《Linux开机自启动脚本编写指南》

Linux 操作系统支持开机自动启动程序或服务,用户在 Linux 启动时可以指定某些程序或服务自动启动,帮助用户进行自动化操作,加快使用系统的效率。本文主要介绍 Linux 开机自启动脚本的编写技巧,供入门用户参考。

一、开机自启动脚本简介

Linux 开机自启动脚本 (bootscript) 用来指定在某个系统状态下启动某些服务。它的运行环境有双重要求:一是确保硬件能够顺利启动,即它包含了系统初始化设备和驱动脚本;二是在用户空间端,开机自动启动相关项目,例如开启某些守护进程、初始化系统常用程序等服务,让系统处于一个安全的状态。

二、编写方式

Linux 开机自启动脚本主要分为两类:systemd和SysV init,其中systemd是最新使用较多的开机自启动脚本管理工具,SysV init则是基于/etc/init.d/文件夹下存放着脚本文件来进行管理。此外,systemd支持使用 systemd-run来创建并运行脚本,而SysV init也可以直接通过命令启动脚本,例如:/etc/init.d/apache2 start。

1. systemd编写方式

了解systemd概念后我们可以创建脚本,来实现在Linux系统启动时自动运行某些服务。systemd提供了两种方式编写脚本:第一种是用systemctl直接启动程序;第二种是编写systemd服务脚本,保存在/etc/systemd/目录中。

a. 通过systemctl开机自启动脚本

通过systemctl可以实现在Linux启动时自动启动某些服务,例如以apache服务为例,可以使用systemctl start apache命令自动启动apache2服务,也可以使用systemctl enable apache命令让apache服务开机自启动。

b. 通过systemd service脚本

这种方法可以让更多的参数同时生效,建立docker服务开机自启动可以创建名为docker.service的脚本文件,存放到/etc/systemd/system/目录下,并写入以下内容来启动docker服务:

[Unit]

Description=Docker daemon

After=network.target

[Service]

Type=simple

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock

# ExecStart=/usr/local/bin/docker -d -H tcp://127.0.0.1:4243

# ExecStart=/usr/local/bin/docker -d -H fd://

[Install]

WantedBy=multi-user.target

完成以上步骤后,可以使用systemctl enable docker来实现开机自启动,也可以使用systemctl start docker来手动启动docker服务。

2. SysV init编写方式

SysV init 是基于init框架来管理系统服务,主要分为sysV init runlevel管理和init.d脚本控制。SysV init脚本位于/etc/init.d/文件夹下,以非root用户运行,可以根据需要在其中创建脚本文件,来实现系统自动启动项目的管理。

a. 通过修改系统runlevel

多数Linux系统都支持6个runlevel:0-halt,1-single-user,2-multiuser,3-multiuser-with-networking,4-unused,5-full-multiuser-with-X11,6-reboot。使用telinit命令可以查看或设置系统的runlevel,例如telinit 3 将更改系统runlevel至3,如果需要将某些服务添加到开机自启动,可以在/etc/rc.d/下查看,可见,不同runlevel下有不同的文件夹,每个文件夹下都运行一个服务,我们只要在对应的runlevel文件夹下新建一个脚本的快捷方式,即可实现开机自启动其他服务的功能。

b. 通过init.d脚本

此方法可以实现编写单独的开机自启动脚本,需要存放在/etc/init.d/文件夹下,且需要命名为S(系统服务)+运行服务名字,然后使用insserv命令让系统开机时自动识别本脚本,同时可以使用update-rc.d命令可以自动生成开机启动脚本,也可以手动在需要启动服务的runlevel下写入脚本指令,实现系统开机自动启动其他服务的功能。

三、总结

本文介绍的Linux开机自启动脚本编写技巧,主要涉及两种方式,一种是systemd,另一种是SysV init。domains使用systemctl和systemd service脚本来实现对系统服务的管理,SysV init使用runlevel和init.d脚本来实现。无论是哪种方法,实现Linux开机自启动服务都非常方便。

打赏
海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:http://atpbike.com/article/linux/3736.html

相关推荐

支付宝
微信
赞助本站