加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – systemd:SIGTERM启动后立即启动

发布时间:2020-12-14 01:20:31 所属栏目:Linux 来源:网络整理
导读:我是第一次尝试systemd.我想在系统启动时启动一个进程.我在启动和运行方面遇到了问题. systemd应该运行一个脚本(start.sh).此脚本在后台启动进程(让我们称之为P)并使用代码0退出. P一直持续运行直到信号发生. 如果我手动运行start.sh一切正常. 如果我让它从s
我是第一次尝试systemd.我想在系统启动时启动一个进程.我在启动和运行方面遇到了问题.

systemd应该运行一个脚本(start.sh).此脚本在后台启动进程(让我们称之为P)并使用代码0退出.
P一直持续运行直到信号发生.

如果我手动运行start.sh一切正常.

如果我让它从systemd开始,P会在启动SIGTERM后立即启动并终止.

所以它开始但信号呢?
它终止了P,我不确定它的起源和原因.

也许我的单位错了,但我不知道如何根据我的需要设置它.
我试过service-type simple,idle和oneshot.

感谢帮助!
克里斯

这是我的单位.

[Unit]
Description=Test
After=sshd.service

[Service]
Type=oneshot
ExecStart=/home/max/start.sh start
Restart=no
User=root
SuccessExitStatus=0

[Install]
WantedBy=multi-user.target

这是地位.

Loaded: loaded (/etc/systemd/system/test.service; enabled)
Active: inactive (dead) since Die 2016-02-23 20:56:59 CET; 20min ago
Process: 1046 ExecStart=/home/max/test.sh start (code=exited,status=0/SUCCESS)

解决方法

当start.sh完成时,systemd会杀死与start.sh相同的cgroup中的所有内容

你的选择是:

>在Unit部分中设置KillMode进行处理(默认为control-group).这将导致systemd仅杀死它直接触发的进程.
>不要让start.sh在后台启动并退出,但要在前台执行它

我认为在您的情况下,选项2是可行且更直接的.

资料来源:https://unix.stackexchange.com/a/231201/45329

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读