兄弟连Linux教程(李明,沈超) 第12章 Linux服务管理


兄弟连Linux教程(李明,沈超) 第12章 Linux服务管理


正文

12.1 服务简介与分类

1、服务的分类

启动与自启动

  • 服务启动:就是在当前系统中让服务运行,并提供功能。
  • 服务自启动:自启动是指让服务在系统开机或重启动之后,随着系统的启动而自动启动服务。

查询已安装的服务

  • RPM包安装的服务
chkconfig  --list
#查看服务自启动状态,可以看到所有RPM包安装的服务
[vagrant@localhost ~]$ chkconfig --list
auditd              0:off   1:off   2:on    3:on    4:on    5:on    6:off
blk-availability    0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond               0:off   1:off   2:on    3:on    4:on    5:on    6:off
ip6tables           0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables            0:off   1:off   2:on    3:on    4:on    5:on    6:off
iscsi               0:off   1:off   2:off   3:on    4:on    5:on    6:off
iscsid              0:off   1:off   2:off   3:on    4:on    5:on    6:off
lvm2-monitor        0:off   1:on    2:on    3:on    4:on    5:on    6:off
mcollective         0:off   1:off   2:off   3:off   4:off   5:off   6:off
mdmonitor           0:off   1:off   2:on    3:on    4:on    5:on    6:off
multipathd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
mysqld              0:off   1:off   2:off   3:on    4:on    5:on    6:off
netconsole          0:off   1:off   2:off   3:off   4:off   5:off   6:off
netfs               0:off   1:off   2:off   3:on    4:on    5:on    6:off
network             0:off   1:off   2:on    3:on    4:on    5:on    6:off
nginx               0:off   1:off   2:on    3:on    4:on    5:on    6:off
nginx-debug         0:off   1:off   2:off   3:off   4:off   5:off   6:off
php-fpm             0:off   1:off   2:off   3:off   4:off   5:off   6:off
postfix             0:off   1:off   2:on    3:on    4:on    5:on    6:off
puppet              0:off   1:off   2:off   3:off   4:off   5:off   6:off
rdisc               0:off   1:off   2:off   3:off   4:off   5:off   6:off
restorecond         0:off   1:off   2:off   3:off   4:off   5:off   6:off
rsyslog             0:off   1:off   2:on    3:on    4:on    5:on    6:off
saslauthd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
sshd                0:off   1:off   2:on    3:on    4:on    5:on    6:off
udev-post           0:off   1:on    2:on    3:on    4:on    5:on    6:off
vboxadd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
vboxadd-service     0:off   1:off   2:on    3:on    4:on    5:on    6:off
vboxadd-x11         0:off   1:off   2:off   3:on    4:off   5:on    6:off
[vagrant@localhost ~]$ 


Centos7.9系统下和上面不一样:
[root@10 sf_develop]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

netconsole      0:关    1:关    2:关    3:关    4:关    5:关    6:关
network         0:关    1:关    2:开    3:开    4:开    5:开    6:关
[root@10 sf_develop]#
Linux中有七个运行级别,分别为0~7

0级:关机
1级:单用户(找回丢失密码)
2级:多用户无网络
3级:多用户有网络,最常用的级别
4级:保留,目前Linux暂无使用
5级:图像界面
6级:重启

系统运行级别配置文件:/etc/inittab

查看服务是否启动:

