[TOC]

0x00 快速入门

1.Linux服务管理

独立的服务:就是运行在内存里的服务,任何的客户端要访问这个服务

  • 可以直接响应,速度快,缺点是占用内存.

xinetd服务:是超级守护进程,它管理的后台程序,客户端要访问后台服务需要经过它

  • xinetd占用内存,其他服务都不占内存,速度慢,xinetd的服务现在用得越来越少了.

WeiyiGeek.rpm与源码包安装服务

各种服务的目录以及使用

#1.独立服务的启动,系统启动都时候都会把这个文件里的内容执行一遍
/etc/rc.d/ #自启动
/etc/init.d/ #启动
#注意Centos7需要自己编写脚本放入该目录中:进行启动
/etc/init.d/独立服务名 start|stop|status|restart|

#示例
/etc/rc.d/rc.local #修改文件
/etc/init.d/net start #比如加入进行自启动


#2.源码包服务管理
vi /etc/rc.d/rc.local #源码包的自启动
#让源码包的服务能过被service命令管理启动,需要将源码包中bin目录的命令建立软连接到 /etc/init.d/下
#示例:
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
ln -s /usr/local/apache2/bin/apachectl /usr/bin/apachectl #在centos7

#让源码包服务被chkconfig,ntsysv命令管理自启动
vi /etc/init.d/apache
#加入:chkconfig:35 86 76 并且加入到chkconfig
# 35 启动级别
# 86 启动顺序
# 76 关闭顺序
chkconfig --add apachectl #服务接受chkconfig管理就能被ntsysv管理.


#3.补充方法(主要是源码安装)
#在redhat7及以上,推荐采用systemctl进行管理服务
/usr/lib/systemd/system/ #systemctl管理的脚本
/etc/systemd/system #(Ubuntu)

#示例:nginx源码安装,首先是确定编译后的软件服务不存在下面的目录
/etc/systemd/system/multi-user.target.wants/
#1)创建配置文件
vim /usr/lib/systemd/system/nginx.service
写入服务管理内容:
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

#包含启动、重启和停止
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

#2)建立完成后就能通过systemctl命令进行管理了
systemctl start nginx.server

2)运行等级
切换系统运行等级:0表示关机,6表示重启,1表示单用户模式,2345表示多用户模式
WeiyiGeek.运行等级


service 命令

描述:Cenots6中主要的服务管理工具,用于服务启动与停止状态的查看,注意此命令不是linux通用命令而是redhat自己开发的;

service 独立服务名  start|stop|status|restart   #推荐使用systemctl


updata-rc.d 命令

描述:命令添加开机执行脚本还能用于设置服务自启动的运行等级和顺序,多在debian和Ubuntu中使用;
同样需要在该路径中建立软连接/etc/init.d/ssh采用进行管理;

#用法
update-rc.d [-n] [-f] name remove #用于移除脚本
update-rc.d [-n] name default [NN | SS KK]
update-rc.d [basename] start|stop [order] [runlevels]

* NN表示执行序号(0-99)
* SS表示启动时的执行序号
* KK表示关机时的执行序号,SS、KK主要用于在脚本直接的执行顺序上有依赖关系的情况下。

-n:不做任何事情,只显示将要做的。(预览、做测试)
-f:强制移除符号连接,即使 /etc/init.d/script-name 仍然存在。

实际案例:

#示例1.update-rc.d 进行自启动并制定运行级别
update-rc.d ssh default # 下次启动重新开启


#示例2.设置启动顺序
如果执行脚本B需要先执行脚本A,如下设置(A的启动顺序比B的小,结束顺序比B的大):
update-rc.d A defaults 80 20 #其中的99表示启动顺序,取值范围是0-99。序号越大的越晚执行。
update-rc.d B defaults 90 10


#示例3.移除启动的脚本
update-rc.d startBlog remove
update-rc.d -f startBlog remove #强制


#示例4.高级示例
#解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行ushare;在 0 1 6这3个运行级别中,第20个关闭apachectl。
update-rc.d ssh start 20 2 3 4 5 .stop 20 0 1 6 #运行级别 0 — 6
#效果等于下面方法:
update-rc.d httpd defaults


chkconfig 命令

描述:启动自启动命令(老版本还用),可以按照启动级别来自启;注意需要将脚本放入/etc/init.d/shell脚本名称才能进行管理;

chkconfig [--level <级别>] [--type <类型>] <服务名称> <on启用|off停止自启|reset重新设置|resetpriorities重置优先级>

实际案例:

#示例0.添加服务到chkconfig管理
chkconfig -add nginx


#示例1.查看服务启动
#--level 通常级别2345一块设定 #这条命令只是表示下次开机启用
chkconfig --level 2345 httpd on # Centos7.0 ->全部集中到systemctl中
chkconfig –-level 35 crond on

#示例2.查看服务自启动状态
#可以看到所有的RPM包安装服务
chkconfig --list #如果您想列出 systemd 服务,请执行 'systemctl list-unit-files' #Centos 7 有改变
#欲查看对特定 target 启用的服务请执行 ' systemctl list-dependencies [target] ' (上面)
# netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
# network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
# 基于 xinetd 的服务:
# chargen-dgram: 关
# chargen-stream: 关


#示例3.优先级设置
格式:chkconfig --level 2345 10[开机优先级] 90[关机优先级]


xinetd 命令

描述:xinetd服务是超级守护进程是Rsync、nfs依赖.

  • xinetf配置文件:/etc/xinetd.conf
  • 基于xinetd服务的启动脚本:/etc/xinetd.d/
# 1.安装xinetd
yum -y install xinetd
service xinetd restart
service rsysv on

#2.企业xinetd
vi /etc/xinetd.d/rsync #修改后重启
set:disable = no

注意:xinetd服务不能加级别来自启动,xinetd自启动就启动了.


ntsysv 命令

描述:这个是redhat专用其他linux没有,Redhat与FC系统提供的图形管理界面设置哪些服务应该自动启动;

$ntsysv     
#会启动一个窗口 加*号 开机自启 去掉* 取消,

WeiyiGeek.ntsysv


setup 命令

描述:提供debian的图像化管理认证和系统服务配置,值得注意的是setup也是调用ntsysv和authconfig-tui工具进行管理得;

[[email protected] ~]# setup

WeiyiGeek.setup

补充自带服务

参考:Linux服务列表