使用chkconfig来管理Linux的服务

时间:2022-05-01 14:20:45

      chkconfig 用得最多的估计是在装完Linux后关闭一大堆无用的服务,特别是sendmail,我们还可以用chkconfig这个命令来管理Linux的服务,在此之前先复习一下Linux的运行级别,Linux一般会有7个运行级别:

0 - 停机
1 - 单用户模式
2 - 多用户,但是没有NFS ,不能使用网络
3 - 完全多用户模式,我最喜欢的模式
4 - “打酱油” 模式,没有用到
5 - X11
6 - 重新启动 (如果将默认启动模式设置为6,Linux将会不断重启)

      0和7属于临时运行级别不应设置为默认,默认的运行级别在 /etc/inittab 中设置。

      言归正传,chkconfig可以为我们定制服务,以TSM为例,安装好TSM的Server后,在目录/opt/tivoli/tsm/server/bin中可以找到一个文件dsmserv.rc,将其ln到/etc/init.d这个目录中,最后改改名字,让它开起来更像一个服务的名字:

[root@FWDB init.d]$ pwd
/etc/rc.d/init.d
[root@FWDB init.d]$ ln -s /opt/tivoli/tsm/server/bin/dsmserv.rc ./dsmserv 
[root@FWDB init.d]$ ll *dsm*
lrwxrwxrwx 1 root root 37 Nov  8 10:43 dsmserv -> /opt/tivoli/tsm/server/bin/dsmserv.rc

      此时可以观察一下我们熟悉的/etc/rcX.d,X是指不同运行级别:

[root@FWDB init.d]$ ls /etc/rc3.d/*dsm*
/etc/rc3.d/K10dsmserv
[root@FWDB init.d]$ ls /etc/rc5.d/*dsm* 
/etc/rc5.d/K10dsmserv

      我们可以像管理普通的服务那样控制TSM的随机启动和关闭了:

[root@FWDB init.d]$ chkconfig --level 3  dsmserv on  
[root@FWDB init.d]$ ls /etc/rc3.d/*dsm*                    
/etc/rc3.d/S90dsmserv
[root@FWDB init.d]$ service dsmserv restart 
Stopping dsmserv...
dsmserv stopped Successfully :-)

Starting dsmserv ... Succeeded :-)

      这个TSM的输出显得有点山寨。

      大家可以留意下,启动和关闭TSM的顺序是不同的,分别是90和10,数值越小越优先启动和关闭,这是在哪里的定义的呢? 这是在dsmserv.rc这个文件的中定义的:

[root@FWDB init.d]$ head -n 8 dsmserv   
#!/bin/bash
#
# dsmserv       Start/Stop IBM Tivoli Storage Manager
#
# chkconfig: - 90 10
# description: Starts/Stops the IBM Tivoli Storage Manager Server
# processname: dsmserv
# pidfile: /var/run/dsmserv.pid

      其中,第5行的90代表Start的顺序,10代表Kill(Stop)的顺序,不过更常用的做法是:

# chkconfig: 2345 90 10

      指定需要注册的运行级别。注意一下,这种脚本的这两行是必须的,否则chkconfig --add会报错的:

# chkconfig: _____________
# description: _____________

      管理嘛,能添加也能删除,调用 chkconfig --del 就可以了。