服务是一些特定的进程,自有服务就是系统开机后就自动运行的一些进程,一旦客户发出请求,这些进程就自动为他们提供服务。在 Windows 系统中,把这些自动运行的进程称为“服务”。
举例:当我们使用 SSH 客户端软件连接 Linux 的时候,服务器能对连接做出响应,是因为 SSH 服务在开机时就已经自动运行了。
✅ 自有服务:可理解为 Linux 系统开机自动运行的服务(程序)
在 CentOS 7 之前,常通过以下两个命令管理服务:
service
:负责启动、停止服务,显示服务状态chkconfig
:指定服务是否开机启动从 CentOS 7 开始,统一使用 systemctl
管理服务,具有 service 和 chkconfig 的全部功能。
命令:systemctl
作用:管理服务
语法:
systemctl [选项]
选项 | 说明 |
---|---|
list-units --type=service --all |
列出所有服务(包括未启动的) |
list-units --type=service |
只列出已启动的服务 |
systemctl list-units --type=service --all
q
退出systemctl list-units --type=service
语法:
systemctl [选项] 服务名
操作 | 示例 | 说明 |
---|---|---|
status |
systemctl status crond |
查看服务状态 |
start |
systemctl start crond |
启动服务 |
stop |
systemctl stop crond |
停止服务 |
restart |
systemctl restart crond |
重启服务 |
reload |
systemctl reload crond |
重新加载配置(服务支持时) |
systemctl status crond
输出中 Active: active (running)
表示正在运行。
systemctl stop crond
输出中 Inactive
表示服务停止。
systemctl start crond
systemctl restart crond
systemctl reload crond
定义:服务持久化是指服务是否能在系统启动时自动运行。
命令语法:
systemctl [enable/disable] 服务名
systemctl disable crond
systemctl enable crond
参数 | 含义 |
---|---|
list-units --type service --all |
列出所有服务(包含未启动) |
list-units --type service |
列出所有正在运行的服务 |
start |
启动指定服务 |
stop |
停止指定服务 |
status |
查看服务状态 |
restart |
重启服务 |
reload |
重新加载配置(部分服务支持) |
enable |
设置服务为开机启动 |
disable |
禁用服务开机启动 |
服务名 | 含义 |
---|---|
ntpd | 用于同步计算机系统时间的服务 |
firewalld | Linux防火墙服务,用于网络安全防护 |
crond | Linux计划任务服务,用于定时执行任务 |
如100台服务器构成电商平台后端,若不做时间同步,会出现“用户明天下单,今天发货”的时间错乱问题。
```bash
ntpdate 120.25.108.11 # 阿里云时间服务器
```
注意:需服务器可以访问公网,否则报错
no servers can be used
```bash
systemctl start ntpd
systemctl enable ntpd # 设置为开机自动启动
```
配置文件路径:/etc/ntp.conf
iptables
firewalld
,引入了**区域(zone)**概念。区域名 | 策略简介 |
---|---|
trusted | 允许所有数据包 |
home | 拒绝除关联流量外的所有流入,仅允许 ssh、mdns、ipp-client 等服务 |
public | 拒绝除关联流量外的流入,仅允许 ssh、dhcpv6-client |
block | 拒绝除关联流量外的所有流入,非法流量“拒绝” |
drop | 拒绝除关联流量外的所有流入,非法流量“丢弃” |
external | 类似public,只允许 ssh |
work | 类似home |
dmz | 仅允许 ssh |
--reload
重载。systemctl status firewalld # 查看状态
systemctl start firewalld # 启动
systemctl stop firewalld # 停止
systemctl restart firewalld # 重启
systemctl reload firewalld # 重载配置(推荐 restart)
功能描述 | 示例命令 |
---|---|
查看默认区域 | `firewall-cmd --get-default-zone` |
查看所有区域 | `firewall-cmd --get-zones` |
查看当前区域配置 | `firewall-cmd --list-all` |
查看所有区域配置 | `firewall-cmd --list-all-zones` |
添加端口临时规则 | `firewall-cmd --zone=public --add-port=1024/tcp` |
添加服务临时规则 | `firewall-cmd --zone=public --add-service=ftp` |
移除端口临时规则 | `firewall-cmd --zone=public --remove-port=1024/tcp` |
永久添加规则 | `firewall-cmd --permanent --zone=public --add-port=1024/tcp` |
重载配置使永久生效 | `firewall-cmd --reload` |
命令 | 含义 |
---|---|
crontab -l |
查看当前用户的任务列表 |
crontab -e |
编辑当前用户的任务列表 |
crontab -r |
删除当前用户的任务列表 |
crontab -u 用户名 |
指定其他用户(需要root权限) |
* * * * * command_to_execute
| | | | |
| | | | ----- 星期 (0-7) (0和7都代表星期天)
| | | ------- 月 (1-12)
| | --------- 日 (1-31)
| ----------- 时 (0-23)
------------- 分 (0-59)
*
:任意值-
:范围,如 1-5/
:间隔频率,如 */10 表示每10分钟,
:多个指定值,如 1,2,6useradd
等。问题描述 | crontab 表达式 |
---|---|
每月1、10、22日的4:45重启network服务 | 45 4 1,10,22 * * systemctl restart network |
每周六、周日的1:10重启network服务 | 10 1 * * 6,7 systemctl restart network |
每天18:00至23:00每隔30分钟执行任务 | */30 18-23 * * * 命令 |