Linux设置脚本/服务开机自动运行/启动
在非图形化界面情况下,Linux开机自动运行/启动的设置可以通过如下方法:
linux环境:CentOS Stream release 9
1. /etc/rc.local文件
通常对于没有被注册为系统服务的脚本如自行编写的脚本,可以通过在rc.local中添加相关脚本路径和名称来开机自动运行
/etc/rc.local是指向/etc/rc.d/rc.local的一个脚本,它是在系统初始化级别脚本运行之后再执行;
rc.local内容如下:
#!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. sh /root/t.sh exit 0
sh /root/t.sh用户自定义添加的运行脚本命令,需要放在exit 0之前
实测只需添加脚本绝对路径地址和名称也可,如下文启动tomcat的命令一样不加sh ./等执行。
t.sh内容如下:
#!/bin/sh touch /root/test.sh echo ttt > /root/test.sh
reboot后,查看root下,已生成test.sh文件且有内容ttt。
需要注意的是:
1.初次使用该脚本时,需要给/etc/rc.d/rc.local赋予可执行权限,rc.local注释内容也已提到这一点,执行chmod +x /etc/rc.d/rc.local即可
2.该脚本运行时,系统环境变量(如Java环境JDK等)还没正常赋值,因此若是在rc.local里只添加启动tomcat的命令而不设置java环境变量是不会成功的,具体可以查看var/log/messages搜索rc.local日志信息提示
rc.local[910]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
rc.local[910]: At least one of these environment variable is needed to run this program
在rc.local启动tomcat的命令前面加上设置环境变量的命令即可
#!/bin/bashsh /root/t.sh export JAVA_HOME=/app/jdk/jdk1.8.0_221 export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin /app/tomcat/bin/startup.sh exit 0
reboot后已可再次访问tomcat服务
2.systemctl
systemctl来管理系统上的服务,通过systemctl可以启动、停止、重新加载、重启服务、列出服务单元、检查服务状态、启用/禁用服务、管理运行级别和电源管理。
systemctl [command] [服务]
常用command选项如下:
status:查看服务状态 start:启动服务 stop:停止服务 restart:重启服务 enable:设置服务开机自启 例如设置docker服务开机自启:systemctl enable docker disable:关闭服务开机自启 list-units:列出所有运行中单元 list-unit-files:列出所有可用单元 list-unit-files --type=service:列出所有服务(包括启用和禁用) list-unit-files --type=mount:列出所有系统挂载点 list-unit-files –type=socket:列出所有可用系统套接口 list-failed:列出所有启动失败的服务 is-enabled:查看某个服务是否开机自启 is-active:查看某个服务现在是否开启 kill:杀死某个服务 reload:重新加载某个服务配置文件 show:检查某个服务的所有配置细节 list-dependencies:获取某个服务的依赖性列表 get-default:列出当前系统的运行等级 mask:屏蔽指定服务(使其无法启动) umask:取消屏蔽
3.chkconfig命令设置
chkconfig是在centos6及以下版本系统使用的
对于在安装过程中已经被注册为系统服务的服务如mysql等,可以通过chkconfig命令设置开机启动;
chkconfig可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。
使用语法:
chkconfig [--add][--del][--list][系统服务名称] 或 chkconfig [--level <等级代号>][系统服务名称][on/off/reset]
参数:
- --add 增加所指定的系统服务,让 chkconfig 指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
- --del 删除所指定的系统服务,不再由 chkconfig 指令管理,并同时在系统启动的叙述文件内删除相关数据。
- --level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
eg:
开启服务
# chkconfig telnet on //开启 Telnet 服务
关闭服务
# chkconfig telnet off // 关闭 Telnet 服务