<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]ps -eo 自定义查看进程组之pid ppid 虚拟内存vsz和实际物理内存rss和命令行cmd的输出方法。lsof -nPp pid查看程序的IP和端口连接情况。stress-ng,并能用lsof -nPp 查看cwd的dir目录位置以方便目录定位,lsof -d 5grep 2654实现反debug程序PID里的fd对应的tcp连接句柄。ls /proc/57700/cwd/，删目录前看是否有进程打开了目录里的文件之lsof命令。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Wed, 26 Sep 2018 15:31:15 +0000</pubDate> 
<guid>https://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	sh -c &quot;ps -C minivtun -o pid,ppid,pgrp,session,comm&quot;<br/>sh -c &quot;ps -C minivtun -o pid,ppid,pgrp,session,comm&quot;<br/>&nbsp;&nbsp;PID&nbsp;&nbsp;PPID&nbsp;&nbsp;PGRP&nbsp;&nbsp;SESS COMMAND<br/>&nbsp;&nbsp;943&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; 940&nbsp;&nbsp; 940 minivtun<br/><br/><br/>sudo fstat -p 42477 &#124; grep my.cnf 打开后关掉了，无法找到。<br/>cat /usr/local/etc/rc.d/mysql-server &#124;grep my.cnf<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $&#123;mysql_confdir&#125;/my.cnf if it exists.<br/>if [ -f &quot;$&#123;mysql_confdir&#125;/my.cnf&quot; ]; then<br/>: $&#123;mysql_optfile=&quot;$&#123;mysql_confdir&#125;/my.cnf&quot;&#125;<br/>elif [ -f &quot;$&#123;mysql_dbdir&#125;/my.cnf&quot; ]; then<br/>: $&#123;mysql_optfile=&quot;$&#123;mysql_dbdir&#125;/my.cnf&quot;&#125;<br/><br/> sh&nbsp;&nbsp;-x /usr/local/etc/rc.d/mysql-server&nbsp;&nbsp;start //于是直接-x找my.cnf<br/>+ : /usr/local/etc/mysql<br/>+ [ -f /usr/local/etc/mysql/my.cnf ]<br/>+ [ -f /var/db/mysql/my.cnf ]<br/>ls /etc/mysql/my.cnf /etc/my.cnf /usr/local/mysql/my.cnf /usr/local/etc/my.cnf /usr/local/etc/mysql/my.cnf /var/db/mysql/my.cnf<br/><br/><br/>ps -eo pid,ppid,pgrp,session,comm --forest&#124;less&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# Linux上使用,Macbook: brew install pstree ,用pstree<br/><br/>ps -eo pid,ppid,pgrp,session,comm&#124;grep -E &#039;(Google&#92; Chrome&#124;chrome)&#039;<br/><br/>一）基础命令：删目录前看是否有进程打开了目录里的文件之lsof命令。<br/>lsof -c abc 显示abc进程现在打开的文件<br/>lsof -p&nbsp;&nbsp;列出进程号为1234的进程所打开的文件<br/>lsof -c java&nbsp;&nbsp;#实践成功<br/>lsof&nbsp;&nbsp;-p&nbsp;&nbsp;51640&nbsp;&nbsp;#实践成功<br/>lsof -g gid 显示归属gid的进程情况<br/>lsof -g 0&#124;grep zcms-0103<br/>lsof&nbsp;&nbsp;app-2020-08-05.log&nbsp;&nbsp;&nbsp;&nbsp;#lsof abc.txt 显示开启文件abc.txt的进程<br/>lsof&nbsp;&nbsp;-d 4 #lsof -d 4 显示使用fd为4的进程,每个进程PID里都是从0，1，2，3，4开始的，出来的有4的所有进程列表。<br/>lsof abc.txt 显示开启文件abc.txt的进程<br/>来自：https://blog.csdn.net/weixin_34019929/article/details/92364579<br/><br/>二）常用想删目录时查看进程是否打开并在访问：<br/>lsof +d /usr/local/ 显示目录下被进程开启的文件<br/>lsof +D /usr/local/ 同上，但是会搜索目录下的目录，时间较长<br/><br/>lsof +d /data/www/zcms3x/zcms-0103<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp; PID USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE DEVICE SIZE/OFF&nbsp;&nbsp;&nbsp;&nbsp;NODE NAME<br/>oosplash&nbsp;&nbsp;49169 root&nbsp;&nbsp;cwd&nbsp;&nbsp;&nbsp;&nbsp;DIR 253,17&nbsp;&nbsp;&nbsp;&nbsp; 4096 5245406 /data/www/zcms3x/zcms-0103<br/>soffice.b 49188 root&nbsp;&nbsp;cwd&nbsp;&nbsp;&nbsp;&nbsp;DIR 253,17&nbsp;&nbsp;&nbsp;&nbsp; 4096 5245406 /data/www/zcms3x/zcms-0103<br/><br/>lsof +D /data/www/zcms3x/zcms-0103<br/>COMMAND&nbsp;&nbsp;&nbsp;&nbsp; PID USER&nbsp;&nbsp; FD&nbsp;&nbsp; TYPE DEVICE SIZE/OFF&nbsp;&nbsp;&nbsp;&nbsp;NODE NAME<br/>oosplash&nbsp;&nbsp;49169 root&nbsp;&nbsp;cwd&nbsp;&nbsp;&nbsp;&nbsp;DIR 253,17&nbsp;&nbsp;&nbsp;&nbsp; 4096 5245406 /data/www/zcms3x/zcms-0103<br/>soffice.b 49188 root&nbsp;&nbsp;cwd&nbsp;&nbsp;&nbsp;&nbsp;DIR 253,17&nbsp;&nbsp;&nbsp;&nbsp; 4096 5245406 /data/www/zcms3x/zcms-0103<br/><br/><br/>kubectl exec stress-pod -- ps -o &quot;rss,vsz,comm&quot;&#124;grep -v VSZ<br/>2576 6256 stress-ng<br/>3628 6900 stress-ng-cpu<br/>&nbsp;&nbsp;64 6256 stress-ng-vm<br/>135m 262m stress-ng-vm<br/>&nbsp;&nbsp; 4 1504 ps<br/><br/>rss： 物理<br/>vsz： 虚拟<br/>VSS - Virtual Set Size 虚拟耗用内存（包含共享库占用的内存）<br/>RSS - Resident Set Size 实际使用物理内存（包含共享库占用的内存）<br/><br/>背景：在多进程时，用那个叫物理内存、虚拟内存的，怎么看？https://blog.csdn.net/i_am_jojo/article/details/7862362<br/><textarea name="code" class="php" rows="15" cols="100">
ps -eo &#039;pid,ppid,vsz,rss,cmd&#039;&#124;grep -E &#039;(redis&#92;-server&#124;malloc)&#039;
&nbsp;&nbsp;781&nbsp;&nbsp;&nbsp;&nbsp; 1 141192 10700 /usr/local/redis/bin/redis-server 10.44.202.1**:6379
</textarea><br/>ps -eo pid,ppid,gid,sid,tty,cmd --forest&#124;less<br/><br/><br/>&nbsp;&nbsp;-e&nbsp;&nbsp;&nbsp;&nbsp; Select all processes.&nbsp;&nbsp;Identical to -A.<br/>&nbsp;&nbsp;-o format<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User-defined format.&nbsp;&nbsp;format is a single argument in the form of a blank-separated or comma-separated<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list, which offers a way to specify individual output columns.&nbsp;&nbsp;The recognized keywords are described<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in the STANDARD FORMAT SPECIFIERS section below.&nbsp;&nbsp;Headers may be renamed (ps -o pid,ruser=RealUser -o<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comm=Command) as desired.&nbsp;&nbsp;If all column headers are empty (ps -o pid= -o comm=) then the header line<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will not be output.&nbsp;&nbsp;Column width will increase as needed for wide headers; this may be used to widen<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;up columns such as WCHAN (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm).&nbsp;&nbsp;Explicit width control (ps opid,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wchan:42,cmd) is offered too.&nbsp;&nbsp;The behavior of ps -o pid=X,comm=Y varies with personality; output may<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be one column named &quot;X,comm=Y&quot; or two columns named &quot;X&quot; and &quot;Y&quot;.&nbsp;&nbsp;Use multiple -o options when in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doubt.&nbsp;&nbsp;Use the PS_FORMAT environment variable to specify a default as desired; DefSysV and DefBSD are<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;macros that may be used to choose the default UNIX or BSD columns.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -C cmdlist<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select by command name.&nbsp;&nbsp;This selects the processes whose executable name is given in cmdlist.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --forest<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASCII art process tree.<br/><br/>#ps -eo &#039;pid,ppid,gid,sid,tty,cmd&#039; &#124;grep Easy<br/>26721 62388&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole<br/>26722 26721&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole<br/>26744 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Crontab<br/>31311 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Worker.0<br/>31312 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Worker.1<br/>31313 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Worker.2<br/>31314 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Worker.3<br/>31315 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Worker.4<br/>31316 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Worker.5<br/>31317 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Worker.6<br/>31318 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.Worker.7<br/>31319 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.TaskWorker.8<br/>31320 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.TaskWorker.9<br/>31321 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.TaskWorker.10<br/>31322 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.TaskWorker.11<br/>31323 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.TaskWorker.12<br/>31324 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.TaskWorker.13<br/>31325 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.TaskWorker.14<br/>31326 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;EasySwoole.TaskWorker.15<br/><br/>对Crontab进行查看：<br/>lsof -nPp 26744&#124;grep swoole.log<br/>php&nbsp;&nbsp;&nbsp;&nbsp; 26744 root&nbsp;&nbsp; 11u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;253,0&nbsp;&nbsp;39874179 100744037 /data/logs/php/swoole.lo<br/><br/>#lsof -nPp 26721 &#124;grep LISTEN<br/>php&nbsp;&nbsp;&nbsp;&nbsp; 26721 root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;&nbsp;&nbsp; IPv4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 763966&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0t0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP *:8080 (LISTEN)<br/>php&nbsp;&nbsp;&nbsp;&nbsp; 26721 root&nbsp;&nbsp; 10u&nbsp;&nbsp;&nbsp;&nbsp; IPv4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 762762&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0t0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP 127.0.0.1:9000 (LISTEN)<br/><br/><br/>26721 62388&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole<br/>26722 26721&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole<br/>26742 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ HotReload<br/>26743 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ KafkaAddFormId<br/>26744 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Crontab<br/>31311 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Worker.0<br/>31312 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Worker.1<br/>31313 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Worker.2<br/>31314 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Worker.3<br/>31315 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Worker.4<br/>31316 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Worker.5<br/>31317 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Worker.6<br/>31318 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.Worker.7<br/>31319 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.TaskWorker.8<br/>31320 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.TaskWorker.9<br/>31321 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.TaskWorker.10<br/>31322 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.TaskWorker.11<br/>31323 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.TaskWorker.12<br/>31324 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.TaskWorker.13<br/>31325 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.TaskWorker.14<br/>31326 26722&nbsp;&nbsp;&nbsp;&nbsp; 0 62388 pts/4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ EasySwoole.TaskWorker.15<br/><br/>ps --headers -eo pid,ppid,GID,tty,sid,vsz,rss,cmd -C EasySwoole<br/><br/><br/>To see every process with a user-defined format:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm<br/><br/>Print only the process IDs of syslogd:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ps -C syslogd -o pid=<br/><br/>相查看树，能看到进程的继承关系：<br/>ps -eo &#039;pid,ppid,vsz,rss,cmd&#039; --forest<br/> 3078&nbsp;&nbsp;1214&nbsp;&nbsp;48620&nbsp;&nbsp;3032&nbsp;&nbsp;&#92;_ sshd: xiangdong [priv]<br/> 3084&nbsp;&nbsp;3078&nbsp;&nbsp;48752&nbsp;&nbsp;1680&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#92;_ sshd: xiangdong@pts/0,pts/1,pts/2<br/> 3085&nbsp;&nbsp;3084 108352&nbsp;&nbsp;1788&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#92;_ -bash<br/> 3644&nbsp;&nbsp;3085 189592&nbsp;&nbsp;2940&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&nbsp;&nbsp; &#92;_ sudo su -<br/> 3645&nbsp;&nbsp;3644 163756&nbsp;&nbsp;1964&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ su -<br/> 3646&nbsp;&nbsp;3645 108476&nbsp;&nbsp;1908&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ -bash<br/> 5416&nbsp;&nbsp;3646 108412&nbsp;&nbsp;1200&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ ps -eo pid,ppid,vsz,rss,cmd --forest<br/> 5417&nbsp;&nbsp;3646 105460&nbsp;&nbsp; 816&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#124;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#92;_ less<br/><br/> 1481&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;55604&nbsp;&nbsp;1460 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf<br/> 1484&nbsp;&nbsp;1481&nbsp;&nbsp;76816 22864&nbsp;&nbsp;&#92;_ nginx: worker process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/> 1485&nbsp;&nbsp;1481&nbsp;&nbsp;76816 22936&nbsp;&nbsp;&#92;_ nginx: worker process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/> 1486&nbsp;&nbsp;1481&nbsp;&nbsp;76816 22936&nbsp;&nbsp;&#92;_ nginx: worker process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/> 1487&nbsp;&nbsp;1481&nbsp;&nbsp;76816 22936&nbsp;&nbsp;&#92;_ nginx: worker process&nbsp;&nbsp;<br/><br/><br/>cat pod-test.yml&nbsp;&nbsp;&nbsp;&nbsp;<br/><textarea name="code" class="php" rows="15" cols="100">
apiVersion: v1
kind: Pod
metadata:
&nbsp;&nbsp;name: pod-demo
&nbsp;&nbsp;labels:
&nbsp;&nbsp;&nbsp;&nbsp;app: myapp
&nbsp;&nbsp;&nbsp;&nbsp;tier: frontend
&nbsp;&nbsp;namespace: default
spec:
&nbsp;&nbsp;nodeSelector:
&nbsp;&nbsp;&nbsp;&nbsp;zone: &quot;monitor&quot;
&nbsp;&nbsp;containers:
&nbsp;&nbsp;- name: myapp
&nbsp;&nbsp;&nbsp;&nbsp;image: ikubernetes/stress-ng
&nbsp;&nbsp;&nbsp;&nbsp;command: [&quot;/usr/bin/stress-ng&quot;, &quot;-m 1&quot;, &quot;--metrics-brief&quot;]
&nbsp;&nbsp;&nbsp;&nbsp;resources:
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#requests:
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;cpu: &quot;200m&quot;
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;memory: &quot;128Mi&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limits:
#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpu: &quot;2000m&quot;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory: &quot;200Mi&quot;
</textarea><br/><br/><br/>PHP连接未释放之lsof -d 5&#124;grep 2654实现反debug程序PID里的fd对应的tcp连接句柄：<br/>原文，以下是学习到的点：php curl连接未释放，strace结果：poll([&#123;fd=5, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 1000) = 0 (Timeout)<br/>https://www.jianshu.com/p/8a247cae629a<br/>Nc服务端：<br/>[root@golang_server_10_10_0_44:/usr/local/src/go-sftp]<br/>#nc -l 1234<br/>GET / HTTP/1.1<br/>User-Agent: curl/7.29.0<br/>Host: 10.10.0.44:1234<br/>Accept: */*<br/><br/>Client连接端：<br/>[root@swoole_server_10_10_0_45:~]<br/>#ps -ef&#124;grep curl<br/>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9055&nbsp;&nbsp;9012&nbsp;&nbsp;0 03:57 pts/1&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 curl 10.10.0.44:1234<br/>#curl 10.10.0.44:1234<br/>#ls /proc/9055/fd<br/>0&nbsp;&nbsp;1&nbsp;&nbsp;2&nbsp;&nbsp;3<br/><br/>[root@swoole_server_10_10_0_45:~]<br/>#lsof&nbsp;&nbsp;-d 3&#124;grep 9055<br/>curl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;&nbsp;&nbsp;&nbsp;3u&nbsp;&nbsp;&nbsp;&nbsp; IPv4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23202662&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0t0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP wx.levoo.com:41490-&gt;localhost:search-agent (ESTABLISHED)<br/><br/>#strace -f -p 9055<br/>strace: Process 9055 attached<br/>restart_syscall(&lt;... resuming interrupted poll ...&gt;) = 0<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000)&nbsp;&nbsp;= 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000)&nbsp;&nbsp;= 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000<br/><br/><br/>设置超时后呢？<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000)&nbsp;&nbsp;= 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000)&nbsp;&nbsp;= 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000)&nbsp;&nbsp;= 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000)&nbsp;&nbsp;= 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000)&nbsp;&nbsp;= 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 1000)&nbsp;&nbsp;= 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#124;POLLPRI&#124;POLLRDNORM&#124;POLLRDBAND&#125;], 1, 0) = 0 (Timeout)<br/>poll([&#123;fd=3, events=POLLIN&#125;], 1, 987)&nbsp;&nbsp; = 0 (Timeout)会提示：<br/>curl: (28) Operation timed out after 20001 milliseconds with 0 out of -1 bytes received<br/><br/><br/>#curl 10.10.0.44:1234 --connect-timeout 10 -m 20<br/>curl: (28) Operation timed out after 20001 milliseconds with 0 out of -1 bytes received<br/><br/><br/><br/>man lsof<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -d s&nbsp;&nbsp;&nbsp;&nbsp; specifies a list of file descriptors (FDs) to exclude from or include in the output listing.&nbsp;&nbsp;The file descriptors are&nbsp;&nbsp;specified&nbsp;&nbsp;in<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the comma-separated set s - e.g., ``cwd,1,3&#039;&#039;, ``^6,^2&#039;&#039;.&nbsp;&nbsp;(There should be no spaces in the set.)<br/>lsof&nbsp;&nbsp;-nPp 57700&#124;grep cwd<br/>nginx&nbsp;&nbsp; 57700 root&nbsp;&nbsp;cwd&nbsp;&nbsp;&nbsp;&nbsp;DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 253,16&nbsp;&nbsp;&nbsp;&nbsp; 4096&nbsp;&nbsp; 47185921 /data/www<br/>lsof&nbsp;&nbsp;-nPp 33441&#124;grep cwd<br/>java&nbsp;&nbsp;&nbsp;&nbsp;33441 root&nbsp;&nbsp;cwd&nbsp;&nbsp;&nbsp;&nbsp;DIR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;104,3&nbsp;&nbsp;&nbsp;&nbsp; 4096&nbsp;&nbsp;2757893 /data/xxxxrsync<br/>ls /proc/33441/cwd/&nbsp;&nbsp;#/data/xxxxrsync的目录的东西<br/>函数说明：chdir（）用户将当前的工作目录改变成以参数路径所指的目录。<br/><br/><br/>连接超时时间用 --connect-timeout 参数来指定，数据传输的最大允许时间用 -m 参数来指定。<br/><br/>一直Poll的解决办法：php curl调用时设置超时<br/>libcurl中同一时候封装了select以及poll这两种I/O机制。<br/>代码中使用宏HAVE_POLL_FINE对这两者进行分离。假设定义了这个宏，则使用poll，否则使用select。<br/>libcurl中同一时候封装了select以及poll这两种I/O机制。<br/>代码中使用宏HAVE_POLL_FINE对这两者进行分离。假设定义了这个宏，则使用poll，否则使用select。<br/>这两者的使用代码都位于函数curl_poll()中，而此函数定义在文件lib/select.c中。我看默认是poll的模式。<br/><br/>Curl不设置超时，对nc -l 1234进行访问会一直不退出的，一直 poll的，刚才实践的确如此，一般都要加上超时参数，如：curl 10.10.0.44:1234 --connect-timeout 10 -m 20<br/>来自：https://blog.csdn.net/weixin_30340745/article/details/98854529<br/>
]]>
</description>
</item><item>
<link>https://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]ps -eo 自定义查看进程组之pid ppid 虚拟内存vsz和实际物理内存rss和命令行cmd的输出方法。lsof -nPp pid查看程序的IP和端口连接情况。stress-ng,并能用lsof -nPp 查看cwd的dir目录位置以方便目录定位,lsof -d 5grep 2654实现反debug程序PID里的fd对应的tcp连接句柄。ls /proc/57700/cwd/，删目录前看是否有进程打开了目录里的文件之lsof命令。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>