前言、本章学习目标
- 了解LINUX中的服务种类
- 了解LINUX中常见服务的端口
- 熟悉服务的日常管理
- 掌握添加自定义服务
一、Linux系统服务含义及其分类
系统服务是在后台运行的应用程序,并且可以提供一些本地系统或网络的功能。我们把这些应用程序称作服务,也就是 Service。不过,我们有时会看到 Daemon 的叫法,Daemon 的英文原意是"守护神",在这里是"守护进程"的意思。
守护进程就是为了实现服务、功能的进程。比如,我们的 apache 服务就是服务(Service),它是用来实现 Web 服务的。那么,启动 apache 服务的进程是哪个进程呢?就是 httpd 这个守护进程(Daemon)。也就是说,守护进程就是服务在后台运行的真实进程。
服务的分类:
独立的服务:就是独立启动的意思,这种服务可以自行启动,而不用依赖其他的管理服务。因为不依赖其他的管理服务,所以,当客户端请求访问时,独立的服务响应请求更快速。目前,Linux 中的大多数服务都是独立的服务,如 apache 服务、FTP 服务、Samba 服务等。
基于 xinetd 的服务:这种服务就不能独立启动了,而要依靠管理服务来调用。这个负责管理的服务就是 xinetd 服务。
二、Linux系统服务常见端口
计算机中的协议主要分为两大类:
面向连接的可靠的TCP协议(Transmission Control Protocol,传输控制协议);
面向无连接的不可靠的UDP协议(User Datagram Protocol,用户数据报协议);
这两种协议都支持 65535 个端口。这么多端口怎么记忆呢?系统给我们提供了服务与端口的对应文件 /etc/services。
三、Linux系统服务管理
1) 使用/etc/init.d/目录中的启动脚本来管理独立的服务
命令格式如下:
[root@localhost ~]#/etc/init.d独立服务名 start| stop|status|restart|...
参数:
start:启动服务;stop:停止服务;status:查看服务状态;restart:重启动服务;
2) 使用service命令来管理独立的服务
我们还可以依赖 service 命令来启动独立的服务。service 命令实际上只是一个脚本,这个脚本仍然需要调用 /etc/init.d/ 中的启动脚本来启动独立的服务。
命令格式如下:service XXX start| stop|status|restart|...
3)使用systemctl命令来管理独立的服务
systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。systemd对应的进程管理命令是systemctl。
命令格式如下:systemctl start| stop|status|restart|... XXX
四、Linux系统服务自启动管理
1) 使用 chkconfig 服务自启动管理命令
[root@localhost ~]# chkconfig --list | grep httpd
httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
#查询httpd的自启动状态。所有的级别都是不自启动的
[root@localhost ~]# chkconfig --level 2345 httpd on
#设置apache服务在进入2、3、4、5级别时自启动
2) 修改 /etc/rc.d/rc.local 文件,设置服务自启动
修改 /etc/rc.d/rc.local 文件,在文件中加入服务的启动命令,注意rc.local需要有执行权限
3) systemctl修改服务自启动
例如:systemclt enable httpd.service
五、Linux系统常见服务的类别及功能
在生产服务器上,安装完 Linux 之后有一步重要的工作,就是服务优化。也就是关闭不需要的服务,只开启需要的服务。因为服务启动得越多,占用的系统资源就越多,而且被攻击的可能性也増加了。如果要进行服务优化,就需要知道这些服务都有什么作用。
六、添加自定义服务
这里已systemd为例:
官方手册参考https://www.freedesktop.org/software/systemd/man/systemd.service.html
自定义服务:
在 /usr/lib/systemd/system 下新建服务脚本
vim /usr/lib/systemd/system/test.service
[Unit]
Description=test date-time script
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
ExecStart=/opt/test.sh[Install]
WantedBy=multi-user.target
# systemctl daemon-reload #重新加载一下
# systemctl start test.service #开启服务
# systemctl enable test #设置成开机自启
# systemctl is-enabled test #检查是否是开机自启
七、本章实验
1、部署ftp服务,安装、启动、启用ftp服务
2、将自定义nginx服务设置成开机自启动服务。