Linux 自有服务与 systemctl 管理指南
一、自有服务概述
服务是一些特定的进程,自有服务就是系统开机后就自动运行的一些进程,一旦客户发出请求,这些进程就自动为他们提供服务。在 Windows 系统中,把这些自动运行的进程称为“服务”。
举例:当我们使用 SSH 客户端软件连接 Linux 的时候,服务器能对连接做出响应,是因为 SSH 服务在开机时就已经自动运行了。
✅ 自有服务:可理解为 Linux 系统开机自动运行的服务(程序)
二、自有服务的管理(systemctl 管理服务命令)
在 CentOS 7 之前,常通过以下两个命令管理服务:
service
:负责启动、停止服务,显示服务状态chkconfig
:指定服务是否开机启动
从 CentOS 7 开始,统一使用 systemctl
管理服务,具有 service 和 chkconfig 的全部功能。
1. 显示服务
命令:systemctl
作用:管理服务
语法:
systemctl [选项]
📌 常用选项:
选项 | 说明 |
---|---|
list-units --type=service --all | 列出所有服务(包括未启动的) |
list-units --type=service | 只列出已启动的服务 |
示例一:列出所有服务(包含启动和未启动)
systemctl list-units --type=service --all
- 空格翻页,按
q
退出
示例二:列出当前运行的服务
systemctl list-units --type=service
2. 启动/停止/查看服务状态
语法:
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
3. 服务持久化(开机自动启动)
定义:服务持久化是指服务是否能在系统启动时自动运行。
命令语法:
systemctl [enable/disable] 服务名
📌 操作示例:
- 禁用开机启动:
systemctl disable crond
- 启用开机启动:
systemctl enable crond
4. systemctl 命令参数总结
参数 | 含义 |
---|---|
list-units --type service --all | 列出所有服务(包含未启动) |
list-units --type service | 列出所有正在运行的服务 |
start | 启动指定服务 |
stop | 停止指定服务 |
status | 查看服务状态 |
restart | 重启服务 |
reload | 重新加载配置(部分服务支持) |
enable | 设置服务为开机启动 |
disable | 禁用服务开机启动 |
Linux 自有服务详解(ntp、firewalld、crond)
一、常用自有服务
服务名 | 含义 |
---|---|
ntpd | 用于同步计算机系统时间的服务 |
firewalld | Linux防火墙服务,用于网络安全防护 |
crond | Linux计划任务服务,用于定时执行任务 |
二、ntp 时间同步服务
什么是NTP?
- NTP(Network Time Protocol):用于同步网络中计算机时间的协议。
- 来源:通过 UTC(世界协调时间)同步,标准时间来自原子钟、天文台、GPS、互联网等。
应用场景
如100台服务器构成电商平台后端,若不做时间同步,会出现“用户明天下单,今天发货”的时间错乱问题。
NTP 层级结构
- NTP通过**Stratum(层级)**传播时间,最多支持15层。
- 我们通常使用公网 NTP 服务器,如:http://www.ntp.org.cn/pool.php
时间同步方式
手动同步时间
```bash
ntpdate 120.25.108.11 # 阿里云时间服务器
```
注意:需服务器可以访问公网,否则报错
no servers can be used
自动同步时间
```bash
systemctl start ntpd
systemctl enable ntpd # 设置为开机自动启动
```
配置文件路径:/etc/ntp.conf
三、firewalld 防火墙
基本概念
- 防火墙:用于阻止非法访问、控制网络流量,保障网络安全。
- CentOS 6 默认使用
iptables
- CentOS 7+ 默认使用
firewalld
,引入了**区域(zone)**概念。
常见区域与默认规则
区域名 | 策略简介 |
---|---|
trusted | 允许所有数据包 |
home | 拒绝除关联流量外的所有流入,仅允许 ssh、mdns、ipp-client 等服务 |
public | 拒绝除关联流量外的流入,仅允许 ssh、dhcpv6-client |
block | 拒绝除关联流量外的所有流入,非法流量“拒绝” |
drop | 拒绝除关联流量外的所有流入,非法流量“丢弃” |
external | 类似public,只允许 ssh |
work | 类似home |
dmz | 仅允许 ssh |
模式说明
- 运行模式:配置即时生效,不保存到配置文件。
- 永久模式:写入配置文件,但需要执行
--reload
重载。
服务控制命令(systemctl)
systemctl status firewalld # 查看状态
systemctl start firewalld # 启动
systemctl stop firewalld # 停止
systemctl restart firewalld # 重启
systemctl reload firewalld # 重载配置(推荐 restart)
配置管理命令(firewall-cmd)
功能描述 | 示例命令 |
---|---|
查看默认区域 | `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` |
四、crond 计划任务
作用
- 用于在特定时间执行任务,如每天凌晨自动重启服务,自动备份等。
常用命令(crontab)
命令 | 含义 |
---|---|
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,6
注意事项
- 有些命令需使用绝对路径,例如
useradd
等。
```bash
whereis useradd # 查询命令位置
```
实用案例
问题描述 | 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 * * * 命令 |