在Linux系统中,“服务”(Service)可以理解为在后台持续运行的程序,它们负责提供特定功能,比如网页服务(Nginx/Apache)、数据库服务(MySQL)、邮件服务(Postfix)等。管理服务是Linux系统运维的基础技能,包括启动新服务、停止不需要的服务,以及检查服务是否正常运行。

一、管理服务的前提:权限准备

大部分服务管理命令(如启动、停止、重启)需要管理员权限。因此,执行这些命令时,通常需要在命令前加 sudo(普通用户)或切换到 root 用户(需谨慎)。例如:

sudo systemctl start nginx  # 普通用户执行,需密码验证

二、查看服务状态:最常用的命令 systemctl status

systemctl status 是查看服务状态的核心命令,能显示服务是否运行、当前状态(如启动中、已停止、失败)、进程ID、启动时间等详细信息。

语法

sudo systemctl status [服务名]

示例:查看Nginx服务状态(假设已安装Nginx):

sudo systemctl status nginx

输出说明
- Active: active (running):服务正在运行(绿色为正常状态)。
- Main PID: 1234:服务主进程ID。
- CGroup:服务所属的进程组信息。

如果服务未运行,状态会显示 inactive(停止)或 failed(启动失败),并提示错误原因。

三、启动服务:systemctl start

要启动一个服务,使用 systemctl start 命令。注意:服务名需与系统中实际配置的名称一致(可通过后续“查看服务列表”命令确认)。

语法

sudo systemctl start [服务名]

示例:启动Nginx服务:

sudo systemctl start nginx

验证启动:启动后可通过 systemctl status nginx 再次确认状态为 active (running),或通过端口监听验证(如Nginx默认监听80端口):

sudo netstat -tuln | grep 80  # 查看80端口是否被Nginx占用

四、停止服务:systemctl stop

若需临时停止服务(如维护时),使用 systemctl stop 命令。

语法

sudo systemctl stop [服务名]

示例:停止Nginx服务:

sudo systemctl stop nginx

验证停止:执行 systemctl status nginx 后,状态应显示 inactive (dead)

五、重启服务:systemctl restart

当服务配置修改后(如修改Nginx配置文件),需重启服务使修改生效,使用 systemctl restart

语法

sudo systemctl restart [服务名]

示例:重启Nginx服务:

sudo systemctl restart nginx

说明restart 会先停止服务,再重新启动,适用于配置变更后。

六、查看服务列表:systemctl list-units

如果忘记服务名,可通过 systemctl list-units 列出系统中所有服务(或筛选特定类型)。

查看所有服务

sudo systemctl list-units --type=service
  • --type=service:仅显示服务类型(而非目标、挂载点等)。
  • 输出中 LOAD 列显示服务配置是否已加载,ACTIVE 列显示运行状态。

查看运行中的服务

sudo systemctl list-units --type=service --state=running

七、检查服务是否运行:systemctl is-active

快速判断服务是否处于“活动”状态(仅返回结果,无详细信息),适合脚本或自动化场景。

语法

sudo systemctl is-active [服务名]

示例:检查Nginx状态:

sudo systemctl is-active nginx  # 输出:active(服务运行)或 inactive(服务停止)

八、开机自启设置(可选)

若需服务开机自动启动,使用 systemctl enable;若需禁止开机自启,使用 systemctl disable

语法

sudo systemctl enable [服务名]   # 开机自启
sudo systemctl disable [服务名]  # 禁止开机自启

示例:设置Nginx开机自启:

sudo systemctl enable nginx

验证开机自启

sudo systemctl is-enabled nginx  # 输出:enabled(已设置)或 disabled(未设置)

九、故障排查:查看服务日志

若服务启动失败(如 systemctl status 显示 failed),可通过 journalctl 查看详细错误日志,定位问题。

语法

sudo journalctl -u [服务名]  # -u 表示指定服务

示例:查看Nginx启动失败的日志:

sudo journalctl -u nginx

常见错误
- 端口被占用(如80端口被其他服务占用)。
- 配置文件语法错误(需检查 /etc/nginx/nginx.conf 等配置文件)。

总结

Linux服务管理的核心是 systemctl 命令,掌握以下基础操作即可应对大部分场景:
- 查看状态:systemctl status [服务名]
- 启动服务:sudo systemctl start [服务名]
- 停止服务:sudo systemctl stop [服务名]
- 重启服务:sudo systemctl restart [服务名]
- 开机自启:sudo systemctl enable/disable [服务名]

建议多练习不同服务(如Nginx、MySQL、SSH)的管理,熟悉服务名和常见问题排查方法,逐步提升Linux系统运维能力。

小夜