問題
クラスターでの自動化されたバッチ ジョブの実行に役立つ一連のスクリプトを作成しています。私が持っている特定のものは$OUTPUT_DIR
、および任意の$COMMAND
です。出力が
になるように を実行したいと思います。たとえば、 の場合、最終結果が と同等になるように実行したいと思います。理想的には、ソリューションは次のようになりますが、うまくいきません。$COMMAND
$OUTPUT_DIR
COMMAND='cp ./foo ./bar; mv ./bar ./baz'
cp ./foo ./$OUTPUT_DIR/baz
eval PWD="./$OUTPUT_DIR" $COMMAND
既知の解決策
【そして彼らの問題】
- 編集
$COMMAND
: ほとんどの場合、コマンドはスクリプト、またはコンパイル済みの C または FORTRAN 実行可能ファイルになります。これらの内部を変更することはオプションではありません。 - unionfs、aufs など: これは基本的には完璧ですが、これを実行しているユーザーは root を持っておらず、何千もの任意のマウントを引き起こすのは疑わしい選択のようです。
- コピー/ハード/ソフトリンク: これは私が使用しなければならない解決策かもしれません: コンテンツ全体を実際に複製するいくつかの
./
種類./$OUTPUT_DIR
cd $OUTPUT_DIR; ../$COMMAND
: ファイルを読み取ると失敗$COMMAND
します- pipes :
$COMMAND
ファイルを直接操作しない場合にのみ機能します。それが通常行うこと
私が見逃している別の解決策はありますか、それともこのリクエストは実際には不可能ですか?
[編集:]選択されたソリューション
ディレクトリ内の各オブジェクトが出力ディレクトリにシンボリック リンクされ、そこからコマンドが実行されるものを使用します。これには、多くのシンボリック リンクが作成されるという欠点がありますが、それほど悪くはありません。