作者信息:https://home.cnblogs.com/u/huangjiabobk

在Linux中,如何让某个服务(假如服务名为 nginx)只在3,5两个运⾏级别开启,其他级别关闭?

在Linux中,使用 systemd 管理服务时,可以通过修改服务单元文件来控制服务在哪些运行级别上启动。运行级别(runlevel)是系统启动时的一组服务集合,每个级别定义了一组应该启动或停止的服务。

以下是如何设置服务(例如 nginx)只在特定的运行级别(比如3和5)上启动的步骤:

  1. 找到服务的单元文件
    通常,服务的单元文件位于 /etc/systemd/system/ 目录下。对于 nginx,单元文件可能是 nginx.service

  2. 创建或编辑符号链接
    systemd 使用 /etc/systemd/system/multi-user.target.wants/(对于运行级别3)和 /etc/systemd/system/graphical.target.wants/(对于运行级别5)目录下的符号链接来控制服务的启动。你需要创建指向 nginx.service 的符号链接。

    sudo ln -s /etc/systemd/system/nginx.service /etc/systemd/system/multi-user.target.wants/nginx.service
    sudo ln -s /etc/systemd/system/nginx.service /etc/systemd/system/graphical.target.wants/nginx.service
    
  3. 禁用在其他运行级别的启动
    如果你不希望 nginx 在其他运行级别上启动,你需要删除或禁用那些级别对应的符号链接。例如,如果不想在运行级别2上启动 nginx,你可以执行:

    sudo rm /etc/systemd/system/multi-user.target.wants/nginx.service
    

    注意:运行级别2通常用于无网络的多用户文本模式,你可能不需要 nginx 在这个级别上运行。

  4. 重新加载 systemd 管理器配置
    修改符号链接后,需要重新加载 systemd 的配置,使更改生效。

    sudo systemctl daemon-reload
    
  5. 检查服务状态
    使用 systemctl 命令检查服务的状态,确保它只在你指定的运行级别上启动。

    sudo systemctl is-enabled nginx
    

    这个命令将显示服务是否被设置为在运行级别3和5上启动。

  6. 启动或停止服务
    根据需要,你可以手动启动或停止服务:

    sudo systemctl start nginx
    sudo systemctl stop nginx
    
  7. 重启系统
    为了验证服务是否按预期工作,你可以重启系统,并检查 nginx 是否在指定的运行级别上启动。

    sudo reboot
    

请注意,systemd 的目标(target)系统允许更灵活的服务管理。例如,multi-user.target 代表多用户文本模式,graphical.target 代表图形界面模式。你可以根据需要将服务链接到适当的目标。

综上所述,systemd 的配置文件 /etc/systemd/system/nginx.service 也可以直接编辑,以使用 [Unit] 下的 WantsBindsTo 指令来指定服务依赖的其他服务或目标,但这通常不是必需的,除非你需要更复杂的依赖关系。

posted @ 2024-06-28 11:07  黄嘉波  阅读(5)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波