进程百汇

作者:Marcel Gagné

François, vite! 我们的客人们马上就要到了。 Quoi? 你说你已经准备好一切了?太棒了,François! 我看你拿来了充足的 1998 年巴罗萨谷西拉子。它和今晚的菜单很搭,你不觉得吗? Qu'avez-vous dit? 啊,本期杂志的主题...是系统管理,mon ami,而今晚我决定研究一下进程管理。当然,François,即使像进程这样基本的东西也可以成为令人兴奋的菜肴的中心。

你说什么,François?啊,我们的客人来了!欢迎,mes amis,来到 Chez Marcel,这里是精致 Linux 烹饪、诱人氛围和令人难以置信的葡萄酒的故乡。您的餐桌和葡萄酒都已准备好。请坐下,我忠实的侍者会为你们斟满酒杯。我必须告诉你们,François 今晚异常高效。我不知道他怎么了。少了一件要管理的事情,non?

正如这家餐厅的每个人都知道的那样,您 Linux 机器上运行的一切都是一个进程;每个 shell,每个到 Internet 的开放连接,每个游戏——一切都是。在某些情况下,程序会产生自己的多个进程。这些是子进程。从技术上讲,每个进程都是某个父进程的子进程,只有一个例外——那就是 init,主进程。子进程可以产生更多的子进程,而且它们可以产生更多。您可以使用 ps 列出所有进程,但是随着时间的推移,监控所有这些繁殖可能会非常累人。Mon Dieu, mes amis,我想我现在需要喝一口我的酒。

要快速粗略地了解哪个进程是哪个其他进程的子进程,您可以键入 pstree 命令。注意下面输出的前几行和 init 的位置

