zoukankan      html  css  js  c++  java
  • Linux

    *linux基础指令**

    linux文档目录结构

    linux目录结构特点

    1.目录树的起始点是根目录(/,root);
    2.每一个目录不止能使用本地的文件系统,也可以使用网络上的文件系统,可以利用NFS服务器挂载特定目录。
    3.每一个文件在此目录树中的文件名,包含完整路径都是独一无二的。
    参考博客地址:
    https://www.cnblogs.com/pyyu/articles/9306498.html 服务器硬件
    https://www.cnblogs.com/pyyu/p/9277153.html linux入门
    https://www.cnblogs.com/pyyu/articles/9313587.html 安装vmware+centos
    https://www.cnblogs.com/pyyu/articles/9336967.html 远程连接linux
    https://www.cnblogs.com/pyyu/p/9213237.html linux文件目录结构
    https://www.cnblogs.com/pyyu/articles/9314206.html linux基本命令讲解
    http://linux.51yip.com/ 在线linux命令查询

     

    linux目录结构

    #/bin
    bin是Binary的缩写, 这个目录存放着最经常使用的命令
    #/boot
    这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
    #/dev
    dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
    #/etc                                  
    这个目录用来存放所有的系统管理所需要的配置文件和子目录。
    #/home
    用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
    #/lib
    这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
    #/lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
    #/media
    linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
    #/mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了
    #/opt
    这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的
    #/proc
    这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
       这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    #/root
    该目录为系统管理员,也称作超级权限者的用户主目录
    #/sbin
    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
    #/selinux
    这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的
    #/srv
    该目录存放一些服务启动之后需要提取的数据
    #/sys
    这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs,
    sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映,当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建
    #/tmp
    这个目录是用来存放一些临时文件的
    #/usr
    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
    #/usr/bin
    系统用户使用的应用程序
    #/usr/sbin
    超级用户使用的比较高级的管理程序和系统守护程序
    #/usr/src
    内核源代码默认的放置目录
    #/var
    这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件

    linux快捷键

    1.tab键    用于自动补全命令/文件名/目录名
    2.ctrl + l  清理终端显示
    3.clear/cls  清理终端显示
    4.ctrl + c   终止当前操作

    linux开关机指令

    reboot命令用于重启机器
    poweroff用于关闭系统

    目录相关操作

     

    ls指令常用参数

    -a  显示指定目录下所有子目录与文件,包括隐藏文件
    -l 以列表的方式显示文件的详细信息
    -h 配合-l以人性化的方式显示文件大小

     

    切换基础指令

    .       当前目录
    ..      上一层目录
    -   前一个工作目录
    ~   当前【用户】所在的家目录
    pwd 查看当前工作目录

    mkdir创建目录

    mkdir是make directory的缩写,用来建立新目录,
    #创建文件夹(只能创建一个文件夹)
    mkdir ./python
    mkdir /home/oldboy/python
    #递归创建文件夹
    mkdir -p /home/oldboy/python
    mkdir -p /home/{data1,data2,data3}

    rmdir删除目录

    #rmdir 删除空的文件夹(默认有提示;确认删除)
    rmdir /tmp/oldboy
    #递归删除文件或目录(默认有提示:确认删除)
    rm -r
    #强制删除文件或目录
    rm -f
    #递归强制删除文件和目录(慎用)
    rm -rf

    linux环境变量PATH

    #查看环境变量
    echo $PATH
       PATH(一定是大写的)这个变量是由一堆目录组成,分隔符是":"号,而不同于windows的";"号。

    绝对路径和相对路径

    #绝对路径:由根目录(/)为开始写起的文件名或者目录名称,如/home/oldboy/test.py;
    #相对路径:相对于目前路径的文件名写法。例如./home/oldboy/exam.py,简单来说只要开头不是/,就是属于相对路径
    #实例:
    cd /var/log (绝对路径)
    cd ../var/log(相对路径)

    VIM编辑器使用

    VIM概念

    vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
    Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

    VIM的三种模式

    基本上 vi/vim 共分为三种模式,分别是
    1:命令模式(Command mode),
    2:输入模式(Insert mode)
    3:底线命令模式(Last line mode)

    命令模式

    用户刚刚启动 vi/vim,便进入了命令模式。
    此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令
    #移动光标
    w(e)  移动光标到下一个单词
       b    移动到光标上一个单词
       数字0  移动到本行开头
       $    移动光标到本行结尾
       H    移动光标到屏幕首行
       M    移动到光标到屏幕的中间一行
       L    移动光标到屏幕的尾行
       gg    移动光标到文档的首行
       G    移动光标到文档尾行
       ctrl + f  下一页
       ctrl + b  上一页
      `.  移动光标到上一次的修改行
    #查找
    /chaoge     在整篇文档中搜索chaoge字符串,向下查找
    ?chaoge     在整篇文档中搜索chaoge字符串,向上查找
       *        查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
       #       查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
       gd        找到光标所在单词匹配的单词,并停留在非注释的第一个匹配上
       %    找到括号的另一半!!
    #复制,删除,粘贴
       yy    拷贝光标所在行
       dd    删除光标所在行
       D     删除当前光标到行尾的内容
       dG    删除当前行到文档尾部的内容
       p     粘贴yy所复制的内容
       x   删除光标所在的字符
       u     撤销上一步的操作
    # 数字与命令
    3yy  拷贝光标所在的3行
    5dd  删除光标所在5行

    输入模式

    在命令模式下按下字母i,就可进入输入模式
    #常用指令
    i install进入输入模式,在光标当前位置输入
    a append在文件末尾添加
    o 在光标下一行输入

    底线命令模式

    在命令模式下输入冒号(英文的:),就进入了底线命令模式,在底线命令模式下可以输入单个或多个字符的命令,常用命令有
      :q!     强制退出
      :wq!    强制写入退出
      :set nu 显示行号
      :数字  调到数字那行
    在输入模式下,先esc退出输入模式,在输入冒号,就可进入底线模式
    随时按下esc可以退出底线命令模式

     

    vim按键指令

    #移动光标的方法
       h 向左箭头键(←)    光标向左移动一个字符
       j 向下箭头键(↓)    光标向下移动一个字符
       k 向上箭头键(↑)    光标向上移动一个字符
       l 向右箭头键(→)    光标向右移动一个字符
       向下移动5行      5j
       向右移动10字符    10l
       n(space)    按下数字n,例如10,然后按下空格,光标会向右移动10个字符

    底线指令

    :! command    暂时离开vim指令模式,执行command的结果
    例如 :!ip a    临时看一下ip信息,然后可以回到vim
    #:set nu    显示vim行号
    #:set nonu    取消行号

    cat指令

    cat指令用于查看纯文本文件内容
    cat -n a.tat #打开文件显示行号
    cat a.txt #打开文件
    cat -E a.txt #在每一行的结尾加上$符号
    #追加文字到文件
    cat >>/tmp/oldboy.txt << EOF
    唧唧复唧唧
    木兰开飞机
    开的什么机
    波音747
    EOF

    more指令

    1.more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。
    2.more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容
    more /etc/passwd
    按下空格space是翻页
    按下b键是上一页
    回车键向下读取内容

    echo命令

    echo命令用于在终端输出字符串或变量提取后的值,格式是“echo 【字符串|$变量】”
    #默认吧内容显示到终端上    
    echo "超哥666"
    #写入到文件中
    echo "超哥666" > /tmp/chaoge.txt
    #打印变量
    echo $PATH #取出打印PATH的值

    特殊符号

    #输入/输出 重定向符号
    1.>>    追加重定向,把文字追加到文件的结尾
    2.>     重定向符号,清空原文件所有内容,然后把文字覆盖到文件末尾
    3.<     输入重定向
    4.<<    将输入结果输入重定向
    echo "oldboy-python666" > /tmp/oldboy.txt
    echo "chaoge666" >> /tmp/oldboy.txt
    cat >>/tmp/oldboy.txt << EOF
    ------------------------------------
    #我想把命令执行的结果信息,写入到文件中
    ip addr > /tmp/network.txt   #标准输出重定向 把命令执行结果信息,放入到文件中
    #3.通配符  
    ls -l /etc/us*

    shell基础命令

    创建文件或者修改文件时间戳

    #创建文件
    touch a,txt
    #修改文件的修改时间
    touch -t'07787878' a.txt
    

    stat命令

    显示文件或文件系统的状态
    #用法 stat [参数] 文件
    参数列表:
    -L, --dereference     跟随链接
    -f, --file-system     显示文件系统状态而非文件状态
    -c --format=格式      使用指定输出格式代替默认值,每用一次指定格式换一新行
    --printf=格式     类似 --format,但是会解释反斜杠转义符,不使用换行作
                                   输出结尾。如果您仍希望使用换行,可以在格式中
                                   加入" "
    -t, --terse           使用简洁格式输出
    --help            显示此帮助信息并退出
    --version         显示版本信息并退出
    #格式化输出参数:
     %a    八进制权限
     %A   用可读性较好的方式输出权限
    #实例1
    [root@master tmp]# stat 1.txt
     File: '1.txt'
     Size: 0             Blocks: 0          IO Block: 4096   regular empty file
    Device: fd00h/64768d    Inode: 17348002    Links: 1
    (权限)Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    (最近访问)Access: 2018-07-10 15:30:00.000000000 +0800
    (最近更改)Modify: 2018-07-10 15:30:00.000000000 +0800
    (最近改动)Change: 2018-11-07 15:38:36.400989868 +0800
    Birth: -

    #实例2,显示文件权限
    [root@master tmp]# stat -c %a 1.txt
    644
    [root@master tmp]# stat -c %A 1.txt
    -rw-r--r--

    cp复制(备份)命令

    复制 > copy > cp
    #移动xxx.py到/tmp目录下
    cp xxx.py /tmp/
    #移动xxx.py顺便改名为chaoge.py
    cp xxx.py /tmp/chaoge.py

    #Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数)
    cp -r 递归,复制目录以及目录的子孙后代
    cp -p 复制文件,同时保持文件属性不变  可以用stat
    cp -a 相当于-pdr
    #递归复制test文件夹,为test2
    cp -r test test2

    cp是个好命令,操作文件前,先备份
    cp main.py main.py.bak

    mv移动(重命名)

    移动(搬家)命令  > move > mv
    cd /home
    #移动文件
    mv /home/shahe/oldboy /tmp/chaoyang
    文件/文件夹改名
    mv x.log xx.log
    

    rm删除指令

    删除  > remove > rm
    参数  -i  需要删除确认
       -f  强制删除
         -r  递归删除目录和内容
     
    cd /tmp
    rm oldboy.py
    #默认有提示删除,需要输入y
    rm -f oldboy.py #不需要提示,强制删除
    #rm默认无法删除目录,需要跟上参数-r
    rm -rf /tmp/oldboy/
    

    find查找命令

    find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
    参数
    -name 按照文件名查找文件
    -type 查找某一类型的文件,诸如:
    b - 块设备文件。
    d - 目录。
    c - 字符设备文件。
    p - 管道文件。
    l - 符号链接文件。
    f - 普通文件。
    s - socket文件

    find /tmp/ -type f  -name "oldboy.py"
    #找出/tmp所有以 .txt 结尾的文件
    find /tmp/ -type f -name "*.txt"

    #找到/etc下所有名字以host开头的文件
    find /etc -name 'host*'

    #找到/opt下一个名为settings.py
    find /opt -name 'settings.py'

    管道命令

    Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
    常见用法:
    #检查python程序是否启动
    ps -ef|grep "python"

    #找到/tmp目录下所有txt文件
    ls /tmp|grep '.txt'

    #检查nginx的端口是否存活
    netstat -tunlp |grep nginx

    grep文本搜索

    是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
    grep [参数] [--color=auto] [字符串] filename
    参数详解:
    -i : 忽略大小写
    -n : 输出行号
    -v : 反向选择
    --color = auto : 给关键词部分添加颜色

    grep "我要找什么" /tmp/oldboy.txt
    #排除 -v,排除我要找的东西
    grep -v "我要找什么 /tmp/oldboy.txt
    #找出/etc/passwd下root用户所在行,以及行号,显示颜色
    cat /etc/passwd |grep '^root' --color=auto -n
    #找出/etc/passwd所有不允许登录的用户
    grep /sbin/nologin /etc/passwd
    #找到/etc/passwd的所有与mysql有关行,行号
    cat /etc/passwd |grep 'mysql' -n

    head和tail指令

    head显示文件前几行,默认前10行
    tail显示文件后几行,默认后10行
    #查看前两行8
    head -2 /tmp/oldboy.txt
    #查看后两行
    tail -2 /tmp/oldboy.txt
    #持续刷新显示
    tail -f xx.log
    #显示文件10-30行
    head -30 /tmp/oldboy.txt |tail -21

    sed指令

    sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

    #命令格式
    sed [options] 'command' file(s)
    sed [options] -f scriptfile file(s)
    #选项
    -e<script>--expression=<script>:以选项中的指定的script来处理输入的文本文件;
    -f<script文件>--file=<script文件>:以选项中指定的script文件来处理输入的文本文件;
    -h或--help:显示帮助;
    -n或--quiet或——silent:仅显示script处理后的结果;
    -V或--version:显示版本信息。
    -i ∶插入, i 的后面可以接字串
    #sed命令
    a 在当前行下面插入文本。
    i 在当前行上面插入文本。
    c 把选定的行改为新的文本。
    d 删除,删除选择的行。
    D 删除模板块的第一行。
    s 替换指定字符
    h 拷贝模板块的内容到内存中的缓冲区。
    H 追加模板块的内容到内存中的缓冲区。
    g 获得内存缓冲区的内容,并替代当前模板块中的文本。
    G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
    l 列表不能打印字符的清单。
    n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
    N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
    p 打印模板块的行。
    P(大写) 打印模板块的第一行。
    q 退出Sed。
    b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
    r file 从file中读行。
    t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
    T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
    w file 写并追加模板块到file末尾。  
    W file 写并追加模板块的第一行到file末尾。  
    ! 表示后面的命令对所有没有被选定的行发生作用。  
    = 打印当前行号码。  
    # 把注释扩展到下一个换行符以前。  
    #sed替换标记
    g 表示行内全面替换。  
    p 表示打印行。  
    w 表示把行写入一个文件。  
    x 表示互换模板块中的文本和缓冲区中的文本。  
    y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
    1 子串匹配标记
    & 已匹配字符串标记
    #sed元字符集
    ^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
    $ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
    . 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
    * 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
    [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。  
    [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
    (..) 匹配子串,保存匹配的字符,如s/(love)able/1rs,loveable被替换成lovers。
    & 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**
    < 匹配单词的开始,如:/<love/匹配包含以love开头的单词的行。
    > 匹配单词的结束,如/love>/匹配包含以love结尾的单词的行。
    x{m} 重复字符x,m次,如:/0{5}/匹配包含5个0的行。
    x{m,} 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
    x{m,n} 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。
    #sed实际用例
       #替换oldboy.txt中所有的oldboy变为oldboy_python
       #此时结果输出到屏幕,不会写入到文件
       sed 's/oldboy/oldboy_python/' /tmp/oldboy.txt
       #使用选项-i,匹配每一行第一个oldboy替换为oldboy_python,并写入文件
       sed -i 's/oldboy/oldboy_python/' /tmp/oldboy.txt
       #使用替换标记g,同样可以替换所有的匹配
       sed -i 's/book/books/g' /tmp/oldboy.txt
       #删除文件第二行
       sed -i '2d' /tmp/oldboy.txt
       #删除空白行
       sed -i '/^$/d' /tmop/oldboy.txt
       #删除文件第二行,到末尾所有行
       sed '2,$d' /tmp/oldboy.txt
       #显示10-30行
       -p --print
       -n --取消默认输出
       sed -n '10,30p' /tmp/oldboy.txt

    别名alias命令

    Linux如何提示你,在使用这些命令时候,提醒你小心呢?
    #查看系统别名
    alias
    默认别名
    alias cp='cp -i'
    alias egrep='egrep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias grep='grep --color=auto'
    alias l.='ls -d .* --color=auto'
    alias ll='ls -l --color=auto'
    alias ls='ls --color=auto'
    alias mv='mv -i'
    alias rm='rm -i'
    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    别名作用是:

    我们在linux中使用cp时候相当于执行了cp -i
    -i:删除已有文件或目录之前先询问用户;

    #别名用比较危险的操作,防止你犯错
    #让系统显示 do not use rm
    echo do not use rm
    #设置rm别名
    alias rm='echo do not use rm'
    #设置别名永久生效,写入到/etc/profile(针对登录用户的合同,设置环境变量)
    vim /etc/profile #编辑文件
    G  快速到达最后一行
    o  当前行下一行,创建一个新行,进入编辑模式
    source /etc/profile #读取文件(合同生效)
    ---------------
    #取消别名
    unalias rm

    which指令

    which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
    which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
    也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
    which pwd
    which python #python命令在哪
    /usr/bin/python    #命令文件绝对路径

    scp命令

    #Linux scp命令用于Linux之间复制文件和目录
    -r :递归复制整个目录
    -v:详细方式输出
    -q:不显示传输进度条
    -C:允许压缩

    #传输本地文件到远程地址
    scp 本地文件  远程用户名@远程ip:远程文件夹/
    scp 本地文件  远程用户名@远程ip:远程文件夹/远程文件名

    scp /tmp/chaoge.py root@192.168.1.155:/home/
    scp /tmp/chaoge.py root@192.168.1.155:/home/chaoge_python.py
    scp -r  本地文件夹  远程用户名@远程ip:远程文件夹/
    scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy

    #复制远程文件到本地
    scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
    scp -r root@192.168.1.155:/home/oldboy /home/

    du指令

    du命令用于显示目录或文件的大小
    du会显示指定的目录或文件所占用的磁盘空间
    #用法
    du 【参数】【文件或目录】
    -s 显示总计
    -h 以k,M,G为单位显示,可读性强
    #实例
    显示目录或文件所占空间
    #什么都不跟,代表显示当前目录所有文件大小
    du  
    #显示/home的总大小
    du -sh /home

    top指令

     

    top 命令用于动态地监视进程活动与系统负载等信息
    #第一行 (uptime)
    系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
    #第二行:进程信息
    进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
    #第三行:cpu信息
    1.5 us:用户空间所占CPU百分比
    0.9 sy:内核空间占用CPU百分比
    0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
    97.5 id:空闲CPU百分比
    0.2 wa:等待输入输出的CPU时间百分比
    0.0 hi:硬件CPU中断占用百分比
    0.0 si:软中断占用百分比
    0.0 st:虚拟机占用百分比
    #第四行:内存信息(与第五行的信息类似与free命令)
    8053444 total:物理内存总量
    7779224 used:已使用的内存总量
    274220 free:空闲的内存总量(free+used=total)
    359212 buffers:用作内核缓存的内存量
    #第五行:swap信息
    8265724 total:交换分区总量
    33840 used:已使用的交换分区总量
    8231884 free:空闲交换区总量
    4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入

    chattr命令

    #给文件加锁,只能写入数据,无法删除文件
    chattr +a test.py
    chattr -a test.py

    lsattr命令

    #查看文件隐藏属性
    lsattr test.py

    wget命令

    wget命令用于在终端下载网络文件
    参数是 wget [参数] 下载地址
    wget -r -p http://www.luffycity.com#递归下载路飞所有资源,保存到www.luffycity.com文件中

    用户管理与文件权限

    ROOT用户

    在Linux系统中,用户也有自己的UID身份账号且唯一
    系统管理员UID为0
    系统用户UID为1~999    Linux安装的服务程序都会创建独有的用户负责运行。
    普通用户UID从1000开始:由管理员创建


    为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过使用用 户组号码(GID,Group IDentification),我们可以把多个用户加入到同一个组中,从而方 便为组中的用户统一规划权限或指定任务。
    假设有一个公司中有多个部门,每个部门中又 有很多员工。如果只想让员工访问本部门内的资源,则可以针对部门而非具体的员工来设 置权限。
    例如,可以通过对技术部门设置权限,使得只有技术部门的员工可以访问公司的 数据库信息等。

    创建用户

    #添加用户(创建用户的同时会创建用户组)
    useradd oldboy
    #设置密码
    passwd rehat

    #root用户可以修改其他所有人的密码,且不需要验证

    切换用户

    su - username 
    #su命令中间的-号很重要,意味着完全切换到新的用户,即环境变量信息也变更为新用户的信息
    whomi #查看当前用户是谁
    su - username #切换用户
    logout #退出用户登陆

    1.超级用户root切换普通用户无需密码,例如“群主”想踢谁就踢谁
    2.普通用户切换root,需要输入密码
    3.普通用户权限较小,只能基本查看信息
    4.$符号是普通用户命令提示符,#是超级管理员的提示符

    查看当前用户信息

    id username #查看用户的信息所有信息
    #id 直接回车查看所有用户的所有信息

    查看存放用户信息的文件

    #/etc/passwd
    经过root创建的普通用户,id从1000开始
    系统自带的用户,如:mysql,bin,nginx,等默认是1-999

    删除用户

    userdel username #删除用户
    userdel -rf username #彻底删除用户信息
    -f     强制删除用户
    -r    同事删除用户以及家目录

    sudo命令

    sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码
    #常用参数
    sudo 【选项】【参数】
       -b:在后台执行指令;
       -h:显示帮助;
       -H:将HOME环境变量设为新身份的HOME环境变量;
       -k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
       -l:列出目前用户可执行与无法执行的指令;
       -p:改变询问密码的提示符号;
       -s<shell>:执行指定的shell;
       -u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
       -v:延长密码有效期限5分钟;
       -V :显示版本信息。
       
    这是由于配置sudo必须编辑/etc/sudoers文件,并且只有root才能修改,咱们可以通过visudo命令直接编辑sudoers文件,使用这个命令还可以检查语法,比直接编辑 vim /etc/sudoers更安全
    #配置sudo命令的方式:
    1:用visudo命令,打开sudoers配置文件,添加如下配置
           ## Allow root to run any commands anywhere
           root    ALL=(ALL)       ALL
           chaoge  ALL=(ALL)       ALL   #允许chaoge在任何地方,执行任何命令
       2:配置完成就可以使用sudo命令(每条命令钱都要加sudo)
          sudo touch a.txt

    文件权限

    权限介绍

    #Linux权限的目的是(保护账户的资料)
    #Linux权限主要依据三种身份来决定:
       user/owner 文件使用者,文件属于哪个用户
       group 属组,文件属于哪个组
       others 既不是user,也不再group,就是other,其他人
    #在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。
    #对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录

    linux权限

     

    1:权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
    2:文件链接数
    3:文件拥有者-属主
    4:文件拥有组-属组
    5:文件大小
    6:最后一次被修改的时间日期
    7:文件名
       
    #文件类型
    -    一般文件
       d    文件夹
       l    软连接(快捷方式)
       b    块设备,存储媒体文件为主
       c    代表键盘,鼠标等设备

     

    文件权限分类

    r    read可读,可以用cat等命令查看
    w    write写入,可以编辑或者删除这个文件
    x    executable    可以执行

    修改文件权限

    chmod [身份]   [参数]   [文件]
        u(user)   +(添加)  
        g(group)   -(减去)
        o(other)  =(赋值)
        a(all)
    #实例
    当前权限
    -rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
       #方法1
       减去属主的写权限
       chmod u-w pyyu.txt
       查看权限
       -r--rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt

       #方法2
       属主添加可读可写可执行权限
       chmod 700 pyyu.txt

       属主可读可写可执行
       属组可读可执行
       其他人可读可执行
       chmod 755 pyyu.txt

    修改文件属主

    #chown 修改文件属主
    [root@oldboy_python /tmp 16:43:12]#chown root pyyu.txt
    #执行结果
    [root@oldboy_python /tmp 16:43:42]#ll pyyu.txt
    -rw-rw-r-- 1 root pyyu 0 8月  11 16:41 pyyu.txt

    修改文件数组

    #chgrp修改文件属组
    [root@oldboy_python /tmp 16:44:59]#chgrp root pyyu.txt
    #执行结果
    [root@oldboy_python /tmp 16:45:51]#ll pyyu.txt
    -rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt

    软连接

    软连接也叫做符号链接,类似于windows的快捷方式。
    常用于安装软件的快捷方式配置,如python,nginx等

    ln -s 目标文件  软连接名

    1.存在文件/tmp/test.txt
    [root@master tmp]# ls -l
    -rw-r--r-- 1 root root     10 1015 21:23 test.txt

    2./home目录中建立软连接,指向/tmp/test.txt文件
    ln -s /tmp/test.txt my_test

    3.查看软连接信息
    lrwxrwxrwx 1 root root 13 1015 21:35 my_test -> /tmp/test.txt

    4.通过软连接查看文件
    cat my_test

    #my_test只是/tmp/test.txt的一个别名,因此删除my_test不会影响/tmp/test.txt,但是删除了本尊,
    快捷方式就无意义不存在了

    PSI命令提示符

    [root@oldboy_python ~]# echo $PS1
    [u@h W]$

    可以自行调整全局变量/etc/profile文件用于永久生效 PS1='[u@h W ]$'
    d  日期
    H  完整主机名
    h  主机名第一个名字
    t  时间24小时制HHMMSS
    T  时间12小时制
    A  时间24小时制HHMM
    u  当前用户账号名
    v  BASH的版本
    w  完整工作目录
    W  利用basename取得工作目录名
    #  下达的第几个命令
    $  提示字符,root为#,普通用户为$
    PS1 > 变量名
    $PS1 > 查看变量内容
    PS1=新内容 重新赋值

    变量赋值,查看
    name='chaoge'
    echo $name

    PS1显示ip地址
    export PS1="[u@h `/sbin/ifconfig ens33 | sed -nr 's/.*inet (addr:)?(([0-9]*.){3}[0-9]*).*/2/p'` w]$"

    文件打包与压缩

    tar打包

    tar 命令:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
       
    #tar(选项)(参数)
       -A或--catenate:新增文件到以存在的备份文件;
       -B:设置区块大小;
       -c或--create:建立新的备份文件;
       -C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
       -d:记录文件的差别;
       -x或--extract或--get:从备份文件中还原文件;
       -t或--list:列出备份文件的内容;
       -z或--gzip或--ungzip:通过gzip指令处理备份文件;
       -Z或--compress或--uncompress:通过compress指令处理备份文件;
       -f<备份文件>--file=<备份文件>:指定备份文件;
       -v或--verbose:显示指令执行过程;
       -r:添加文件到已经压缩的文件;
       -u:添加改变了和现有的文件到已经存在的压缩文件;
       -j:支持bzip2解压文件;
       -v:显示操作过程;
       -l:文件系统边界设置;
       -k:保留原有文件不覆盖;
       -m:保留文件不被覆盖;
       -w:确认压缩文件的正确性;
       -p或--same-permissions:用原来的文件权限还原文件;
       -P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
       -N <日期格式> --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;
       --exclude=<范本样式>:排除符合范本样式的文件。
       
    #打包
    tar -cvf 打包但是不会压缩
       tar -zcvf 打包并压缩
    #解包
    tar -xvf 解包
       tar -zxvf 解压并解包

     

    查看linux网络端口

    netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

    netstat [选项]
       -t或--tcp:显示TCP传输协议的连线状况;
       -u或--udp:显示UDP传输协议的连线状况;
       -n或--numeric:直接使用ip地址,而不通过域名服务器;
       -l或--listening:显示监控中的服务器的Socket;
       -p或--programs:显示正在使用Socket的程序识别码和程序名称;
       -a或--all:显示所有连线中的Socket;

    iptables防火墙

    centos7默认已经使用firewall作为防火墙了
    1.关闭防火墙
    systemctl status firewalld #查看防火墙状态
    systemctl stop firewalld    #关闭防火墙
    systemctl disable firewalld#关闭防火墙开机启动
    systemctl is-enabled firewalld.service#检查防火墙是否启动
    iptables -F #清空防火墙规则

    ps命令

    ps 命令用于查看系统中的进程状态,格式为“ps [参数]”
        ps  命令常用参数
        -a     显示所有进程
        -u     用户以及其他详细信息
        -x    显示没有控制终端的进程
    

    kill指令

    kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。

    -a:当处理当前进程时,不限制命令名和进程号的对应关系;
    -l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
    -p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
    -s <信息名称或编号>:指定要送出的信息;
    -u:指定用户。

    通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这 些进程会比较麻烦,此时可以使用 killall 命令来批量结束某个服务程序带有的全部进程。
    例如nginx启动后有2个进程
    killall nginx

    定时任务

     

    crontab (选项)(参数)
       -e:编辑该用户的计时器设置;
       -l:列出该用户的计时器设置;
       -r:删除该用户的计时器设置;
       -u<用户名称>:指定要设定计时器的用户名称。
       
    crontab任务配置基本格式:
    *  *  *  *  *  command
    分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令

    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令

    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    30 08 * * *  每天8.30去上班  
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
    */3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com  每隔三分钟执行下时间同步

    配置yum源的过程

    centos的默认yum仓库路径是 /etc/yum.repos.d  ,在这目录下,第一层文件夹中的repo文件会识别为仓库文件
    #1.获取阿里云的yum源
    打开网址https://opsx.alibaba.com/mirror
    #2.找到第一个仓库
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    #3.下载第二个仓库
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    #4.生成yum缓存,加速以后下载
    yum makecache

    python环境搭建(编译安装)

    #搭建环境之前先执行这条命令,解决大部分python问题(导包)
    yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

     

  • 相关阅读:
    个人永久性免费-Excel催化剂功能第86波-人工智能之图像OCR文本识别全覆盖
    git删除远程仓库的文件或目录
    使用document.execCommand复制内容至剪贴板
    使用clipboard.js实现复制内容至剪贴板
    正则匹配目标字符串不等于某些特定的字符串
    substr与substring的用法
    使用hexo搭建个人博客
    git修改最后一次commit的内容
    gulp压缩文件最简示例
    gulp最简示例
  • 原文地址:https://www.cnblogs.com/Tian-Cai-1996/p/12252352.html
Copyright © 2011-2022 走看看