[root@localhost vagrant]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.0  19232  1488 ?        Ss   07:44   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    07:44   0:00 [kthreadd]
root         3  0.1  0.0      0     0 ?        S    07:44   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    07:44   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    07:44   0:00 [stopper/0]
root         6  0.0  0.0      0     0 ?        S    07:44   0:00 [watchdog/0]
root         7  0.0  0.0      0     0 ?        S    07:44   0:00 [migration/1]
root         8  0.0  0.0      0     0 ?        S    07:44   0:00 [stopper/1]
root         9  0.0  0.0      0     0 ?        S    07:44   0:00 [ksoftirqd/1]
root        10  0.0  0.0      0     0 ?        S    07:44   0:00 [watchdog/1]
root        11  0.0  0.0      0     0 ?        S    07:44   0:00 [events/0]
root        12  0.0  0.0      0     0 ?        S    07:44   0:00 [events/1]
root        13  0.0  0.0      0     0 ?        S    07:44   0:00 [events/0]
root        14  0.0  0.0      0     0 ?        S    07:44   0:00 [events/1]
root        15  0.0  0.0      0     0 ?        S    07:44   0:00 [events_long/0]
root        16  0.0  0.0      0     0 ?        S    07:44   0:00 [events_long/1]
root        17  0.0  0.0      0     0 ?        S    07:44   0:00 [events_power_ef]
root        18  0.0  0.0      0     0 ?        S    07:44   0:00 [events_power_ef]
root        19  0.0  0.0      0     0 ?        S    07:44   0:00 [cgroup]
root        20  0.0  0.0      0     0 ?        S    07:44   0:00 [khelper]
root        21  0.0  0.0      0     0 ?        S    07:44   0:00 [netns]
root        22  0.0  0.0      0     0 ?        S    07:44   0:00 [async/mgr]
root        23  0.0  0.0      0     0 ?        S    07:44   0:00 [pm]
root        24  0.0  0.0      0     0 ?        S    07:44   0:00 [sync_supers]
root        25  0.0  0.0      0     0 ?        S    07:44   0:00 [bdi-default]
root        26  0.0  0.0      0     0 ?        S    07:44   0:00 [kintegrityd/0]
root        27  0.0  0.0      0     0 ?        S    07:44   0:00 [kintegrityd/1]
root        28  0.0  0.0      0     0 ?        S    07:44   0:00 [kblockd/0]
root        29  0.0  0.0      0     0 ?        S    07:44   0:00 [kblockd/1]
root        30  0.0  0.0      0     0 ?        S    07:44   0:00 [kacpid]
root        31  0.0  0.0      0     0 ?        S    07:44   0:00 [kacpi_notify]
root        32  0.0  0.0      0     0 ?        S    07:44   0:00 [kacpi_hotplug]
root        33  0.0  0.0      0     0 ?        S    07:44   0:00 [ata_aux]
root        34  0.0  0.0      0     0 ?        S    07:44   0:00 [ata_sff/0]
root        35  0.0  0.0      0     0 ?        S    07:44   0:00 [ata_sff/1]
root        36  0.0  0.0      0     0 ?        S    07:44   0:00 [ksuspend_usbd]
root        37  0.0  0.0      0     0 ?        S    07:44   0:00 [khubd]
root        38  0.0  0.0      0     0 ?        S    07:44   0:00 [kseriod]
root        39  0.0  0.0      0     0 ?        S    07:44   0:00 [md/0]
root        40  0.0  0.0      0     0 ?        S    07:44   0:00 [md/1]
root        41  0.0  0.0      0     0 ?        S    07:44   0:00 [md_misc/0]
root        42  0.0  0.0      0     0 ?        S    07:44   0:00 [md_misc/1]
root        43  0.0  0.0      0     0 ?        S    07:44   0:00 [linkwatch]
root        44  0.0  0.0      0     0 ?        S    07:44   0:00 [khungtaskd]
root        45  0.0  0.0      0     0 ?        S    07:44   0:00 [kswapd0]
root        46  0.0  0.0      0     0 ?        SN   07:44   0:00 [ksmd]
root        47  0.0  0.0      0     0 ?        SN   07:44   0:00 [khugepaged]
root        48  0.0  0.0      0     0 ?        S    07:44   0:00 [aio/0]
root        49  0.0  0.0      0     0 ?        S    07:44   0:00 [aio/1]
root        50  0.0  0.0      0     0 ?        S    07:44   0:00 [crypto/0]
root        51  0.0  0.0      0     0 ?        S    07:44   0:00 [crypto/1]
root        58  0.0  0.0      0     0 ?        S    07:44   0:00 [kthrotld/0]
root        59  0.0  0.0      0     0 ?        S    07:44   0:00 [kthrotld/1]
root        61  0.0  0.0      0     0 ?        S    07:44   0:00 [kpsmoused]
root        62  0.0  0.0      0     0 ?        S    07:44   0:00 [usbhid_resumer]
root        63  0.0  0.0      0     0 ?        S    07:44   0:00 [deferwq]
root        96  0.0  0.0      0     0 ?        S    07:44   0:00 [kdmremove]
root        97  0.0  0.0      0     0 ?        S    07:44   0:00 [kstriped]
root       206  0.0  0.0      0     0 ?        S    07:44   0:00 [scsi_eh_0]
root       225  0.0  0.0      0     0 ?        S    07:44   0:00 [scsi_eh_1]
root       226  0.0  0.0      0     0 ?        S    07:44   0:00 [scsi_eh_2]
root       289  0.0  0.0      0     0 ?        S    07:44   0:00 [kdmflush]
root       291  0.0  0.0      0     0 ?        S    07:44   0:00 [kdmflush]
root       309  0.0  0.0      0     0 ?        S    07:44   0:00 [jbd2/dm-0-8]
root       310  0.0  0.0      0     0 ?        S    07:44   0:00 [ext4-dio-unwrit]
root       391  0.0  0.0  10796   904 ?        S<s  07:44   0:00 /sbin/udevd -d
root       452  0.0  0.0      0     0 ?        S    07:44   0:00 [iprt/0]
root       453  0.0  0.0      0     0 ?        S    07:44   0:00 [iprt/1]
root       700  0.0  0.0      0     0 ?        S    07:44   0:00 [jbd2/sda1-8]
root       701  0.0  0.0      0     0 ?        S    07:44   0:00 [ext4-dio-unwrit]
root       733  0.0  0.0      0     0 ?        S    07:44   0:00 [kauditd]
root       809  0.0  0.0      0     0 ?        S    07:44   0:00 [flush-253:0]
root       966  0.0  0.0   9120   688 ?        Ss   07:45   0:00 /sbin/dhclient -1 -q -cf /etc/dhcp/dhclient-eth0.conf -lf /var/lib/dhclient/dhclient-eth0.leases -pf /var/run/dhclient-eth0.
root      1026  0.0  0.0  27596   796 ?        S<sl 07:45   0:00 auditd
root      1048  0.0  0.0 249088  1584 ?        Sl   07:45   0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root      1160  0.0  0.0 335484  1272 ?        Sl   07:45   0:00 /usr/sbin/VBoxService
root      1184  0.0  0.0  66232  1232 ?        Ss   07:45   0:00 /usr/sbin/sshd
root      1217  0.0  0.0 108300  1616 ?        S    07:45   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.p
mysql     1421  0.5 24.0 1408836 462640 ?      Sl   07:45   0:02 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/
root      1559  0.0  0.1  80876  3420 ?        Ss   07:45   0:00 /usr/libexec/postfix/master
postfix   1574  0.0  0.1  80956  3384 ?        S    07:45   0:00 pickup -l -t fifo -u
postfix   1575  0.0  0.1  81024  3420 ?        S    07:45   0:00 qmgr -l -t fifo -u
root      1595  0.0  0.0  47360  1080 ?        Ss   07:45   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     1596  0.0  0.0  47752  1804 ?        S    07:45   0:00 nginx: worker process
root      1608  0.0  0.0 116860  1200 ?        Ss   07:45   0:00 crond
root      1621  0.0  0.0   4064   592 tty1     Ss+  07:45   0:00 /sbin/mingetty /dev/tty1
root      1623  0.0  0.0   4064   592 tty2     Ss+  07:45   0:00 /sbin/mingetty /dev/tty2
root      1625  0.0  0.0   4064   588 tty3     Ss+  07:45   0:00 /sbin/mingetty /dev/tty3
root      1627  0.0  0.0   4064   592 tty4     Ss+  07:45   0:00 /sbin/mingetty /dev/tty4
root      1629  0.0  0.0   4064   592 tty5     Ss+  07:45   0:00 /sbin/mingetty /dev/tty5
root      1631  0.0  0.0   4064   588 tty6     Ss+  07:45   0:00 /sbin/mingetty /dev/tty6
root      2451  0.0  0.2 102656  4804 ?        Ss   07:45   0:00 sshd: vagrant [priv]
vagrant   2453  0.0  0.1 102656  1928 ?        S    07:45   0:00 sshd: vagrant@pts/0
vagrant   2454  0.0  0.0 108304  1908 pts/0    Ss   07:45   0:00 -bash
root      2474  0.0  0.1 175108  2656 pts/0    S    07:47   0:00 sudo su
root      2475  0.0  0.0 145000  1556 pts/0    S    07:47   0:00 su
root      2476  0.0  0.0 108304  1916 pts/0    S    07:47   0:00 bash
root      2494  0.0  0.0   4932   524 ?        Ss   07:47   0:00 iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
root      2495  0.0  0.1   5436  3384 ?        S<Ls 07:47   0:00 iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off
root      2502  0.0  0.0      0     0 ?        S    07:47   0:00 [iscsi_eh]
root      2504  0.0  0.0  10792   832 ?        S<   07:47   0:00 /sbin/udevd -d
root      2505  0.0  0.0  10792   832 ?        S<   07:47   0:00 /sbin/udevd -d
root      2531  0.0  0.0 110232  1164 pts/0    R+   07:51   0:00 ps aux
[root@localhost vagrant]#
[root@localhost vagrant]# ps aux | grep crond
root      1608  0.0  0.0 116860  1200 ?        Ss   07:45   0:00 crond
root      2534  0.0  0.0 103308   892 pts/0    S+   07:52   0:00 grep crond
[root@localhost vagrant]#
  • 源码包安装的服务