init-+-apmd
     |-atd
     |-bdflush
     |-cardmgr
     |-crond
     |-gpm
     |-kalarmd
     |-kapmd
     |-kappdock-+-wmWeather
     |          `-wmmultipop3
     |-kdeinit-+-artsd
     |         |-autorun
     |         |-kdeinit
     |         |-kdeinit---2*[bash]
     |         |-kdeinit---bash
     |         |-kdeinit-+-bash---lavaps

虽然这看起来很整洁,但信息有点不足。您可以使用您的老朋友 ps 命令获得相同的效果(但信息更多)。f 选项显示一个 forest 视图,您可以通过它看到进程树。一个小玩笑,mes amis

George MacDonald 在创建 Treeps 时,正是想将进程的海洋转化为容易引人注目的东西。这个程序是一个交互式的图形化进程监视器,具有动态的、颜色编码的显示,从而更容易锁定单个任务。这个程序绝对值得下载,mes amis。在以下 URL 获取源代码:www.orbit2orbit.com/gmd/tps/treepsfm.html

要构建 Treeps,请解压源代码(使用 tar -xzvf treeps-1.2.1.tar.gz),然后从安装目录运行 ./Setup 脚本。在预构建配置完成后,您将被告知执行 make install。然后您可以通过键入 treeps & 来运行该程序。

A Process Smorgasbord

图 1. 进程涅槃,由 Treeps 提供

初始视图是您自己的进程,这些进程是从 init 启动的,而这正是乐趣的开始。将鼠标指针移动到进程上方会显示一些基本信息,相当于您从 ps x 获得的信息。右键单击,弹出一个菜单,为您提供重新设置进程优先级、查看其手册页等等的选项。

从顶部的按钮栏中,单击各种选项。除了查看您自己的进程外,您还可以选择查看守护进程或只是 everything。如果您单击信息按钮(带有“i”的按钮),您的鼠标指针也会变为“i”。单击任何进程,就会出现一个信息窗口,其中包含关于正在运行的进程的更多详细信息,超出您的想象。从该窗口中,您可以进一步向下钻取。单击“文件/目录”按钮,您可以看到该进程打开的每个文件。对于真正好奇的人,“内存映射”按钮显示了每块代码在内存中的驻留位置。

功能非常多,但真正吸引我眼球的是颜色编码。在程序运行时,通过单击颜色条按钮打开“颜色映射查看器”。通过循环浏览各种选项,您可以根据用户 ID、组 ID、总 CPU 时间、当前 CPU 负载、进程状态(睡眠、运行、僵尸等)、常驻内存、映像大小等突出显示进程。

在“程序”菜单下,还有另一个小惊喜,名为“系统信息”,它会启动“系统信息应用启动器”。从这个布满按钮的窗口中,您可以快速查看关于您系统的海量信息,从您的路由表到加载的模块、内核级别、PCI 设备、运行时间、磁盘分区、运行级别等等。

从不同的角度看待事物可以让您对即使是熟悉的事物也产生新的认识。确实,这可能是一种扩展思维的体验,non? 尽管我们菜单上的下一个项目看起来很异想天开,但我发现观看和使用它非常有趣。它是否是一个出色的进程监视器将取决于您对熔岩灯的感觉。LavaPS 由 John Heidemann 编写,其灵感来自 Mark Weiser 和 John Seely Brown 的“平静技术时代即将来临”中的平静计算理念。

A Process Smorgasbord

图 2. 扩展思维的进程管理,熔岩灯风格

这里的想法是将进程表示为熔岩灯中的流体斑点。斑点越大,其内存使用量越大。它移动得越快,其 CPU 使用率越高。像任何体面的进程监视器一样,它允许识别进程、重新设置优先级和终止进程。首先访问 lavaps 网站 (www.isi.edu/~johnh/SOFTWARE/LAVAPS/index.html) 并获取软件包的副本。

对于 Red Hat 用户,可以使用预打包的 RPM。对于其他人,永远不要害怕——构建 LavaPS 只是著名的(我敢说“经典的”)解压和构建五步法的另一个例子

tar -xzvf lavaps-1.20.tar.gz
cd lavaps-1.20
./configure
make
su -c make install

要启动您的熔岩灯,请键入 lavaps &。您将在桌面上看到一个小的熔岩灯出现。右键单击,会弹出一个菜单,提供许多选项。“proc”菜单会告诉您进程 ID 和进程名称。它还允许您向进程发送各种信号(例如 kill),从强制终止到临时挂起。

运行 LavaPS 来监视和管理进程肯定会营造一种超凡脱俗的氛围。我唯一不喜欢的是,默认灯在我的 1024 × 768 显示器上实际上相当小。覆盖这一点需要您设置 X 资源。这可以通过修改 $HOME/.lavapsrc 配置文件轻松完成。在我的文件中,我唯一更改的是几何形状。这是我的 .lavapsrc 文件的样子

lavaps.geometry: 204x404+700+0

说到超凡脱俗,mes amis,对您进程秘密生活的最奇怪的探索可能要数 ID Software 的经典 3D 射击游戏 Doom 的一个不寻常的游戏。早在 1997 年,ID Software 就发布了 Doom 的源代码,随后出现了许多移植版本。其中之一是 XDoom,这是一个 UNIX X Window System 版本,David Koppenhofer 的 psDooM 就是基于它开发的。正如 psDooM 的灵感来自 XDoom 一样,David 的灵感来自 Dennis Chao,而 Dennis 的灵感来自 Vernor Vinge。如果您好奇,请查看 Dennis 的“Doom 作为系统管理工具”的链接(参见“资源”)。

无论如何,psDooM 背后的想法是为进程管理提供一种奇怪的替代方案。在走廊里漫游的怪物头上漂浮着红色的进程 ID 以及命令名称的最后七个字符。

A Process Smorgasbord

图 3. 以复仇的方式杀死进程:psDooM

可以从 psDooM 网站获取源代码 tarball,但安装 psDooM 最简单的方法是获取预编译的二进制文件。安装非常简单:运行 install.sh 脚本

tar -xzvf psdoom-2000.05.03-bin.tar.gz
cd psdoom-bin
su -c "./install.sh"

运行 psDooM 需要 IWAD,特别是 Doom 1、Doom 2 或 Ultimate Doom。共享软件 Doom 1 IWAD 也有效。如果您碰巧没有自己的 Doom WAD,您可以从 www.doomworld.com 站点下载副本。我访问了该站点并获取了文件的副本

unzip shareware_doom_iwad.zip
su -c cp DOOM1.WAD /usr/local/games/psdoom/doom1.wad
就这样。现在,我们准备运行 psDooM 了
cd /usr/local/games/psdoom
./psdoom -2
注意上面的 -2 选项。默认情况下,您会发现屏幕非常小。此选项会增加默认屏幕的大小。如果您以前从未玩过 Doom,我必须警告您,mes amis,它可能会有点暴力。怪物和坏家伙在走廊里漫游,您的生命危在旦夕。伤害一个进程怪物相当于重新设置该进程的优先级 (renice +5)。继续射击,您将杀死该进程。但是,系统权限会受到尊重。您可以杀死属于另一个用户(或系统)的怪物进程,但它会被复活。只有您自己的进程才会 stay dead。

也许您应该考虑 not 以 root 身份执行此操作 ever,当然也不要在公司服务器上执行此操作。

再次,mes amis,看起来时钟又在飞速地走向打烊时间了。很高兴您来到 Chez Marcel。我当然希望您喜欢您对进程管理的探索。我必须承认,我仍然有点被我的 psDooM 体验吓到了。也许再来点酒来缓解一下神经。François,如果您能好心为我们的客人斟满酒杯,当然还有 mine。直到下个月。 A votre santé! Bon appétit!

资源

Marcel Gagné 居住在安大略省密西沙加市。他是 Linux 系统管理:用户指南(ISBN 0-201-71934-7)的作者,该书由 Addison-Wesley 出版(目前正在撰写他的下一本书)。您可以通过电子邮件 mggagne@salmar.com 与他联系。

加载 Disqus 评论