CodeGym /课程 /Docker SELF /服务管理基础: systemctl命令(启动、停止和重启服务)

服务管理基础: systemctl命令(启动、停止和重启服务)

Docker SELF
第 3 级 , 课程 0
可用

服务管理基础: systemctl命令(启动、停止和重启服务)

1. 什么是 Linux 的服务?

服务是任何现代 Linux 发行版的基础。想运行你的 Nginx 网页服务器?启动并配置对应的服务。想让 MySQL 数据库工作?还是服务。甚至你喜欢的 cron,它会运行那些超棒的 bash 脚本,这也是服务。管理服务是一个你不仅在工作中会用到的技能,也是个人项目中必不可少的。顺便提一句,在面试中,“你怎么停止一个服务?”这个问题比你想象的更常见。

定义和作用

Linux 中的服务是运行在后台的程序(也就是 daemon,来自英语的“守护进程”)。这些程序可以在系统启动时自动运行,也可以根据需要手动启动。它们负责执行特定任务,比如:

  • 处理网页请求(比如 nginx/apache)。
  • 支持远程访问(比如 openssh)。
  • 按计划运行任务(比如 cron)。

本质上,服务就是那些“幕后英雄”,它们完成了用户看不到的任务,但对系统的运行至关重要。


2. 使用 systemctl 管理服务的基础

什么是 systemctl

先说一下,systemctl 是用来管理服务的主要命令,适用于使用 systemd 的系统。如果你的系统运行在现代 Linux 发行版(比如 Ubuntu, Fedora 或 CentOS)上,很可能它就是用 systemd 的。

主要功能

  1. 启动服务: 启动已关闭的服务。
  2. 停止服务: 停止运行的服务。
  3. 重启服务: 先停止,然后重新启动服务。
  4. 检查状态: 查看当前服务的状态。

这是命令的基本结构:

sudo systemctl [操作] [服务名称]

启动和停止服务

启动:

假设你安装了 nginx 网页服务器并想启动它。可以用 start 命令:

sudo systemctl start nginx

停止:

如果你想暂时关闭网页服务器呢?可以用 stop 命令:

sudo systemctl stop nginx

重启服务

重启服务是为了应用配置更改或者简单地"刷新"服务(大概可以理解为给它喝杯咖啡,提醒它该干活了)。用 restart 命令:

sudo systemctl restart nginx

检查状态

你不确定 nginx 是否在运行?status 命令会提供详细信息:

sudo systemctl status nginx

输出结果会显示:

  • 唯一进程标识符 (PID)。
  • 启动时间。
  • 如果有问题,还会有错误日志。

输出示例:

nginx.service - A high performance web server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2023-11-01 09:00:00 UTC; 10min ago
   ...

3. 服务的开机自启

开启开机自启

为了让服务每次系统启动时自动启动,可以使用:

sudo systemctl enable nginx

关闭开机自启

如果你希望服务不再随系统启动时开启:

sudo systemctl disable nginx

这是一个简单的方法来检查服务是否开启了自启:

systemctl is-enabled nginx

服务管理实践

让我们以 cron 服务为例,做一个综合练习。

  1. 启动 cron 服务:

    sudo systemctl start cron
    
  2. 检查是否运行中:

    sudo systemctl status cron
    

    确认状态是 "active (running)"。

  3. 停止 cron 服务:

    sudo systemctl stop cron
    

    确认状态已变为 "inactive (dead)"。

  4. 重启 cron 服务:

    sudo systemctl restart cron
    

4. 活动、已关闭和故障服务之间的区别

服务可以处于不同的状态。以下是它们的主要类型:

  1. Active (running) — 服务正在运行;一切正常。
  2. Inactive (dead) — 服务已停止。
  3. Failed — 服务在启动、停止或执行时发生错误。

为了快速找到所有处于失败状态的服务,可以使用:

systemctl --failed

5. 常见错误和陷阱

错误: Unit not found

如果你收到类似这样的消息:

Failed to start nginx.service: Unit nginx.service not found.

这可能意味着你需要的服务要么没有安装,要么名字写错了。检查名称是否正确:

systemctl list-unit-files | grep nginx

权限错误

如果你忘了用sudo运行命令,很可能会遇到访问被拒绝的情况:

Permission denied

别忘了在systemctl命令前加上sudo


6. 在实际项目中的应用

管理服务是你在任何与 Linux 相关的岗位中都会用到的技能:

  • DevOps: 自动化并管理所有系统服务。
  • 服务器管理: 控制网页服务器、数据库以及其他服务的状态。
  • 基于 Linux 的开发: 你需要理解如何管理与你的项目相关的服务(比如启动开发服务器)。

因此,了解 systemctl 命令不仅仅是一个抽象技能,而是一个实实在在的工作工具。比如:需要在更新网站后重启网页服务器?只需调用 sudo systemctl restart nginx 就能搞定任务!

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION