複数グループを使い分けるには
最終更新日:2023年7月27日一つのアカウントで複数の課題(グループ)に参加している場合、課題(グループ)毎に投入可能なリソースグループが異なります。
また、ディスク使用量の制限も課題(グループ)毎に設定されます。
これらの設定には、Linuxのユーザグループを使っています。
そのため、状況に応じてユーザグループを切り替えながら利用して頂く必要があります。
ユーザグループの切り替えに関する主な操作は以下の通りです。
-
ユーザグループの一覧表示
以下により、このアカウントで選択可能なユーザグループをすべて表示します。$ groups
-
現在選択しているユーザグループの表示
以下により、現在のアカウントの状態を表示します。現在選択されているユーザグループは gidの括弧内に表示されます。$ id
uid=10000(k12345a) gid=54321(gr123456) groups=54321(gr123456),10000(k12345a),11111(gr654321)
-
別のユーザグループで利用できるリソースグループへのジョブ投入
例えば gr654321 というユーザグループでジョブを投入したい場合、 まず、以下のように newgrpでユーザグループを変更します。$ newgrp - gr654321
その後、例えばジョブスクリプトのあるディレクトリに移動し、pjsubコマンドを使用すると、 gr654321 に許可されたリソースグループにジョブを投入できます。
ちなみに、もし、そのユーザグループに許可されていないリソースグループへのジョブ投入をしようとすると、 以下のメッセージが表示されます。[ERR.] PJM 0070 pjsub No execute: pjsub.
一方 pjsubコマンドのみを gr654321 というユーザグループで実行するには、以下のように sgコマンドを使用します。$ sg gr654321 'pjsub test.sh'
-
現在のディスク使用量や制限値の確認
例えばユーザグループ gr123456のディスク使用量や制限値は以下で表示できます。$ lfs quota -g gr123456 /home
-
ファイルの所属ユーザグループの変更
例えばファイル test.data の所属ユーザグループを gr654321 に変更するには、以下のように chgrpコマンドを使用します。$ chgrp gr654321 test.data
ファイル名に * 等を使って複数のファイルの所属ユーザグループを同時に変更したり、オプションに -Rを付けてディレクトリ全体の所属ユーザグループを変更したりすることが出来ます。
-
ジョブスクリプト中での出力ファイルのユーザグループ指定
例えば、ユーザグループ gr654321でしか利用できないリソースグループにジョブを投入し、 ジョブ内で作成されるファイルの所属ユーザグループは gr123456にしたい、という場合、 まずジョブスクリプト中の各実行コマンドを、以下のような形で sgコマンドから実行するようにします。sg gr123456 'mpiexec.hydra -n 16 ./main >& result.txt'
その後、そのジョブスクリプトの投入をユーザグループ gr654321 で実行します。 例えば sgコマンドを用いて、ジョブスクリプト test.sh を投入する場合は、以下のようにします。$ sg gr654321 'pjsub test.sh'
こうすることで、ジョブを投入するユーザグループと、結果のファイルを保存するユーザグループを別々に指定できます。