我想重新启动我在服务器上运行的许多Node.js进程之一.如果我运行ps ax | grep节点我得到了所有Node proccesses的列表,但它没有告诉我他们在哪个端口.如何杀死在端口3000上运行的那个(例如).管理多个Node进程的好方法是什么?
解决方法
如果您运行:
$netstat -anp 2> /dev/null | grep :3000
你应该看到类似的东西:
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 5902/node
在这种情况下,5902是pid.你可以使用这样的东西来杀死它:
netstat -anp 2> /dev/null | grep :3000 | awk '{ print $7 }' | cut -d'/' -f1 | xargs kill
这是使用egrep的替代版本,可能会更好一点,因为它专门搜索字符串’node’:
netstat -anp 2> /dev/null | grep :3000 | egrep -o "[0-9]+/node" | cut -d'/' -f1 | xargs kill
您可以将上述内容转换为脚本或将以下内容放在〜/ .bashrc中:
function smackdown () { netstat -anp 2> /dev/null | grep :$@ | egrep -o "[0-9]+/node" | cut -d'/' -f1 | xargs kill; }
现在你可以运行:
$smackdown 3000