zoukankan      html  css  js  c++  java
  • Linux进阶知识和命令

    一.Linux目录结构

    目录

    说明

    /lost

    found系统修复

    /bin

    二进制命令所在的目录。

    /boot

    系统引导程序所需的文件目录。安装系统分区的时候一般单独要分一个boot分区,大小可谓128-256M,该分区数据增长神效

    /dev

    (Device flies)设备软件目录,比如磁盘、光驱…..

    /etc

    系统配置,启动程序

    /home

    普通用户的家,目录默认数据存放目录

    /lib

    启动系统和运行命令所需的共享库文件和内核模块存放

    /mnt

    临时挂载存储设备的挂载点, u盘直接插入光驱无法使用,要先挂载后使用

    /opt

    额外的应用软件包

    /proc

    操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是虚拟文件系统的挂载点,proc并不是真正的文件系统,它的定义可以参见/etc/ fstab,系统运行很多信息都在这个目录下。

    /proc/loadavg

    <==系统负载(系统繁忙程度)

    /proc/memrino

    <==系统内存信息

    /proc/cpuinfo

    <==系统cpu信息

    /proc/mounts

      <==系统挂载信息。

    /root

    Linux超级用户root的家目录:root类似win32管理员administrator

    /sbin

    和管理系统相关的命令(超级管理员用)

    /tmp

    (Temporary files)临时文件目录, 这个目录可以被用作回收站使用

    /usr

    用户或系统软件应用程序目录

    /var

    这个目录的内容是经常变动的。是个用来存放系统日志的目录,系统日志的路径/var/log/messages; /var/lib用来存放一些库文件

    /etc系统初始化及设置相关重要文件

    /etc/sysconfig/network-scripts/ifcfg-eth0  #网卡配置文件

    /etc/resolv.conf                       #Linux系统DNS配置文件

    /etc/sysconfig/network                 #CentOS-6主机名配置文件

    /etc/hostname                          #CentOS-7主机名配置文件

    /etc/syscconfig/i18n                   #CentOS-6字符集配置文件

    /etc/locale.conf                       #CentOS-7字符集配置文件 

    /etc/hosts                             #ip地址与域名快速解析的文件

    /etc/fstab                             #配置开机设备自动挂载的文件

    /etc/rc.local                          #存放开机自启动程序命令的文件

    /etc/inittab                           # centos7设定运行级别等配置的文件

    /etc/systemd/system/default.target     #centos7设定运行级别等配置的文件

    /usr/lib/systemd/system/runlevel*.target  #centos7运行级别

    /etc/profile及/etc/bashrc             #配置系统的环境变量/别名等的文件

    /etc/profile.d                         #用户登录后执行的脚本所在的目录

    /etc/issue和/etc/issue.net            #配置在用户登录终端前显示信息的文件

    /etc/init.d                            #软件启动程序所在的目录

    /etc/motd                              #配置用户登录系统之后显示提示内容的文件

    /etc/redhat-release                    #声明RedHat版本号和名称信息的文件

    /etc/sysctl.conf                       #Linux内核参数设置文件

    网卡配置文件详解

    systemctl   restart    network
    [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
    UUID=30126a53-c912-4552-a7fe-af1925bd4d2f    #网卡uuid克隆虚拟机需要删除。
    HWADDR=00:0c:29:fe:f9:8a                     #mac地址,网卡唯一标识,克隆虚拟机要删除。
    NM_CONTROLLED=no                             #要不要被网络管理器控制,选no
    USERCTL=no                                   #USER ConTrol普通用户是否可以管理网卡,no
    PEERDNS=yes                                  #要不要覆盖/etc/resolv.conf文件(DNS客户端文件)
    IPV6INIT=no                                  #是否支持ipV6
    DEVICE=eth0                                  #网卡设备的名字,eth0是第一块。
    ONBOOT=yes                                   #开机时,是否和系统一起启动
    TYPE=Ethernet                                #以太网
    BOOTPROTO=none                               #启动协议.dhcp(动态主机配置协议).static/none(静态ip)
    IPADDR=10.0.0.200                            #IP地址
    NETMASK=255.255.255.0                        #子网掩码(也可以是24)
    GATEWAY=10.0.0.2                             #网关
    DNS1=223.5.5.5                               #第一个DNS
    DNS2=223.6.6.6                               #第二个DNS

    配置DNS的配置文件

    /etc/sysconfig/network-scripts/ifcfg-eth0
    配置方法:DNS1=xxx.xxx.xxx.xxx   DNS2=xxx.xxx.xxx.xxx
    /etc/resolv.conf
    配置方法:nameserver   xxx.xxx.xxx.xxx    nameserver   xxx.xxx.xxx.xxx

    CentOS-7系统修改主机名

    hostnamctl   set-hostname    新的主机名
    修改配置文件/etc/hostname

    修改字符集

    echo $LANG #查看
    export LANG=zh_CN.UTF-8 #临时修改
    localectl set-locale LANG=en_US.utf8 #需重新加载,永久生效
    CentOS-6修改配置文件/etc/syscconfig/i18n
    CentOS-7修改配置文件/etc/locale.conf
    source    配置文件

    运行级别

    CentOS-6

    runlevel #查看
    
    #修改级别
    init  级别   /  或者修改运行级别配置文件/etc/inittab 
    0   关机状态  (不要把运行级别永久设置为0)
    1   单用户模式  root密码忘记  故障 
    2   多用户模式  (不能使用NFS软件)
    3   完全的多用户模式  文本模式 命令行模式 
    4   没有使用 
    5   桌面模式 X11 
    6   重启     (不要把运行级别永久设置为0)

    CentOS-7

    systemctl   get-default  #查看
    systemctl  set-default  #修改

    别名与环境变量

    #查看系统中已经定义的别名
    alias      #alias  命令
    #命令设置 (临时生效,重启系统之后失效)
    alias  rm=' echo rm command bny'
    #配置文件修改
    vim   /etc/profile| /etc/bashrc (别名所有用户可用)#国法 
    vim   ~/.bashrc| ~/.bash_profile(别名当前用户可用)#家规
    #生效(永久生效)
    source  配置文件名
    #取消别名
    unalias   有别名的命令
    env #查看环境变量
    
    #命令设置(临时生效,重启系统之后失效)
    export  TEST=123   #环境变量统一大写(普通变量随意),名称不要与系统中已经定义好的变量冲突
    echo   $TEST #查看
    
    #配置文件定义  
    vim     /etc/profile(所有用户可用)#国法 
    vim     ~/.bash_profile(当前用户可用)#家规
    #生效(永久生效)
    source   配置文件
    #取消环境变量
    unset   TEST
    #对系统的小优化
    cat >>/etc/profile.d/color.sh<<"EOF"
    alias ll='ls -l --color=auto --time-style=long-iso'
    PS1='[e[32;1m][u@h W]$ [e[0m]'
    EOF
    source  /etc/profile

    /var目录下的路径知识

        /var/log              #记录系统及软件运行信息文件所在的目录
        /var/log/messages     #系统级别日志文件
        /var/log/secure       #用户登录信息日志文件
        /var/log/dmesg        #记录硬件信息加载情况的日志文件

    /proc目录下的重要路径知识

        /proc/meminfo       #系统内存信息
        /proc/cpuinfo       #关于处理器的信息,如类型,厂家,型号,性能等
        /proc/loadavg       #系统负载信息,uptime的结果
        /proc/mounts        #已加载的文件系统的列表

    /dev目录下的路径知识

        /dev/sd*                        #磁盘设备
        /dev/sr0或者/dev/cdrom         #光驱设备文件
        /dev/zero                      #写0设备,作用:1.清空磁盘数据 2.产生空设备文件
        /dev/null                      #黑洞设备,作用:销毁操作系统输出信息使用

    二.软件安装

    yum  install  -y  tree  xxxx            #安装软件
    yum  grouplist                      #查看已安装的软件包            
    yum  groupinstall                       #安装指定的软件包
    yum  provides                           #查询命令属于哪个软件包
    yum  remove   sl   -y               #删除一个软件包
    -ivh   rpm –ivh              #软件包  
    -e     rpm –e               #卸载软件包 
    -qa    rpm –qa              #查询所有软件包
    -ql    rpm –ql               #查看软件包里的文件列表
    -qf    rpm –qf              #查询命令或文件属于哪个软件包
    -qc    rpm  -qc           #查询软件的主配置文件
    #编译安装三部曲
    ./conflgure             #编译参数选项
    make                  #开始编译
    make install            #开始安装

    三.Linux文件类型

    -rw-------. 1 root root 4434 May 30 13:58 ks.cfg
    -rw-------. ①:文件类型与权限
    1           ②:硬链接次数
    root        ③:所属用户
    root        ④:所属组
    4434        ⑤:文件大小
    May30 13:58 ⑥⑦⑧:最新修改的时间与日期
    ks.cfg      ⑨:文件或目录名称
    Linux下扩展名只是方便用户记忆,对文件类型不影响
    .txt                    #文本文件
    .log                    #日志文件
    .conf .cfg .configure .xml   #配置文件
    .sh .bash               #shell脚本
    .py                     #python脚本
    ls -l 文件名 //看第一个字符
    格式         说明
    -           普通文件(文本, 二进制, 压缩, 图片, 日志等) 
    d           目录文件
    b           设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
    c               设备文件(字符设备)打印机,终端 /dev/tty1, /dev/zero
    s               套接字文件, 进程间通信(socket)
    p           管道文件
    l               链接文件

    文件及目录查找命令

    file  [文件]     #查看普通文件类型
    which   [命令] #显示命令的全路径
    whereis  [命令]    #查看命令及其相关内容
    作用:查找目录下文件 
    find /oldboy –maxdepth 1 –type f –name “*.txt” -size +1M
    -maxdepth      #最大查找多少层,一定放在最前面,1是该目录下一层
    -type          #类型 f d l
    -iname         #名字 (忽略大小写)
    -name          #名字 
    -size +1M(大于1M)-100k(小于100k ) #根据大小查找文件 
    -mtime +7(7天以前) -7(7天以内)     #根据时间查找文件
    示例:
    find /root/  -type f  -iname "*.txt" |xargs  cp -t /tmp/
    cp   $(find /root/  -type f  -iname "*.txt")   /tmp/
    find  /root/  -type f  -iname "*.txt" -exec cp {} /tmp/  ;
    find  /root/  -type f  -iname "*.txt" | xargs -i  cp {} /tmp/
    seq 10 >ett.txt
    xargs -n5 <ett.txt
    -n   分组
    主要配合find命令使用

    压缩包管理

    #创建压缩包
    [root@oldboy ~]# tar zcvf  /tmp/etc.tar.gz     /etc/
    把/etc/打包压缩 压缩包放在/tmp/etc.tar.gz
    tar 参数 zcvf
    z 表示通过gzip软件进行压缩
    c 表示创建压缩包
    v 表示显示创建压缩包和解压的过程
    f 表示指定压缩包(f一定要放在这几个参数的最后)
    t 查看压缩包内容
    tar  tf   /tmp/etc.tar.gz
    #解压
    x 表示解压
    解压时进入到tmp 下 cd/tmp
    tar  xf  /tmp/etc.tar.gz
    /tmp/etc.tar.gz 解压到 /opt 
    tar  xf /tmp/etc.tar.gz  -C  /opt/
    
    排除  --exclude
    #压缩文件
    zip    test.zip   test.log
    
    #压缩目录
    zip  -r  test.zip    test
    -q   #静默模式
    
    #解压
    unzip  test.zip
    
    #解压到指定目录
    unzip  -d     /opt scripts.zip
    
    #解压的其他参数
    -l   只看一下zip压缩包中包含哪些文件,不进行解压缩
    -v   查看显示的文件列表还包含压缩比率
    -t   检查zip文件是否损坏

    date 显示与设置系统时间

    date  显示或设置系统时间
    显示日期以2018-09-30 显示 
    [root@oldboyedu /etc]# date +%F
    2018-09-30
    [root@oldboyedu /etc]# date +%Y-%m-%d 
    2018-09-30
    显示日期,不显示世纪
    [root@oldboyedu /etc]# date +%y-%m-%d 
    18-09-30
    显示时间以10:30:12 显示
    [root@oldboyedu /etc]# date +%T
    10:30:12
    [root@oldboyedu /etc]# date +%H:%M:%S
    10:31:23
    date +格式  
    #%Y  year 
    #%m  month 月 
    #%d  day   日期
    #%H  hour  小时 
    #%M  minute 分钟 
    #%S  sec  秒 
    #+%F  === %Y-%m-%d 2018-09-30
    #+%T  === %H:%M:%S 
    #+%w      周几 (0周日)
    date  参数
    -d         根据你的描述显示日期
    -s       修改日期
    #同步时间
    ntpdate  ntp1.aliyun.com 

    四.Linux系统角色

    Linux 系统中,UID以如下的方式划分:
    0            表示管理员(root)
    1 - 500      表示系统虚拟用户
    501 - 65535  表示普通用户
    不同的Linux发行版,这些数字可能不一样

    用户及用户组相关命令

    useradd           添加用户
    -u                  给用户指定UID
    -s              指定用户的shell命令解释器
    -M          表示不创建家目录,创建虚拟用户使用
    -g          指定用户组
    -c              添加说明信息
    passwd           设置密码
    --stdin      非交互式设置密码
    echo 123456 | passwd --stdin  用户名
    whoami            我是谁,显示当前用户
    su              切换用户
    su -            切换用户的时候更新环境变量
    -c              切换到另一个用户,运行一个命令,   su - maple -c "pwd"
    id                  查看用户的uid,gid及归属的用户组
    userdel           删除用户,默认不删除用户的家目录和邮箱
    -r              删除与用户有关的所有信息
    usermod           修改用户信息
    -s        修改用户使用的shell 
    -g        修改属于的用户组,主要组
    -u        修改UID
    -c        修改用户说明
    groupadd           创建用户组
    -g      指定用户组并指定GID
    groupdel           删除用户组,不能删除还有用户归属的主用户组
    
            

    文件的权限

    列表的列定义如下:
    [权限属性信息] [连接数] [拥有者] [拥有者所属用户组] [大小] [最后修改时间] [文件名]
    权限属性列表为10个字符:
        第一个字符表示文件类型,d为目录 -为普通文件 l为连接 b为可存储的接口设备 c为键盘鼠标等输入设备
        2、3、4个字符表示所有者权限,5、6、7个字符表示所有者同组用户权限,8、9、10为其他用户权限
        第二个字符表示所有者读权限,如果有权限则为r,没有权限则为-
        第三个字符表示所有者写权限,如果有权限则为w,没有权限则为-
        第四个字符表示所有者执行权限,如果有权限则为x,没有权限则为-
        第五个字符表示所有者同组用户读权限,如果有权限则为r,没有权限则为-
        第六个字符表示所有者同组用户写权限,如果有权限则为w,没有权限则为-
        第七个字符表示所有者同组用户执行权限,如果有权限则为x,没有权限则为-
        第八个字符表示其他非同组读权限,如果有权限则为r,没有权限则为-
        第九个字符表示其他非同组写权限,如果有权限则为w,没有权限则为-
        第十个字符表示其他非同组执行权限,如果有权限则为x,没有权限则为-

    文件的修改时间属性

    mtime    modify time    修改时间 (文件内容变化)
    ctime    change time    属性改变的时间(文件属性;变化;大小;权限;inode;所有者用户硬链接数量)
    acime    access time    访问时间(cat)
    怎样查看:
        stat命令

    硬链接与软连接

    #硬链接用法
    ln [原文件] [目标文件]
    #硬链接
    1.具有相同inode的不同文件名
    2.删除硬链接或者原文件之一,文件实体不会被删除
    3.删除所有硬链接,数据会在被磁盘检查或者新数据写入时候删除回收。
    4.可以给文件设置硬链接防止误删
    5.通过ln [原文件] [目标文件]设置硬链接
    6.通过rm –f 删除硬链接
    7.文件目录不可创建硬链接,因为硬链接无法跨区
    #软连接用法
    ln –s [原文件] [目标文件]
    #软连接
    1.    软链接类似于快捷方式,存放原文件路径,执行原文件
    2.    删除原文件,软链接依然存在,但是失效
    3.    执行ln –s [原文件] [目标文件]完成创建
    4.    软链接和原文件是不同类型文件,inode不同
    5.    rm –f 删除软链接
    6.    可以创建目录和文件的软链接,即可以跨区
    #硬链接与软连接的区别
    1.从定义:linux系统中,链接有两种,一种被称为软链接,类似于快捷方式,存放指向原文件inode的信息,与原文件inode不同。一种是硬链接,与原文件有相同的inode,可以指向数据block。
    2.从创建方式:硬链接命令 ln [原文件] [目标文件],软链接命令ln –s  [原文件] [目标文件]
    3.从创建对象:ln命令不能对目录创建硬链接,但是可以对目录创建软链接。因为软链接可以跨越文件系统,,硬链接则不能。对目录和为客户创建的文件软链接经常用到。
    4.删除软链接文件,对硬链接和原文件无影响。
    5.删除文件硬链接,对原文件及软链接文件无影响
    6.删除原文件,对硬链接读取数据无影响,软链接则失效。会出现红底白字状。
    7.同时删除原文件和硬链接,原文件才会被真正删除
    8.很多硬件设备中的快照原理,类似于硬链接原理

    五.Linux通配符与特殊符号

    *
    匹配任意(0个或多个)字符或字符串,包括空字符串
    {}
    生成序列
    引用变量作为变量与普通字符分隔
    ?
    匹配任意1个字符,有且只有一个字符
    [abcd]
    匹配abcd中任何一个字符,abcd也可是其他任意不连续字符
    [a-z]
    匹配a到z之间的任意一个字符, a到z表示范围,字符前后要连续,-表示范围的意思,也可以用连续数字[1-9]
    [!abcd]
    同[^abcd],表示不匹配括号里面的任何一个字符,也可为[!a-d]
    ~    用户的家目录,超级用户为/root,普通用户为/home
    -    代表上一次(相对于当前路径)用户所在的路径
    .    代表当前目录(点号还有很多其它含义,暂且不表)
    ..    代表上一级目录
    ''    单引号,所见即所得,即输出单引号内容时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的是什么就会输出什么,被称之为强引用。
    ""    双引号,输出双引号内的所有内容时;如果内容中有命令(要反引下)、变量、特殊转义符等,会先把变量、命令、转义字符解析出结果,然后在输出最终内容来,推荐使用,被称为弱引用。
    ``    反引号,一般用于引用命令,执行的时候命令会被执行,相当于$(),赋值和输出都要将命令用``引起来。
    空    赋值时,如果变量内容有空格会赋值不完整。而在输出内容时,会将含有空格的字符串视为一个整体输出,如果内容中有命令(要反引下)、变量等,会先把变量、命令解析出结果,然后输出最终内容,如果字符串中带有空格等特殊字符,则有可能无法完整的输出,因此需要改加双引号,一般连续的字符串、数字、路径等可以不加任何引号赋值和输出,不过无引号的情况最好用双引号替代之,特别是变量赋值时。
    #重定向符号
    0          表示标准输入(stdin),配合<或<<使用,数据流从右向左
    1          表示标准输出(stdout),配合>或>>使用,数据流从左向右
    2          标准错误(stderr),配合>或>>使用,数据流从左向右
    0<或<      标准输入重定向,清空已有内容,数据从文件流向处理的命令
    0<<或<<    追加输入重定向,追加内容到底部,数据从文件流向处理命令
    1>或>      标准输出重定向,正常输出重定向到文件,会清空已有内容
    1>>或>>    标准输出追加重定向,将内容追加到文件底部,不清空已有内容
    2>         错误输出重定向,将标准错误内容重定向到文件,如文件存在内容则清空
    2>>        错误输出追加重定向,将标准错误内容追加到文件底部,不会清空已有内容
    ;    表示一个命令的结束,也是命令间的分隔符
    #    (1)表示是注释内容,给管理员看的注释部分,系统不会执行井号开头的内容;(2)root用户的命令提示符
    |    表示管道,将一个命令处理后的内容输出给下一个命令继续处理
    $    (1)字符串前加$符号,代表字符串变量内容;(2)普通用户命令提示符
        逃脱符,即将有特殊含义的字符还原成字符本意,例如$仅代表美元符
    &    将程序放入后台运行符,例如:/bin/sh /scripts/oldboy.sh &(后文会讲)
    #逻辑操作符号
    &&    与,and
    ||     或,or
    !      非,opppsite

    六.正则表达式

    POSIX规范将正则表达式分为两种:

    基本正则表达式(BRE,basic regular expression);

    扩展正则表达式(ERE,extended regular expression)——高级功能。

    +    一般与[]进行配合 把各种连续的东西取出来
    |     或
    ( )    一个整体 后向引用-sed
    { }    0{n,m}    前一个字符至少连续出现n次,最多连续出现了m次
    ?     前一个字符连续出现0次或1次
    BRE:^ $ ^$  . * .* []  [^] 
    ERE:+ | () {} ?
    BRE:grep/sed/awk
    ERE:egrep/grep -E/sed -r/awk
    $
    ^$空行 cat -A    取出文件中的空行或包含#或只有空格的行
    .(点)
    (撬棍)
    [abc]
    [^abc]
    |(竖线)
    ()
    #表示重复连续出现
    +
    *
    a{n,m}
    ?
    #查看资料
    man sed/grep/awk
    info grep/sed/awk
    #转义字符
    转义字符    意义    ASCII码值(十进制)
    a    响铃(BEL)    007
        退格(BS) ,将当前位置移到前一列    008
    f    换页(FF),将当前位置移到下页开头    012
    
        换行(LF) ,将当前位置移到下一行开头    010
    
        回车(CR) ,将当前位置移到本行开头    013
    	    水平制表(HT) (跳到下一个TAB位置)    009
    v    垂直制表(VT)    011
    \    代表一个反斜线字符'''    092
    '    代表一个单引号(撇号)字符    039
    "    代表一个双引号字符    034
        空字符(NULL)    000
    ddd    1到3位八进制数所代表的任意字符    三位八进制
    xhh    1到2位十六进制所代表的任意字符    二位十六进制

    七.Linux系统12位权限体系

    rwx含义
    read       可读
    write      可写
    execute    命令  or  脚本
    rwx 权限位表示
    r    read        读           4
    w    write        写           2
    x    execute        执行         1
    -                 没有权限     0
    权限位计算
    -rwxr-xr-x        755
    -r-x------         500
    -rw-------        600
    -rw-r--r--        644
    -rwxrwxrwx        777
    
    644        rw-r--r--    
    755        rwxr-xr-x
    400        r--------
    650        rw-r-x---
    404        r-----r-- 
    403        r------wx
    #chmod命令
    chmod:change mode,修改权限,-R 递归修改
    #用户的表示方法
    u-user(文件的所有者-主人)
    g--group(用户属于的组-家人)
    o-others(其他人 隔壁老王-陌生人)
    #权限授予
    +添加权限
    -去掉某一个权限
    =先去掉原有的权限,然后在赋予新的权限 chmod u=rx test.sh
    #权限对应的数字
    r---   4
    w----  2
    x----- 1
    - ==== 0
    #使用数字授予权限
    rwxr-xr-x 755
    chmod 755 test.sh
    #chown命令
    chown change own,修改属主属组,-R 递归修改
    r 是否能查看文件内容 
    w 是否能修改文件的内容,需要r权限配合 rw 
      只有w的时候vim强制修改文件内容,会导致源文件内容清空
    x 是否能运行命令或脚本的权限,需要r权限配合
    root 默认对文件rw权限,默认没有执行权限
    #linux系统默认权限控制命令umask
    临时:umask 022 #默认为022
    永久:修改/etc/profile文件
    #chattr 授予隐藏属性
    授予文件或目录隐藏的权限
    a (append 只能追加) 如果设置了这个权限 只能追加 不能删除 不能修改
    i( immutable 无敌) 无法修改 无法删除
    #lsattr 查看隐藏属性
    查看当前目录所有文件及目录的隐藏属性
  • 相关阅读:
    Masonry介绍与使用实践:快速上手Autolayout
    iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView
    FMDB的使用方法
    ViewController的生命周期分析和使用
    使用Xcode7的Instruments检测解决iOS内存泄露
    IOS比较常用的第三方组件及应用源代码(持续更新中)
    SDWebImage的简单使用
    ant编译tomcat-web项目
    git命令记录
    zabbix问题恢复正常,但是图表中还是显示故障存在
  • 原文地址:https://www.cnblogs.com/angelyan/p/10685942.html
Copyright © 2011-2022 走看看