Open xiwenAndlejian opened 6 years ago
|:管道操作符
|
用法:command1 | command2
command1 | command2
作用:command1 的输出将作为command2的输入
command1
command2
# 用 less 查看 /usr/bin 路径下的文件列表 $ ls -l /usr/bin | less # 查看当前服务器 8080 端口情况 $ netstat -tlpn |grep 8080
Awk设计语言
下面是一个杀掉当前系统中某个 JAVA 进程的过程
执行命令:ps aux |grep java
ps aux |grep java
获得类似如下输出:
user 10028 0.0 15.3 3550848 619128 ? Sl Oct09 13:02 java -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8911 -jar china-mobile-1.0-SNAPSHOT.jar --server.port=8922 --spring.profiles.active=dev user 14668 0.0 17.2 3651648 697048 ? Sl Sep19 40:12 java -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8901 -jar springboot-template-0.0.1.jar --server.port=8090 --spring.profiles.active=server user 19767 0.1 4.8 2708564 195100 ? Sl Oct02 29:03 java -Xms256m -Xmx256m -Dfile.encoding=UTF-8 -jar profit-latest.jar --app.env=prod user 26139 0.0 0.0 11760 2156 pts/3 S+ 22:42 0:00 grep --color=auto java user 26353 0.6 5.8 2563476 236024 ? Sl Sep25 212:58 java -Xms128m -Xmx128m -Dfile.encoding=UTF-8 -jar tale-least.jar
进一步获取上一步输出中springboot-template-0.0.1.jar的pid
springboot-template-0.0.1.jar
pid
首先明确搜索springboot-template-0.0.1.jar
对上一步命令进行增加:ps aux |grep java|grep springboot-template-0.0.1.jar
ps aux |grep java|grep springboot-template-0.0.1.jar
此时执行结果:
user 14668 0.0 17.2 3651648 697048 ? Sl Sep19 40:12 java -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8901 -jar springboot-template-0.0.1.jar --server.port=8090 --spring.profiles.active=server
此时数据只有一行,我们需要通过awk获取第二列(pid)的值
awk
进一步修改命令:ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'
ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'
执行结果:
14668
杀掉进程的命令kill -9
kill -9
按照之前的步骤,将命令修改为如下:ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'|kill -9
ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'|kill -9
但是这个命令实际是无法执行的,因为kill -9 没有获取到上一步中的输出作为它的参数,因此需要使用xargs
xargs
xargs:可以将管道或者标准输入(stdin)数据转换成命令参数,也能从文件的输出中读取数据。可以捕获另一个命令的输出,传递给另一个(下一个)命令
因此实际能执行的命令:ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'|xargs kill -9
ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'|xargs kill -9
这样执行之后就能杀掉指定名称的进程了。
Linux 管道 & awk - 杀掉指定名称的进程
管道线
|
:管道操作符用法:
command1 | command2
作用:
command1
的输出将作为command2
的输入示例
Awk
Awk设计语言
下面是一个杀掉当前系统中某个 JAVA 进程的过程
第一步:获取所有运行的 JAVA 进程
执行命令:
ps aux |grep java
获得类似如下输出:
第二步:使用 awk 获取进程 pid
进一步获取上一步输出中
springboot-template-0.0.1.jar
的pid
首先明确搜索
springboot-template-0.0.1.jar
对上一步命令进行增加:
ps aux |grep java|grep springboot-template-0.0.1.jar
此时执行结果:
此时数据只有一行,我们需要通过
awk
获取第二列(pid)的值进一步修改命令:
ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'
执行结果:
第三步:杀掉指定进程
杀掉进程的命令
kill -9
按照之前的步骤,将命令修改为如下:
ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'|kill -9
但是这个命令实际是无法执行的,因为
kill -9
没有获取到上一步中的输出作为它的参数,因此需要使用xargs
Xargs
xargs
:可以将管道或者标准输入(stdin)数据转换成命令参数,也能从文件的输出中读取数据。可以捕获另一个命令的输出,传递给另一个(下一个)命令因此实际能执行的命令:
ps aux |grep java|grep springboot-template-0.0.1.jar|awk '{print $2}'|xargs kill -9
这样执行之后就能杀掉指定名称的进程了。