#$で始まるbashスクリプト行の意味は何ですか?


13

このbashスクリプトをGitHubで見つけて、自分の仕事に使用したいと思います。私の質問は次のとおりです。2行目から5行目はどういう意味ですか?彼らは単なるコメントですか、それとも何らかの目的を果たしていますか?

#!/bin/bash
#$ -l h_rt=72:00:00
#$ -V
#$ -N index_calc
#$ -j y

source ~/modules.sh

cd $1

l_file=`find . -name 'L*stack' -type f`
for l in $l_file; do
    echo "Running on file:"
    echo $l
      extract=${l:0:45}
    name=${extract}_index.tif
    echo "Name of index stack:"
    echo $name
    echo "Executing code..."
    ~/Documents/misc/spectral/transforms.py \
    -v $l $name evi ndvi nbr ndmi 

done

echo "Done!"

回答:


19

で始まる行#$は、のオプションqsub、SGEクラスターにジョブを送信するために使用されるコマンド、このreadmeで説明されているスケジューリングシステムです。

BIMSB(まもなくMAXと呼ばれる)クラスター環境を使用することは、ジョブの送信にUNIX / Linux環境を使用することと似ています(たとえば、スクリプトまたは他のソフトウェアを実行する)。違いは、必要なリソースを事前に指定する必要があることです。クラスターは、キューとリソースを整理するSGE(Sun Grid Engineソフトウェア)によって制御されます。この種のスケジューリングシステムは、限られた計算リソースを多くの人が共有する場合に必要です。また、複数のサンプルのアライメントを実行していて、それらのタスク(ジョブ)を複数のマシンまたはCPUに分散したい場合、または複数のCPUで長時間実行する必要がある統計シミュレーションを実行する場合に役立ちます。これらの場合やその他多くの場合、

SGEは「ジョブスケジューリング」を行います。つまり、すべてのジョブを送信でき、SGEは要求したリソースが利用可能になったときにそれらをキューに入れて実行します。SGEは、特定のノードが過負荷にならないようにジョブが分散される「負荷分散」も実現します。さらに、SGEを使用すると、ジョブが実行されているかどうかを確認したい場合に便利な「ジョブの監視とアカウンティング」を行うことができます。

qsubコマンドの構文はマンページで説明されており、スクリプトは次のオプションを使用します。

  • -l h_rt=<hh:mm:ss> –最大実行時間(時間、分、秒)を指定します
  • -V –すべての環境変数をジョブに渡す
  • -N <jobname>–ジョブの名前を指定します。これを使用するqstatと、ジョブのステータスを確認するために表示されます。
  • -j y[es]|n[o] –ジョブの標準エラーストリームを標準出力ストリームにマージするかどうかを指定します

qsubを使用してジョブをサブミットする方法 1を設定することができます説明qsubで始まる行のスクリプトで直接オプションを#$。これはqsub、コマンドラインのコマンドでそれらを渡す代わりになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.