以下均基于CentOS6.3,其中有部分命令已经过时,在CentOS7中不再使用,请注意

  【更新】:CentOS7改变:

CentOS .0中一个最主要的改变,就是切换到了systemd。它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理。systemd兼容SysV和Linux标准组的启动脚本。
Systemd是一个Linux操作系统下的系统和服务管理器。它被设计成向后兼容SysV启动脚本,并提供了大量的特性,如开机时平行启动系统服务,按需启动守护进程,支持系统状态快照,或者基于依赖的服务控制逻辑。 先前的使用SysV初始化或Upstart的红帽企业版Linux版本中,使用位于/etc/rc.d/init.d/目录中的bash初始化脚本进行管理。而在RHEL /CentOS 7中,这些启动脚本被服务单元取代了。服务单元以.service文件扩展结束,提供了与初始化脚本同样的用途。要查看、启动、停止、重启、启用或者禁用系统服务,你要使用systemctl来代替旧的service命令。
注:为了向后兼容,旧的service命令在CentOS 7中仍然可用,它会重定向所有命令到新的systemctl工具——总管。
使用systemctl来启动/停止/重启服务
要启动一个服务,你需要使用如下命令:
# systemctl start httpd.service
这会启动httpd服务,就我们而言,Apache HTTP服务器。
要停掉它,需要以root身份使用该命令:
# systemctl stop httpd.service
要重启,你可以使用restart选项,如果服务在运行中,它将重启服务;如果服务不在运行中,它将会启动。
你也可以使用try-start选项,它只会在服务已经在运行中的时候重启服务。同时,reload选项你也可以有,它会重新加载配置文件。
# systemctl restart httpd.service
# systemctl try-restart httpd.service
# systemctl reload httpd.service
我们例子中的命令看起来会像下面这样:
检查服务状态
要检查服务状态,你可以使用status选项,看这里:
# systemctl status httpd.service
输出结果就像这样:
它会告诉你运行中的服务的方方面面。
使用启用/禁用服务来控制开机启动
你也可以使用enable/disable选项来控制一个服务是否开机启动,命令如下:
# systemctl enable httpd.service
# systemctl disable httpd.service

  更多systemd的相关介绍,参考http://blog.51cto.com/xiaoli110/1629533

  更多命令等其他的差异,参考:https://www.cnblogs.com/bethal/p/5945026.html

一,大纲

   

二、简介与分类

  1.运行级别

    0-6一共6个运行级别

#  - 停机 ,机器关闭。
# - 单用户模式 。就像Win9x下的安全模式类似
# - 多用户,但是没有NFS 进入无网络服务的多用户模式
# 3 - 完全多用户模式 ,是标准的运行级。
# - 没有用到 ,一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来
# - X11 ,进到X Window系统了。
# - 重新启动 ,运行init 6机器就会重启
init一般在系统启动时自动运行,也可以由root用户调用。它的作用是切换系统的运行状态。
它的命令格式是:init NUM〈回车〉,其中NUM表示1到6的任一数字

  //3级别就是我们常用的字符界面(默认级别),7级别就是我们的标准的图形界面

  当然是可以设置默认级别的,CentOS7的具体配置暂不列出(修改相关配置文件即可)

  2.服务的分类

  //绝大多数服务都是独立的服务,xinetd是一个超级守护进程(CentOS7已基本弃用)

  centos7中的systemd服务类型分类:

