linux系统服务启动脚本在哪个目录下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统服务启动脚本在哪个目录下相关的知识,希望对你有一定的参考价值。

取决于你使用的是哪个Linux发行版,通常在/etc/rc.d /etc/init.d等目录下
 Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
  在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置账户的其它信息,比如:主目录是什么、使用何种shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/bash。
  login程序成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog中有记录),并检查用户是否有新邮件(在/usr/spool/mail/的对应用户名目录下)。然后开始设置各种环境变量:对于bash来说,系统首先寻找/etc/profile脚本文件,并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其它配置文件,所有的配置文件执行后后,各种环境变量也设好了,这时会出现大家熟悉的命令行提示符,到此整个启动过程就结束了。
参考技术A 取决于你使用的是哪个Linux发行版,通常在/etc/rc.d /etc/init.d等目录下本回答被提问者和网友采纳 参考技术B /etc/init.d

linux的chkconfig服务注册(服务注册脚本说明)

 linux上一些服务的重启以及随系统启动而启动,可以像windows那样注册为服务通过chkconfig 进行操作。在注册chkconfig时需要在linux的/etc/init.d/目录下有对应的启动脚本。

一、注册服务脚本说明

1、/etc/init.d/目录下的脚本名称就是服务注册时使用的服务名。

2、在服务脚本中一般包括start/stop/restart/status/condrestart/reload几种操作

         start:启动服务

         stop:停止服务

         status:查看服务状态

         condrestart::类似restart,但是只有在服务存在时才会执行重启

          restart:重启服务,在服务进程不存在时直接提到服务

          reload:不进行重启,对服务的配置文件重新读取加载

3、标准服务注册脚本模板(使用keepalived的注册脚本):

#!/bin/sh
#
# Startup script for the Keepalived daemon
#
# processname: keepalived
# pidfile: /var/run/keepalived.pid
# config: /etc/keepalived/keepalived.conf
# chkconfig: - 21 79 #此处必须有,是chkconfig服务注册到linux启动级别的配置
# description: Start and stop Keepalived

# Source function library
. /etc/rc.d/init.d/functions #加载脚本使用到的函数例如status、killproc

# Source configuration file (we set KEEPALIVED_OPTIONS there)
. /etc/sysconfig/keepalived #服务的配置文件

RETVAL=0 #状态码

prog="keepalived" #服务的进程文件名,进程号文件名keepalived.pid

start() {
    echo -n $"Starting $prog: "
    daemon keepalived ${KEEPALIVED_OPTIONS}
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog #锁定进程,后面查找进程是否存在通过此文件
}

stop() {
    echo -n $"Stopping $prog: "
    killproc keepalived #默认到/var/lock/subsys/、/var/run目录下查找对应的文件和pid 然后kill
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog #删除进程锁定文件
}

reload() {
    echo -n $"Reloading $prog: "
    killproc keepalived -1 #查找配置文件并重新加载
    RETVAL=$?
    echo
}

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    reload)
        reload
        ;;
    restart)
        stop
        start
        ;;
    condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
        fi
        ;;
    status)
        status keepalived
        ;;
    *)
        echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
        exit 1
esac

exit $RETVAL


4、非标准注册脚本(使用haproxy注册脚本)

#!/bin/sh
#
# Startup script for the Haproxy daemon
#
# processname: haproxy
# description: Start and stop haproxy
# chkconfig: - 21 79 #同上必写
. /etc/rc.d/init.d/functions

basedir=/usr/local/sbin #服务启动脚本目录
confdir=/etc/haproxy #配置文件目录
start() {
 echo "START HAPROXY SERVERS"
 ${basedir}/haproxy -f ${confdir}/haproxy.cfg  #执行启动命令
}
stop() {
 echo "STOP HAPORXY lISTEN"
 kill -TTOU $(cat /usr/local/logs/haproxy.pid) #停止提供服务
 echo "STOP HAPROXY PROCESS"
 kill -usr1 $(cat /usr/local/logs/haproxy.pid) #杀死进程
}
# See how we were called.
case "$1" in
    start)
        start
 error=$?
        ;;
    stop)
        stop
 error=$?
        ;;
    restart)
        stop
        start
 error=$?
        ;;
    status)
 status -p /usr/local/logs/haproxy.pid #检查服务状态,根据进程号文件判断
 error=$?
 ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
esac
exit $error

5、注册脚本编写体会:

           chkconfig服务是系统自动到/etc/init.d目录下根据传递的服务名查找到对应的文件,然后文件执行传递的操作命令(start、stop)。服务脚本是根据服务的启动脚本、查看进程来进行启动服务和查看服务状态,以及执行kill命令来停服务。

          标准的服务服务在启动时会把启动后的进程号记录到/var/run的目录下,在/var/subsys/目录下锁定服务。因此可以根据keepalived的脚本来写注册服务。当服务进程号文件目录是非标准的,此时按照keepavived的脚本写命令会报错,需要根据服务的具体配置来写脚本找到进程号进行停,或执行服务的启动脚本执行start。

二、chkconfig命令常用操作:

         chkconfig --add  服务名#注册服务

         chkconfig --del  服务名#删除服务

         chkconfig  --list 服务名# 查看服务启动的级别

         chkconfig --level 2,3  服务名 on|off开启或关闭在某个级别的服务

         service 服务名 start|stop|restart #对服务进行操作


以上是关于linux系统服务启动脚本在哪个目录下的主要内容,如果未能解决你的问题,请参考以下文章

Linux设置开机启动

Linux下开机启动脚本程序

Linux Ubuntu 20.04 —添加开机启动(服务/脚本)

启动Tomcat的文件在tomcat根目录的哪个文件夹中

在Linux中如何将脚本做成系统服务开机自启动?

Linux的shell脚本文件中怎么写多个自动启动的系统服务