服务管理 又叫 service管理
服务的本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求(比如防火墙,远程登陆SSHD)
所以我们又称之为守护进程,是一个很重要的点
比如,一个程序的客户端,想去连接他在linux里的服务,需要先找到该服务的端口,而这个端口再后面连着的,就是监听这个端口的后台服务/守护进程
你去找哪个端口,本质上也是找的端口监听的那一个系统服务
客户端 - - - 端口| 服务/守护进程 |
相关管理指令
- service指令
bash
service [服务名] [选项]
| 选项 | 作用 | 解释 |
|---|---|---|
| start | 启动服务 | 要让服务跑起来 |
| stop | 停止服务 | 服务有问题需要关闭 |
| restart | 重启服务 | 更改配置文件让服务重新加载 |
| reload | 平滑重载配置 | 改完配置后不想中断服务让服务继续运行 |
| status | 查看服务状态 | 字面意思,查看各种信息 |
不过CentOS7以后许多服务不再使用service,而是systemctl
service指令仍管理的服务可以在/etc/init.d/查看
示例:

指令示例
bash
1. service network status #查看网络服务的运行状况 service network stop #关闭网络服务
- 查看服务名
/etc/init.d只能看到一部分服务,想看到全部就输入setup
然后会进入一个蓝色背景的界面,上面有两个选项
上面的是系统服务和验证配置,下面两个是运行工具和退出

选择系统服务后直接回车便可看到系统有的服务
带星号的就是可以自启动的

切到退出和确定要按tab
- 服务的运行级别
linux有7种运行级别
| 级别 | 状态 | 通常名称 |
|---|---|---|
| 0 | 系统关机状态,该模式不能为默认模式,否则会无法正常启动 | runlevel 0 |
| 1 | 单用户工作状态,root权限,用于系统维护,无法远程登陆 | emergency.target:runlevel 1 |
| 2 | 多用户状态,没有NFS,不支持网络 | rescue.target:runlevel 2 |
| 3 | 多用户状态,有NFS,登陆后进入控制台命令行模式 | multi-user.target:runlevel 3 |
| 4 | 系统未使用,保留 | runlevel 4 |
| 5 | 登陆后进入图形化界面 | graphical.target:runlevel 5 |
| 6 | 系统正常启动并重启,该模式不能为默认模式 | runlevel 6 |
最常用的是3和5
开机的流程大概就是
开机 --- BIOS --- /boot --- systemd进程1 --- 运行级别 --- 运行级别对应的服务
在/etc/inittab中可以看到相关信息 #在CentOS7中那些运行级别被简化为3和5

systemctl get-default #这条指令可以查看当前的运行级别
systemctl set-default TARGET.target 更改运行级别
示例
bash
systemctl set-default graphical.target #更改为图形化界面
- chkconfig指令
通过该指令可以给服务的各个运行级别设置自启动/自关闭
比如一个服务,你可以设置为,他在运行级别1是自启动的,但在2是自关闭
chkconfig指令管理的服务可以在/etc/init.d查看
基本语法
bash
chkconfig --list #查看服务
chkconfig --level [级别] [服务名] on/off #让某一个服务在某个运行级别选择是自启动还是关闭
示例
bash
chkconfig --level 3 network off
使network服务在运行级别3时处于关闭状态
chkconfig --list | greq network
只查看network的各运行级别的自启动状态
- systemstl指令
现在常用的管理指令
基本语法
bash
systemctl [选项] [服务名]
| 选项 | 作用 |
|---|---|
| start | 启动服务 |
| stop | 停止服务 |
| restart | 先停止再启动 |
| status | 查看服务状态 |
systemctl管理的服务可以在/usr/lib/systemd/system查看
bash
ls -l /usr/lib/systemd/system
stop和start这样的指令可以更改服务的状态,但只是临时生效,重启后就会消失,如果想要永久生效
还是要使用systemctl [enable/disable] [服务名]这样的指令
systemctl设置服务的自启动状态:
bash
systemctl list-unit-files #查看各个服务的开机启动状态,可使用greq过滤
systemctl enable [服务名] #设置服务开机自启动
systemctl disable [服务名] #设置服务关闭
systemctl is-enabled [服务名] #查询某个服务是否是自启动
systemctl list-unit-files查看时显示的状态有三个,enabled已设置自启动,disabled未设置自启动,static静态无法直接启用
示例
bash
查看防火墙的状态,关闭和启用防火墙
systemctl list-unit-files | greq firewalld #查看
systemctl enable firewalld #启用
systemctl disable firewalld #关闭
查看防火墙是否为自启动
systemctl is-enabled firewalld
注 因为CentOS 7运行级别只有3和5,所以没有指定运行级别的命令,指令是同时作用于3和5的
- 防火墙
系统中,防火墙大概是在端口前面,有请求发过来是先经过防火墙的,如果防火墙没把端口打开,请求就过不去,打开了才能过去
在真正的生产环境中我们往往需要把防火墙打开,但是打开后外面的所有请求都过不了了可不行,这时候就得单独打开指定的端口,比如80,22,8080等
firewall指令
基本语法
bash
firewall-cmd --permanent --add-port=[端口号/协议] #打开某个端口
firewall-cmd --permanent --remove-port=[端口号/协议] #关闭某个端口
firewall-cmd -reload #每次更改需要这样重新载入才能生效
firewall-cmd --query-port=[端口号/协议] #查询某个端口是否开放
打指令的时候一定要把端口号和协议名全都打全
bash
netstat -anp | more
用于查看系统网络连接状态,也可顺便查看端口对应的协议
示例
bash
开放111端口,为tcp协议
firewall-cmd --permanent --add-port=111/tcp