首页 > 解决方案 > 如何停止用户@.服务安全吗?

问题描述

我正在尝试将 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 会话的工具?

标签: systemdslurmpam

解决方案


推荐阅读