51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

CentOS7开机自启动三种方法

有个需求,比如说我想要开机执行某个程序,就需要去做开机自启动相关操作。

准备工作:在/usr/local目录下建立sjf.sh


# vi sjf.sh 
//键入以下内容(前提:已安装nginx、mysql)
service nginx start
service mysql start
//赋予可执行权限
# chmod -R 775 /usr/local/sjf.sh

方法一:更改/etc/rc.d/rc.local (常用)


在rc.local中加入运行sjf.sh脚本
# vi /etc/rc.d/rc.local
//文本结尾加入以下命令
/usr/local/sjf.sh
按下ESC后键入:wq!保存退出
#rc.local授权(在Centos7下,/etc/rc.local文件是个软链接实际文件不具备执行权限,设置开机启动,需要给文件授权)
chmod +x /etc/rc.d/rc.local
chmod -R 775 /etc/rc.d/rc.local
# reboot 
重启服务器并查看效果

注意:

有时候我们在/etc/rc.d/rc.local里面增加的开机自启脚本和指令总是不能自动启动,机器启动后手动执行又能成功。这个问题解決方式如下,/etc/rc.d/rc.local文件的文件头是#!/bin/sh ,我们把这修改成#!/bin/sh -x,这样系统启动后就会把/etc/rc.d/rc.local里面的指令或脚本不能执行的日志写入/var/log/messages ,我们查看messages文件內容就知道具体的错误了。


方法二:crontab定时计划中的@reboot


# vi /etc/crontab
//在文本结尾加上以下命令
@reboot /usr/local/sjf.sh

方法三:使用systemd服务


查看机器是否能用systemd服务,运行命令# ps aux,
看pid=1的进程是否是/usr/lib/systemd/systemd --switched-root --system --deserialize 22
在/etc/systemd/system下创建auto_start.service
# vi auto_start.service
//键入以下内容
[Unit]
Description=The app auto run when reboot
After=default.target
[Service]
ExecStart=/usr/local/sjf.sh
[Install]
WantedBy=default.target
//重启systemd服务、设置开机自启动
# systemctl daemon-reload
# systemctl enable auto_start.service
#reboot
赞(0)
未经允许不得转载:工具盒子 » CentOS7开机自启动三种方法