菜鸟科技网

Ubuntu service命令如何正确使用?

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

Ubuntu service命令如何正确使用?-图1
(图片来源网络,侵删)

service 命令简介

service 命令是一个向后兼容的工具,在现代的 Ubuntu 系统(从 15.04 开始)中,服务的管理核心是 systemctlservice 命令在底层通常会调用 systemctl 来完成工作。

你可以把它理解为 systemctl 的一个“简化版”或“老式”的包装器。

语法

service <服务名> <操作>
  • <服务名>: 你要管理的服务的名称,nginx, apache2, ssh, ufw
  • <操作>: 你要对服务执行的操作,start, stop, restart, status

常用操作示例

假设我们要管理一个名为 nginx 的 Web 服务器。

a. 查看服务状态

这会告诉你服务当前是否正在运行。

Ubuntu service命令如何正确使用?-图2
(图片来源网络,侵删)
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 nginxservice 命令的 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 startservice nginx start 可能是不同的,或者前者会报错找不到服务,请确保使用正确的服务名。

c. 现代化趋势

虽然 service 命令仍然可用,但它被认为是遗留接口,对于新的脚本、自动化任务或任何严肃的系统管理工作,你应该优先使用 systemctlsystemctlsystemd 的原生接口,提供了更丰富的功能和更稳定的输出格式。


  • service 命令: 一个简单、传统的工具,用于管理服务,适合快速交互式操作。
  • systemctl 命令: 现代、功能强大的 systemd 管理工具,是进行所有服务管理(尤其是脚本化)的首选和推荐方式。

  • 临时在命令行快速操作一下,用 service 也没问题。
  • 写脚本、配置系统、或者想更深入地控制服务,请务必使用 systemctl
分享:
扫描分享到社交APP
上一篇
下一篇