web-dev-qa-db-ja.com

qsubを使用してタスクを常に実行することに不利な点はありますか?

コンピューターネットワークでタスクを実行しているときは? qsubanyタスクを実行すると、タスクが端末を占有せず、他のことができることに気付き始めました。同じ端末(タスクが完了するのに1分しかかからない場合でも非常に便利です)。

次に、qstatを実行して、どのタックが終了し、どのタックが終了していないかを確認します。

http://pubs.opengroup.org/onlinepubs/009604599/utilities/qsub.html はqsubの良い説明です。

3
InquilineKea

このような場合、私はむしろ別のターミナルを開きたいと思います。あなたがそれをしたくない理由は何ですか?

Qsubを実行することの欠点は、簡単な操作のために小さなスクリプトファイルを作成する必要があることです。これには時間がかかります。同じネットワークで作業している他のユーザーの数はわかりませんが、その目的は、クラスター上の複数のユーザーのジョブのスケジューラーとして意図されています。特に、利用可能な無料のコアがない場合、単純なジョブがキューに入れられ、時間がかかります。

代わりにscreenを検討しましたか? screenを使用すると、同じ端末で別のセッションを開始および一時停止できます。ワークフローは次のようになります

  • ターミナルでの作業
  • $ screen
  • あなたの小さな仕事
  • 画面を切り離す(Ctrl-aCtrl-d
  • ターミナルでの作業
  • $ screen -r (再開します)
  • この小さな仕事のステータスを確認してください
  • $ exit
  • そして、あなたは戻ってきました
5
Bernhard

標準のqsubよりもatを使用する利点は見当たりません。 atコマンドは「スクリプト」を取り、それを実行しますat現在の環境を使用して、特定の時間(「今」など)。次に、atqでステータスを確認するか、atrmでジョブを削除できます。

$ Nohup ./myscript myargs & # put script in the background
# almost the same as
$ echo ./myscript myargs | at now # computer runs script independent of terminals

myscriptが入力を検索しないようにする必要があります。

私自身、Bernhardが示唆しているように、どこに行っても1つのターミナルセッションでscreenを使用します。新しいウィンドウ(screen内)を開き、スクリプトを開始して、元のscreenウィンドウに切り替えます。

2
Arcege

qsubを使用して、通常は画面内でインタラクティブに実行するバックグラウンドジョブに不利な点は見られません。使用可能なクラスターがある場合、これは最適なソリューションです。

ジョブスケジューラを利用できますが、長い間、画面を使用して長時間実行されるジョブをバックグラウンドで処理したり、qsubスクリプト作成のオーバーヘッドをあまりかけずに並列処理を実現したりする傾向がありました。最終的に、このアプローチの制限が明らかになり、このqsubラッパーqgoを作成して、&screenqsubに置き換えることができるようにしました。

#!/bin/bash

mkdir -p qsubscripts

qsub -w $(pwd)/qsubscripts -d $(pwd) -M [email protected] $@ -S /bin/zsh -

私は好みのシェル(zsh)を使用していますが、もちろんこの引数を削除したり、他の引数を追加したりできます。 $@を使用すると、必要に応じて-l ncpus=4などのリソース仕様を含めることができます。スクリプトの使用方法は次のとおりです。

echo 'command -a 23 -b zz' | qgo | tee jobids

STDERR.*ファイルとSTDOUT.*ファイルは、現在の作業ディレクトリのqsubscriptsに書き込まれます。ジョブIDはThe working directory for the job is set as thecwd`でも提供されるため、これらの短いスクリプトを簡単に作成できます。

0
Erik Garrison