Linux服务启动配置文件的作用和流程

一、centos6.5最小化安装后自带的服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[root@localhost init.d]# ll
总用量 128
-rwxr-xr-x. 1 root root 3378 6月 22 2012 auditd
-rwxr-xr-x. 1 root root 2793 7月 19 2011 crond
-rw-r--r--. 1 root root 18216 1月 9 2013 functions
-rwxr-xr-x. 1 root root 5829 1月 9 2013 halt
-rwxr-xr-x. 1 root root 9515 2月 22 2013 ip6tables
-rwxr-xr-x. 1 root root 9409 2月 22 2013 iptables
-rwxr-xr-x. 1 root root 652 1月 9 2013 killall
-rwxr-xr-x. 1 root root 2200 9月 14 2012 messagebus
-rwxr-xr-x. 1 root root 2989 1月 9 2013 netconsole
-rwxr-xr-x. 1 root root 5486 1月 9 2013 netfs
-rwxr-xr-x. 1 root root 6334 1月 9 2013 network
-rwxr-xr-x. 1 root root 3852 12月 3 2011 postfix
-rwxr-xr-x. 1 root root 1559 5月 20 2009 rdisc
-rwxr-xr-x. 1 root root 1822 2月 22 2013 restorecond
-rwxr-xr-x. 1 root root 2011 1月 10 2013 rsyslog
-rwxr-xr-x. 1 root root 1698 2月 22 2013 sandbox
-rwxr-xr-x. 1 root root 2056 11月 20 2012 saslauthd
-rwxr-xr-x. 1 root root 647 1月 9 2013 single
-rwxr-xr-x. 1 root root 4534 2月 22 2013 sshd
-rwxr-xr-x. 1 root root 2294 2月 22 2013 udev-post
[root@localhost init.d]# chkconfig --list
auditd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
ip6tables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
iptables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
messagebus 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
netconsole 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
netfs 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
network 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
postfix 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
rdisc 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
restorecond 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
rsyslog 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
saslauthd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
udev-post 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭

二、service命令

service 命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启(restart)、重新加载配置(reload)、查看状态(status)等。
例:

1
2
3
4
5
6
service sshd #显示sshd命令行的用法
service sshd start #启动sshd
service sshd stop #停止sshd
service sshd restart #停止sshd
service sshd reload #重新加载sshd的配置文件
service sshd status #查看sshd状态

如果使用yum或apt-get安装应用,安装好之后会自动在/etc/init.d目录下创建一个shell脚本来管理相应的服务。
这样就可以使用/etc/init.d/sshd start或service sshd start来启动sshd服务,其他服务类似。
如果是自己编译安装的应用,需要将源码包里的管理脚本加入到/etc/init.d中才可使用以上方法来管理此服务,如果源码包里没有管理脚本,则需要自己写一个进程管理脚本来管理此服务。

三、chkconfig命令

提供了一个维护/etc/rc[0~6] d 文件夹的命令行工具,它减轻了系统直接管理这些文件夹中的符号连接的负担。chkconfig主要包括5个原始功能:为系统管理增加新的服务、为系统管理移除服务、列出单签服务的启动信息、改变服务的启动信息和检查特殊服务的启动状态。
必要参数
–add 开启指定的服务程序
–del 关闭指定的服务程序
–list 列出chkconfig所知道的所有服务

选择参数
–help 显示帮助信息
–version 显示版本信息
–level<代号> 设置服务程序的等级代号,它是一串0~7的数字,如“-level35”代表指定运行等级3和5

等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

例如:

1
2
3
4
5
6
chkconfig --list #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #在运行级别2、3、4、5的情况下都是on(开启)的状态
chkconfig httpd on #将httpd加入开机启动
chkconfig httpd off #关闭httpd开机启动

当使用chkconfig加入开机启动但没有加–level参数指定运行级别,则会根据使用默认级别2、3、4、5。
或根据管理脚本的注释来定义运行级别,以sshd为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/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: 2345 55 25

    在使用chkconfig加入开机启动项时没有使用level参数,则会根据这一行来定义启动级别和启动顺序,其中2345表示
    sshd在启动级别为2345的时候启动,55表示sshd开机时的启动优先级,25表示sshd关机时的关闭优先级。

  • processname: sshd

    进程名称

  • config: /etc/ssh/*

    sshd服务的相关配置文件。

  • pidfile: /var/run/sshd.pid

    sshd启动后的PID。

  • ### BEGIN INIT INFO 和 ### END INIT INFO里面的内容

    Default-Start: 2 3 4 5(表示该服务在开机时运行级别为2 3 4 5时启动,与chkconfig是“与”的关系)
    Default-Stop: 0 1 6(表示该服务在开机时运行级别为0 1 6时不启动,2 3 4 5启动,优先级高于Default-Start)
    详细介绍:https://wiki.debian.org/LSBInitScripts

四、/var/lock/subsys/

程序需要判断是否当前已经有一个实例在运行,这个目录就是让程序判断是否有实例运行的标识,保持服务的唯一性。

五、/var/run/

/var/run 目录中存放的是自系统启动以来描述系统信息的文件。比较常见的用途是daemon进程将自己的pid保存到这个目录。标准要求这个文件夹中的文件必须是在系统启动的时候清空,以便建立新的文件。
pid文件的作用:防止进程启动多个副本,保持进程的唯一性。
utmp文件:就是用来记录机器的启动时间以及当前登陆用户的,可用who或w命令显示当中的内容。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器