hpcstat 扩展功能

jykang@hpc.xmu.edu.cn 是许多人共用了一个账户(尽管是使用不同密钥认证的)。 这导致所有基于 linux 账户的工具都只能把这些人当作同一个人来对待, 许多功能都无法实现(例如,区分现在登陆的是谁,分用户统计核时,等)。

原则上来说,这个问题是没法彻底解决的。但是康老师又要求我去尽量解决这个问题(例如,统计每个人的核时、每个人登陆的时间等)。 因此我写了一个程序(起名叫 hpcstat)来尽量解决这些问题。

在解决掉这些棘手的问题之后,我也顺便加了一些额外的功能(列在下面)来方便我自己的使用。 如果你有需要,也可以使用。

⚠️
很多功能通过“滥用”TERM 变量来实现。 如果 TERM 变量的格式设置得不正确,PuTTY 登陆后一些程序会无法正常工作(但也不会造成更严重的问题), 因此尝试时应该仔细且小心,并且在尝试之前记下原来的 TERM 变量以便出错后恢复。

设置子账户

一个老师拿到密钥后,可能会将它分发给多个不同的学生。 如果希望区分不同学生(统计不同学生的使用情况,或者给不同学生设置不同的环境), 可以修改 TERM 变量,加上 hpcstat_subaccount:your_name: 前缀, 以此来进一步区分使用同一个密钥的不同用户。

对于 PuTTY 来说,TERM 变量在 Connection -> Data -> Ternimal-type string 中修改。 例如,如果原本的 TERM 变量是 xterm,那么修改后的 TERM 变量可以是 hpcstat_subaccount:chn:xtermTERM 变量只在交互式登陆时有效,因此无法在 WinSCP 中使用。

如果设置了这个参数,那么会额外统计不同子账户的使用情况(登陆次数、投递的任务、占用的核时,等)。 是否设置这个参数都不影响按密钥统计的功能(即,按照密钥统计的核时,是所有使用这个密钥的用户的总和,无论是否设置了这个参数)。 如果有需要(例如,希望为某个子账户设置特别的环境,同时又不希望影响到他人),也可以做到(通过测试 HPCSTAT_SUBACCOUNT 环境变量)。

子账户的统计结果仅供参考,这个统计结果显然很容易造假 (如果 A 和 B 都使用同一个密钥登陆,那么显然 B 可以在 TERM 中填入 A 的名字以假装自己是 A,把自己用的核时都算到 A 头上)。

PuTTY 登陆时自动跳转:

如果您希望在登陆时自动跳转到自己的目录下,可以在 TERM 中再增加以下前缀:chn_cd:your_path:

例如,将 TERM 变量修改为 chn_cd:linwei/chn:xterm,那么使用 PuTTY 登陆后会自动跳转到 linwei/chn 目录下。

如果同时使用了 hpcstat_subaccountchn_cd,那么 hpcstat_subaccount 必须在 chn_cd 之后, 例如 chn_cd:linwei/chn:hpcstat_subaccount:chn:xterm

任务进度微信通知:

用微信打开下面的链接:

https://wxpusher.zjiecode.com/wxuser/?type=1&id=75864#/follow

您应该会被引导去关注一个公众号(WxPusher 消息推送平台)。关注这个公众号之后会收到一条包含 UID 的消息。 然后把下面的信息发给我:

  • 您的 UID
  • 您使用的密钥的指纹(用 PuTTY 登陆时会提示)
  • 如果使用了子账户(在 TERM 中设置了 hpcstat_subaccount),还需要告诉我您设置的子账户名

之后您投递的任务有新进度(例如,开始运行、运行结束)时就会通过这个公众号收到通知。

需要注意的是,这个 UID 会被明文写到 jykang 上的文件里。 也就是说存在这样的风险:有权限登陆 jykang 的人都有权限通过这个公众号给您发消息。