スクリプトを送信する次の方法の違いを教えてもらえますか?
$ qsub script_name.sh
および
./script_name.sh
クラスターにジョブを送信する上記の2つの方法の違いは何ですか?
また、次のように入力する必要がある場合があります:
$ chmod +x script_name.sh
… ./script_name.sh
ジョブを送信しますか? qsub script_name.sh
と入力するだけでよい場合があるのはなぜですか?
申し訳ありませんがUnixにあまり詳しくありません。
コメント
- qsubとは何ですか?_
- @ HaukeLaging-私の答えを参照してください。
回答
コンピューティングクラスターを使用していますか?
qsub
について質問しているので、 GridEngine またはいくつかのコンピュータークラスタリング製品。
qsub
コマンドqsub script_name.sh
そのサーバーで実行するスクリプトを送信することをクラスターのヘッドノードに通知します。そのため、サーバーはスクリプトを含む同じファイルシステムにアクセスできる必要があります。たとえば、スクリプトがここにある場合、/home/myusername/script_name.sh
、このファイルは両方でアクセス可能である必要があります。 qsub
コマンドを実行しているコンピューターと、script_name.sh
を実行する予定のクラスター内の任意のノード。
スクリプトの実行
スクリプトを実行すると、./script_name.sh
クラスター上で何も実行されていません。このスクリプトをローカルで実行しています。システム。 「qsh
というコマンドを使用してクラスターでシェルを取得した場合は、クラスターのスケジューラノードがシェルを提供することを決定したノードでこのコマンドを実行します。
権限
スクリプトを作成して実行する場合は常に、スクリプトの権限を変更して、それを反映するようにシステムに意図を伝える必要があります。ファイルは実行可能です。それ以外の場合、ファイルはスクリプトではなく、単なるテキストファイルです。
次のようなファイルのアクセス許可が表示されます:
スクリプト
$ cat script_name.sh #!/bin/bash echo "hello world"
実行不可
$ ls -l script_name.sh -rw-rw-r--. 1 saml saml 32 Feb 25 18:11 script_name.sh $ ./script_name.sh bash: ./script_name.sh: Permission denied
実行可能
$ chmod +x script_name.sh $ ls -l script_name.sh -rwxrwxr-x. 1 saml saml 32 Feb 25 18:11 script_name.sh $ ./script_name.sh hello world
コメント
- こんにちは、ご返信ありがとうございます。しかし、"と言ったときの意味について少し混乱しています。'コマンドを使用してクラスターでシェルを取得した場合、qshの場合、'クラスター'のスケジューラノードがシェルを提供することを決定したノードでこのコマンドを実行します。"
- @ john_w-ここで使用しているクラスタリングテクノロジーは何ですか? GridEngineまたは他の何か?
- こんにちは、申し訳ありませんが、クラスタリングテクノロジーの意味がわかりません。私は、非常に初心者です。私はbashrcファイルを持っていることを知っています。 GridEngineを見つけるにはどうすればよいですか?コマンドラインでコマンドを入力して確認しますか?
- また、別のスクリプトを呼び出すスクリプトもあります。スクリプトstart_prephasing.shは、start_prephasing.shのループを使用してprephasing.shを呼び出します。 qsubを使用してstar_prephasing.shを送信していましたが、" / var / spool / n1ge / cn-r10-7 / job_scripts / 4304571:9行目:qsub:のエラーが表示されます。コマンドが見つかりません"。しかし、chmod + x start_prephasing.shと入力すると、prephasing.shの22個のジョブが正常に実行されます。理由はわかりませんが、' qsubstart_prephasing.shと./start_prephasing.shの違いをまだ完全には理解していないと思います。
- これはstart_prephasing.shスクリプトにあるもの:#$ -S / bin / bash#$ -cwd export HOME = / adp / home / hswong / CACTI / imputation / prephasing let a = 1 b = 22 while [$ a -le $ b] do qsub -q long.q -o〜 / queue -e〜 / queue prephasing.sh $ a #qsub -pe parallel 4 -q parallel_long.q -o〜 / queue -e〜 / queue prephasing.sh $ a let a = $ a +1完了