<blockquote>ps、top、htop、pgrep、pidof等命令用于查看Linux进程信息:ps提供静态快照,top和htop实现动态监控,pgrep和pidof按名称查找进程ID;其中ps的STAT列显示进程状态,如R(运行)、S(睡眠)、Z(僵尸)等;top默认按CPU使用率排序,可结合P、M、N键切换排序方式,并用k键终止高耗进程;pgrep结合kill可精准结束指定进程,如pgrep firefox获取PID后执行kill或kill -9强制终止。</blockquote>
<p><img src="https://img.php.cn/upload/article/000/969/633/175755270789835.jpeg" alt="linux命令行中如何查看进程信息"></p>
<p>查看Linux命令行中的进程信息,主要依靠<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps</pre>
登录后复制
</div>、<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div>、<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">htop</pre>
登录后复制
</div>、<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep</pre>
登录后复制
</div>、<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pidof</pre>
登录后复制
</div>等命令。它们各有侧重,可以从不同角度展示系统进程的运行状态。</p>
<p>ps命令:静态快照
top命令:动态实时视图
pgrep命令:根据名称查找进程ID
pidof命令:查找指定程序运行的进程ID</p>
<p>ps命令是最基础的,它能提供进程的静态快照。但如果你想实时监控进程动态,top命令就更合适了。而当你只想找到某个特定进程的ID时,pgrep或者pidof会更便捷。</p>
<p>解决方案</p>
<p><strong>1. 使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps</pre>
登录后复制
</div> 命令:</strong></p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps</pre>
登录后复制
</div> 命令提供了进程的静态快照。常用的选项包括:</p>
<ul>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps aux</pre>
登录后复制
</div>: 显示所有用户的进程,包括没有控制终端的进程。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">a</pre>
登录后复制
</div> 显示所有用户,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">u</pre>
登录后复制
</div> 显示用户名和启动时间,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">x</pre>
登录后复制
</div> 显示没有控制终端的进程。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps -ef</pre>
登录后复制
</div>: 显示所有进程的详细信息,包括父进程ID (PPID)。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">e</pre>
登录后复制
</div> 显示所有进程,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">f</pre>
登录后复制
</div> 显示完整格式。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps -u <用户名></pre>
登录后复制
</div>: 显示特定用户的进程。例如,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps -u john</pre>
登录后复制
</div>。</li>
</ul>
<p>例如,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps aux | grep firefox</pre>
登录后复制
</div> 可以查找包含 "firefox" 关键字的进程。</p>
<p><strong>2. 使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令:</strong></p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令提供了一个动态、实时的系统进程视图。它可以按 CPU 使用率、内存使用率等排序进程。</p>
<ul>
<li>运行 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令后,你可以使用不同的按键进行排序:<ul>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">P</pre>
登录后复制
</div>: 按 CPU 使用率排序。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">M</pre>
登录后复制
</div>: 按内存使用率排序。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">N</pre>
登录后复制
</div>: 按 PID 排序。</li>
</ul>
</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top -u <用户名></pre>
登录后复制
</div>: 监控特定用户的进程。</li>
</ul>
<p><strong>3. 使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">htop</pre>
登录后复制
</div> 命令:</strong></p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">htop</pre>
登录后复制
</div> 是 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 的一个增强版本,提供了更友好的界面和更多的功能,例如彩色显示、鼠标操作等。如果你的系统没有预装 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">htop</pre>
登录后复制
</div>,可以使用包管理器安装,如 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">sudo apt install htop</pre>
登录后复制
</div> (Debian/Ubuntu) 或 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">sudo yum install htop</pre>
登录后复制
</div> (CentOS/RHEL)。</p>
<p><strong>4. 使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep</pre>
登录后复制
</div> 命令:</strong></p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep</pre>
登录后复制
</div> 命令允许你根据进程名或其他属性查找进程 ID。</p>
<ul>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep <进程名></pre>
登录后复制
</div>: 例如,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep firefox</pre>
登录后复制
</div> 会返回所有名为 "firefox" 的进程的 PID。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep -u <用户名> <进程名></pre>
登录后复制
</div>: 查找特定用户的进程 ID。</li>
</ul>
<p><strong>5. 使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pidof</pre>
登录后复制
</div> 命令:</strong></p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pidof</pre>
登录后复制
</div> 命令用于查找指定程序运行的进程 ID。</p>
<ul><li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pidof <程序名></pre>
登录后复制
</div>: 例如,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pidof firefox</pre>
登录后复制
</div>。注意,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pidof</pre>
登录后复制
</div> 可能不如 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep</pre>
登录后复制
</div> 灵活,因为它只能根据程序名查找。</li></ul>
<p><strong>6. 使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pstree</pre>
登录后复制
</div> 命令:</strong></p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pstree</pre>
登录后复制
</div> 命令以树状图的形式显示进程之间的父子关系。</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/xiazai/code/10908">
<img src="https://img.php.cn/upload/webcode/000/000/010/176425380615859.jpg" alt="ASP.NET 4.0电子商城">
</a>
<div class="aritcle_card_info">
<a href="/xiazai/code/10908">ASP.NET 4.0电子商城</a>
<p>在现实生活中的购物过程,购物者需要先到商场,找到指定的产品柜台下,查看产品实体以及标价信息,如果产品合适,就将该产品放到购物车中,到收款处付款结算。电子商务网站通过虚拟网页的形式在计算机上摸拟了整个过程,首先电子商务设计人员将产品信息分类显示在网页上,用户查看网页上的产品信息,当用户看到了中意的产品后,可以将该产品添加到购物车,最后使用网上支付工具进行结算,而货物将由公司通过快递等方式发送给购物者</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="ASP.NET 4.0电子商城">
<span>0</span>
</div>
</div>
<a href="/xiazai/code/10908" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="ASP.NET 4.0电子商城">
</a>
</div>
<ul>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pstree</pre>
登录后复制
</div>: 显示所有进程的树状图。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pstree -p</pre>
登录后复制
</div>: 显示进程 ID。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pstree <用户名></pre>
登录后复制
</div>: 显示特定用户的进程树。</li>
</ul>
<p>如何理解ps命令输出结果中的STAT列?</p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">ps</pre>
登录后复制
</div> 命令输出的 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">STAT</pre>
登录后复制
</div> 列表示进程的状态。它由多个字符组成,每个字符代表进程的不同状态属性。</p>
<ul>
<li>
<strong>第一个字符</strong> 表示进程的主要状态:<ul>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">R</pre>
登录后复制
</div> (Running): 正在运行或准备运行。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">S</pre>
登录后复制
</div> (Sleeping): 睡眠状态,等待事件发生。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">D</pre>
登录后复制
</div> (Disk sleep): 不可中断的睡眠状态,通常在等待 I/O 操作完成。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">T</pre>
登录后复制
</div> (Stopped): 停止状态,通常是被信号暂停。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">Z</pre>
登录后复制
</div> (Zombie): 僵尸进程,进程已结束,但父进程尚未回收其资源。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;"><</pre>
登录后复制
</div> (High-priority): 高优先级进程。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">N</pre>
登录后复制
</div> (Low-priority): 低优先级进程。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">L</pre>
登录后复制
</div> (Locked memory): 进程的内存被锁定,不会被交换到磁盘。</li>
</ul>
</li>
<li>
<strong>其他字符</strong> 表示进程的附加状态:<ul>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">S</pre>
登录后复制
</div> (<a style="color:#f60; text-decoration:underline;" title="session" href="https://www.php.cn/zt/17098.html" target="_blank">session</a> leader): 会话领导者。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">L</pre>
登录后复制
</div> (multi-threaded): 多线程进程。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">+</pre>
登录后复制
</div> (foreground process group): 前台进程组。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">W</pre>
登录后复制
</div> (paging): 进程正在进行内存交换。</li>
</ul>
</li>
</ul>
<p>例如,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">Ss</pre>
登录后复制
</div> 表示该进程是睡眠状态,并且是会话领导者。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">R+</pre>
登录后复制
</div> 表示该进程正在运行,并且是前台进程组。</p>
<p>如何使用top命令监控CPU使用率高的进程?</p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令可以实时监控 CPU 使用率高的进程。运行 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令后,默认会按照 CPU 使用率排序。</p>
<ol>
<li>
<strong>运行 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令:</strong> 在终端输入 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 并按回车键。</li>
<li>
<strong>观察 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">%CPU</pre>
登录后复制
</div> 列:</strong> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令会显示一个进程列表,其中 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">%CPU</pre>
登录后复制
</div> 列表示每个进程占用的 CPU 百分比。</li>
<li>
<strong>查找 CPU 使用率高的进程:</strong> 列表顶部通常是 CPU 使用率最高的进程。</li>
<li>
<strong>使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">k</pre>
登录后复制
</div> 命令杀死进程(谨慎操作):</strong> 如果你想结束某个 CPU 使用率过高的进程,可以按下 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">k</pre>
登录后复制
</div> 键,然后输入要结束的进程的 PID(进程 ID),再按回车键。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令会提示你输入要发送的信号,默认是 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">SIGTERM</pre>
登录后复制
</div> (15),可以尝试使用该信号。如果进程没有正常结束,可以尝试使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">SIGKILL</pre>
登录后复制
</div> (9) 信号,但请注意,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">SIGKILL</pre>
登录后复制
</div> 会强制结束进程,可能导致<a style="color:#f60; text-decoration:underline;" title="数据丢失" href="https://www.php.cn/zt/38926.html" target="_blank">数据丢失</a>。</li>
</ol>
<p>在 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令中,你还可以使用以下按键:</p>
<ul>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">P</pre>
登录后复制
</div>: 按 CPU 使用率排序(默认)。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">M</pre>
登录后复制
</div>: 按内存使用率排序。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">N</pre>
登录后复制
</div>: 按 PID 排序。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">h</pre>
登录后复制
</div>: 显示帮助信息。</li>
<li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">q</pre>
登录后复制
</div>: 退出 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">top</pre>
登录后复制
</div> 命令。</li>
</ul>
<p>如何使用pgrep和kill命令杀死指定进程?</p>
<p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep</pre>
登录后复制
</div> 命令用于查找进程 ID,<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">kill</pre>
登录后复制
</div> 命令用于向进程发送信号,通常用于结束进程。</p>
<ol>
<li>
<p><strong>使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep</pre>
登录后复制
</div> 查找进程 ID:</strong></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:bash;toolbar:false;'>pgrep <进程名></pre>
登录后复制
</div><p>例如,要查找所有名为 "firefox" 的进程的 PID,可以运行 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep firefox</pre>
登录后复制
</div>。</p>
</li>
<li>
<p><strong>使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">kill</pre>
登录后复制
</div> 命令结束进程:</strong></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:bash;toolbar:false;'>kill <进程ID></pre>
登录后复制
</div><p>例如,如果 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep firefox</pre>
登录后复制
</div> 返回的 PID 是 1234,那么可以使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">kill 1234</pre>
登录后复制
</div> 来结束该进程。</p>
<ul><li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">kill -9 <进程ID></pre>
登录后复制
</div>: 使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">SIGKILL</pre>
登录后复制
</div> 信号强制结束进程。请谨慎使用该信号,因为它会立即结束进程,可能导致数据丢失。</li></ul>
</li>
</ol>
<p><strong>示例:</strong></p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:bash;toolbar:false;'># 查找 firefox 进程的 PID
pids=$(pgrep firefox)
# 检查是否找到了进程
if [ -n "$pids" ]; then
# 循环结束所有找到的进程
for pid in $pids; do
echo "正在结束进程 $pid"
kill $pid
done
else
echo "没有找到 firefox 进程"
fi</pre>
登录后复制
</div><p>这个脚本首先使用 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep</pre>
登录后复制
</div> 查找所有 "firefox" 进程的 PID,然后使用一个循环来结束所有找到的进程。如果 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">pgrep</pre>
登录后复制
</div> 没有找到任何进程,脚本会输出一条消息。</p>
以上就是Linux命令行中如何查看进程信息的详细内容,更多请关注php中文网其它相关文章!