下 Linux系统文件命令精通指南( 四 )


fdisk 命令是 Linux 的分区表操作命令 。与 du 和 df 不同,没有 root 用户权限时不能运行该命令 。如果指定了 -l 选项,则可以将它仅用于报告的目的 。它提供了您的整个分区表的完整视图,而不仅仅是您使用 df 所看到的扩展 Linux 分区:
# fdisk -l
Disk /dev/hda:240 heads, 63 sectors, 1940 cylinders
Units = cylinders of 15120 * 512 bytes
Device Boot;Start;;;;End;BlocksId; System
/dev/hda1;;1;;;;2862162128 c; Win95 FAT32 (LBA)
/dev/hda2*;;;;288;;;1940; 12496680;5; Extended
/dev/hda5288;;;;289;;15088 ; 83; Linux
/dev/hda6290;;;;8444195768 ; 83; Linux
/dev/hda7845;;;;9831050808 ; 82; Linux swap
/dev/hda8984;;;18166297448 ; 83; Linux
/dev/hda9; 1817;;;1940;937408 ; 83; Linux

进程监视
在繁忙的多用户系统中,进程监视也是 Linux 系统管理员的一项重要职责 。在这方面,ps 和 top 是两个最有用的命令 。
ps 命令提供了当前运行进程的快照 。
以下是 ps 的最简单形式:
$ ps
PID TTY; TIME CMD
3884 pts/1;00:00:00 bash
3955 pts/2;00:00:00 more
3956 pts/5;00:00:05 sqlplus

PID 是进程的标识号 。
TTY 是进程所属的终端控制台 。
TIME 列是进程所使用的总的 CPU 时间 。
CMD 列列出正在执行的命令行 。
使用带有 -ef 选项的 ps,返回系统中所有用户的所有进程的完整列表 。如果您将此 ps 命令的结果传送到 grep 中,则该结果更易于查看 。例如:
$; ps -ef | grep oracle
UID;;;;;PID; PPID; C STIME TTY TIME CMD
oracle;1633;;1; 0 13:58 ?00:00:00 ora_pmon_ora1
oracle;1635;;1; 0 13:58 ?00:00:00 ora_dbw0_ora1
oracle;1637;;1; 0 13:58 ?00:00:01 ora_lgwr_ora1
oracle;1639;;1; 0 13:58 ?00:00:02 ora_ckpt_ora1
oracle;1641;;1; 0 13:58 ?00:00:02 ora_smon_ora1
oracle;1643;;1; 0 13:58 ?00:00:00 ora_reco_ora1
oracle;1645;;1; 0 13:58 ?00:00:00 ora_cjq0_ora1
oracle;1647;;1; 0 13:58 ?00:01:18 ora_qmn0_ora1
oracle;1649;;1; 0 13:58 ?00:00:00 ora_s000_ora1
oracle;1651;;1; 0 13:58 ?00:00:00 ora_d000_ora1

注意,当您将 ps 的输出传送到 grep 命令时,列标题并不象在 ps 命令本身所使用时那样正常地显示 。为便于说明,标题位于输出的上方,以便清楚地显示其联系 。
虽然 uid 通常是指数字型的标识,但在第一列下指定的是用户名,标记为 UID 。
PPID 是父进程的标识号 。对于 Oracle 进程,这里的标识号为 1 — 它是 init 进程(所有进程的父进程)的 id,因为在本系统中安装的 Oracle 是作为登录进程的一部分而启动的 。
标为 C 的列是由 CPU 用于计算执行优先级的因子 。
STIME 是指进程的启动时间 。
问号表示这些进程不属于任何 TTY,因为它们是由系统启动的 。
以下是 ps 命令带有某些不同选项的另一个示例 。注意,其中很多列与执行带有 -ef 选项的 ps 时的列相同:
$ ps aux
USER;;PID %CPU %MEMVSZ; RSS TTY;;STAT STARTTIME COMMAND
bluh;4024; 0.0; 0.2; 2240 1116 pts/1S;20:590:00 su bluher
bluh;4025; 0.0; 0.3; 2856 1668 pts/1S;20:590:00 bash
bluh;4051; 0.0; 0.2; 2488 1504 pts/1R;21:010:00 ps aux
bluh;4052; 0.0; 0.1; 1636; 600 pts/1S;21:010:00 grep bluher
除了提供重要的诊断信息,ps 命令还经常用于找出失控进程的 PID 。例如,您的一个用户在 SQL*Plus 会话中输入一个笛卡尔联接 。您可以执行以下的 ps 命令来找出其 PID:
$; ps -ef | grep bluher
...
bluher4068; 4064; 0 21:14 pts/6;00:00:00 less
bluher4112; 3945; 0 21:28 pts/5;00:08:42 sqlplus
...

然后您可以使用以下命令将其终止:
$ kill 4112
常规用户可以看到所有的系统进程,但他们只能终止他们自己拥有的进程 。
Ps 只为您提供当前进程的快照 。要即时查看最活跃的进程,可使用 top 。Top 实时地提供进程信息 。它还拥有交互式的状态,允许用户输入命令,如 n 后面跟有 5 或 10 等数字 。其结果是指示 top 显示 5 或 10 个最活跃的进程 。Top 持续运行,直到您按 "q" 退出 top 为止 。

推荐阅读