2008年7月7日星期一

util-linux

该包中含有大量最常用的命令,集中在 /sbin、/usr/bin 和 /usr/sbin 中:
  • mkswap,用于在一个设备或者文件中创建 swap 分区。创建后需要通过 swapon 打开。分区类型为 0x82,不要和 Solaris 使用的分区类型混淆(也是 0x82)。
  • isosize 用于输出一个 iso9660 设备或者镜像文件的文件系统长度。
  • hwclock 用于访问硬件时钟,即 bios 内置时钟,可以同步该时钟和系统时钟(内核维护的时钟)。
  • mkfs.bfs 创建 SCO 的 BFS 文件系统。
  • fsck.cramfs 对 cramfs 文件系统进行检查。
  • mkfs.minix 创建 minix 文件系统。
  • blockdev 设置或显示 block device 的 ioctls,如读写属性,扇区大小,重新读入分区表或者 flush buffer。
  • cfdisk 分区程序,和 fdisk 不一样之处是用 curse/slang 库写的, TUI 要更好用一些。
  • fdisk 分区程序,没啥好说的,-l 会显示所有设备。
  • getty,作为守候某个线路如终端、串口的程序,将会为用户打开 login 提供登录。后面详细介绍。
  • mkfs.cramfs 创建 cramfs 文件系统,由于 cramfs 是压缩 ROM(Read-Only Memory)文件系统,只读,常用作 initrd 镜像文件,使用 zlib 压缩,最大文件不能超过 16Mb,文件系统最大只能稍微超过 256Mb(最后一个文件在 256Mb 块前开始,并可以扩展到 256Mb 以外)。因此该命令基本格式是 mkfs.cramfs dir img。
  • pivot_root 和 chroot 类似,但是目的不同,pivot_root 不同实现也不一样,pivot_root 把老的 / 挂在新 / 的子目录下,但是可能当前 / 没有更新(和实现相关),因此后面需要再次 chroot 进入新的 root。
  • sfdisk 也是一个维护分区的工具,比较不同的是可以调整分区大小,但是不能处理较大的分区(可用 GNU parted)。
  • ctrlaltdelete,设置按下 Ctrl-Alt-Del 的行为,分 hard 和 soft,前者不进行 sync 等前期操作,比较危险。
  • raw 将一个 character 设备绑定到一个 block 设备,这样可以用访问前者的方式访问后者,现在已经不多用了,推荐直接用 O_DIRECT 方式打开 block 设备。
  • fsck.minix 是 minix 文件系统查错程序。
  • mkfs 是创建文件系统的统一接口。通过 -t 指定类型,其余的和 mkfs.* 类型一致即可。
  • dmesg 可以显示内核在 boot 时候的信息,还可以清除(-c)kernel ring buffer,设置大小(-s)和级别(-n)。
  • more 标准分页阅读程序,建议用 less。
  • tailf 和 tail -f 类似,可以跟着文件的增长显示最后的几行,但是不像后者会在不增长时访问文件,因此不会更新该文件的 access timestamp。
  • fdformat,软盘低级格式化,ms 谬几个人用软盘了吧...
  • rtcwake 进入系统休眠状态,并设定重新醒来时间,这个将在后面休眠的专题里面讨论一下。
  • cytune 用于调整 Cyclades-Z 多端口串口卡的驱动参数。
  • tunelp 设定打印机(lp 设备)的参数,不过现在似乎直接用 cups 的人更多了吧 :-p
  • readprofile 读取 kernel profile,但是 kernel 必须打开 profile(boot 时加 profile=? 的参数)。
  • rdev 也是一个不被鼓励使用的命令,因为多数功能在非 i386 的系统上已经不能使用,取而代之的是直接用 boot loader 设定类似的参数,该命令和 rootflags、ramsize、vidmode 用于显示或者设定根分区、RAM disk 和视频模式的信息。
  • ldattach 将一个 line discipline 关联到串口设备,这样通过访问串口输入输出和在对应设备上是一个效果,如 TTY、SLIP、MOUSE、PPP 等。
  • chkdupexe 搜索 PATH 发现重名命令或者断掉的符号连接。
  • line 读入一行,与 read(bash 内部命令)类似。
  • rev 将输入每行翻转。
  • setterm 设定 term 性质,如 setterm -reset 和 reset 类似,光标显示与否(-cursor)等等。
  • partx 为给定的 block 设备指定分区表类型方便 kernel 分析该设备上的分区。和 fdisk 不同的是,可以使用该程序“告诉”内核添加分区或者删除,但是不写入到改设备上。
  • chrt 设定某进程 real-time 属性,好像 GNU libc 的文档有相关的论述。
  • taskset 可以将某个进程绑定到指定的 CPU 上。
  • ipcrm 是 IPC 管理,移除 message queue、semaphore 或者 shared memory。
  • ionice 设置一个程序的 IO 优先级别。
  • addpart/delpart 添加删除分区。
  • setsid 设置某程序在新的 session 中执行。
  • pg,感觉和 more 一样 @@
  • ipcs,显示 IPC 信息。
  • getopt,和 C 里面 getopt 函数类似,用于 parse 程序输入的参数。这里有例子。
  • flock,处理文件锁,如 -s 共享锁,-e 排除锁,-n 非阻塞式(fail 即返回),-u 开锁等。
  • whereis 显示程序位置。
  • mcookie 产生 magic cookie 的小程序。
  • namei,显示一个 path 上每个点的类型,如目录、设备还是别的。
  • ddate 将 Gregorian date 转换称为 Discordian date。
  • linux32/linux64/i386 设定对应结构下的环境变量。

这里我们看看一些重要的应用。比如一般在 /etc/inittab 里面有打开终端的命令,这也是一般在文本模式下看到的东西,
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3


相关文件:
ncurses-bin: reset
parted: parted

没有评论: