システムの紹介 各種手続き 使い方と注意事項 アプリケーション一覧 講習会情報 FAQ
HOME > ニュース

インタラクティブジョブの実行方法

ジョブの実行方法には、PBSなどのジョブスケジューリングツールを使って実行されるバッチジョブと、 直接実行するインタラクティブジョブがあります。
さらに、インタラクティブジョブの実行にも大きく分けて、2種類あります。
一つは、直接コマンドを実行させる方法と、スクリプトをあらかじめ作っておき、そのスクリプトを実行させる方法です。
ここでは、インタラクティブ実行のための最低限の利用方法を紹介しています。

直接コマンドを実行

直接コマンドを実行する場合には

% rung09 test.com test.log (Gaussian09の場合)

のようにします。
(先頭の % は、サーバが出力するプロンプトと呼ばれるもので、ユーザは入力しません。)

ログアウト後も継続して実行させたい場合には、以下のように先頭に nohup を、最後に & を つけてください。実行時に出力される番号は、メモを取っておくことをお勧めします。

% nohup rung09 test.com test.log  &
[1] 113110


スクリプトの実行

スクリプトを実行させる場合も、直接コマンド実行させる場合とほぼ同じです。 以下では、スクリプト名を test.csh とします。

% ./test.csh

もし、上記で Permission denied と言われた場合には、以下のコマンドを実行して パーミッションを与えてください。

% chmod u+x ./test.csh

のようにします。

ログアウト後も継続して実行させたい場合には、以下のように先頭に nohup を、最後に & を つけてください。実行時に出力される番号は、メモを取っておくことをお勧めします。

% nohup ./test.csh  &
[1] 113110


PBSスクリプトの利用

これまで使われていたPBSのバッチスクリプトを利用することも可能です。
例えば、以下の内容(ファイル名:test.qsub)の場合:

#!/bin/csh
#PBS -q SMALL
#PBS -N testjob

cd $PBS_O_WORKDIR
rung09 test001.com test001.log

次のように修正します。

#!/bin/csh
#PBS -q SMALL
#PBS -N testjob

#cd $PBS_O_WORKDIR      <----  先頭に # をつける(コメントになります)
rung09 test001.com test001.log

そして、

% nohup ./test.qsub &
[1] 113110

として実行します。実行時に出力される番号は、メモを取っておくことをお勧めします。 もし、上記で Permission denied と言われた場合には、以下のコマンドを実行して パーミッションを与えてください。

% chmod u+x ./test.qsub


ジョブの停止

& をつけてジョブを実行した場合の停止方法を紹介します。

% nohup ./g09.qsub &
[1] 113110

実行直後に表示される番号ですが、上記では [1] がジョブ番号で、113110 がプロセス番号(PID)と呼ばれるものです。

ログアウトしていない場合

ログアウトしていなければ、以下のように jobs コマンドを実行することでそのジョブの状況が表示されます。

% jobs
[1]  + Running                       ./g09.qsub

この場合には、

% kill %1    ←   % の後にジョブ番号を指定

のように、ジョブ番号を指定することでジョブを停止できます。

ログアウトした場合

ログアウトしてしまうと、jobs コマンドではジョブが参照できませんので、手順がやや複雑になります。
まず、ジョブのプロセス(親プロセス)を探し、そのジョブから呼び出されたすべてのプロセス(子プロセス)を 探して、それらジョブをすべてkillすることが必要になります。

例えば、ユーザ fukumoto が g09.qsub というスクリプトのプロセス番号を探したい場合、 以下のコマンドで、親プロセスの番号を見つけます。
実行時に出力されたプロセス番号が分かっている場合には、 この確認手順は不要ですが、メモを取った番号と同じか確認されることをお勧めします。

% ps -fu fukumoto | grep g09.qsub
fukumoto 113110      1  0 15:57 ?        00:00:00 /bin/csh ./g09.qsub
fukumoto 113375 113224  0 15:58 pts/9    00:00:00 grep g09.qsub

とします。

この出力から、g09.qsub のジョブのプロセス番号は 113110 であることが分かります。 次に、pstree -p コマンドで、各ジョブのプロセス番号を確認します。

% pstree -p 113110   ← 親プロセスの番号を指定
g09.qsub(113110)───time(113118)───rung09(113119)───.g09(113126)───l502.exe(113127)─┬─{l502.exe}(113526)
                                                                                   ├─{l502.exe}(113527)
                                                                                   ├─{l502.exe}(113528)
                                                                                   ├─{l502.exe}(113529)
                                                                                   ├─{l502.exe}(113530)
                                                                                   ├─{l502.exe}(113531)
                                                                                   ├─{l502.exe}(113532)
                                                                                   ├─{l502.exe}(113533)
                                                                                   ├─{l502.exe}(113534)
                                                                                   ├─{l502.exe}(113535)
                                                                                   ├─{l502.exe}(113536)
                                                                                   ├─{l502.exe}(113537)
                                                                                   ├─{l502.exe}(113538)
                                                                                   ├─{l502.exe}(113539)

上記プロセスを確実に削除するには、以下のように kill コマンドで削除します。

% kill -9 113110 113118 113119 113126 113127  ← l502.exe までのプロセス番号を指定
% pstree -pn 113526 ← 並列実行に生成されたプロセスの1つが無いことを確認

並列実行時には生成される子プロセスが多いため、その直前までのプロセスを kill すれば よいです。(場合によっては、1つ目もしくは2つ目までのプロセスだけを kill することでも済む場合がありますが、 その時にはそれ以降の子プロセスが存在しないことを確認してください。)



ご不明な点などありましたら、スパコンシステムまでお問合せください。