systemd - 如何停止用户@.服务安全吗?
问题描述
我正在尝试将 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 会话的工具?
解决方案
推荐阅读
- sockets - 使用 Kubernetes/Agones 的游戏网络
- c# - Firebase C# .net(如何上传 .pdf、.docs、.dwg 等任何类型的文件)?
- java - 是否改变了 Quarkus 1.13.7 和 Quarkus 2.0.0 之间处理 Vertx eventBus 多线程的方式?
- excel - 使用 VBA 设置空白数据透视表时出错
- authentication - 有没有办法将身份验证墙引入未经身份验证的网络应用程序?
- python - 我正在尝试从 URL 获取数据,当我第一次运行代码时它的工作但在它之后数据丢失了?
- unity3d - Unity2D:镜像乘法 - 如何在三消游戏中查看对手的屏幕
- flutter - Flutter 中 SingleChildScrollView 的 interactiveView 子项
- java - 在不使用额外内存的情况下打印具有内置函数的子数组
- kubernetes - helm chart - 按名称排列的值文件范围