背景:
手動でプロジェクトパスにTomcatのプロジェクト、毎回CDを再起動する必要があります---> CDビン---> ./ startup.sh毎日の仕事は、時には、非常に迷惑な繰り返しのCDは、CD、CDとなっています。ある時私の同僚は、自動化されたスクリプト、それに入れていないか、と言いますか?たびに、このようなことをやって、時間の無駄を超えます。私はハンズフリーのスクリプトを書くことにしました。
pythonを検討する前に、我々は後に放棄され、実現しなければなりません。現在、Pythonのサーバのバージョンは、Python 3.xの最新バージョンで、2.6.6です
要件:
パラメータの引き渡し:私は(プロジェクト名パラメータ)の方法により、Tomcatのプロジェクトを再起動するためのスクリプトを使用したいです。
スクリプト名:restartApp.sh
SH restartApp.shのtomcat-8107:スクリプトを実行します。
コード:
#!/ binに/ bashの SET -x #ps_result = `PSの-ef | grepをTomcatの|はgrep $ 1` #echo "$ {} ps_result " エコー-e" N- \ N- \ \ N-" PIDS =` PSの-ef | grepをTomcatの|はgrepの$ 1 |。はgrepの-v 'はgrep' |はgrepの-v 'restartApp.sh' | awkの印刷$ {2} ' ` COUNT = 0 pid_num = 0 $でのPIDのために{} PIDS DO pid_num PID = $ {} エコー"pid_num:pid_num $ {}" #のCOUNTはexpr $ = '1' {COUNT} + COUNT = $(($カウント+ 1)。) エコー"COUNT:$ {COUNT}" DONE [[$カウント-gt IFを1] ] その後、 「プロジェクトは、2つの異常なプロセスを持っている」エコー 他 殺す-9 $ PIDは} { エコー「成功キルPIDS $ {}を!」 #が再起動し エコー「.......でリブート」 /home/lifesea/$1/bin/startup.shのSh - Fiの エコー-e "\ N \ N \ N"
知識ポイント:
-
#!/ binに/ bashがシェルのルートパスの後ろに、#!特殊文字表現、実装を説明するために、このスクリプト/ binに/ bashのを使用することを指し、このスクリプトを説明することです。
- グレップの-vはrestartAppはラインがrestartAppフィールドが含まれていないことが判明している-v grepなど、意味の逆引きです
- 次のようにパスシェル変数は以下のとおりです。
スクリーンショットのテキスト出典ます。https://www.cnblogs.com/bclshuai/p/7409773.html -
awkは '{$ 2印刷}' 2番目のフィールドを印刷
問題が発生しました:
1.利用抗アポストロフィ、初めて使用
2。
始まり:なし追加 下図のように(grepを除く)3は、あるプロセスをチェックアウトする「restartApp.sh」リード-v grepのを
更改后ます。ps -ef | グリップのTomcat | grepの$ 1 |はgrep -v 'グリップ' | grepをする-v 'restartApp.sh' | awkは '{$ 2印刷}'
実行次の文は、次の図の結果を描きます
$ 1変更します。grep tomcatに-8107
#ps_result = `のps -ef | grepのtomcatと| grepの$ 1`
#echo "$ {} ps_result"
サーバのデバッグ・スクリプト3.スクリプトVimは低い効率をもたらす、慣れていない理由をrestartApp.shため。
vimの一般的に使用されるショートカットキー:
:セット番号の表示行番号
:セット冗長ログ出力を-x
前方の時間
Jダウン
k 向上
L権
今日まで、昨日の午後からZNN 4.おかげで、私は問題を突き止める支援してきました。