[TOC]
0x00 服务管理
1.Linux服务管理 独立的服务:就是运行在内存里的服务,任何的客户端要访问这个服务
- 可以直接响应,速度快,缺点是占用内存.
xinetd服务:是超级守护进程,它管理的后台程序,客户端要访问后台服务需要经过它
- xinetd占用内存,其他服务都不占内存,速度慢,xinetd的服务现在用得越来越少了.
WeiyiGeek.rpm与源码包安装服务
各种服务的目录以及使用:
代码语言:javascript复制#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自己开发的;
代码语言:javascript复制service 独立服务名 start|stop|status|restart #推荐使用systemctl
基础使用示例:
代码语言:javascript复制#比如复制 php-fpm 启动文件到init.d目录中
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod o x /etc/init.d/php-fpm
#传统的启动方式
/etc/init.d/php-fpm start
#采用services管理方式
service php-fpm start
updata-rc.d 命令
描述:命令添加开机执行脚本还能用于设置服务自启动的运行等级和顺序,多在debian和Ubuntu中使用; 同样需要在该路径中建立软连接/etc/init.d/ssh采用进行管理;
代码语言:javascript复制#用法
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 仍然存在。
实际案例:
代码语言:javascript复制#示例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脚本名称才能进行管理;
代码语言:javascript复制chkconfig [--level <级别>] [--type <类型>] <服务名称> <on启用|off停止自启|reset重新设置|resetpriorities重置优先级>
实际案例:
代码语言:javascript复制#示例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系统提供的图形管理界面设置哪些服务应该自动启动;
代码语言:javascript复制$ntsysv
#会启动一个窗口 加*号 开机自启 去掉* 取消,
WeiyiGeek.ntsysv
setup 命令
描述:提供debian的图像化管理认证和系统服务配置,值得注意的是setup也是调用ntsysv和authconfig-tui工具进行管理得;
代码语言:javascript复制[root@localhost ~]# setup
WeiyiGeek.setup
0x02 软件配置
dpkg-reconfigure 命令
描述: 在Debian系或者Ubuntu系需要重新配制一个已经安装的软件,当用户需要再次对软件包配置的时候可以使用dpkg-reconfigure
来对指定的软件包进行配置。
语法参数:
代码语言:javascript复制# /usr/bin/debconf-set-selections
Usage: dpkg-reconfigure [options] packages
# dpkg-reconfigure [选项] 软件包
# -u, --unseen-only Show only not yet seen questions. # 仅显示未提过的问题
# --default-priority Use default priority instead of low. # 使用默认优先级,而非“低”级。
# --force Force reconfiguration of broken packages. # 强迫重配置受损软件包。
# --no-reload Do not reload templates. (Use with caution.) # 不要轻易的重装模板(使用时请慎重考虑)。
# -f, --frontend Specify debconf frontend to use. # 指定 debconf 前端界面。
# -p, --priority Specify minimum priority question to show. # 指定要显示的问题的最优先级。
# --terse Enable terse mode. # 开启简要模式。
使用实例:
代码语言:javascript复制# (1) 配置系统语言
sudo dpkg-reconfigure locales
0x03 补充自带服务
参考:Linux服务列表