美文网首页
Linux运维初步----第二周

Linux运维初步----第二周

作者: N27_loong | 来源:发表于2018-06-01 15:47 被阅读0次

    写作:N27_loong 2018-6-1
    失踪人口终于回归了!
    首先,祝大家工作愉快,六一节日快乐!linux的学习没有别的途径,就像卖油翁说的“唯手熟尔”。希望在前进的路上,一直有你陪伴!

    一、 Linux上常用的文件管理命令都有哪些,使用方法

    1. 文件类型的分类

    文件类型:
    - 普通文件类型
    d:目录文件
    b:块设备
    c:字符设备
    l:符号链接文件
    p:管道文件,pipe
    s:套接字文件,socket
    例如:

        [root@loong ~]# ll
        总用量 44
        -rw-r--r--. 1 root root 26150 7月   9 18:43 install.log
    

    说 明:自左向右:
    - 这是一个普通文件
    rw- 文件属主的权限
    r-- 文件属组的权限
    r-- 其他用户的权限
    1 数字表示被硬链接的次数
    root 文件的属主,本例中文件属主是root
    root 文件的属组,本例中文件属组是root组
    26150 文件的大小,字节数
    7月...文件最后一次被修改的时间
    install.log 文件名

        [root@loong ~]# ll /dev
        总用量 0
        brw-rw----. 1 root disk      8,   0 7月  14 07:44 sda
        brw-rw----. 1 root disk      8,   1 7月  14 07:44 sda1
        brw-rw----. 1 root disk      8,   2 7月  14 07:44 sda2
    

    说明:自左向右
    b:块设备
    rw-:属主权限,可读写。
    rw-:属组权限
    ---:其他用户权限
    1 :被硬链接的次数
    root:设备文件属主
    disk:设备文件属组
    8,:设备主设备号,标识设备类型
    0 :设备次设备号,标识同类型的不同设备
    7月....:设备文件最后修改的时间
    sda:设备文件名

    2. 目录管理的命令mkdir,rmdir

    1. mkdir:创建一个目录
      语法:mkdir [OPTION]... DIRECTORY...
      -p:自动创建路径上不存在的目录
      -v:显示命令的创建过程
      -m:设定权限
      例如:在/tmp目录下建立mydir目录并在此目录下再建立名称为1的目录
    [root@loong ~]# ls /
    bin  boot  cgroup  data  dev  etc  home  lib lost+found  media  misc  mnt  net  opt  proc  root sbin  selinux  srv  sys  tmp  usr  var
    [root@loong ~]# cd /tmp
    [root@loong tmp]# ls
    yum.log
    [root@loong tmp]# mkdir -pv /tmp/mydir/1
    mkdir: 已创建目录 "/tmp/mydir"
    mkdir: 已创建目录 "/tmp/mydir/1"
    [root@loong tmp]# ls
    mydir  yum.log
    [root@loong tmp]# cd mydir
    [root@loong mydir]# ls
    1
    
    1. rmdir:移除一个目录。要移除的目录必须是一个空目录。
      语法:rmdir [OPTION]... DIRECTORY...
      -p:删除某一空目录后如父目录为空,则一并删除。有较大风险,尽 量不用
      -v:显示命令的创建过程

      例如:删除上例中建立的目录

            [root@loong tmp]# mkdir -pv /tmp/mydit/1
            mkdir: 已创建目录 "/tmp/mydit"
            mkdir: 已创建目录 "/tmp/mydit/1"
            [root@loong tmp]# ls /tmp
            mydit  yum.log
            [root@loong tmp]# ls mydit
            1
            [root@loong tmp]# rmdir mydit/1                                         (删除名为1的目录)
            [root@loong tmp]# ls mydit/1
            ls: 无法访问mydit/1: 没有那个文件或目录     (目录已删除)
            [root@loong tmp]# rmdir mydit                                          (删除mydit目录)
            [root@loong tmp]# ls
            yum.log
            [root@loong tmp]# 
      

    3.文件查看命令:
    主要有cat,tac,head,tail,more,less命令。其中more,less命令分屏查看。

    1. cat
      将[文件]或标准输入组合输出到标准输出。

      -A, --show-all 等于-vET
      -b, --number-nonblank 对非空输出行编号
      -e 等于-vE
      -E, --show-ends 在每行结束处显示"$"
      -n, --number 对输出的所有行编号
      -s, --squeeze-blank 不输出多行空行
      -t 与-vT 等价
      -T, --show-tabs 将跳格字符显示为^I
      -u (被忽略)
      -v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
      --help 显示此帮助信息并退出
      --version 显示版本信息并退出

    2. tac:
      用法:tac [选项]... [文件]...
      将每个指定文件按行倒置并写到标准输出。
      如果不指定文件,或文件为"-",则从标准输入读取数据

    3. head:
      head [选项]... [文件]...
      将每个指定文件的头10 行显示到标准输出。
      如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
      如果不指定文件,或者文件为"-",则从标准输入读取数据。 显示文件前15行

       [root@loong etc]# head -n20 passwd
       root:x:0:0:root:/root:/bin/bash
       bin:x:1:1:bin:/bin:/sbin/nologin
       daemon:x:2:2:daemon:/sbin:/sbin/nologin
       adm:x:3:4:adm:/var/adm:/sbin/nologin
       lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
       sync:x:5:0:sync:/sbin:/bin/sync
       shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
       halt:x:7:0:halt:/sbin:/sbin/halt
       mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
       uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
       operator:x:11:0:operator:/root:/sbin/nologin
       games:x:12:100:games:/usr/games:/sbin/nologin
       gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
       ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
       nobody:x:99:99:Nobody:/:/sbin/nologin
       dbus:x:81:81:System message bus:/:/sbin/nologin
       vcsa:x:69:69:virtual console memory                                    owner:/dev:/sbin/nologin
       rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
       haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
       ntp:x:38:38::/etc/ntp:/sbin/nologin
      
    4. more 分屏查看命令

    5. less 分屏查看命令。man命令实际上调用less命令来查看帮助手册

    1. 对文件的操作命令(复制、移动、删除)
      1.文件的复制:cp命令,用于实现文件的复制
      源文件,目标文件

           单源复制:cp [OPTION]... [-T] SOURCE DEST
           多源复制:cp [OPTION]... SOURCE... DIRECTORY:目标必须是目录;
                     cp [OPTION]... -t DIRECTORY SOURCE...
      

    常用选项:
    -i,--interactive:交互式复制,即覆盖目标文件之前提醒用户确认;
    -f,force:强制覆盖目标文件;
    -R,-r,--recursive:递归复制目录及其内容
    -P,--no-dereference:复制链接文件本身,而非默认的复制链接文件指向的原文件内容;
    -d:相当于--no-dereference;复制链接本身(默认为复制链接文件的原文件内容);
    --preserve[=ATTR_LIST]:
    指明保留的原文件属性列表;
    默认为default: mode, ownership, timestamps;
    还包括其它属性:context(安全上下文), links(符号链接), xattr(额外属性), all;
    -a,--archive:归档复制;备份时才会使用;
    相当于-dR --preserve=all;
    注意:仅管理员有权限复制时保留属主和属组属性

    • 单源复制:cp [OPTION]... [-T] SOURCE DEST
      - 如果目标文件文件名与原文件不同名则:复制文件并重命名;
      复制过程:先创建目标文件,而后复制源文件的内容导入至目标文件;
      - 如果目标文件事先存在:
      - 如果目标文件文件名与原文件同名则:则覆盖目标文件,为安全计root用户默认使用-i选项,为交互确认;
      - 如果目标文件是目录则:在此目录中创建一个与原文件同名的文件,则导入其内容;
      • 多源复制 : 基本前提:目标存在,且必须是目录;否则即为错误;即复制时目标目录必须提前创建;
    [root@centos ~]# cp /etc/passwd /etc/gshadow /tmp/mytest
    cp: 目标"/tmp/mytest" 不是目录                #目标目录不存在
    [root@centos ~]# mkdir /tmp/mytest
    [root@centos ~]# cp /etc/passwd /etc/gshadow /tmp/mytest
    [root@centos ~]# ls /tmp/mytest
    gshadow  passwd
    [root@centos ~]# 
    
    • 复制链接文件时要注意:
      对于链接文件,默认是复制链接文件所指向的原文件的内容
    [root@centos ~]# ll /etc/redhat-release 
    lrwxrwxrwx. 1 root root 14 6月   7 2018 /etc/redhat-release -> centos-release
    [root@centos ~]# cp /etc/redhat-release /tmp
    [root@centos ~]# ll /tmp/redhat-release 
    -rw-r--r--. 1 root root 27 2月  17 15:35 /tmp/redhat-release
    [root@centos ~]# cat /tmp/redhat-release
    CentOS release 6.3 (Final)
    [root@centos ~]# cat /etc/centos-release 
    CentOS release 6.3 (Final)
    
    

    如果使用-P选项,则只复制了一个快捷方式,并无原文件内容。复制的文件不可用,要想正常使用,则要把源文件也复制到同一目录下。

    [root@centos ~]# cp -P /etc/redhat-release /tmp
    [root@centos ~]# ll /tmp/redhat-release 
    lrwxrwxrwx. 1 root root 14 2月  17 15:42 /tmp/redhat-release -> centos-release
    [root@centos ~]# cat /tmp/redhat-release
    cat: /tmp/redhat-release: 没有那个文件或目录
    [root@centos ~]# cp /etc/centos-release /tmp
    [root@centos ~]# ll /tmp/redhat-release 
    lrwxrwxrwx. 1 root root 14 2月  17 15:42 /tmp/redhat-release -> centos-release
    [root@centos ~]# cat /tmp/redhat-release
    CentOS release 6.3 (Final)
    
    
    • 复制时文件元数据的处理:
      默认是不保留所复制文件的属主和属组信息,以哪个用户复制文件,cp后的文件的属主和属组信息就是那个用户。要保留原属组和属主信息要使用 cp -p选项
      2.mv命令:(不需要-r选项)与使用cp命令相似;
      mv - move (rename) files 移动或重命名文件
      单源移动:mv [OPTION]... [-T] SOURCE DEST
      多源移动:mv [OPTION]... SOURCE... DIRECTORY
      mv [OPTION]... -t DIRECTORY SOURCE...

    注意:原文件目录与目标文件目录相同时,为rename;否 则为move;不区分目录和文件,直接move;
    常用选项:
    -i,--interactive:交互式复制,移动时,如果目标文件存在时提示用户确定是否覆盖(仅root用户);
    -f,force:强制,覆盖前不提示;

    3.rm命令:
    即能删除文件又能删目录,但删目录时要用递归-r选项;
    rm - remove files or directories
    rm [OPTION]... FILE...
    常用选项:
    -r, -R, --recursive:递归删除目录及其内容;
    -f,force:强制删除,不提示确认;
    -i,--interactive:交互式,提示确认;
    注意:请不要只想“rm -rf /”或“rm -rf / *”,在生产环境中,要自建回收站!禁用rm操作

    二. bash工作特性之命令执行状态返回值

    命令执行状态返回值:在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结束时,都会返回一个数字值,这个值叫做返回值,或者称为错误号 ( Error Number )。这个值保存在特殊环境变量?中,可以用echo?查看。

    ```
    [root@loong ~]# ls /
    bin  boot  cgroup  data  dev  etc  home  lib  lost+found  media        misc  mnt  net  opt  proc  root  sbin  selinux  srv  sys  tmp  usr     var
    [root@loong ~]# echo $?
    0
    [root@loong ~]# 
    ```
    

    返回值是0,表示命令操作成功,反之将返回1~255之间的一个数值。

    三 命令行展开的练习

    bash的特性之一,指使用"{ }"包括起来,包含一个以逗号为分隔的路径列表,并可展开为多个路径。
    例如:如下方式同时创建/tmp/a和/tmp/b两个目录

    [root@centos ~]# mkdir -v /tmp/{a,b}
    mkdir: 已创建目录 "/tmp/a"
    mkdir: 已创建目录 "/tmp/b"
    

    1、创建/tmp目录下的a_c,a_d,b_c,b_d目录

    [root@centos ~]# mkdir /tmp/{a,b}_{c,d}
    [root@centos ~]# ls /tmp
    8eabc  a_c  a_d  b_c  b_d  issue.bak  magedu  soo.e  vmware-root  vmware-tools-distrib
    [root@centos ~]# 
    

    2、创建如下目录结构


    目录结构练习.PNG
    [root@centos ~]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/rc.d/init.d,sysconfig/network-scripts,lab/modules,lab64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{log,run,lock}}
    mkdir: 已创建目录 "/tmp/mylinux"
    mkdir: 已创建目录 "/tmp/mylinux/bin"
    mkdir: 已创建目录 "/tmp/mylinux/boot"
    mkdir: 已创建目录 "/tmp/mylinux/boot/grub"
    mkdir: 已创建目录 "/tmp/mylinux/dev"
    mkdir: 已创建目录 "/tmp/mylinux/etc"
    mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"
    mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"
    mkdir: 已创建目录 "/tmp/mylinux/sysconfig"
    mkdir: 已创建目录 "/tmp/mylinux/sysconfig/network-scripts"
    mkdir: 已创建目录 "/tmp/mylinux/lab"
    mkdir: 已创建目录 "/tmp/mylinux/lab/modules"
    mkdir: 已创建目录 "/tmp/mylinux/lab64"
    mkdir: 已创建目录 "/tmp/mylinux/proc"
    mkdir: 已创建目录 "/tmp/mylinux/sbin"
    mkdir: 已创建目录 "/tmp/mylinux/sys"
    mkdir: 已创建目录 "/tmp/mylinux/tmp"
    mkdir: 已创建目录 "/tmp/mylinux/usr"
    mkdir: 已创建目录 "/tmp/mylinux/usr/local"
    mkdir: 已创建目录 "/tmp/mylinux/usr/local/bin"
    mkdir: 已创建目录 "/tmp/mylinux/usr/local/sbin"
    mkdir: 已创建目录 "/tmp/mylinux/var"
    mkdir: 已创建目录 "/tmp/mylinux/var/log"
    mkdir: 已创建目录 "/tmp/mylinux/var/run"
    mkdir: 已创建目录 "/tmp/mylinux/var/lock"
    [root@centos ~]# tree /tmp/mylinux/
    /tmp/mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   └── rc.d
    │       └── init.d
    ├── lab
    │   └── modules
    ├── lab64
    ├── proc
    ├── sbin
    ├── sys
    ├── sysconfig
    │   └── network-scripts
    ├── tmp
    ├── usr
    │   └── local
    │       ├── bin
    │       └── sbin
    └── var
      ├── lock
      ├── log
      └── run
    
    24 directories, 0 files
    [root@centos ~]# 
    
    
    

    四 文件元数据信息有哪些?分别什么含义?怎么修改时间戳信息?

    文件的数据由两部分组成:
    元数据(metadata):存放于文件系统中的inode里;标明文件的状态。显示内容包括:

    文件路径
    文件大小
    文件占用block
    每个IO block大小
    文件类型
    文件所在设备的主/次设备号
    文件的inode
    文件被硬链接次数
    文件权限
    文件的属主UID
    文件的属组GID
    环境(SELinux)
    access time:最近访问时间
    modify time:最近更改时间指数据发生变化
    change time:最近改变时间指元数据发生变化

    数据(data):存放在data blocks里,为实际的文件内容。

    查看文件元数据的命令是stat,修改文件时间戳使用touch命令。
    touch命令用法:touch 文件名
    选项:
    -c :文件不存在时,不创建空文件
    -a:仅修改access time
    -m:仅修改modify time
    -t:按指定的时间格式修改。
    时间格式 [cc]YYMMDDhhmm[.ss],年月日时分秒
    示例:
    1、修改access time,改为2020-02-10 05:05:5
    touch -at 时间格式 文件路径

    
    [root@centos ~]# stat /etc/issue
      File: "/etc/issue"
      Size: 47          Blocks: 8          IO Block: 4096   普通文件
    Device: 802h/2050d  Inode: 87          Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-02-13 15:31:36.481534982 +0800
    Modify: 2012-06-26 17:29:36.000000000 +0800
    Change: 2018-06-07 16:40:13.037753438 +0800
    [root@centos ~]#touch -at 202002100505.05 /etc/issue
    [root@centos ~]# stat /etc/issue
      File: "/etc/issue"
      Size: 47          Blocks: 8          IO Block: 4096   普通文件
    Device: 802h/2050d  Inode: 87          Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-02-10 05:05:05.000000000 +0800
    Modify: 2012-06-26 17:29:36.000000000 +0800
    Change: 2020-02-13 17:18:49.333657546 +0800
    

    修改modify time ,改为2020-01-12 23:23:23
    touch -mt 时间格式 文件路径

      File: "/etc/issue"
      Size: 47          Blocks: 8          IO Block: 4096   普通文件
    Device: 802h/2050d  Inode: 87          Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-02-10 05:05:05.000000000 +0800
    Modify: 2012-06-26 17:29:36.000000000 +0800
    Change: 2020-02-13 17:18:49.333657546 +0800
    [root@centos ~]# touch -mt 202001122323.23 /etc/issue
    [root@centos ~]# stat /etc/issue
      File: "/etc/issue"
      Size: 47          Blocks: 8          IO Block: 4096   普通文件
    Device: 802h/2050d  Inode: 87          Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2020-02-10 05:05:05.000000000 +0800
    Modify: 2020-01-12 23:23:23.000000000 +0800
    Change: 2020-02-13 17:24:18.979678792 +0800
    [root@centos ~]# 
    

    相关文章

      网友评论

          本文标题:Linux运维初步----第二周

          本文链接:https://www.haomeiwen.com/subject/lmkksftx.html