关于linux开机启动问题
linux系统不同与常用的windows系统。因此,对于开机启动也有着不同的设置,今天我就介绍一下如何设置linux系统下开机启动一些服务的方法。当然如果大家看到我的文章的话,希望能够全部读完在去操作。因为有一些问题细节我在后面后讲到(可能有错误,如果有的话,希望大家给我留言改正)
首先系统启动的话要自己配置一下.service文件(这里不做说明)
CentOS & Redhat
chkconfig service_name {on|off} CentOS6.x 以下版本
systemctl enable/disable service_name CentOS7.x 以上版本
ubuntu 查到有以下2中方式
update-rc.d service_name defaults;
sysv-rc-conf –level 345 service_name on;(这个命令ubuntu 18的系统我试过好像不能用,别的版本没试过)
deepin系统(我这里说明这个系统,主要是我的电脑就是这个系统)
systemctl enable/disable service_name
update-rc.d service_name defaults;
- 注:这里用update更改启动的话默认的文件夹是在/etc/init.d/下,因此可以在这个创建service文件后直接打名字就行了
另外systemctl的话,要把service文件创建在这个位置下 /etc/systemd/system/
说一个linux通用的方法:
/etc/rc.local
这里我要特别说明的是ubuntu16之后的系统没有这个文件(想让systemd独立)。但是,没有不代表他就不会加载这个东西,可以自己创建一个这样的文件
sudo vim /etc/rc.local
# 在exit 0之前添加你的开机程序
exit 0
搞完之后给文件赋可执行权限
sudo chmod +x /etc/rc.local
如果不行的话就再system下创建服务脚本
sudo vi /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
#sysVstart这行可以删掉,我看启动日志中貌似报忽略这个了。。
[Install]
WantedBy=multi-user.target
sudo systemctl enable rc-local.service
运行后即可
有关init.d/文件夹下创建的启动项有时不能启动问题:
linux系统加载init.d/下的内容其实是在系统启动的中期,也就是说系统本身的东西并没有完全加载完。因此这时的一些服务就不能够运行。而rc.local之所以能够成功运行那些服务是因为linux系统加载rc.local下的东西是在系统启动的最后阶段,系统本身的东西已经加载完成,而此时就可以正常去加载各种服务了(小编网上查的资料)
当然,种种迹象表明systemd已经来临,用systemd是种大趋势,我们也应该尽量多的学习,运用这种方法。