1. 程式人生 > >[svc]centos6使用chkconfig治理服務和其原理

[svc]centos6使用chkconfig治理服務和其原理

scan lvm2 linux 啟動腳本 使用率 負責 proto mod 原理

centos6開機啟動級別

$ cat /etc/inittab
...
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)

linux啟動過程

chkconfig默認管理345級別開機啟動

參考


chkconfig --list        #列出所有的系統服務
chkconfig --add httpd        #增加httpd服務
chkconfig --del httpd        #刪除httpd服務
chkconfig --level httpd 2345 on        #設置httpd在運行級別為2、3、4、5的情況下都是on(開啟)的狀態
chkconfig --list        #列出系統所有的服務啟動情況
chkconfig --list mysqld        #列出mysqld服務設置情況
chkconfig --level 35 mysqld on        #設定mysqld在等級3和5為開機運行服務,--level 3

chkconfig的原理

如何將自己的服務,托管給chkconfig管理?

1,腳本放在/etc/init.d下面,可以執行(/etc/init.d/sshd),
希望被chkconfig管理,需要添加到chkconfig --add sshd

2.chkconfig --level 3 sshd on,本質上市
rm -f /etc/rc.d/rc3.d/K25sshd
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S55sshd

3.chkconfig --level 3 sshd off
rm -f /etc/rc.d/rc3.d/S55sshd
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/K25sshd

4. /etc/init.d/sshd裏面設置了對應的級別啟動順序
# chkconfig: 2345 55 25
# description: SSH is a protocol...

5.開發自己的程序,讓chkconfig管理
$ cat /etc/init.d/maotai
#!/bin/bash

# chkconfig: 2345 56 26
# description: maotai service test...

case "$1" in
    start)
        action "maotai is started" /bin/true
    ;;
    *)
        echo "$0 USAGE{start|stop|restart}"

chkconfig --add/del maotai

小結:

  • 1.把重要命令加到/etc/rc.local也能達到讓啟動命令開機時候啟動目的.
  • 2.添加一個服務,比如3級別的nfs自啟動,chkconfig相當於在/etc/init.d/rc3.d目錄裏做個軟鏈接:S60nfs
  • 3.軟鏈接的首字母為"K",表示關機時候會會關閉,為"S"表示開機時候會啟動,數字60為開機服務啟動的順序,這個數字可以通過chkconfig控制的啟動腳本的開頭有明確的聲明.
  • 4.添加,刪除系統自啟動服務的本質,實際上是在/etc/init.d/rc3.d穿件啟動與刪除腳本的軟鏈接.

生產例子: 精簡linux開機自啟動項

- 需要啟動項有:
rsyslog
sshd
network
crond
sysstat


- sysstat軟件包集成的主要工具為:
    iostat:提供cpu使用率及硬盤吞吐效率的數據
    mpstat:工具提供與單個或多個處理器相關的數據
    sar   :工具負責收集,報告,病存儲系統活躍的信息.
思路:
1,關掉所有,啟動想啟動的
2,啟動想啟動的,關閉其他的
## awk過濾行,之後拼湊字符串
[root@n1 ~]# cat svc.txt |awk '{print "chkconfig",$1,"on"}'
chkconfig crond on
chkconfig dbus on
chkconfig docker on
chkconfig getty@tty1 on
chkconfig httpd on
chkconfig kmod-static-nodes on
chkconfig lvm2-lvmetad on
chkconfig lvm2-pvscan@8:2 on
chkconfig network on
chkconfig ntpdate on
chkconfig polkit on
chkconfig rhel-dmesg on
chkconfig rhel-import-state on
chkconfig rhel-readonly on
chkconfig rsyslog on
chkconfig sshd on

- 關掉所有,啟動想啟動的
[root@n1 ~]# cat svc.txt|grep 3:on|awk '{print "chkconfig",$1,"off"}'|bash #命令交給bash執行
[root@n1 ~]# cat svc.txt|grep -E "rsyslog|sshd|network|crond|sysstat" |awk '{print "chkconfig",$1,"on"}'
chkconfig crond on
chkconfig network on
chkconfig rsyslog on
chkconfig sshd on

- 啟動想啟動的,關閉其他的
[root@n1 ~]# cat svc.txt|grep -E "rsyslog|sshd|network|crond|sysstat" |awk '{print "chkconfig",$1,"on"}'
[root@n1 ~]# cat svc.txt|grep -vE "rsyslog|sshd|network|crond|sysstat" |awk '{print "chkconfig",$1,"off"}'
chkconfig dbus off
chkconfig docker off
chkconfig getty@tty1 off
chkconfig httpd off
chkconfig kmod-static-nodes off
chkconfig lvm2-lvmetad off
chkconfig lvm2-pvscan@8:2 off
chkconfig ntpdate off
chkconfig polkit off
chkconfig rhel-dmesg off
chkconfig rhel-import-state off
chkconfig rhel-readonly off

[svc]centos6使用chkconfig治理服務和其原理