快捷搜索:  

Linux 系统命令精通指南(初级)之二

磁盘信息

无论您是维护自己的系统还是支持具有很多用户的企业,监视磁盘空间都是系统管理员更重要的职责之一。du、df 和 fdisk 命令提供了可用磁盘空间的不同视图。

du 命令提供对每个目录的文件空间使用情况的评估。在默认情况下,测量的单位是块的数目,块的大小通常在安装您的系统时确定。

在以下的示例中,系统是使用 1024 字节的块安装的。如果没有指定目录,则 du 开始对当前目录进行计算。-h 选项以易于读懂的形式提供大小的值:

$ du -h Documents
105k    Documents/jj
573k    Documents/John
682k    Documents



可以使用 -a 选项更改输出,该选项指示 du 显示文件和目录的块数。选项 --block-size=SIZE 指示 du 以 SIZE 所指定字节大小的块的数目来显示输出。

$ du --block-size=512 Documents
209     Documents/jj
1146    Documents/John
1363    Documents



在默认情况下,du 还为每个子目录递归地打印信息。通过使用 max-depth=N 选项可以限制这种操作,其中 N 等于被报告的最大级数:

$ du --max-depth=2 .
$ du --max-depth=2 | sort -n
4       ./.xemacs
4       ./public_html
105     ./Documents/jj
573     ./Documents/Ian
682     ./Documents
2420    ./jdevhome/system
8350    ./jdevhome/system9.0.3.1035
13483   ./jdevhome/mywork
24252   ./jdevhome
...



du 报告目录和子目录的空间使用情况,而 df 报告已安装文件系统的磁盘空间使用情况:

$ df
Filesystem     1k-blocks      Used Available Use% Mounted on
/dev/hda6        4195632   1983656   2211976  48% /
/dev/hda5          14607      3778     10075  28% /boot
/dev/hda9         937372    494028    443344  53% /home
/dev/hda8        6297248   3876880   2420368  62% /opt
shmfs             256220         0    256220   0% /dev/shm



在这里,df 报告了五个文件系统的状态。与 du 类似,df 利用 -h 选项提供人类可读的输出:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda6             4.0G  1.9G  2.1G  48% /
/dev/hda5              14M  3.7M  9.8M  28% /boot
/dev/hda9             915M  476M  440M  52% /home
/dev/hda8             6.0G  3.7G  2.3G  62% /opt
shmfs                 250M     0  250M   0% /dev/shm



df 命令还允许您利用 -block-size=SIZE 选项来指定块的大小。

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    Blocks   Id  System
/dev/hda1             1       286   2162128+   c  Win95 FAT32 (LBA)
/dev/hda2   *       288      1940  12496680    5  Extended
/dev/hda5           288       289     15088+  83  Linux
/dev/hda6           290       844   4195768+  83  Linux
/dev/hda7           845       983   1050808+  82  Linux swap
/dev/hda8           984      1816   6297448+  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 %MEM   VSZ  RSS TTY     STAT START   TIME COMMAND
bluh    4024  0.0  0.2  2240 1116 pts/1   S    20:59   0:00 su bluher
bluh    4025  0.0  0.3  2856 1668 pts/1   S    20:59   0:00 bash
bluh    4051  0.0  0.2  2488 1504 pts/1   R    21:01   0:00 ps aux
bluh    4052  0.0  0.1  1636  600 pts/1   S    21:01   0:00 grep bluher



除了提供重要的诊断信息,ps 命令还经常用于找出失控进程的 PID。例如,您的一个用户在 SQL*Plus 会话中输入一个笛卡尔联接。您可以执行以下的 ps 命令来找出其 PID:

$  ps -ef | grep bluher
...
bluher   4068  4064  0 21:14 pts/6    00:00:00 less
bluher   4112  3945  0 21:28 pts/5    00:08:42 sqlplus
...



然后您可以使用以下命令将其终止:
$ kill 4112

常规用户可以看到所有的系统进程,但他们只能终止他们自己拥有的进程。

Ps 只为您提供当前进程的快照。要即时查看最活跃的进程,可使用 top。Top 实时地提供进程信息。它还拥有交互式的状态,允许用户输入命令,如 n 后面跟有 5 或 10 等数字。其结果是指示 top 显示 5 或 10 个最活跃的进程。Top 持续运行,直到您按 "q" 退出 top 为止。

以下是 top 的部分显示:

8:14pm  up 51 min,  7 users,  load average: 0.02, 0.03, 0.05
96 processes:87 sleeping, 2 running, 0 zombie, 7 stopped
CPU states:6.4% user,  3.5% system,  0.0% nice, 89.9% idle
Mem:512440K av,  392288K used,  120152K free,       0K shrd,   55668K buff
Swap:1050800K av,       0K used, 1050800K free                  236128K cached

PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
1289 root      18   0 78008  11M  1796 R     3.7  2.2   0:49 X
1965 bluher    20   0 12244  11M 10456 S     1.9  2.3   0:01 kdeinit
1986 bluher    18   0   996  996   768 R     1.5  0.1   0:00 top
1803 bluher    20   0 16960  16M 13508 S     0.9  3.3   0:03 kdeinit
1804 bluher    20   0 16964  16M 13508 S     0.9  3.3   0:03 kdeinit
1800 bluher    19   0 12260  11M 10076 S     0.1  2.3   0:04 kdeinit
1 root      20   0   220  220   188 S     0.0  0.0   0:04 init
...



关闭

看来应该以 shutdown 命令来结束本次讨论。与本文以及上一篇文章中所讨论的许多命令一样,通常有一种 GUI 形式的替代方法可以关闭您的系统。但是,当您需要手动关闭时,您可以使用以下命令立即进行关闭:
$ shutdown -h now

您可以使用以下命令手动地重新启动系统:
$ shutdown -r now

注意这两个命令都需要指定时间。您可以指定 "now" 或使用带有时间秒数的 -t 选项。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论