1 ps查看
帮助:ps --help
ps
-A
:显示所有进程
a
:显示终端中包括其它用户的所有进程
x
:显示无控制终端的进程
1.1 查看系统中的每个进程
ps -A
ps -e
1.2 查看所有运行中进程
ps aux | less
1.3 查看所有非root运行进程
ps -u root -N
1.4 查看用户charles运行的进程
ps -u charles
1.5 top命令
top命令:动态显示系统中的进程
top
1.6 显示进程的树状图
pstree
1.7 列印进程树
ps -ejh
ps axjf
1.8 获得线程信息
ps -eLf
ps axms
1.9 获取安全信息
ps -eo euser,ruser,suser,fuser,f,comm,label
ps -axZ
ps -eM
2 快照进程
2.1 将进程快照到文件中
ps -b -n1 > /tmp/process.log
2.2 将结果通过邮件发送给自己
top -b -n1 | mail -s 'Process snapshot' you@example.com
3 pgrep
pgrep能查找当前正在运行的进程并列出符合条件的进程ID。例如显示firefox的进程ID:
pgrep firefox
显示进程名为sshd、所有者为root的进程
pgrep -u root sshd
4 htop
htop是一个类似top的交互式进程查看工具,但是可以垂直和水平滚动来查看所有进程和他们的命令行。进程的相关操作(killing,renicing)不需要输入PID。
安装
apt-get install htop
yum install htop
启动
htop

5 atop 工具
atop是一个用来查看Linux系统负载的交互式监控工具。它能展现系统层级的关键硬件资源(从性能角度)的使用情况,如CPU、内存、硬盘和网络。
它也可以根据进程层级的CPU和内存负载显示哪个进程造成了特定的负载;如果已经安装内核补丁可以显示每个进程的硬盘和网络负载。
安装
sudo apt instll atop
启动
atop