扩展名 主要服务功能
.service
一般服务类型 (service unit):主要是系统服务,包括服务器本身所需要
的本机服务以及网络服务都是!比较经常被使用到的服务大多是这种类
型! 所以,这也是最常见的类型了!
.socket
内部程序数据交换的插槽服务 (socket unit):主要是 IPC (Inter-
process communication) 的传输讯息插槽档 (socket file) 功能。 这种
类型的服务通常在监控讯息传递的插槽档,当有通过此插槽档传递讯息来
说要链接服务时,就依据当时的状态将该用户的要求传送到对应的
daemon, 若 daemon 尚未启动,则启动该 daemon 后再传送用户的要
求。使用 socket 类型的服务一般是比较不会被用到的服务,因此在开机时
通常会稍微延迟启动的时间 (因为比较没有这么常用嘛!)。一般用于本
机服务比较多,例如我们的图形界面很多的软件都是通过 socket 来进行本
机程序数据交换的行为。 (这与早期的 xinetd 这个 super daemon 有部份
的相似喔!)
.target
执行环境类型 (target unit):其实是一群 unit 的集合,例如上面表格中
谈到的 multi-user.target 其实就是一堆服务的集合~也就是说, 选择执行
multi-user.target 就是执行一堆其他 .service 或/及 .socket 之类的服务就是
了!
.mount
.automount
文件系统挂载相关的服务 (automount unit / mount unit):例如来自网络
的自动挂载、NFS 文件系统挂载等与文件系统相关性较高的程序管理。
.path
侦测特定文件或目录类型 (path unit):某些服务需要侦测某些特定的目
录来提供伫列服务,例如最常见的打印服务,就是通过侦测打印伫列目录
来启动打印功能! 这时就得要 .path 的服务类型支持了!
.timer
循环执行的服务 (timer unit):这个东西有点类似 anacrontab 喔!不过
是由 systemd 主动提供的,比 anacrontab 更加有弹性!

  查看安装的服务:

  //RPM包和源码包的安装位置是不同的,所以最好分开单独对待

  3.服务与端口

  端口的概念:

  查看系统中开启的服务:

  可以使用 -a查看所有

  其中:established,是已经连接的

三、RPM包服务管理

  1.独立服务管理

    RPM包常见默认目录(当然并非绝对,是由编写此RPM的人员决定放在哪合理便放在哪):

    独立服务的启动方式:

  实例:

    查看所有脚本:

    使用绝对路径启动

+后面的选项可以启动重启等

//有一个不能解析本机主机的报错,不影响正常启动

  例如:通过service启动(推荐)

service httpd start

//必须注意,通过service启动是redhat系列的才有此项,标准的启动命令还是前一种。

  而中间的服务名之所以叫 httpd,指的是这是一个守护进程 deamon

  并且,service不能启动源码包(不是默认位置,无法正确找到服务脚本)

  【更新】:

centos 7以后就用systemctl  start  httpd 了 ,systemctl代替service和chkconfig了,跟课程不太一样,注意哦!

  有很多命令,CentOS7中都已改变,这里就不列出如何自启动的命令了(与CentOS6完全不同!)

  systemctl请参见:http://www.cnblogs.com/zhming26/p/6155201.html

  手册大全请参见:http://man.linuxde.net/par/5

  2.xinetd服务

  基本已消失(此处就不展开了)

 四、源码包服务管理

  由于安装位置的不同,默认的源码包是不能使用RPM包的管理方式进行启动的

  服务的启动:

  //服务的安装说明脚本里就已经说明了如何启动(一般都是通过绝对路径找到启动脚本进行启动)

  服务的自启动:

  示例:

  如何强行让源码包让service(注意是centos6)识别

五、小结

  xmind思维导图:

六、centOS7的补充服务管理——systemctl

  systemctl与centos7之前版本的新旧指令对比:

  

service name start    ==> systemctl start name.service

service name stop    ==> systemctl stop name.service

service name restart ==> systemctl restart name.service

service name status  ==> systemctl status name.service

查看服务是否激活(在运行中):systemctl is-active name.service

查看所有已经激活                 :systemctl list-units --type service

查看所有服务                        :systemctl list-units --type service --all

设置开机自启动:chkconfig name on ==> systemctl enable name.service

禁止开机自启动:chkconfig name off ==> systemctl disable name.service

查看服务是否开机自启动:chkconfig --list name ==> systemctl is-enabled name.service

查看所有服务的开机自启动状态:chkconfig --list ==> systemctl list-unit-files --type service

  systemctl启动/关闭语法介绍:

