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

简介: 在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
  1. 禁用在其他运行级别的启动
    如果你不希望 nginx 在其他运行级别上启动,你需要删除或禁用那些级别对应的符号链接。例如,如果不想在运行级别2上启动 nginx,你可以执行:
sudo rm /etc/systemd/system/multi-user.target.wants/nginx.service
  1. 注意:运行级别2通常用于无网络的多用户文本模式,你可能不需要 nginx 在这个级别上运行。
  2. 重新加载 systemd 管理器配置
    修改符号链接后,需要重新加载 systemd 的配置,使更改生效。
sudo systemctl daemon-reload
  1. 检查服务状态
    使用 systemctl 命令检查服务的状态,确保它只在你指定的运行级别上启动。
sudo systemctl is-enabled nginx
  1. 这个命令将显示服务是否被设置为在运行级别3和5上启动。
  2. 启动或停止服务
    根据需要,你可以手动启动或停止服务:
sudo systemctl start nginx
sudo systemctl stop nginx
  1. 重启系统
    为了验证服务是否按预期工作,你可以重启系统,并检查 nginx 是否在指定的运行级别上启动。
sudo reboot

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

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


相关文章
|
22天前
|
Linux
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
|
11天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
10天前
|
NoSQL Linux Redis
Linux Redis 服务设置开机自启动
【9月更文挑战第2天】在 Linux 系统中,可使用两种方法设置 Redis 开机自启动:一是通过创建 `redis.service` 文件并利用 systemd 进行管理,包括定义服务参数和启动脚本;二是编辑 `/etc/rc.local` 文件,在其中添加启动命令。推荐使用 systemd 方法,因为它更符合现代 Linux 系统的设计理念。设置完成后,可通过 `sudo systemctl status redis.service` 检查服务状态。
|
19天前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
33 2
|
22天前
|
机器学习/深度学习 Ubuntu Linux
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
|
16天前
|
安全 JavaScript 前端开发
Nginx服务扫描漏洞修复
Nginx服务扫描漏洞修复
|
20天前
|
开发框架 .NET Linux
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
【Azure 应用服务】 部署到App Service for Linux 服务的Docker 镜像,如何配置监听端口呢?
|
20天前
|
应用服务中间件 Linux PHP
【Azure 应用服务】App Service For Linux 环境中,如何修改 Nginx 配置中 server_name的默认值 example.com
【Azure 应用服务】App Service For Linux 环境中,如何修改 Nginx 配置中 server_name的默认值 example.com
|
22天前
|
负载均衡 应用服务中间件 Linux
在Linux中,Nginx如何实现负载均衡分发策略?
在Linux中,Nginx如何实现负载均衡分发策略?
|
22天前
|
缓存 负载均衡 应用服务中间件
在Linux中,LVS与nginx有何区别?
在Linux中,LVS与nginx有何区别?