ps -ef | grep catalina | grep -v grep
システムで実行されているTomcatプロセスを印刷するために使用します。
kshitiz 7099 1 0 May11 ? 00:02:29 /usr/lib/jvm/jdk1.8.0/bin/java -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:38156 -Dcatalina.base=/home/kshitiz/Documents/workspaces/ggts/.metadata/.plugins/org.eclipse.wst.server.core/tmp1 -Dcatalina.home=/opt/tomcat-7.0.42 -Dwtp.deploy=/home/kshitiz/Documents/workspaces/ggts/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps -Djava.endorsed.dirs=/opt/tomcat-7.0.42/endorsed -Dfile.encoding=UTF-8 -classpath /opt/tomcat-7.0.42/bin/bootstrap.jar:/opt/tomcat-7.0.42/bin/tomcat-juli.jar:/usr/lib/jvm/jdk1.8.0/lib/tools.jar org.apache.catalina.startup.Bootstrap start
次にそれを使用してps -ef | grep catalina | grep -v grep | awk -F' ' '{print $2}'
プロセスIDを抽出します。
7099
しかし、コマンド全体にエイリアスを追加してalias tomcat_id="ps -ef | grep catalina | grep -v grep | awk -F' ' '{print $2}'"
エイリアスを使用すると、テキスト全体が印刷され、awk
機能しないようです。
type tomcat_id
以下を提供します。
tomcat_id is aliased to `ps -ef | grep catalina | grep -v grep | awk -F' ' '{print }''
ベストアンサー1
エイリアスの一般的な規則:エイリアスがエイリアスと比較して複雑すぎる場合は、代わりに関数を使用してください。
tomcat_id () {
ps -ef | grep catalina | grep -v grep | awk -F' ' '{print $2}'
}
エイリアス定義の問題は、誤って引用したことです。エイリアスを定義する行は、シェルによって解析されるシェルコマンドです。二重引用符を使用し、当時は位置引数がなかったので(したがって空の$2
文字列に展開されます)、定義したエイリアスは次のようになります。
ps -ef | grep catalina | grep -v grep | awk -F' ' '{print }'
エイリアスを定義する簡単な方法は、定義に一重引用符を使用し、aliasコマンドで一重引用符を使用しないことです。これを行うと、とにかくデフォルト値を削除しました-F " "
(「空白」のように見えますが、「空白のシーケンス」を意味するので少し奇妙です)。
alias tomcat_id='ps -ef | grep catalina | grep -v grep | awk "{print \$2}"'
あるいは、'\''
単一引用符を使用して、単一引用符リテラル内で効果的に引用することもできます。
alias tomcat_id='ps -ef | grep catalina | grep -v grep | awk '\''{print \$2}'\'
しかし、上記のように関数を使用する方がはるかに明確です。または、作業に適したツールを使用してください。
alias tomcat_id='pgrep catalina'
または
alias tomcat_id='pidof catalina'