MSYS2:PID与windows 进程ID

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


你可能感兴趣的:(system)