查看服务安装位置,一般是/usr/local/下

RPM安装服务和源码包安装服务的区别

RPM安装服务和源码包安装服务的区别就是安装位置的不同

  • 源码包安装在指定位置,一般是/usr/local/
  • RPM包安装在默认位置中

service 、chkconfig 命令 搜索的是 /etc/rc.d/init.d/ 目录:

[root@localhost vagrant]# ls /etc/rc.d/init.d/
auditd            iptables      multipathd   postfix      sshd
blk-availability  iscsi         mysqld       puppet       udev-post
crond             iscsid        netconsole   rdisc        vboxadd
functions         killall       netfs        restorecond  vboxadd-service
halt              lvm2-lvmetad  network      rsyslog      vboxadd-x11
htcacheclean      lvm2-monitor  nginx        sandbox
httpd             mcollective   nginx-debug  saslauthd
ip6tables         mdmonitor     php-fpm      single
[root@localhost vagrant]#
[root@localhost vagrant]# service nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]
[root@localhost vagrant]#

12.2 RPM包安装服务的管理

12.2.1 独立服务的管理

1、RPM包安装服务的位置

RPM安装服务和源码包安装服务的区别就是安装位置的不同

  • 源码包安装在指定位置,一般是/usr/local/
  • RPM包安装在默认位置中