6 结束进程
确定进程pid
ps -ef
确定火狐进程
ps -ef | grrep firefox
6.1 纯kill
注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。
kill pid
6.2 kill -l
-l
:有进程不能成功
kill -l pid
6.3 term信号
给父进程发送一个TERM信号,试图杀死它和它的子进程。
kill -term ppid
6.3 killall 命令
Linux killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程。
kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便。
-e | --exact
: 进程需要和名字完全相符
-I | --ignore-case
:忽略大小写
-g | --process-group
:结束进程组
-i | --interactive
:结束之前询问
-l | --list
:列出所有的信号名称
-q | --quite
:进程没有结束时,不输出任何
信息
-r | --regexp
:将进程名模式解释为扩展的正则表达式。
-s | --signal
:发送指定信号
-u | --user
:结束指定用户的进程
-v | --verbose
:显示详细执行过程
-w | --wait
:等待所有的进程都结束
-V |--version
:显示版本信息
--help
:显示帮助信息
结束所有的 php-fpm 进程
killall -9 php-fpm
6.4 停止和重启进程
killall -hup pid
6.5 强杀
kill -s 9 1827
<h2><a id="1_ps_0"></a>1 ps查看</h2>
<p>帮助:<code>ps --help</code></p>
<pre><div class="hljs"><code class="lang-shell">ps
</code></div></pre>
<p><code>-A</code>:显示所有进程</p>
<p><code>a</code>:显示终端中包括其它用户的所有进程</p>
<p><code>x</code>:显示无控制终端的进程</p>
<h3><a id="11__12"></a>1.1 查看系统中的每个进程</h3>
<pre><div class="hljs"><code class="lang-shell">ps -A
</code></div></pre>
<pre><div class="hljs"><code class="lang-shell">ps -e
</code></div></pre>
<h3><a id="12__21"></a>1.2 查看所有运行中进程</h3>
<pre><div class="hljs"><code class="lang-shell">ps aux | less
</code></div></pre>
<h3><a id="13_root_26"></a>1.3 查看所有非root运行进程</h3>
<pre><div class="hljs"><code class="lang-shell">ps -u root -N
</code></div></pre>
<h3><a id="14_charles_32"></a>1.4 查看用户charles运行的进程</h3>
<pre><div class="hljs"><code class="lang-shell">ps -u charles
</code></div></pre>
<h3><a id="15_top_38"></a>1.5 top命令</h3>
<p>top命令:动态显示系统中的进程</p>
<pre><div class="hljs"><code class="lang-shell">top
</code></div></pre>
<h3><a id="16__46"></a>1.6 显示进程的<code>树状图</code></h3>
<pre><div class="hljs"><code class="lang-shell">pstree
</code></div></pre>
<h3><a id="17__52"></a>1.7 列印进程树</h3>
<pre><div class="hljs"><code class="lang-shell">ps -ejh
</code></div></pre>
<pre><div class="hljs"><code class="lang-shell">ps axjf
</code></div></pre>
<h3><a id="18__61"></a>1.8 获得线程信息</h3>
<pre><div class="hljs"><code class="lang-shell">ps -eLf
</code></div></pre>
<pre><div class="hljs"><code class="lang-shell">ps axms
</code></div></pre>
<h3><a id="19__69"></a>1.9 获取安全信息</h3>
<pre><div class="hljs"><code class="lang-shell">ps -eo euser,ruser,suser,fuser,f,comm,label
</code></div></pre>
<pre><div class="hljs"><code class="lang-shell">ps -axZ
</code></div></pre>
<pre><div class="hljs"><code class="lang-shell">ps -eM
</code></div></pre>
<h2><a id="2__81"></a>2 快照进程</h2>
<h3><a id="21__83"></a>2.1 将进程快照到文件中</h3>
<pre><div class="hljs"><code class="lang-shell">ps -b -n1 > /tmp/process.log
</code></div></pre>
<h3><a id="22__88"></a>2.2 将结果通过邮件发送给自己</h3>
<pre><div class="hljs"><code class="lang-shell">top -b -n1 | mail -s 'Process snapshot' you@example.com
</code></div></pre>
<h2><a id="3_pgrep_94"></a>3 pgrep</h2>
<p>pgrep能查找当前正在运行的进程并列出符合条件的进程ID。例如显示firefox的进程ID:</p>
<pre><div class="hljs"><code class="lang-shell">pgrep firefox
</code></div></pre>
<p>显示进程名为sshd、所有者为root的进程</p>
<pre><div class="hljs"><code class="lang-shell">pgrep -u root sshd
</code></div></pre>
<h2><a id="4_htop_108"></a>4 htop</h2>
<p>htop是一个类似top的交互式进程查看工具,但是可以垂直和水平滚动来查看所有进程和他们的命令行。进程的相关操作(killing,renicing)不需要输入PID。</p>
<p>安装</p>
<pre><div class="hljs"><code class="lang-shell">apt-get install htop
</code></div></pre>
<pre><div class="hljs"><code class="lang-shell">yum install htop
</code></div></pre>
<p>启动</p>
<pre><div class="hljs"><code class="lang-shell">htop
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/1095eb66b743da9c24a1f5f0fe4288a5.png" alt="linux htop进程工具" /></p>
<h2><a id="5_atop__126"></a>5 atop 工具</h2>
<p>atop是一个用来查看Linux系统负载的交互式监控工具。它能展现系统层级的关键硬件资源(从性能角度)的使用情况,如CPU、内存、硬盘和网络。</p>
<p>它也可以根据进程层级的CPU和内存负载显示哪个进程造成了特定的负载;如果已经安装内核补丁可以显示每个进程的硬盘和网络负载。</p>
<p>安装</p>
<pre><div class="hljs"><code class="lang-shell">sudo apt instll atop
</code></div></pre>
<p>启动</p>
<pre><div class="hljs"><code class="lang-shell">atop
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/342fc2b4af3218c7e5b3019648be7dd1.png" alt="linux atop进程工具" /></p>
<h2><a id="6__143"></a>6 结束进程</h2>
<p>确定进程pid</p>
<pre><div class="hljs"><code class="lang-shell">ps -ef
</code></div></pre>
<p>确定火狐进程</p>
<pre><div class="hljs"><code class="lang-shell">ps -ef | grrep firefox
</code></div></pre>
<h3><a id="61_kill_155"></a>6.1 纯kill</h3>
<p>注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。</p>
<pre><div class="hljs"><code class="lang-shell">kill pid
</code></div></pre>
<h3><a id="62_kill_l_163"></a>6.2 kill -l</h3>
<p><code>-l</code>:有进程不能成功</p>
<pre><div class="hljs"><code class="lang-shell">kill -l pid
</code></div></pre>
<h3><a id="63_term_171"></a>6.3 term信号</h3>
<p>给父进程发送一个TERM信号,试图杀死它和它的子进程。</p>
<pre><div class="hljs"><code class="lang-shell">kill -term ppid
</code></div></pre>
<h3><a id="63_killall__179"></a>6.3 killall 命令</h3>
<p>Linux killall 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程。</p>
<p>kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便。</p>
<p><code>-e | --exact</code> : 进程需要和名字完全相符</p>
<p><code>-I | --ignore-case</code> :忽略大小写</p>
<p><code>-g | --process-group </code>:结束进程组</p>
<p><code>-i | --interactive</code> :结束之前询问</p>
<p><code>-l | --list</code> :列出所有的信号名称</p>
<p><code>-q | --quite </code>:进程没有结束时,不输出任何<br />
信息</p>
<p><code>-r | --regexp</code> :将进程名模式解释为扩展的正则表达式。</p>
<p><code>-s | --signal</code> :发送指定信号</p>
<p><code>-u | --user</code> :结束指定用户的进程</p>
<p><code>-v | --verbose </code>:显示详细执行过程</p>
<p><code>-w | --wait </code>:等待所有的进程都结束</p>
<p><code>-V |--version</code> :显示版本信息</p>
<p><code>--help</code> :显示帮助信息</p>
<p>结束所有的 php-fpm 进程</p>
<pre><div class="hljs"><code class="lang-shell">killall -9 php-fpm
</code></div></pre>
<h3><a id="64__219"></a>6.4 停止和重启进程</h3>
<pre><div class="hljs"><code class="lang-shell">killall -hup pid
</code></div></pre>
<h3><a id="65__225"></a>6.5 强杀</h3>
<pre><div class="hljs"><code class="lang-shell">kill -s 9 1827
</code></div></pre>
留言