Linux|系统管理|WEB开发

关注Linux,系统管理,WEB开发以及开源世界

\[/sbin学习\]p\*命令

| Comments

有一段时间没有学习sbin下的命令了。 跳过o开头的命令是因为o开头只有三个命令,而且都是和Oracle的ocfs有关,所以这里就不研究了。 p开头的命令不少,近20个。

pack_cis:与PCMCIA有关,编译PCMCIA卡信息结构。

pam_cosonle_apply:在系统终端上,针对用户设置或者收回权限。他是PAM相关的工具。 如果/var/run/console.lock存在,则针对该文件的用户授权;如果没有,则根据缺省文件 /etc/security/console.perms的规则来授权。
这个命令以及pam_timestamp_check,pam_tally都属于PAM程序

pam_console_setowner:设置console的属主,他属于UDEV包.

parted: 强大的磁盘管理工具,类似fdisk功能,但是个人觉得其功能比fdisk强大。其中值得说的一点就是在已经占用的磁盘上进行操作,不需要重启生效,这点就比fdisk强。比如你的hda已经在使用了(你的根文件系统),这时你希望在hda上再创建一个分区,如果使用fdisk工具,保存的时候肯定会提示要你重启才生效,因为设备busy。但是parted却不会。 另外一点是fdisk程序只有在你输入w命令后,所有的命令才真实生效,而parted不是这样,执行后,立刻生效(也许我还没有找到undo的功能),所以这点要注意。 发现一个有意思的现象:addpart,delpart的功能是删除分区和增加分区,那么很自然的应该属于parted程序的功能,因此按理,这两个命令连带partprobe和parted属于同一个包。但事实是addpart,delpart属于util-linux包。不知道为什么要这么来归类?

Linux下没有图形化的磁盘管理工具一直是普通用户抱怨的地方,因为不要期望所有人都来使用fdisk,parted这样的命令。不过现在好了,给予parted的qtparted就是一个GUI的程序。一个典型的界面如下:

image

其中hda6是我的LVM,在qtparted中并不识别(需要识别吗?试试rflvm吧)。 网上有关parted的介绍并不多,所以还是看看man手册吧。

partx:partx同样属于parted的包,而是linux-util,虽然长像parted之类的。这个命令和addpart,delpart一样,没有man手册,没有info信息,没有--help。只好找google,得到这个这么一篇文章。可以看看。

pivot_root:改变根文件系统。他的基本用法是:pivot_root new_root put_old
表示把当前处理的根文件系统移到put_old目录,然后把new_root作为当前的根文件系统。
这个命令更多的时候用在系统启动时。我们知道现在的Linux启动时,都需要一个initrd的核心参数,这个initrd后面接着的压缩文件很多情况下就是一个文件系统。
内核引导后,会首先把initrd的参数挂载,把他当成根文件系统,处理完必要的事务后,再把核心参数root置顶的设备挂载上来,然后使用pivot_root命令切换整个根文件系统,接着执行/sbin/init程序来继续引导系统。LSB的linux发行版本,引导时会把initrd镜像挂载到/initrd目录下。所以你会发现根目录下有一个initrd目录,但是他是空的,如果我删除他,系统引导的时候就会报错,我怎么知道的?因为我干过这样的傻事。

man手册中举了几个例子,可以进一步解释pivot_root的作用。不过对于改变根文件系统,我们可能首先想到的是chroot,chroot似乎也有这个功能,那么他和pivot_root有什么差别呢?
主要的差别是pivot_root有意识的切换一个完整的系统到新的根目录,然后可以移走之前需要依赖的老的系统,因此你可以umount掉之前的根文件系统,就当做之前没有发生过原来它是运行的操作系统一样。 而chroot则有意识的申请一个单独进程的全部生命周期,他和系统的其他部分一起在老的根目录下一起运行,当chrooted进程退出后,系统不会发生改变。

注:不建议大家测试这个命令,这时我测试后得出的结果。至少我做完后,我是靠重启系统来恢复原状的(真实原因是对这个命令还是了解得不太多。)

portmap:DARPA(美国国防部高级研究计划局)端口到RPC程序号的映射。也就是提供把RPC程序号转换成DARPA协议端口的服务。更统属的称呼应该就是端口映射(谁关心到底从什么协议转什么协议呢?)。
当一个RPC服务开始时,它告诉portmap它将侦听哪个端口号,以及它准备为什么RPC程序号提供服务。
但一个客户端希望对指定的程序号做RPC调用时,他将首先链接服务器上的portmap程序(服务)来决定RPC包应该发往哪个端口。
portmap应该在RPC服务调用之前启动。
典型的应用应该是NFS了。运行一个NFS服务当前需要启动的服务有:portmap,nfs和nfslock。不启动portmap而单独启动nfs, fslock服务提供NFS服务时,我遇到过两种错误:

1)非常长的时间才能mount上
2)直接报给出的服务不可用。

Comments