我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 }''
别名的一般规则:如果别名变得太复杂,请改用函数。
tomcat_id () {
ps -ef | grep catalina | grep -v grep | awk -F' ' '{print $2}'
}
别名定义的问题是引号错误。定义别名的行是一个shell命令,并由shell进行解析。由于您使用了双引号,并且当时可能没有位置参数(因此$2
扩展为空字符串),因此您定义的别名为
ps -ef | grep catalina | grep -v grep | awk -F' ' '{print }'
定义别名的简单方法是对定义使用单引号,并避免在别名命令中使用单引号。在使用它的同时,我已经删除了-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'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句