关于 systemd 和桌面应用程序自动启动

大家好!我是大聪明-PLUS

升级到 openSUSE 15.5 后,我遇到了一些奇怪的问题:设置为开机自动启动的应用程序在尝试重启时开始崩溃。

这里需要指出的是,自重启的概念(至少在 POSIX 系统中)非常简单原始。我们启动一个新进程,将其整个环境*(包括打开的文件)* 复制到新进程中,然后退出。进程 ID (PPid) 重置为之前的父进程,瞧!我们就得到了一个新进程,*除了进程 ID 之外,*它看起来与之前的进程完全相同。

在 Linux 系统中, fork`--`fork是一个系统调用,它源于内核尚不支持命名空间的时代,并且不接受任何参数。` clone--` 是一个不同的、虽然类似但更新的系统调用,它可以用来将子进程放置在不同的命名空间中。

这个设备("respawn")还支持更新各种桌面软件。(当然,前提是您信任它在您的系统上执行此类操作。) Telegram 客户端也是如此。我的 xswitcher 中也实现了类似的功能。

系统更新后,它就彻底崩溃了。到处都找不到它。调试尝试显示进程启动、开始运行,然后静默终止。(收到 sigterm 或 sigkill 信号。我懒得在 xswitcher 里写个处理程序,所以才搞得这么混乱。)

如果不是机缘巧合,我或许会长时间惊叹于这种奇特的新"魔法"。在发布一个用于监控网络拓扑的巧妙脚本时,我决定"赶时髦",把cron它用在了\[ ... systemd.timer] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ]

于是,我一本正经地在单元文件中写道:

复制代码
ExecStart=`/bin/bash `-c` `'ERR=`/usr/local/sbin/xxx-check-topology.sh 2>&1` || (echo "$ERR" | /usr/bin/mail -s "xxx topology error(s) found" root)'

我正在整理。......令我惊讶的是,邮件比预期的要少。

怎么回事?我手动启动它------结果就出现了问题,真是让人抓狂。在清理过的环境中也会出现同样的情况(这是 Basatin 的常见问题)。我开始深入研究,发现这个" mail"(它被打包在各种各样的" mailutils"、" mailx"等等中)实际上是以异步模式运行的!(而且它还有一个特殊的" -Ssendwait"键,用于在不需要异步模式时使用。)

我认为,将"异步模式"应用于进程时并不恰当。mail它会创建子进程并立即退出,而不会等待子进程完成。

我开始上网搜索,发现很多人都遇到过这个问题。从某个版本开始systemd (无论安全、容错、包容性或其他什么方式) ,当它启动的进程终止时,它会杀死所有相关cgroup进程。但是,如果进程最初是通过其他方式启动的,然后"掉线"到 systemd.kill 函数systemd-user,那么这种方法就无效了。

这就是今天这篇作文的成果。我已经指出了问题所在,但我还不知道该如何妥善解决。

  • 一方面,你可以直接拍拍他们的手systemd。那里有个"不杀"的开关。但从长远来看,我对此持谨慎态度。当然,一位知名微软员工的劳动成果并非绝对邪恶。但它无疑会助长粗心大意。你不再需要操心所有这些"妖魔化"、日志记录和其他IT维护工作。"随便敷衍了事,systemd它就会帮你收拾残局。" 随时都可能出现这种情况:下一个软件开发人员已经把所有清理工作都委托给了systemd......

  • 另一方面,你也可以想办法蒙混过关,比如找个廉价的中间人帮忙。不过我觉得这种做法不太体面。

相关推荐
琥珀色糖5 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
长江后浪博客7 小时前
ESP32-SOLO-1 在 ESP-IDF v5.5 下启动不断重启问题分析与解决
单片机·嵌入式硬件·嵌入式·esp32·freertos·esp-idf
开心大爆炸8 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun29 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
苏生Susheng10 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
Ruiery10 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器
分支预测失败10 小时前
RISC-V AIA 中断架构实战:从 PLIC 到 APLIC 与 IMSIC 的迁移
linux·后端
GeW10 小时前
RHCE学习拿证计划:锁定核心考点,实现备考效率最大化
linux
snow@li10 小时前
服务器运维:Alibaba Cloud Linux 4 LTS 64位 根目录全景深度解析文章
linux·运维·服务器
苏生Susheng11 小时前
【软件实施】Linux企业运维常用命令手册
java·linux·运维·服务器·springboot·springcloud·软件实施