1

私は中規模のプロジェクトを継承しました。このプロジェクトでは、メイン(バッチ)プログラムが、多くのプロセス制御(プロセスの完了の待機、スリープ、状態のチェックなど)を実行するシェルスクリプトの大規模なセットを介して作業を供給されます[およびperlスクリプトを介して再処理]

シェルスクリプトによるプロセス制御の他の例はありますか?比較として、他の人が何をしたか見てみたいです。(私は6,668行のシェルスクリプトがあまり好きではないので)

現在のプログラムが機能し、メンテナンスの理由で混乱する必要がないことにつながる可能性があります-それは面倒であり、別の方法で行うとメンテナンスが簡単になりますが、他の例が必要です。

質問の「一般性」を減らすために、ここに私が探しているものの例があります:procsup

4

3 に答える 3

0

これはひどくバグのあるシェルスクリプトです。リファクタリングを検討しましたか?

その音からすると、数行のコードをシェル関数の呼び出しに置き換えることができる場合がたくさんあるかもしれません。この方法でコードを単純化できれば、ロジックのどこにエラーがあるかを簡単に確認できます。

私はこの戦術を巨大なPERLスクリプトでうまく使用しましたが、簡単に元に戻せる方法で難読化されたパスワードが埋め込まれているため、重大な論理エラーが発生し、セキュリティ上のリスクがあることが判明しました。公開されたパスワードは、未知の人物(不満を持った従業員)がグローバルネットワーク全体をシャットダウンするために使用した可能性があります。

このスクリプトは非常に重要であるため、一部のマネージャーはセキュリティ例外の作成に傾倒していましたが、論理エラーが説明され、このスクリプトが誤ったデータを提供していることが明らかになったとき、ダーティデータよりも優れたデータはないと判断されました。そのスクリプトを書いた人は、PERLの本とスクリプトの書き方を自分で学んだ。

于 2011-02-25T04:46:31.227 に答える
0

これは非常に一般的な質問であるため、具体的な回答を与えるのは少し難しいかもしれません。(そして、5000行の長い例には満足できません。)おそらく、アプリケーションのアーキテクチャーに欠陥があり、かなり完全なやり直しが必要です。

おそらくすでにご存知のように、bashを使用したプロセス制御は非常に簡単です。

./test_script.sh &
test_script_pid=$!
wait $test_script_pid # waits until it's done
./test_script2.sh
echo $? # Prints return code of previous command

たとえば、Pythonサブプロセス(または明らかにPerl)でも同じことができます。多数の異なるプログラムを含む複雑なアーキテクチャを使用している場合、プロセスは明らかに重要です。

于 2011-02-23T14:24:27.187 に答える
0

Inquisitorプロジェクトは、シェルスクリプトからのプロセス制御に大きく依存しています。メイン関数が設定されたディレクトリ、または実行されているテスト(つまりスレーブプロセス)が含まれたディレクトリを確認することをお勧めします。

于 2011-02-24T08:07:47.530 に答える