service 命令是用于运行 Systemd 系统服务管理器控制的脚本的传统命令行接口,它允许你启动、停止、重启和检查服务状态。

service 命令简介
service 命令是一个向后兼容的工具,在现代的 Ubuntu 系统(从 15.04 开始)中,服务的管理核心是 systemctl。service 命令在底层通常会调用 systemctl 来完成工作。
你可以把它理解为 systemctl 的一个“简化版”或“老式”的包装器。
语法
service <服务名> <操作>
<服务名>: 你要管理的服务的名称,nginx,apache2,ssh,ufw。<操作>: 你要对服务执行的操作,start,stop,restart,status。
常用操作示例
假设我们要管理一个名为 nginx 的 Web 服务器。
a. 查看服务状态
这会告诉你服务当前是否正在运行。

service nginx status
输出示例:
-
如果服务正在运行:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since ... Main PID: 1234 (nginx) Tasks: 2 (limit: 1152) Memory: 5.4M CGroup: /system.slice/nginx.service └─1234 nginx: master process /usr/sbin/nginx -g daemon on;关键信息是
Active: active (running)。 -
如果服务已停止:
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: inactive (dead) since ...关键信息是
Active: inactive (dead)。
b. 启动服务
如果服务没有运行,使用此命令启动它。
sudo service nginx start
c. 停止服务
如果服务正在运行,使用此命令停止它。
sudo service nginx stop
d. 重启服务
这个命令会先停止服务,然后再立即启动它,这对于应用配置更改后非常常用。
sudo service nginx restart
e. 重新加载服务
这个命令会优雅地告诉服务重新加载其配置文件,而不中断当前的连接,这对于像 Nginx 或 Apache 这样的 Web 服务器特别有用,因为它可以避免用户访问中断。
sudo service nginx reload
f. 启用服务开机自启
这会让服务在系统每次启动时自动运行。
sudo service nginx enable
注意: 虽然这个命令在很多情况下有效,但在某些基于 systemd 的系统上,更推荐使用 systemctl enable nginx。service 命令的 enable 操作可能只是 systemctl enable 的一个别名。
g. 禁用服务开机自启
这会阻止服务在系统启动时自动运行。
sudo service nginx disable
同样,更推荐使用 systemctl disable nginx。
与 systemctl 的对比
service 命令虽然简单,但功能有限,现代 Ubuntu 系统推荐使用 systemctl,因为它功能更强大、更灵活。
| 功能 | service 命令 |
systemctl 命令 |
说明 |
|---|---|---|---|
| 查看状态 | service nginx status |
systemctl status nginx |
systemctl 提供更详细的输出和彩色高亮。 |
| 启动服务 | sudo service nginx start |
sudo systemctl start nginx |
功能相同。 |
| 停止服务 | sudo service nginx stop |
sudo systemctl stop nginx |
功能相同。 |
| 重启服务 | sudo service nginx restart |
sudo systemctl restart nginx |
功能相同。 |
| 重载配置 | sudo service nginx reload |
sudo systemctl reload nginx |
功能相同。 |
| 启用自启 | sudo service nginx enable |
sudo systemctl enable nginx |
强烈推荐使用 systemctl,因为 service enable 的行为可能不一致。 |
| 禁用自启 | sudo service nginx disable |
sudo systemctl disable nginx |
强烈推荐使用 systemctl。 |
| 查看所有服务 | service --status-all |
systemctl list-units --type=service --state=running |
systemctl 提供了更强大的过滤和排序功能。 |
| 查看日志 | journalctl -u nginx |
journalctl -u nginx |
日志管理统一由 journalctl 处理。 |
重要注意事项
a. 需要使用 sudo
管理服务(启动、停止等)需要超级用户权限,因此你必须在 service 命令前加上 sudo,只有 status 操作有时可以不用 sudo(取决于你的用户权限)。
b. 服务名称的正确性
服务名称是区分大小写的。service Nginx start 和 service nginx start 可能是不同的,或者前者会报错找不到服务,请确保使用正确的服务名。
c. 现代化趋势
虽然 service 命令仍然可用,但它被认为是遗留接口,对于新的脚本、自动化任务或任何严肃的系统管理工作,你应该优先使用 systemctl。systemctl 是 systemd 的原生接口,提供了更丰富的功能和更稳定的输出格式。
service命令: 一个简单、传统的工具,用于管理服务,适合快速交互式操作。systemctl命令: 现代、功能强大的systemd管理工具,是进行所有服务管理(尤其是脚本化)的首选和推荐方式。
- 临时在命令行快速操作一下,用
service也没问题。 - 写脚本、配置系统、或者想更深入地控制服务,请务必使用
systemctl。
