让脚本可以加入到chkconfig实现开机自启动的办法

TangLu 未命名 2017-10-12 8881 0

在工作中,有很多自己创建的脚本需要每次开机都能自动启动,除了把启动命令写在rc.local等文件中让其开机自动执行,还可以在创建脚本时写入一些东西,让chkconfig能自动把其加到开机启动项里,通过系统自带的sshd脚本来看看如何实现

QQ截图20161013123841.png

上图是一个系统自带的sshd启动脚本,通过这个脚本学习下如何编写一个可以加入到chkconfig自启动的脚本。

说明: 
1、第一行的#!/bin/bash是定义脚本前的shebang机制,告知系统要用什么解析器执行该脚本

2、重点在chkconfig这行

chkconfig: 2345 55 25 

chkconfig可以管理程序开机是否自启动、在哪些模式下启动,如果将2345改为-,则代表所有模式都不开机启动。 
其后的55和25分别是系统启动时对每个服务启动和关闭的顺序。因为系统的服务是有依赖的,比如说sshd服务,需要网络服务,如果在网络服务还没有启动起来的时候就启动sshd服务,那肯定会导致sshd服务启动不起来,同样,在关机时候如果先关掉网络服务,sshd将会因为网络的中断而导致未知错误,因此要定义服务启动顺序。在自定义脚本时候,尽量将第一个数写大,第二个数写小,这样在保证所有其他服务开启后,启动我们自定义的脚本,关机时候我们自定义的服务先关掉后再关掉其他服务
3、description行是描述信息。


下面来看看sshd启动脚本的头部信息

#!/bin/bash
#
# sshd          Start up the OpenSSH server daemon
#
# chkconfig: 2345 55 25
# description: SSH is a protocol for secure remote shell access. \
#              This service starts up the OpenSSH server daemon.
#
# processname: sshd
# config: /etc/ssh/ssh_host_key
# config: /etc/ssh/ssh_host_key.pub
# config: /etc/ssh/ssh_random_seed
# config: /etc/ssh/sshd_config
# pidfile: /var/run/sshd.pid

### BEGIN INIT INFO
# Provides: sshd
# Required-Start: $local_fs $network $syslog
# Required-Stop: $local_fs $syslog
# Should-Start: $syslog
# Should-Stop: $network $syslog
# Default-Start: 2 3 4 5    #这里就是要启动的级别
# Default-Stop: 0 1 6
# Short-Description: Start up the OpenSSH server daemon
# Description:       SSH is a protocol for secure remote shell access.
#                    This service starts up the OpenSSH server daemon.
### END INIT INFO



设置完毕后使用chkconfig命令即可对该脚本进行启动设置了


评论