[root@study ~]# systemctl [command] [unit]
command 主要有:
start :立刻启动后面接的 unit
stop :立刻关闭后面接的 unit
restart :立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思
reload :不关闭后面接的 unit 的情况下,重新载入配置文件,让设置生效
enable :设置下次开机时,后面接的 unit 会被启动
disable :设置下次开机时,后面接的 unit 不会被启动
status :目前后面接的这个 unit 的状态,会列出有没有正在执行、开机默认执行否、登录等信息等!
is-active :目前有没有正在运行中
is-enable :开机时有没有默认要启用这个 unit
范例一:看看目前 atd 这个服务的状态为何?
[root@study ~]# systemctl status atd.service
atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled)
Active: active (running) since Mon -- :: CST; 5h 42min ago
Main PID: (atd)
CGroup: /system.slice/atd.service
└─ /usr/sbin/atd -f
Aug :: study.centos.vbird systemd[]: Started Job spooling tools.
# 重点在第二、三行喔~
# Loaded:这行在说明,开机的时候这个 unit 会不会启动,enabled 为开机启动,disabled 开机不会启动
# Active:现在这个 unit 的状态是正在执行 (running) 或没有执行 (dead)
# 后面几行则是说明这个 unit 程序的 PID 状态以及最后一行显示这个服务的登录文件信息!
# 登录文件信息格式为:“时间” “讯息发送主机” “哪一个服务的讯息” “实际讯息内容”
# 所以上面的显示讯息是:这个 atd 默认开机就启动,而且现在正在运行的意思!
范例二:正常关闭这个 atd 服务
[root@study ~]# systemctl stop atd.service
[root@study ~]# systemctl status atd.service
atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled
Active: inactive (dead) since Tue -- :: CST; 4s ago
Process: ExecStart=/usr/sbin/atd -f $OPTS (code=exited, status=/SUCCESS)
Main PID: (code=exited, status=/SUCCESS)
Aug :: study.centos.vbird systemd[]: Started Job spooling tools.
Aug :: study.centos.vbird systemd[]: Stopping Job spooling tools...
Aug :: study.centos.vbird systemd[]: Stopped Job spooling tools.
# 目前这个 unit 下次开机还是会启动(黑体enabled处),但是现在是没在运行的状态中!同时,
# 最后两行为新增加的登录讯息,告诉我们目前的系统状态喔!

  systemctl列出服务列表

[root@study ~]# systemctl [command] [--type=TYPE] [--all]
command:
list-units :依据 unit 列出目前有启动的 unit。若加上 --all 才会列出没启动的。
list-unit-files :依据 /usr/lib/systemd/system/ 内的文件,将所有文件列表说明。
--type=TYPE:就是之前提到的 unit type,主要有 service, socket, target 等
范例一:列出系统上面有启动的 unit
[root@study ~]# systemctl
UNIT LOAD ACTIVE SUB DESCRIPTION
proc-sys-fs-binfmt_mis... loaded active waiting Arbitrary Executable File Formats File System
sys-devices-pc...:::... loaded active plugged QEMU_HARDDISK
sys-devices-pc...:-... loaded active plugged QEMU_HARDDISK
sys-devices-pc...:-... loaded active plugged QEMU_DVD-ROM
.....(中间省略).....
vsftpd.service loaded active running Vsftpd ftp daemon
.....(中间省略).....
cups.socket loaded failed failed CUPS Printing Service Sockets
.....(中间省略).....
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
# 列出的项目中,主要的意义是:
# UNIT :项目的名称,包括各个 unit 的类别 (看扩展名)
# LOAD :开机时是否会被载入,默认 systemctl 显示的是有载入的项目而已喔!
# ACTIVE :目前的状态,须与后续的 SUB 搭配!就是我们用 systemctl status 观察时,active 的项目!
# DESCRIPTION :详细描述啰
# cups 比较有趣,因为刚刚被我们玩过,所以 ACTIVE 竟然是 failed 的喔!被玩死了! ^_^
# 另外,systemctl 都不加参数,其实默认就是 list-units 的意思!
范例二:列出所有已经安装的 unit 有哪些?
[root@study ~]# systemctl list-unit-files——查看所有已安装服务
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-fs-nfsd.mount static
.....(中间省略).....
systemd-tmpfiles-clean.timer static
unit files listed.
其中STATE的状态有:

  enabled:这个 daemon 将在开机时被执行
  disabled:这个 daemon 在开机时不会被执行
  static:这个 daemon 不可以自己启动 (enable 不可),不过可能会被其他的 enabled
      的服务来唤醒 (相依属性的服务)
  mask:这个 daemon 无论如何都无法被启动!因为已经被强制注销 (非删除)。可通过
      systemctl unmask 方式改回原本状态

 
