今天一不小心关掉了bash shell, 发现生成本地静态服务器的后台进程没有关闭。然而jobs
和 fg %1
命令已经找不到进程,且我只记住了port,忘记了这个后台进程的PID,所以在网上google 了老半天解决方式,其中大多数命令是 Linux 系统或 Mac 系统才有,而Windows 系统上的bash shell 没有,比如下面两个命令:
$ pgrep wget #wget 指的应用程序名称
1234
$ lsof -wni tcp:3000
$ fuser -k 3000/tcp
在试了众多命令之后,突然发现有一个命令会在bash shell 中产生乱码,而且其中某些命令参数是bash shell 没有的。
输出如下图:
乱码可能由于之前bash shell设置了编码的缘故,所以我打开了Windows 的命令行工具 cmd在中输入和上面同样的命令,得到一个关于netstat 命令参数的中文说明。阅读过后我将命令写成下面的方式:(这个命令在bash shell中可以正常显示)
netstat -naop TCP
输出如下图:
这样就可以找到port 为3000 的PID为7392。但是得到的这个PID 是WINPID,我们还要再将这个PID 在bash shell通过如下命令进行一个查找。得到如下结果
ps aux | grep 7392
结果如图:
这样就找到了真正的PID为7444 了,再 $ kill 7444
就大功告成。