MSYS2下启动的进程ID分两种:MSYS2空间的PID和windows的PID 以mysql为例,在MSYS2窗口启动mysqld
$ mysqld --console
如下我们在windows CMD窗口用netstat查找3306端口的进程ID为2356
C:\>netstat -aon | findstr 0.0.0.0:3306
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 2356
但在MSYS2下用ps
找到的PID却是9744
$ ps -ef |grep mysqld
guyadong 9744 1184 pty1 17:28:04 /j/facelog-install/3rd/mysql-5.6.44-winx64/bin/mysqld
网上一通找,找到这篇文章,找到了解决办法 《Mingw-users PID question - Correlation between MSYS - WINDOWS》
MSYS2的ps
有一个-W
参数用于显示MSYS进程对应的windows PID,上面的ps
命令加上-W
,参数效果如下
$ ps -efW |grep mysqld
guyadong 9744 1184 pty1 17:28:04 /j/facelog-install/3rd/mysql-5.6.44-winx64/bin/mysqld
0 2356 0 ? 17:28:04 D:\j\facelog-install\3rd\mysql-5.6.44-winx64\bin\mysqld.exe
第二行的输出结果中PID即为9744这个MSYS2 进程对应的window PID
以下为MSYS2的ps
输出的命令行帮助信息:
$ ps --help
Usage: ps [-aefls] [-u UID] [-p PID]
Report process status
-a, --all show processes of all users
-e, --everyone show processes of all users
-f, --full show process uids, ppids
-h, --help output usage information and exit
-l, --long show process uids, ppids, pgids, winpids
-p, --process show information for specified PID
-s, --summary show process summary
-u, --user list processes owned by UID
-V, --version output version information and exit
-W, --windows show windows as well as cygwin processes
With no options, ps outputs the long format by default