如何可靠地检查我是否位于由“systemd-run --shell”调用的 systemd shell 内?

问题描述 投票:0回答:1

systemd-run
提供
--shell
标志,用于打开新会话。我经常测试高内存应用程序,我这样使用它:

systemd-run --slice=restrict_memory.slice --shell --user

然后,当我运行应用程序时,如果它超出了

restrict_memory.slice
中定义的内存限制,OOM 就会杀死这个确切的 shell,我可以继续我的工作。

我想要的是可靠地检查我当前所在的 shell 是否是通过

systemd-run --shell
创建的。现在我检查
SYSTEMD_EXEC_PID
环境变量是否大于 2000 并在提示符中显示我正在 systemd shell 中运行(我使用 Fish shell)。我只是注意到,如果我在 systemd shell 内,这个值会更高,但我想要一种更可靠的方法来检查它。

尝试用谷歌搜索,但没有找到任何结果。

bash systemd fish
1个回答
0
投票
if grep -Fe /restrict-memory.slice/ /proc/self/cgroups; then
  echo "Running inside a restricted slice"
else
  echo "NOT running inside a restricted slice"
fi
© www.soinside.com 2019 - 2024. All rights reserved.