zoukankan      html  css  js  c++  java
  • linux命令之chown、chgrp、cmp、dd、du

    chown命令
    chown 是一条在Unix系统中用于设置文件全部者和文件关联组的命令。 须要超级用户的权限才干运行此命令。仅仅有
    超级用户和属于组的文件全部者才干变更文件关联组。非特权用户(非超级用户)如须要设置关联组可能
    须要使用chgrp命令。


    用法

    # chown root /var/run/httpd.pid
    把/var/run/httpd.pid的全部者设置root。
    # chown rob:developers strace.log
    把strace.log的全部者设置为rob,文件的关联组设置为developers。
    # chown :512 /home
    把/home的关联组设置为512(关联组ID)。不改变全部者。
    # chown -R us base
    把base以及其文件夹下的全部的文件的全部者设置为us。

    -R选项将递归的改动该文件夹层次结构中的全部文件的全部者和组用户。
    chgrp命令
    chgrp是一条在Unix系统中用于设置文件所归属的组的命令。与chown命令不同,chgrp同意普通用户改变文件所属的组,
    仅仅要该用户是该组的一员。


    用法
    调用chgrp的语法为
    chgrp 组名 目标1 [目标2 ...]
    "组名"是文件即将关联的组。


    "目标1 [目标2 ...]"是须要改变组的文件或文件夹的列表。


    范例

    $ls -l testfile
    -rw-r--r--   1 unixguy  staff           545 Nov 04 2004  ttt
    $chgrp system testfile
    $ls -l ttt
    -rw-r--r--   1 unixguy  system          545 Nov 04 2004  ttt

    chgrp staff /u
    将 /u 的属组更改为"staff"。
     chgrp -hR staff /u
    将 /u 及其子文件夹下全部文件的属组更改为"staff"。
    上述命令将文件"testfile"所属的组从"staff"改成了"system"。

    (运行命令者必须属于"staff"组。


    du命令
    du(disk usage的缩写。磁盘使用情况)是一个预计某个特定文件夹或文件在文件系统上磁盘使用情况的标准Unix程序。


    默认情况下,单一UNIX系统规定,du显示当前文件夹每一个文件与文件夹的被分配磁盘空间的情况。链接文件将会显示其本身大小而非其链接对象;文件夹则会显示其内容的大小。
    因为du仅仅反映磁盘分配情况而非实际文件大小,所以假设文件被删除后磁盘未被释放,其显示的数字会与df报告的数字有所不同。


    cmp命令
    功能说明:比較两个文件是否有差异。

    当相互比較的两个文件全然先同一时候,则该指令不会显示不论什么信息。

    若发现有所差异,预设会表示每个不同之处的字符和列数编号。

    若不指定不论什么文件名称称或是所给予的文件名称为“-”,则cmp指令会从标准输入设备读取数据。
    语法:cmp [-c[v][-i <字符数目>][--help][第一个文件][第二个文件]
    參  数:
     -c或–print-chars  除了标明差异处的十进制字码之外,一并显示该字符所相应字符。
     -i<字符数目>或–ignore-initial=<字符数目>  指定一个数目。
     -l或–verbose  标示出全部不一样的地方。


     -s或–quiet或–silent  不显示错误信息。
     -v或–version  显示版本号信息。
     –help  在线帮助。
    演示样例:

    1.cmp prog.o.bak prog.o

    这比較 prog.o.bak 和 prog.o。假设文件同样,则不显示消息。假设文件不同。则显示第一个不同的位置;比如:

    prog.o.bak prog.o differ: char 4, line 1
    假设显示消息 cmp: EOF on prog.o.bak,则 prog.o 的第一部分与 prog.o.bak 同样,但在 prog.o 中还有其它数据。

    2. cmp -l proj.o.bak prog.o

    这比較文件,然后显示字节数(使用十进制格式)和每一个不同的不同字节(使用八进制格式)。

    比如,假设第五个字节在 prog.o.bak 中是八进制 101,在 prog.o 中是 141。则 cmp 显示:

    5 101 141

    3. 
    cmp -s prog.c.bak prog.c

    这样。假设文件同样,则给出值 0,假设不同。则给出值 1,或者假设错误发生,则给出值 2。


    du能够带一个參数。即指定一个路径来工作;假设没有指定,则使用当前文件夹。

    SUS指定了du有下面这些选项:
    -a,将当前文件夹下每一个文件(不含文件夹)作为一个条目显示。


    -H,计算命令行中指定链接对象的磁盘使用情况。


    -k。将大小除以1024字节,而非512字节显示。


    -L,计算随意链接对象的使用情况。


    -s,仅汇报当前文件夹总计的磁盘使用情况,不显示每个文件。
    -x,仅遍历指定路径所在设备上的文件与文件夹。
    -h。把磁盘使用情况的大小加上单位后缀,显示为一个用户更easy理解的形式。


    演示样例
    KB单位的文件夹总大小:

     $ du -sk *
     152304  directoryOne
     1856548 directoryTwo
    更易读的文件夹总大小格式(Byte、KB、MB、GB、TB、PB):
     $ du -sh *
     149M directoryOne
     1.8G directoryTwo
    当前文件夹下包括隐藏文件,子文件夹与文件的磁盘使用情况(从小到大排序):
     $ du -sk .[!.]* *| sort -n
    当前文件夹下包括隐藏文件。子文件夹与文件的磁盘使用情况(从大到小排序):
     $ du -sk .[!.]* *| sort -nr
    显示深度为1的文件夹大小及其总和
     $ du -d 1 -c -h
    dd命令
    dd是一个UNIx和类Unix系统上的命令,主要功能为转换和拷贝文件。

    在Unix上,硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero和/dev/urandom)就像普通文件一样,出如今文件系统中;仅仅要在各自的驱动程序中实现了相应的功能,dd也能够读取自和/或写入到这些文件。这样,dd也能够用在备份硬件的引导扇区、取得一定数量的随机数据等任务中。dd程序也能够在复制时处理数据,比如转换字节序、或在ASCII与EBCDIC编码间互换。
    dd的命令行语句与其它的Unix程序不同。由于它的命令行选项格式为选项=值,而不是更标准的--选项 值或-选项=值。dd默认从标准输入中读取,并写入到标准输出中,但能够用选项if(input file。输入文件)和of(output file,输出文件)改变。
    块大小
    块是衡量一次读取、写入和转换字节的单位。

    命令行选项能够为输入/读取(ibs)和输出/写入(obs)指定一个不同的块大小,虽然块大小(bs)选项会覆盖ibs和obs选项。输入和输出的默认块大小为512字节(传统的磁盘块及POSIX规定的“块”大小)复制的count选项、读取的skip选项和写入的seek选项都是以块为单位。转换操作也受“转换块大小”(cbs)影响。
    在dd的一些用途中。块大小可能会影响表现。比如,当转换硬盘中数据时。较小的块大小一般会导致很多其它的字节被转换。

    发出很多小块的读取是一种开销的浪费,且可能会对运行性能有负面影响。

    较大的块大小可能会提高复制速度。

    可是,因为要复制的字节量是由bs×count给出的,因此不可能一次复制素数字节,除非使用一两个糟糕的选项bs=N count=1(消耗内存)或bs=1 count=N(大量读请求开销)。

    替代程序(见下文)同意指定字节,而不是块。
    在用作网络传输时,依据使用的网络协议,块大小可能会与包大小冲突。
    提供给块大小的值会被解释成十进制整数,也能够增加后缀指定倍数。后缀w表示2倍,b表示512倍,k表示1024倍,M表示1024 × 1024倍。G表示1024 × 1024 × 1024倍,等等。另外。在块大小和计数參数中。一些实现也能够使用x表示乘运算。


    比如,块大小bs=2x80x18b表示2 × 80 × 18 × 512 = 1474560字节。也就是一张1440 KiB软盘的确切大小。



    数据转换
    dd能够在文件、设备、分区和卷之间复制数据。数据能够从当中不论什么地方输入或输出;但输出到分区时有重要差异。

    此外在传输过程中,数据能够用conv选项改动以适应介质。假设最后一个块有意外长度。试图使用cp复制整个磁盘可能会忽略掉它。然而dd却可能成功。

    源和目标磁盘应该具有同样的大小。
    不同情况的dd格式
    dd if=/dev/sr0 of=myCD.iso bs=2048 conv=noerror,sync从CD-ROM中创建ISO磁盘映像。
    dd if=/dev/sda2 of=/dev/sdb2 bs=4096 conv=noerror克隆一个分区到还有一个。
    dd if=/dev/ad0 of=/dev/ad1 bs=1M conv=noerror克隆硬盘“ad0”到“ad1”。
    noerror选项意味着假设错误发生,程序也将继续执行。

    sync选项表示填充每一个块到指定字节。
    备份和恢复主引导记录
    能够修复主引导记录。主引导记录能够转移到文件,或从中转移出来。


    要复制软盘的前两个扇区:

    dd if=/dev/fd0 of=MBRboot.img bs=512 count=2
    要创建整个x86主引导的镜像(包含MS-DOS分区表和MBR魔法字节):
     dd if=/dev/sda of=MBR.img bs=512 count=1
    要创建仅含主引导记录引导代码的镜像(不包含分区表和开机所需的魔法字节):
    dd if=/dev/sda of=MBR_boot.img bs=446 count=1
    数据改动
    dd能够原地改动数据。
    用空字节覆盖文件的前512个字节:
    dd if=/dev/zero of=path/to/file bs=512 count=1 conv=notrunc
    转换选项notrunc意味着不缩减输出文件,也就是说,假设输出文件已经存在,仅仅改变指定的字节,然后退出,并保留输出文件的剩余部分。没有这个选项,dd将创建一个512字节长的文件。


    在不同的分区中复制磁盘分区到磁盘镜像文件里:

    dd if=/dev/sdb2 of=partition.image bs=4096 conv=noerror
    磁盘擦除
    主条目:数据擦除
    出于安全方面的考虑。有时须要擦除丢弃的磁盘。


    检查驱动器上是否有数据。并将其输出到标准输出:

    dd if=/dev/sda
    用零擦除磁盘:
    dd if=/dev/zero of=/dev/sda bs=4k
    dd进程一次处理一个块,它的算法仅仅是在用户界面显示执行状态
    驱动器性能基准測试
    对驱动器进行基准測试(一般是单线程),使用1024字节块分析连续系统读取和写入的性能:
    dd if=/dev/zero bs=1024 count=1000000 of=file_1GB
    dd if=file_1GB of=/dev/null bs=1024
    用随机数据生成文件
    使用内核随机数驱动。用100个随机字节生成文件:
    dd if=/dev/urandom of=myrandom bs=100 count=1
    将文件转换为大写

    将文件转换为大写:

    dd if=filename of=filename1 conv=ucase
    创建随意大小的空文件
    创建1GiB的稀疏文件。或添加现有文件的大小:
    dd if=/dev/zero of=mytestfile.out bs=1 count=0 seek=1G
  • 相关阅读:
    仪仗队
    疫情控制
    Code
    距离咨询
    舒适的路线
    桐桐的糖果计划
    跑路
    最短路计数
    骑马修栅栏
    搭桥
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/7171991.html
Copyright © 2011-2022 走看看