CentOS 7启动脚本
背景介绍
在系统管理中,开机自启动脚本是一项重要的功能,它允许某些程序或服务在系统启动时自动运行,从而简化操作流程和提高系统效率,本文将详细介绍如何在CentOS 7系统中创建和管理开机自启动脚本。
创建开机自启动脚本步骤
编写Shell脚本
需要编写一个Shell脚本文件,创建一个名为myscript.sh
的文件:
#!/bin/bash echo "准备启动frp..." cd /root/clouddevice/frp/ &> /dev/null && nohup /root/clouddevice/frp/frps c /root/clouddevice/frp/frps.ini > frps.log 2>&1 & echo "frp启动完毕!" echo "准备启动rethinkdb及stf..." cd /root/clouddevice/stf &> /dev/null nohup rethinkdb &> /dev/null & nohup stf local publicip 192.168.137.100 binddevpull tcp://0.0.0.0:7114 binddevpub tcp://0.0.0.0:7116 R &> stf.log & echo "rethinkdb及stf 启动完毕!"
确保脚本具有执行权限:
chmod +x myscript.sh
复制脚本到指定目录
将脚本文件复制到/etc/rc.d/init.d/
目录下:
sudo cp myscript.sh /etc/rc.d/init.d/
创建符号链接
创建一个符号链接,以便在系统启动时自动运行脚本:
sudo ln s /etc/rc.d/init.d/myscript.sh /etc/rcS.d/S99myscript.sh
数字99表示脚本将在系统启动时按顺序运行,数字越小表示越先运行。
确保可执行权限
在CentOS 7中,默认情况下/etc/rc.d/rc.local
文件的权限被降低,因此需要手动赋予其可执行权限:
sudo chmod +x /etc/rc.d/rc.local
编辑rc.local文件
打开并编辑/etc/rc.d/rc.local
文件,添加以下内容:
su developer c '/opt/script/autostart.sh'
其中developer
是系统登录用户名,可以根据实际需求进行修改。
自定义systemd服务(可选)
另一种方法是通过创建自定义的systemd服务来实现开机自启动,以下是一个简单的示例:
a. 编写服务文件
创建一个名为myscript.service
的文件,内容如下:
[Unit] Description=My Custom Script After=network.target remotefs.target nsslookup.target [Service] Type=forking ExecStart=/usr/local/tomcat/bin/startup.sh ExecReload=/bin/kill s HUP $MAINPID ExecStop=/bin/kill s TERM $MAINPID PrivateTmp=true [Install] WantedBy=multiuser.target
保存文件到/usr/lib/systemd/system/
目录。
b. 设置开机自启动
启用服务:
sudo systemctl enable myscript.service
c. 启动服务
启动服务:
sudo systemctl start myscript.service
相关FAQs
Q1: 如何更改开机自启动脚本的运行顺序?
A1: 可以通过调整符号链接的名称来改变脚本的运行顺序,将S99myscript.sh
改为S99myscript.sh
,数字越小表示越先运行。
Q2: 如果开机自启动脚本未能成功运行,该如何排查问题?
A2: 可以检查以下几个方面:
1、确保脚本具有执行权限。
2、查看系统日志(如/var/log/messages
)以获取更多错误信息。
3、确保脚本路径正确且文件存在。
4、检查是否有依赖的服务未启动导致脚本失败。