/etc/init.d/:启动脚本位置 (/etc/rc.d/init.d/ 软连接) 独立服务脚本
/etc/sysconfig/:初始化环境配置文件位置
/etc/:配置文件位置
/etc/xinetd.conf:xinetd配置文件
/etc/xinetd.d/:基于xinetd服务的启动脚本
/var/lib/:服务产生的数据放在这里
/var/log/:日志

2、独立服务的启动

/etc/init.d/独立服务名  start|stop|status|restart|

service  独立服务名  start|stop|restart||status

service是redhat系列辅助快捷命令

service --status-all
# 查看rpm安装的所有服务的状态

[root@localhost vagrant]# service --status-all
auditd (pid  1026) is running...
crond (pid  1608) is running...
htcacheclean is stopped
httpd is stopped
ip6tables: Firewall is not running.
iptables: Firewall is not running.
iscsi is stopped
iscsid (pid  2495) is running...
lvmetad is stopped
dmeventd is stopped
mcollectived is stopped
mdmonitor is stopped
multipathd is stopped
mysqld (pid  1421) is running...
netconsole module not loaded
Configured devices:
lo eth0
Currently active devices:
lo eth0
nginx (pid  2559) is running...
nginx-debug dead but pid file exists
php-fpm is stopped
master (pid  1559) is running...
puppet is stopped
rdisc is stopped
rsyslogd (pid  1048) is running...
sandbox is stopped
saslauthd is stopped
openssh-daemon (pid  1184) is running...
The VirtualBox Additions are currently running.
Checking for VBoxService ...running
[root@localhost vagrant]#

