如何安全地停止 user@<uid>.service?

问题描述

我正在尝试将 systemd 用户单位与 slurm 一起使用。为此,user@.service 必须正在运行。通常这是由 pam_systemd 实现的,例如调用ssh 登录用户

不幸的是,slurm 不使用 pam,所以我必须手工做事。 slurm 确实有一个 prolog.sh 和 epilog.sh,它们分别在每个作业之前和之后运行。所以在 prolog.sh 中我添加systemctl start user@<uid>.service,在 epilog.sh 中我添加systemctl stop user@<uid>.service

在这可以单独用于一项工作。但是,如果用户也通过 ssh 登录或有多个作业,则当作业完成时,“user@.service”将停止。只有当该服务的最后一个用户完成时才必须停止。

这就是我被难住的地方。我可以为工作或其他东西保留一个引用计数。但我还必须查明系统上是否还有其他会话在使用该服务。并以一种无种族的方式做到这一点。或者是否有启动/停止 pam 会话的工具?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)