一、Linux最小化安装后默认开机启动服务
二、每个进程服务的用途
三、注册服务脚本 四、chkconfig命令
五、服务脚本重要行
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 [root@localhost ~]# ls -al /etc/init.d/ total 144 drwxr-xr-x. 2 root root 4096 Feb 6 18:02 . drwxr-xr-x. 10 root root 4096 Feb 6 18:01 .. -rwxr-xr-x. 1 root root 3378 Jun 22 2012 auditd -r-xr-xr-x. 1 root root 1340 Feb 22 2013 blk-availability -rwxr-xr-x. 1 root root 2793 Jul 19 2011 crond -rw-r--r--. 1 root root 18216 Jan 9 2013 functions -rwxr-xr-x. 1 root root 5829 Jan 9 2013 halt -rwxr-xr-x. 1 root root 9515 Feb 22 2013 ip6tables -rwxr-xr-x. 1 root root 9409 Feb 22 2013 iptables -rwxr-xr-x. 1 root root 652 Jan 9 2013 killall -r-xr-xr-x. 1 root root 2134 Feb 22 2013 lvm2-lvmetad -r-xr-xr-x. 1 root root 2665 Feb 22 2013 lvm2-monitor -rwxr-xr-x. 1 root root 2989 Jan 9 2013 netconsole -rwxr-xr-x. 1 root root 5486 Jan 9 2013 netfs -rwxr-xr-x. 1 root root 6334 Jan 9 2013 network -rwxr-xr-x. 1 root root 3852 Dec 3 2011 postfix -rwxr-xr-x. 1 root root 1559 May 20 2009 rdisc -rwxr-xr-x. 1 root root 1822 Feb 22 2013 restorecond -rwxr-xr-x. 1 root root 2011 Jan 10 2013 rsyslog -rwxr-xr-x. 1 root root 1698 Feb 22 2013 sandbox -rwxr-xr-x. 1 root root 2056 Nov 20 2012 saslauthd -rwxr-xr-x. 1 root root 647 Jan 9 2013 single -rwxr-xr-x. 1 root root 4534 Feb 22 2013 sshd -rwxr-xr-x. 1 root root 2294 Feb 22 2013 udev-post
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@localhost init.d]# 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 lvm2-monitor 0:off 1:on 2:on 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 postfix 0:off 1:off 2:on 3:on 4:on 5:on 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
auditd auditd(或auditd守护进程)是Linux审计系统中用户空间的一个组件,其负责将审计记录写入磁盘。默认开启 。
blk-availability lvm2相关,如果用lvm,建议开启 。
LVM是Logical Volume Manager(逻辑卷管理器)的简写,又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器。是Linux核心所提供的逻辑卷管理(Logical Volume Management)功能。它在硬盘的硬盘分区之上,又创建了一个逻辑层以方便系统管理硬盘分区系统。 逻辑卷的创建,就是将多块硬盘创建物理卷,而将这些物理卷以逻辑的形式总成一个容器,然后从这个容器里面创建大小不同的分区文件,而这个容器就是所谓的卷组(VG),而从这个容器里创建大小不同的分区文件,这个分区文件就叫做逻辑卷。
crond 计划任务管理,默认开启 。
functions functions这个脚本是给/etc/init.d里边的文件使用的,提供了一些基础的功能。首先会设置umask,path,还有语言环境,然后会设置success,failure,warning,normal集中情况下的字体颜色。
还有其他一些重要方法:
checkpid:检查是否已存在pid,如果有一个存在,返回0(通过查看/proc目录)
daemon:启动某个服务。/etc/init.d目录部分脚本的start使用到这个
killproc:杀死某个进程。/etc/init.d目录部分脚本的stop使用到这个
pidfileofproc:寻找某个进程的pid
pidofproc:类似上面的,只是还查找了pidof命令
status:返回一个服务的状态
echo_success,echo_failure,echo_passed,echo_warning分别输出各类信息
success,failure,passed,warning分别记录日志并调用相应的方法
action:打印某个信息并执行给定的命令,它会根据命令执行的结果来调用 success,failure方法
strstr:判断$1是否含有$2
confirm:显示 “Start service $1 (Y)es/(N)o/(C)ontinue? [Y]”的提示信息,并返回选择结果
halt 当进入运行级别为0(halt)或者运行级别为6(reboot)时,这个文件被执行用来初始化。它将杀掉所有进程,卸载文件系统,然后停止或重启。
ip6tables ipv6防火墙,默认开启 。用到ipv6网络的就用,一般关闭。
iptables ipv4防火墙,默认开启 。
killall 该脚本用于把所有正在运行的,且不需要的服务都停掉。
这个文件是LVM2的的一部分。它通常是用来处理使用lvcreate -m 参数创建导致的LVM2镜像设备的失败。
lvm2-monitor lvm监视,如果使用LVM逻辑卷管理就开启。默认开启 。
netconsole Netconsole用于将本地主机的日志信息打印到远程主机上,便于远程用户查看日志信息。默认开启 。
netfs netfs该服务用于在系统启动时自动挂载网络中的共享文件空间,比如NFS,Samba等等。如果你连接到局域网中的其它服务器并进行文件共享,就开启它。大多数台式机和笔记本用户应该关闭它。
默认开启 。
network 系统启动时激活所有网络接口。网络基础服务,是必需的。默认开启 。
postfix 替代sendmail的邮件服务,默认开启 。如果无邮件服务,可关闭。
rdisc 自动检测路由器,默认关闭 。
1 2 [root@localhost init.d]# service rdisc status rdisc is stopped
restorecond selinux相关,如果开启了selinux,就需开启。默认关闭 。
1 2 [root@localhost init.d]# service restorecond status restorecond is stopped
rsyslog 提供系统的登录档案记录。默认开启 ,系统日志关键服务,必需。
sandbox 建立/挂载点共享,/var/tmp,/tmp,/home/sandbox 不共享。默认关闭 。
saslauthd sasl认证守护进程。默认关闭 。
single 当进入runlevel 1时,这个文件被初始化执行,进入超级管理状态。它会杀死所有守护进程,系统进入单用户模式。注意这时文件系统保持挂载。
sshd ssh服务端,可提供安全的shell登录。默认开启 ,ssh远程登录服务,必需。
udev-post 设备管理系统。默认开启 。
1) /etc/init.d/目录下的脚本名称就是服务注册时使用的服务。 2) 服务脚本操作命令 start :启动服务
stop :停止服务
status :查看服务状态
condrestart :类似restart,但是只有在服务存在时才会执行重启
restart :重启服务,在服务进程不存在时直接启动服务
reload :不进行重启,对服务的配置文件重新读取加载
3) 标准服务注册脚本模板 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #!/bin/sh # # Startup script for the Keepalived daemon # # processname: keepalived # pidfile: /var/run/keepalived.pid # config: /etc/keepalived/keepalived.conf # chkconfig: - 21 79 #此处必须有,是chkconfig服务注册到linux启动级别的配置 # description: Start and stop Keepalived # Source function library . /etc/rc.d/init.d/functions #加载脚本使用到的函数例如status、killproc # Source configuration file (we set KEEPALIVED_OPTIONS there) . /etc/sysconfig/keepalived #服务的配置文件 RETVAL=0 #状态码 prog="keepalived" #服务的进程文件名,进程号文件名keepalived.pid start() { echo -n $Stopping $prog: " killproc keepalived #默认到/var/lock/subsys/、/var/run目录下查找对应的文件和pid 然后kill RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog #删除进程锁定文件 } stop() { echo -n $"Stopping $prog: " killproc keepalived #默认到/var/lock/subsys/、/var/run目录下查找对应的文件和pid 然后kill RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog #删除进程锁定文件 } reload() { echo -n $"Reloading $prog: " killproc keepalived -1 #查找配置文件并重新加载 RETVAL=$? echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; condrestart) if [ -f /var/lock/subsys/$prog ]; then stop start fi ;; status) status keepalived ;; *) echo "Usage: $0 {start|stop|reload|restart|condrestart|status}" exit 1 esac exit $RETVAL
service命令是系统自动到/etc/init.d目录下根据传递的服务名查找到对应的文件,然后文件执行传递操作命令(start、stop)。服务脚本是根据服务的启动脚本、查看进程来进行启动服务和查看服务状态,以及执行kill命令来停服务。
标准的服务在启动时会把启动后的进程号记录到/var/run的目录下,在/var/subsys/目录下锁定服务。因此可以根据keepalived的脚本来写注册服务。当服务进程号文件目录是非标准的,此时按照keepalived的脚本写命令会报错,需要根据服务的具体配置来写脚本找到进程号进行停,或执行服务的启动脚本执行start。
增加一个服务: 1)服务脚本必须存放在/etc/ini.d/目录下;
2)chkconfig --add servicename
1 2 3 # chkconfig: 2345 21 79 服务脚本中必须写如上一行,第一列数字2345用来说明此服务的运行级别,第二列数字用来设置服务启动顺序,第三列数字用来设置服务关闭顺序。 在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;S21servicename,K79servicename。
auditd实例如下:
1 2 3 4 5 6 [root@localhost init.d]# cat auditd #!/bin/bash # # auditd This starts and stops auditd # # chkconfig: 2345 11 88
1 2 3 4 5 6 7 8 [root@localhost init.d]# ls -al /etc/rc.d/rc2.d/S11auditd lrwxrwxrwx. 1 root root 16 Feb 6 18:02 /etc/rc.d/rc2.d/S11auditd -> ../init.d/auditd [root@localhost init.d]# ls -al /etc/rc.d/rc3.d/S11auditd lrwxrwxrwx. 1 root root 16 Feb 6 18:02 /etc/rc.d/rc3.d/S11auditd -> ../init.d/auditd [root@localhost init.d]# ls -al /etc/rc.d/rc4.d/S11auditd lrwxrwxrwx. 1 root root 16 Feb 6 18:02 /etc/rc.d/rc4.d/S11auditd -> ../init.d/auditd [root@localhost init.d]# ls -al /etc/rc.d/rc5.d/S11auditd lrwxrwxrwx. 1 root root 16 Feb 6 18:02 /etc/rc.d/rc5.d/S11auditd -> ../init.d/auditd
1 2 3 4 [root@localhost init.d]# ls -al /etc/rc.d/rc1.d/K88auditd lrwxrwxrwx. 1 root root 16 Feb 6 18:02 /etc/rc.d/rc1.d/K88auditd -> ../init.d/auditd [root@localhost init.d]# ls -al /etc/rc.d/rc6.d/K88auditd lrwxrwxrwx. 1 root root 16 Feb 6 18:02 /etc/rc.d/rc6.d/K88auditd -> ../init.d/auditd
3)chkconfig --level 345 mysqld on
chkconfig --list #列出所有的系统服务
chkconfig --del httpd #删除httpd服务
chkconfig --list mysqld #列出mysqld服务设置情况
chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,–level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
1 2 3 4 5 6 1.# chkconfig: 2345 55 25 2.# description: SSH is a protocol for secure remote shell access. # This service starts up the OpenSSH server daemon. 3.# Default-Start: 2 3 4 5 4.# Default-Stop: 0 1 6
第一行与第3行、第4行是与的关系,无论存在哪一行chkconfig命令都可以添加服务;第二行的描述不是必须的。
第四行默认停止的优先级大于第一行和第三行的开启优先级。
例子一: 将第1、3、4行全部删除,执行命令1 2 [root@localhost ~]# chkconfig --add mysqld service mysqld does not support chkconfig
例子二: 删除第1、3行全部删除,剩下
执行命令1 2 3 [root@localhost ~]# chkconfig --add mysqld [root@localhost ~]# chkconfig --list|grep mysqld mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
关闭了1、2、3、4、5、6
例子三: 删除第1行,修改第3行和第4行为:1 2 # Default-Start: 0 3 4 5 # Default-Stop: 0 3 1 6
1 2 3 [root@localhost ~]# chkconfig --add mysqld [root@localhost ~]# chkconfig --list|grep mysqld mysqld 0:off 1:off 2:off 3:off 4:on 5:on 6:off
说明: 因为开启设置为0、3、4、5,而关闭优先级大于开启,关闭设置了关闭0、1、3、6,所以最后剩下了4、5。
/var/lock/subsys/标准服务启动后的会生成进程锁定文件在该目录中,该文件是针对服务service而言的,判断进程服务的唯一性,防止起多个进程。
/var/run/标准服务启动后的生成进程pid文件在该目录中,该文件是针对当前进程本身而言的,判断进程启动的唯一性,避免资源的互相竞争。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 服务文件放在哪里?什么时候启动? /sbin/init /etc/inittab /etc/rc.d/rc.sysinit /etc/rc.d/rc /etc/rc.d/rcN.d /etc/init.d/* 服务文件放在这里 /etc/rc.d/rc.local /sbin/mingetty /bin/login /bin/bash /etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc