Centos7 .service WantedBy=multi-user.target
时间: 2024-04-28 17:25:30 浏览: 5
`WantedBy=multi-user.target` 是 `systemd` 中 `Unit` 配置项的一个参数,用于指定当前服务单元所依赖的目标单元。在 CentOS 7 中,`multi-user.target` 是一个系统级别的默认目标单元,它包含了所有用户级别的服务单元,如 SSH 服务、Web 服务等,因此指定 `WantedBy=multi-user.target` 就相当于将当前服务单元添加到这些服务的依赖项中,表示这个服务需要在多用户模式下运行。
具体来说,`WantedBy=multi-user.target` 的含义是:将当前服务单元添加到 `multi-user.target` 的依赖项中,当系统启动到多用户模式时,`multi-user.target` 会被激活,然后 `systemd` 就会自动启动当前服务单元。也就是说,这个参数的作用是将当前服务单元添加到系统启动流程中,确保在系统启动到多用户模式时能够自动启动该服务。
需要注意的是,`WantedBy` 参数只是指定了当前服务单元所依赖的目标单元,如果要指定其他服务单元依赖当前服务单元,则需要在其他服务单元的配置文件中使用 `Requires` 或 `Wants` 参数来指定。
相关问题
Centos7 .service 如何在保证在某个服务退出后再退出
在 CentOS7 中,可以使用 `systemd` 管理服务,并且可以通过配置 `.service` 文件来实现在某个服务退出后再退出的功能。
具体实现步骤如下:
1. 创建一个 `.service` 文件,例如 `my-service.service`,并将其存放在 `/etc/systemd/system/` 目录下。
2. 在 `my-service.service` 文件中添加以下内容:
```
[Unit]
Description=My Service
After=network.target
[Service]
Type=simple
ExecStart=/path/to/my/service
Restart=always
RestartSec=5s
KillMode=process
[Install]
WantedBy=multi-user.target
```
其中,`ExecStart` 指定了服务的启动命令;`Restart` 和 `RestartSec` 分别指定了服务在退出后重新启动的间隔时间;`KillMode` 指定了服务退出时的方式,`process` 表示发送 `SIGTERM` 信号杀死进程。
3. 在 `my-service.service` 文件中添加以下内容,表示本服务依赖于其他服务 `other-service`:
```
[Unit]
Requires=other-service.service
After=other-service.service
```
这样,`my-service` 服务就会在 `other-service` 服务启动之后启动,而在 `other-service` 服务退出之后退出。
4. 重新加载 `systemd` 配置文件,并启动 `my-service` 服务:
```
# systemctl daemon-reload
# systemctl start my-service.service
```
这样,`my-service` 服务就会在 `other-service` 服务启动后启动,而在 `other-service` 服务退出后才退出。
Centos7 .service 如何使服务最后一个退出
在CentOS 7中,可以通过在Systemd服务的unit配置文件中设置`ExecStopPost`指令来实现在服务最后一个退出时执行指定的命令。
`ExecStopPost`指令可以在服务停止之后立即执行指定的命令,而不管服务是正常停止还是非正常停止。通过在`ExecStopPost`指令中执行一些清理或者其他操作,可以确保服务在退出时完成所有必要的操作。
以下是一个示例systemd服务unit文件的片段,其中包含`ExecStopPost`指令:
```
[Unit]
Description=My Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/my-service
ExecStop=/usr/bin/killall my-service
ExecStopPost=/usr/bin/my-cleanup-script
[Install]
WantedBy=multi-user.target
```
在上面的示例中,`ExecStopPost`指令指定了`/usr/bin/my-cleanup-script`脚本,在服务最后一个退出时执行。请注意,`ExecStop`指令与`ExecStopPost`指令的区别在于,`ExecStop`指令只在服务正常停止时执行,而`ExecStopPost`指令则总是执行。
需要注意的是,如果服务是由于系统关机或重启而停止的,`ExecStopPost`指令可能不会执行。因此,如果需要在服务被强制停止时执行一些操作,可以使用`KillMode`指令来配置服务的行为。例如,可以使用`KillMode=process`来配置服务在被强制停止时仅杀死服务进程,并保留`ExecStopPost`指令的执行。