3、独立服务的自启动

方法1:
chkconfig [--level 运行级别] [独立服务名] [on|off]

[root@localhost ~]# chkconfig --level 2345 nginx on
[root@localhost ~]# chkconfig nginx off


方法2:
修改/etc/rc.d/rc.local文件,推荐方法

加入启动命令行
/etc/rc.d/init.d/nginx start


方法3:
使用ntsysv命令管理自启动,是redhat系列辅助快捷命令

12.2.2 基于xinetd服务的管理

1、安装xinetd与telnet

[root@localhost ~]# yum -y install xinetd

[root@localhost ~]# yum -y install telnet-server

2、xinetd服务的启动

[root@localhost ~]# vi /etc/xinetd.d/telnet
service telnet        <-服务的名称为telnet
{
        flags           = REUSE    <-标志为REUSE,设定TCP/IP socket可重用
        socket_type     = stream    <-使用TCP协议数据包
        wait            = no    <-允许多个连接同时连接
        user            = root    <-启动服务的用户为root
        server          = /usr/sbin/in.telnetd        <-服务的启动程序
        log_on_failure  += USERID        <-登陆失败后,记录用户的ID
        disable         = no            <-服务不启动
}

重启xinetd服务

[root@localhost ~]# service xinetd restart

3、xinetd服务的自启动

方法1:
[root@localhost ~]# chkconfig telnet on

方法2:
ntsysv

12.3 源码包安装服务的管理

1、源码包安装服务的启动

使用绝对路径,调用启动脚本来启动。不同的源码包的启动脚本不同。可以查看源码包的安装说明,查看启动脚本的方法。

/usr/local/apache2/bin/apachectl  start|stop

2、源码包服务的自启动

[root@localhost ~]# vi /etc/rc.d/rc.local
加入
/usr/local/apache2/bin/apachectl  start

3、让源码包服务被服务管理命令识别

让源码包的apache服务能被service命令管理启动

ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache

让源码包的apache服务能被chkconfig与ntsysv命令管理自启动

vi /etc/init.d/apache
# chkconfig: 35 86 76
#指定httpd脚本可以被chkconfig命令管理。格式是:  chkconfig: 运行级别 启动顺序 关闭顺序
# description: source package apache
#说明,内容随意
[root@localhost ~]# chkconfig --add apache
#把源码包apache加入chkconfig命令

12.4 服务管理总结

常见服务的作用

RPM包与源码包的最大不同是安装路径不同

RPM包->独立服务:

独立服务是存放到内存中,当系统需要调用服务时,直接到内存里面找,特点:响应速度快

RPM包->基于xinetd服务:

xinetd服务没有存放到内存中,是存放到xinetd(超级守护进程)中,当系统需要调用xinetd服务时, 首先去访问xinetd,然后xinetd去找自身有没有这服务,最后将结果返回,响应速度比独立服务慢






参考资料


返回