以下均基于CentOS6.3,其中有部分命令已经过时,在CentOS7中不再使用,请注意
【更新】:CentOS7改变:
CentOS 7.0中一个最主要的改变,就是切换到了systemd。它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理。systemd兼容SysV和Linux标准组的启动脚本。
Systemd是一个Linux操作系统下的系统和服务管理器。它被设计成向后兼容SysV启动脚本,并提供了大量的特性,如开机时平行启动系统服务,按需启动守护进程,支持系统状态快照,或者基于依赖的服务控制逻辑。
先前的使用SysV初始化或Upstart的红帽企业版Linux版本中,使用位于/etc/rc.d/init.d/目录中的bash初始化脚本进行管理。而在RHEL 7/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个运行级别
# 0 - 停机 ,机器关闭。
# 1 - 单用户模式 。就像Win9x下的安全模式类似
# 2 - 多用户,但是没有NFS 进入无网络服务的多用户模式
# 3 - 完全多用户模式 ,是标准的运行级。
# 4 - 没有用到 ,一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本 电脑的电池用尽时,可以切换到这个模式来
# 5 - X11 ,进到X Window系统了。
# 6 - 重新启动 ,运行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.服务与端口
端口的概念:
查看系统中开启的服务:
可以使用 netstjart -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语法介绍:
[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 2015-08-10 19:17:09 CST; 5h 42min ago
Main PID: 1350 (atd)
CGroup: /system.slice/atd.service
└─1350 /usr/sbin/atd -f
Aug 10 19:17:09 study.centos.vbird systemd[1]: 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 2015-08-11 01:04:55 CST; 4s ago
Process: 1350 ExecStart=/usr/sbin/atd -f $OPTS (code=exited, status=0/SUCCESS)
Main PID: 1350 (code=exited, status=0/SUCCESS)
Aug 10 19:17:09 study.centos.vbird systemd[1]: Started Job spooling tools.
Aug 11 01:04:55 study.centos.vbird systemd[1]: Stopping Job spooling tools...
Aug 11 01:04:55 study.centos.vbird systemd[1]: Stopped Job spooling tools.
# 目前这个 unit 下次开机还是会启动,但是现在是没在运行的状态中!同时,
# 最后两行为新增加的登录讯息,告诉我们目前的系统状态喔!