グローバル構成を変更するには、qconf –mconf コマンドを使用します。スケジューラを変更するには、qconf –msconf コマンドを使用します。
これらのコマンドにより、いずれもエディタで一時ファイルが開かれます。エディタを終了すると、この一時ファイルに保存したすべての変更がシステムにより処理され、ただちに変更が有効になります。一時ファイルを開くのに使用されるエディタは、EDITOR 環境変数により指定されたエディタです。 この変数が定義されていない場合、デフォルトでは vi エディタが使用されます。
EDITOR 環境変数を使用すると、qconf コマンドの動作を自動化できます。この変数の値を変更して、最初の引数により名前が指定されているファイルを変更するエディタプログラムを指定します。エディタで一時ファイルを変更し、エディタを終了すると、システムにより変更が読み込まれ、変更はただちに有効になります。
エディタ操作のあとファイルの変更時間が変更されないと、システムでは誤って、そのファイルが変更されなかったとみなされる場合があります。そのため、変更時間を異なるようにするため、ファイルに書き込む前に sleep 1 命令を挿入する必要があります。
この手法は、あらゆる qconf –m... コマンドに使用できます。特にスケジューラとグローバル構成の管理に便利です。これは、別の方法では手続きを自動化できないためです。
次の例では、スケジューラのスケジュール間隔を変更します。
#!/bin/ksh # sched_int.sh: modify the schedule interval # usage: sched_int.sh <n>, where <n> is # the new interval, in seconds. n < 60 TMPFILE=/tmp/sched_int.$$ if [ $MOD_SGE_SCHED_INT ]; then grep -v schedule_interval $1 > $TMPFILE echo "schedule_interval 0:0:$MOD_SGE_SCHED_INT" >> $TMPFILE # sleep to ensure modification time changes sleep 1 mv $TMPFILE $1 else export EDITOR=$0 export MOD_SGE_SCHED_INT=$1 qconf -msconf fi |
このスクリプトは、自分自身を指定するよう EDITOR 環境を変更します。続いてスクリプトは qconf –msconf コマンドを呼び出します。この 2 番目のスクリプトの入れ子呼び出しは、最初の引数により指定された一時ファイルを変更してから終了します。Grid Engine システムにより自動的に変更が読み込まれ、スクリプトの最初の呼び出しが終了します。