[root@study ~]# systemctl list-units --type=service --all
# 只剩下 *.service 的项目才会出现喔!
范例一:查询系统上是否有以 cpu 为名的服务?
[root@study ~]# systemctl list-units --type=service --all &#; grep cpu
cpupower.service loaded inactive dead Configure CPU power related settings
# 确实有喔!可以改变 CPU 电源管理机制的服务哩!

在 service 部份
  用 start/stop/restart 才对,在 target 项目则请使用 isolate (隔离不同的操作模式) 才对!

  systemctl查看服务间的依赖状态

[root@study ~]# systemctl list-dependencies [unit] [--reverse]
选项与参数:
--reverse :反向追踪谁使用这个 unit 的意思!
[root@study ~]# systemctl list-dependencies graphical.target
graphical.target
├─accounts-daemon.service
├─gdm.service
├─network.service
├─rtkit-daemon.service
├─systemd-update-utmp-runlevel.service
└─multi-user.target
├─abrt-ccpp.service
├─abrt-oops.service
.....(下面省略).....

  相关系统目录介绍:

/usr/lib/systemd/system/: 使用 CentOS 官方提供的软件安装后,默认的启动脚本配置
文件都放在这里,这里的数据尽量不要修改~ 要修改时,请到 /etc/systemd/system 下面
修改较佳!
/run/systemd/system/: 系统执行过程中所产生的服务脚本,这些脚本的优先序要比
/usr/lib/systemd/system/ 高!
/etc/systemd/system/: 管理员依据主机系统的需求所创建的执行脚本,其实这个目录有
点像以前 /etc/rc.d/rc5.d/Sxx 之类的功能!执行优先序又比 /run/systemd/system/ 高喔!
/etc/sysconfig/*: 几乎所有的服务都会将初始化的一些选项设置写入到这个目录下,举
例来说,mandb 所要更新的 man page 索引中,需要加入的参数就写入到此目录下的
man-db 当中喔!而网络的设置则写在 /etc/sysconfig/network-scripts/ 这个目录内。所
以,这个目录内的文件也是挺重要的;
/var/lib/: 一些会产生数据的服务都会将他的数据写入到 /var/lib/ 目录中。举例来说,数
据库管理系统 Mariadb 的数据库默认就是写入 /var/lib/mysql/ 这个目录下啦!
/run/: 放置了好多 daemon 的暂存盘,包括 lock file 以及 PID file 等等。

  系统所有端口对应的默认应用位于 /etc/services,例如:

cat /etc/services | grep 

Linux入门进阶第四天——服务管理的更多相关文章

  1. Linux入门进阶第四天(下)——程序管理(补充内容)

    1.PID 触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置. 同一个程序 ...

  2. Linux入门进阶第五天——用户管理(帐号管理 )上

    一.帐号与群组 关于使用者帐号: 用户的ID与帐号信息所在位置是 /etc/passwd,而管理密码的数据则是在 /etc/shadow 每个登陆的使用者至少都会取得两个 ID , 一个是使用者 ID ...

  3. Linux入门进阶第二天——软件安装管理(上)

    一.大纲介绍 这里介绍的仅仅是两大家族之一的RPM,关于Debian家族的DPKG,请参考:http://justcoding.iteye.com/blog/1937171 二.简介 软件包分类: 源 ...

  4. Linux入门进阶第五天——用户管理(帐号管理 )下

    一.身份切换 为了避免 rm -rf /* 的悲剧发生,平时使用时,尽量使用一般帐号!需要环境设置等必要时才使用root 1.su命令 一般地,推荐使用su - / su - username的形式来 ...

  5. Linux入门基础(四)——磁盘管理

  6. Linux操作系统-CentOS7启动流程和服务管理

    Linux操作系统-CentOS7启动流程和服务管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.systemd POST --> Boot Sequence --&g ...

  7. Linux操作系统-CentOS6启动流程和服务管理

    Linux操作系统-CentOS6启动流程和服务管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux组成 1>.Linux: kernel+rootfs ker ...

  8. Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介

    原文:Linux内核分析(四)----进程管理|网络子系统|虚拟文件系统|驱动简介 Linux内核分析(四) 两天没有更新了,上次博文我们分析了linux的内存管理子系统,本来我不想对接下来的进程管理 ...

  9. Linux入门篇(四)——Vim的使用与Bash

    这一系列的Linux入门都是本人在<鸟哥的Linux私房菜>的基础上总结的基本内容,主要是记录下自己的学习过程,也方便大家简要的了解 Linux Distribution是Ubuntu而不 ...

随机推荐

  1. python读取xml文件报错ValueError: multi-byte encodings are not supported

    1.在使用python对xml文件进行读取时,提示ValueError: multi-byte encodings are not supported 很多贴子上说把xml的编码格式改为,就可以正常执 ...

  2. BZOJ 1008 越狱 组合数学

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1008 题目大意: 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗 ...

  3. Java虚拟机12:虚拟机性能监控与故障处理工具

    前言 定位系统问题的时候,知识.经验是基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异常堆栈.GC日志.线程快照.堆转储快照等.经常使用适当的虚拟机监控和分析的工具可以加 ...

  4. Counting swaps

    Counting swaps 给你一个1-n的排列,问用最少的交换次数使之变为递增排列的方案数\(mod\ 10^9+7\),1 ≤ n ≤ 10^5. 解 显然最少的交换次数不定,还得需要找到最小交 ...

  5. Yii2.0 发送文件

    1.发送文件 和浏览器跳转类似,文件发送是另一个依赖指定 HTTP 头的功能, Yii 提供方法集合来支持各种文件发送需求,它们对 HTTP 头都有内置的支持. yii\web\Response::s ...

  6. [19/04/23-星期二] GOF23_创建型模式(工厂模式、抽象工厂模式)

    一.工厂模式(分为:简单工厂模式.工厂方法模式.抽象工厂模式) 实现了创建者和调用者的分离 核心本质:1.实例化对象,用工厂方法代替new操作:2.将选择实现类.创建对象统一管理和控制,从而将调用者跟 ...

  7. React 简单实例 (React-router + webpack + Antd )

    React Demo  Github 地址 经过React Native 的洗礼之后,写了这个 demo :React 是为了使前端的V层更具组件化,能更好的复用,同时可以让你从操作dom中解脱出来, ...

  8. 4、Android-数据存储方案(文件存储/SharedPreferences)

    简介: 任何一个应用程序都需要和数据进行交互 对于软件来说微博.QQ等都需要关系的是数据 没有数据的应用程序是一个没有灵魂的软件 而且还没有实际的用途 可以认为是单机 4.1.持久化技术的简介 数据持 ...

  9. 关于numpy mean函数的axis参数

    import numpy as np X = np.array([[1, 2], [4, 5], [7, 8]]) print np.mean(X, axis=0, keepdims=True) pr ...

  10. 什么是工厂函数?Python 中工厂函数怎么理解?(转)

    所谓工厂函数就是指这些内建函数都是类对象(实际上是类), 当你调用它们时,实际上是创建了一个类实例. type():查看类型