用与改变root目录可以用pivot_root和chroot命令,但是这两者之间是有区别的
pivot_root :直接将整个文件系统的root目录改为指定目录
chroot :对于运行的指令以目标目录作为root目录,只影响单个进程.
exec :用于结束当前执行的进程并继承其上下文,开始一个新的进程.PID不会改变. 和souse命令的不同之处在于exec会结束当前进程而souse不会.
如果不想结束当前进程可以用fork()建立新的进程再调用exec命令.这个过程和system是一样的.
mount --bind :绑定挂载. 用于将文件系统绑定到两个不同的位置,目标挂载点原本文件系统将被隐藏掉.umount之后又能看到被隐藏的文件系统.
另外根据原始挂载点的传播类型标记(shared, private, slave, unbindable)不同也会导致镜像和本体之间的映射关系不同.用findmnt -o PROPAGATION 查看挂载点的传播类型标记 :
shared 表示允许创建镜像,一个镜像内的挂载和卸载操作会被自动传播到所有其他镜像中.
slave 表示自动继承主挂载点中挂载和卸载操作,但是自身的挂载和卸载操作不会反向传播到主挂载点中.
private 表示既不继承主挂载点中挂载和卸载操作,自身的挂载和卸载操作也不会反向传播到主挂载点中.
unbindable 表示禁止对该挂载点进行任何绑定(--bind|--rbind)操作.
mount --move :用于将一个目录移动到另一个地方而文件物理地址不变.相当于先umount再mount.但是对于传播类型标记为shared的挂载点无法进行操作.
mount --noatime :用于挂载时禁止更新文件与目录的inode访问时间,以获得更快的访问速度(实际影响并不大).
mount -t ramfs ; mount -t tmpfs :mount -t type type表示文件系统类型,这个命令指定要挂载的文件系统类型,可以使用逗号分割多种类型.
ramfs是Linux下一种基于RAM做存储的文件系统.在使用过程中你就可以把ramfs理解为在普通的HDD上建立了一个文件系统,而现在HDD被替换成了RAM,因为是RAM做存储所以会有很高的存储效率.但是ramfs有一个很大的缺陷就是它会吃光系统所有的内存,即使你mount的时候指定了大小,同时它也只能被root用户访问.
tmpfs也是Linux下的一个文件系统,它将所有的文件都保存在虚拟内存中,umount tmpfs后所有的数据也会丢失,tmpfs就是ramfs的衍生品.tmpfs使用了虚拟内存的机制,它会进行swap,但是它有一个相比ramfs的好处:mount时指定的size参数是起作用的,这样就能保证系统的安全,而不是像ramfs那样,一不留心因为写入数据太大吃光系统所有内存导致系统被卡住.总结:
ramfs会因为数据的写入自动增长空间,所以可能导致最后系统所有的内存耗完
tmpfs可以再mount时限定大小,不会自动增长
ramfs不会用swap
tmpfs会使用swap
两者都是用来提升效率,但是tmpfs比ramfs的性能更好
/dev/urandom ; /dev/random :两者都是用来提供随机数的,通过采集环境噪音来产生随机数据并存入熵池. 只是random提取随机数时会将所提取的数据清除,urandom不清除数据而重复使用,属于伪随机. 也是由于这个原因/dev/random产生数据的速度比较慢,有时候还会出现较大的停顿,而/dev/urandom的数据产生速度很快,基本没有任何停顿。