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 内,这个值会更高,但我想要一种更可靠的方法来检查它。
尝试用谷歌搜索,但没有找到任何结果。
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