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 服务
posted @ 2022-04-08 11:41  诟笑  阅读(642)  评论(0编辑  收藏  举报