一行命令kill所有被node占用端口
[code lang="bash"]lsof -i:3000 | grep node | awk '{ print $2 }' | xargs kill[/code]
[code lang="bash"]lsof -i:3000[/code]
列出所有占用3000端口的文件
[code lang="bash"]grep node[/code]
过滤结果,使其只包含有node的行
[code lang="bash"]awk '{ print $2 }'[/code]
awk对每一行进行处理 ,以空白符(空格、tab等)将每行数据分割,$0为所有数据,$N为第N列
- 可以用-F命令来指定分隔符,如 awk -F ':'
[code lang="bash"]xargs kill[/code]
xargs将管道中的读取的数据作为参数传递给kill
[code lang="bash"]cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'
name,shell
root,/bin/bash
daemon,/bin/sh
bin,/bin/sh
sys,/bin/sh
....
blue,/bin/nosh[/code]
awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。
- 开始时执行{print "name,shell"}
- 循环执行 {print $1","$7}
- 结束时执行 {print "blue,/bin/nosh"}
参考文章
- https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html
- https://brixly.uk/find-kill-processes-listening-specific-port/