#author("2021-09-13T18:00:06+09:00","","")
*OpenPBSでのジョブの実行 [#j5b28428]

[[OpenPBS:http://www.OpenPBS.org/]]で構築した複数ワークステーションからなるバッチシステムにジョブを依頼して、計算結果を得る方法を確認します。

**内容 [#hb6eb93a]
#contents
|2003-07-16||改訂1|
|2003-03-09|RIGHT:桑村 潤||

*OpenPBSへのジョブの依頼 [#gc09a2a9]

[[OpenPBSによるバッチシステム環境は既に構築されていることとします。>OpenPBS]]

サーバと実行ホストの設定が終わったら、ジョブを依頼(投入)してみます。キューサーバとすべての実行ホストにジョブを投入するユーザのアカウントをつくり、SSH系のリモートアクセスが自動的に可能になるように設定します(設定の仕方は[[VMNet]]を参照ください)。この際に、FQDN(フルクォリファイド・ドメインネーム)のホスト名でもアクセスできるようにしておいたほうが無難なようです。
ここでは、作成したアカウントのユーザIDを www とし、そのホームディレクトリを /home/www とします。

** プログラム実行シェルの作成 [#r171a048]

ジョブとして投入するプロシージャを記述したシェルを用意します。ここでは、簡単なコマンドを実行してみます。次のようなfindtest.shというシェルをつくりました。 

 $ cat findtest.sh 
 #!/bin/sh
 #PBS  -e /home/www/spool
 #PBS  -o /home/www/spool
 #PBS  -m be                                 
 pwd
 cd ${HOME}
 pwd
 find / -name \"*~\" -print
 sleep 60
 echo ${HOSTNAME}
 echo findtest

はじめの数行、"#PBS" で始まる行は PBS へのコマンドです。
- "#PBS -e  <dirname>" はエラー出力先のディレクトリを指定します。ホスト名の指定が無い場合はジョブを投入したホストになります。
- "#PBS -o  <dirname>" は標準出力先のディレクトリを指定します。
-- 出力先は mom の構成でリモートコピーの代わりにローカルなコピーとすることも可能です。
- "#PBS -m  [abe]" はメールで通知するタイミングを指定します。a: ジョブアボート時、b: ジョブ開始時、e: ジョブ終了時で、組合せ指定が可能です。
-- オプションについては qsub のオンラインマニュアルをご覧ください(man qsub)。

出力用のディレクトリを用意しておきます。ここではホームディレクトリ下の spool ディレクトリです。

 $ mkdir ~/spool


**ジョブの依頼 [#r3032df8]

ジョブの依頼(投入)は qsub コマンドで行います。

 $ qsub findtest.sh

いくつかジョブを投入してみました。


***ジョブの状態確認 [#u773378b]

ジョブの状態は ''qstat'' コマンドでみることができます。

 $ qstat 
 Job id           Name             User             Time Use S Queue
 ---------------- ---------------- ---------------- -------- - -----
 78.server        findtest.sh      www                     0 R dque
 79.server        findtest.sh      www                     0 R dque
 80.server        findtest.sh      www                     0 R dque


***通知メール [#d29c6ce3]

開始時のメールは次のような内容です。

 Date: Fri, 28 Feb 2003 21:10:04 +0900
 From: adm <adm@server.vmnet.rccm.jp>
 To: www@server.vmnet.rccm.jp
 Subject: PBS JOB 78.server.vmnet.rccm.jp
 
 PBS Job Id: 78.server.vmnet.rccm.jp
 Job Name:   findtest.sh
 Begun execution


終了後のメールは次のような内容です。

 Date: Fri, 28 Feb 2003 21:11:05 +0900
 From: adm <adm@server.vmnet.rccm.jp>
 To: www@server.vmnet.rccm.jp
 Subject: PBS JOB 78.server.vmnet.rccm.jp
 
 PBS Job Id: 78.server.vmnet.rccm.jp
 Job Name:   findtest.sh
 Execution terminated
 Exit_status=0
 resources_used.cput=00:00:00
 resources_used.mem=2840kb
 resources_used.vmem=12144kb
 resources_used.walltime=00:01:01


***実行結果 [#r4aa22d8]

実行結果は指定したディレクトリに標準出力ファイルがリモートコピーされます。

 $ cat /home/www/spool/78.server.s.OU 
 /home/www
 /home/www
 linux2.vmnet.rccm.jp
 findtest

-エラー出力があった場合は .ER という拡張子のファイルに出力されます。



*qsub 実行時のエラーについて [#j15b29a0]

 pbs_iff: cannot connect to host
 No Permission.
 qsub: cannot connect to server server (errno=15007)
-$PBS_ROOT/sbin/pbs_iff が setuid 0 になっていないか、オーナが root になっていない。

>>chmod u+s $PBS_ROOT/sbin/pbs_iff


 pbs_iff: error returned: 15008
 pbs_iff: Access from host not allowed, or unknown host
 No Permission.
 qsub: cannot connect to server server (errno=15007)
-サーバホストで acl_hosts の登録名に間違い。
-あるいは、 /etc/hosts に登録していたホスト名が間違いかも。

>>set server acl_host_enable = True

>>set server acl_hosts = *.vmnet.rccm.jp

>>set server acl_hosts + client.ether.rccm.jp


 qsub: Unauthorized Request 
- サーバホストで acl_users の設定に失敗している(切札の * は使えない)。

>> set server acl_user_enable = True

>> set server acl_users = adm@server.vmnet.rccm.jp

>> set server acl_users + www@server.vmnet.rccm.jp

>> set server acl_users + www@client.ether.rccm.jp


 qsub: Bad UID for job execution
-サーバホストの /etc/hosts.equiv か、~/.rhosts に登録がないジョブ依頼ホスト名の記載が無い。
-あるいは、サーバホストに 同じ名前の(ユーザ名のこと、uid番号は一致しなくてもよい)アカウントが無い。
-(あるいは、root ユーザでジョブを実行しようとした。)

>> echo "client.ether.rccm.jp" >> ~www/.rhosts