gpt4 book ai didi

bash - Systemd 脚本在 ExecStart 之后立即执行 ExecStop

转载 作者:行者123 更新时间:2023-11-29 08:50:59 27 4
gpt4 key购买 nike

这是我的 Systemd 脚本:

[Unit]
Description=RDS Services

[Service]
WorkingDirectory=/home/rdsdb2/script_rds/
Type=oneshot
ExecStart=/bin/bash start_services.sh
ExecStop=/bin/bash stop_services.sh
KillMode=process

[Install]
WantedBy=multi-user.target

我不明白为什么它会顺序执行(在系统启动时或当我手动启动时)ExecStart 和 ExecStop。

你能帮帮我吗?

提前致谢。

最佳答案

Type=oneshot 用于文件系统检查或清理等单元,这些单元在不保持事件进程的情况下执行操作。此类 systemd 单元将等到 ExecStart 指定的进程终止,然后通过运行 ExecStop 指定的进程来停用。

Type=simple(默认设置)在使用ExecStart配置的进程是服务的主进程时使用。这些单元将等到 ExecStart 指定的进程返回,然后通过运行 ExecStop 指定的进程来停用。

使用 RemainAfterExit=yes 时,即使所有进程都已返回,服务也将被视为事件的,因此 ExecStop 指定的进程将不会自动运行。但是,不建议使用此设置,因为即使服务已崩溃,该服务仍将显示为事件状态。默认情况下禁用此设置。

Type=forkingExecStart 指定的进程预计在启动完成后退出,而其子进程继续运行时使用在后台运行。这是传统 UNIX 守护程序的行为,也是您的情况下的推荐选择。 ExecStop 设置是可选的,用于与服务通信以干净终止。 ExecStop 指定的进程将在服务崩溃时运行。在没有任何 ExecStop 选项的情况下,systemctl stop servicename 命令将简单地终止单元的剩余进程,如 KillMode 选项所指定.

关于bash - Systemd 脚本在 ExecStart 之后立即执行 ExecStop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30640717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com