• linux命令


    ------------1------------

    用户登录

    • root用户

      • 是一个特殊的管理账号,也可以成为超级管理员

      • root用户对系统有完全控制的权限

      • 对系统的损害会无限大

      • 在工作中,如果没有特殊的必要,尽量不要使用root

    • 普通用户

      • 权限有限

      • 对系统的损害会小

    终端

    分类

    • 设备终端

    • 物理终端

    • 虚拟终端 ctrl+alt+f[1-6] /dev/tty#

    • 图形终端 /dev/tty7

    • 串行终端

    • 伪终端 通过ssh远程连接的 /dev/pts/#

    • 查看终端的命令 tty

    • 查看ip地址的命令 ip addr

    交互式接口

    启动终端以后,在终端设备上附加的一个应用程序

    • GUI(桌面)

    • CLI command line

      • powershell

      • sh

      • bash(linux,mac默认的程序)

      • zsh

      • csh

      • tcsh

    bash

    bash是linux系统的用户界面,提供了用户和操作系统之间的交互,它接收用户的输入,让它送给操作系统执行

    • 目前是linux和mac上默认的shell

    • centos默认使用

    • 显示系统当前使用的shell echo $SHELL

    • 查看系统内可以使用的shell cat /etc/shells

    • ctrl +d 快速终止当前的连接

    • 切换shell chsh -s shell

     

    修改ssh连接慢的步骤

    echo "UseDNS no" >> /etc/ssh/sshd_config
    systemctl restart sshd

    命令提示符

    [root@localhost ~]#  
    管理员是# 普通用户时$

    显示提示符格式

    [root@localhost ~]# echo $PS1
    [\u@\h \W]\$
    \u 代表当前登录的用户
    \h 代表当前主机的主机名
    \W 代表当前的目录
    0表示默认字体,1表示加粗,4在字体下方加下划线 5 闪烁 7 代表突出显示
    31-37 字体颜色
    40-47 表示背景颜色
    echo 'PS1="\[\e[1;35mm\][\u@\h \W]\\$\[\e[0m\]"' >> /etc/profile.d/ps.sh #永久生效

    命令

    执行命令: 输入命令回车

    内部命令:shell 自带的命令

    • help 显示所有的内部命令

    外部命令:第三方提供的命令

    查看命令的类型: type

    [root@localhost ~]#type echo
    echo is a shell builtin
    [root@localhost ~]#type top
    top is /usr/bin/top

    别名

    • 查看当前所有的别名 alias

    • 自定别名 alias cdetc='cd /etc'

    • 取消别名 unalias cdetc

    • 设置别名只对当前的终端有效

    • 设置所有用户都可以用 /etc/bashrc

    • 只对当前用户有效 ~/.bashrc

    • 执行本身命令

      • \command

      • "command"

      • 'command'

      • path

    命令格式

    command [options.....] [args...]

    command 命令本身

    options:启动或者关闭命令里面的某些功能

    • 长选项:--help --color

    • 短选项: -i -l

    args:命令的作用体,一般情况下是目录或者文件,用户名等等

    注意:

    • 短选项是可以合并

    • 空格隔开

    • ctrl+c 结束命令的执行

    • 在同一行执行多个命令用;隔开

    • 一个命令可以在多行显示用\连接

    获取命令的帮助信息

    内部命令:

    • help command

    • man bash

    外部命令:

    • command -h

    • command --help

    • man coomand

    • 官方文档

    [root@localhost ~]#python --help
    usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
    [] 可选项
    <> 表示变化的数据
    ... 表示列表
    a|b|c 或者
    -abc 表示-a -b -c
    {} 表示分组

    man

     1   Executable programs or shell commands  #用户命令
    2   System calls (functions provided by the kernel) # 系统调用
    3   Library calls (functions within program libraries) # 库的调用
    4   Special files (usually found in /dev) #设备文件与特殊文件
    5   File formats and conventions eg /etc/passwd # 配置文件格式
    6   Games #游戏
    7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7) # 杂项
    8   System administration commands (usually only for root) # 管理类的命令
    9   Kernel routines [Non standard] # 内核的API
    退出q
    翻屏 空格
    翻行 回车
    man 章节 passwd

    bash 快捷键

    • ctrl+l 清屏 相当于clear

    • ctrl+o 执行当前的命令,并显示当前的命令

    • ctrl+s 锁屏

    • ctrl+q 解锁

    • ctrl+c 终止命令

    • ctrl+z 挂起命令

    • ctrl+a 光标移动到行首,相当于Home

    • ctrl+e 光标移动到行位,相当于End

    • ctrl+xx 在开头和当前光标所在位置跳转

    • ctrl+k 删除光标后的文字

    • ctrl+u 删除光标前的文字

    • alt+r 删除正行

    tab 键

    • 命令补全

      • 内部命令

      • 外部命令:根据环境变量定义的路径,从前往后依次查找,自动匹配第一个查找到的内容

      • 如果用户给的命令只有唯一一个匹配,则直接补全

      • 如果有多个匹配,则需要在按tab键将所有匹配到的结果展示出来

    • 目录补全

      • 把用户给定的字符作为文件的开头,如果有唯一一个匹配则直接补全

      • 如果有多个匹配,则需要再次按tab键把所有的匹配到的结果展示出来

    引号

    [root@localhost ~]#name=alexdsb
    [root@localhost ~]#echo "$name"
    alexdsb
    [root@localhost ~]#echo '$name'
    $name
    [root@localhost ~]#echo "wo shi `tty`"
    wo shi /dev/pts/2
    [root@localhost ~]#tty
    /dev/pts/2
    [root@localhost ~]#echo "wo shi $(tty)"
    wo shi /dev/pts/2

    命令历史

    • 可以使用上下箭头来查找之前执行过的命令

    • 存放文件是~/.bash_history

    • 执行的命令是history

    • 执行上一条命令

      • 上箭头

      • !!

      • !-1

      • ctrl+p 回车

    • 调用上一条命令的最后一个值 esc .

    • !# 指定第多少条命令

    • !-# 指定倒数第#条命令

    • !string 用来最近一次匹配到的命令(从下往上)

    • ctrl+r 搜索命令

    • ctrl+g 取消搜索

    • # 显示最后#条命令

    命令展开

    touch file{1..20}
    seq 0 2 10
    echo file{1..20..2}

    echo 回显

    echo -e 'dadasda\ndasdasd'
    echo -e '\a' #播放声音

    查看用户登录信息

    [root@localhost ~]#whoami # 显示当前的登录用户
    root
    [root@localhost ~]#who am i #显示当前登录用户的详细信息
    root     pts/2        2019-08-22 15:54 (192.168.21.1)
    [root@localhost ~]#w 显示所有的用户并显示执行的命令
     16:27:54 up  5:19,  9 users,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty2                      11:37    4:48m  0.02s  0.02s -bash
    wu       tty3                      11:39    4:48m  0.02s  0.02s -bash
    root     :0       :0               11:30   ?xdm?   1:28   0.36s /usr/libexec/gnome-session-binary --session gnome-classi
    root     pts/0    :0               11:35    4:43m  0.03s  0.03s bash
    root     pts/1    192.168.21.1     12:11    4:03m  0.02s  0.02s -bash
    root     pts/2    192.168.21.1     15:54    2.00s  0.18s  0.03s w
    wu       pts/3    192.168.21.1     12:27    2:26   0.05s  0.05s -bash

    date

    [root@localhost ~]#date  显示当前的时间
    Thu Aug 22 16:30:06 CST 2019 
    Usage: date [OPTION]... [+FORMAT]
      or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
    [root@localhost ~]#date 010923102018 #修改时间
    Tue Jan  9 23:10:00 CST 2018
    [root@localhost ~]#date
    Tue Jan  9 23:10:18 CST 2018
    [root@localhost ~]#ntpdate time.windows.com #同步网络服务器时间
    unix元年 1970-01-01
    [root@localhost ~]#date
    Thu Aug 22 16:35:44 CST 2019
    [root@localhost ~]#date
    Thu Aug 22 16:35:47 CST 2019
    [root@localhost ~]#date
    Thu Aug 22 16:35:48 CST 2019
    [root@localhost ~]#date +%a
    Thu
    [root@localhost ~]#date +%A
    Thursday
    [root@localhost ~]#date +%F
    2019-08-22
    [root@localhost ~]#date +%H
    16
    [root@localhost ~]#date +%I
    04
    [root@localhost ~]#date +%m
    08
    [root@localhost ~]#date +%d
    22
    [root@localhost ~]#date +%M
    38
    [root@localhost ~]#date +%h
    Aug
    [root@localhost ~]#date +%c
    Thu 22 Aug 2019 04:38:42 PM CST
    [root@localhost ~]#date +%T
    16:39:01
    [root@localhost ~]#date +%y
    19
    [root@localhost ~]#date +%Y
    2019
    [root@localhost ~]#date +%Y/m/%d
    2019/m/22
    [root@localhost ~]#date +%Y/%m/%d
    2019/08/22
    [root@localhost ~]#date +%s
    1566463197
    [root@localhost ~]#date +%W
    33

    显示时区

    [root@localhost ~]#timedatectl 
          Local time: Thu 2019-08-22 16:42:43 CST
      Universal time: Thu 2019-08-22 08:42:43 UTC
            RTC time: Thu 2019-08-22 08:42:43
           Time zone: Asia/Shanghai (CST, +0800)
         NTP enabled: no
    NTP synchronized: no
     RTC in local TZ: no
          DST active: n/a
    [root@localhost ~]#timedatectl set-timezone Asia/Tokyo

    日历

    cal

    cal -y 一年的日历

    cal # 显示某一年的日历

    关机重启

    • shutdown 默认1分钟之后关机

      • shutdown -c 取消关机

    • shutdow -r 重启

    • TIME

      • now 立即

      • +n n分钟之后

      • hh:mm 指定时间

    • 关机命令

      • poweroff

      • halt

      • init 0

    • 重启

      • reboot

        • -f 强制

        • -p 关机

      • init 6

    ------------2------------

    文件目录结构

    • 文件和目录被组织成一颗倒置的树状结构

    • 文件系统从根开始,“/”

    • 文件名称严格区分大小写

    • 隐藏文件以"."开头

    • 路径的分隔符为"/"

    文件命名规范

    • 文件字符最长为255个字符

    • 包括路径在内文件名称最长为4095个

    • 颜色表示

      • 蓝色 ---> 文件夹

      • 绿色 --> 可执行文件

      • 红色 --> 压缩文件

      • 蓝绿色 --> 链接文件

      • 灰色-->其他文件

      • 白色 --> 文件

    • 除了斜杠和NULL,其他所有字符都可以使用

    • 对大小写敏感

    文件系统结构

    • /boot 引导文件的存放位置,内核文件、引导加载器都在此目录

    • /bin 所有的用户都可以使用的命令

    • /sbin 管理类的命令

    • /lib 启动时程序使用的基本库文件 .so结尾

    • /lib64 专门存放X86_64系统上得辅助库文件

    • /etc 存放配置文件

    • /home/USERNAME 普通用户的家目录

    • /root 管理员的家目录

    • /media 便携式移动设备的挂载点

    • /mnt 临时文件的挂载点

    • /dev 设备文件和特殊文件的存放位置

    • /opt 第三方的应用的安装位置

    • /tmp 临时文件的存放位置

    • /usr 存放安装程序

    • /var 存放经常变化的文件,比如日志

    • /proc 存放内核启动和进程相关的虚拟文件

    • /sys 输出当前系统上的硬件相关的文件

    • /srv 系统上允许的服务用到的数据

    linux应用程序的组成

    • 二进制文件

      • /bin

      • /sbin

      • /usr/bin

      • /usr/sbin

      • /usr/local/bin

      • /usr/local/sbin

    • 库文件

      • /lib

      • /lib64

      • /usr/lib

      • /usr/lib64

      • /usr/local/lib

      • /usr/local/lib64

    • 配置文件

      • /etc

      • /etc/name

      • /usr/local/etc

    • 帮助文件

      • /usr/share/man

      • /usr/share/doc

      • /usr/local/share/man

      • /usr/local/share/doc

    绝对路径和相对路径

    • 绝对路径

      • 以根开始

      • 完整的文件的存放位置

      • 可以读取到任何一个文件或者文件夹

    • 相对路径

      • 不以根开始

      • 相对当前的位置来决定

      • 可以简短的表示一个文件或者文件夹

      • . 当前目录

      • .. 父级目录

    目录名和基名

    [root@localhost log]#basename /etc/sysconfig/network-scripts/ifcfg-ens33 
    ifcfg-ens33
    [root@localhost log]#basename /etc/sysconfig/network-scripts
    network-scripts
    [root@localhost log]#dirname /etc/sysconfig/network-scripts
    /etc/sysconfig
    [root@localhost log]#dirname /etc/sysconfig/network-scripts/ifcfg-ens33
    /etc/sysconfig/network-scripts

    切换目录

    cd 切换目录 change directory

    • 可以使用相对路径

    • 可以使用绝对路径

    切换到家目录

    [root@localhost log]#cd 
    [root@localhost ~]#

    切换到上一次的目录

    [root@localhost ~]#cd /etc/sysconfig/network-scripts/
    [root@localhost network-scripts]#cd -
    /root
    [root@localhost ~]#cd -
    /etc/sysconfig/network-scripts

    显示当前的工作目录

    pwd print working directory

    [root@localhost network-scripts]#pwd
    /etc/sysconfig/network-scripts
    # 查看链接的真正目录
    [root@localhost /]#cd lib
    [root@localhost lib]#pwd -P
    /usr/lib

    列出目录或者文件

    ls list

    命令格式:Usage: ls [OPTION]... [FILE]...

    ls -a 显示所有文件
    ls -l 以长格式显示文件列表
    total 21104
    -rw-r--r--. 1 root root        0 Aug 22 17:21 10
    权限       硬盘的引用次数 属主 属组 大小 访问时间 文件名称
    ls -R 递归显示目录
    ls -d 显示目录本身
    ls -1(数字1) 文件分行显示
    ls -S 安装文件大小排序
    ls -r 倒序显示
    ls -t 按照时间来排序
    ls -lh 显示人类易读的方式
    ls -d */ 显示当前目录下的文件夹
    l. 只显示隐藏文件

    linux下的目录类型

    • - 用来表示文件

    • d 用来表示目录

    • b 块设备

    • c 字符设备

    • l 表示符号链接文件

    • s socket套接字

    查看文件状态

      File: ‘anaconda-ks.cfg’
    Size: 1747     Blocks: 8         IO Block: 4096   regular file
    Device: fd00h/64768d Inode: 33574992   Links: 1
    Access: (0600/-rw-------) Uid: (    0/   root)   Gid: (    0/   root)
    Context: system_u:object_r:admin_home_t:s0
    Access: 2019-08-22 12:09:03.288000381 +0900 # 访问时间
    Modify: 2019-08-22 11:47:12.262947345 +0900 # 修改时间
    Change: 2019-08-22 11:47:12.262947345 +0900 # 改动时间
    atime 访问时间 查看文件内容就会改变
    mtime 修改时间 改变内容发生变化
    ctime 改动时间 元数据发生变化

    touch

    创建空文件和刷新时间,如果文件存在,则刷新时间,如果文件不存在,则创建文件

    -a 只修改atime和ctime

    -m 只修改mtime和ctime

    文件通配符

    • * 所有

    • ? 匹配的是任意单个字符

    • ~ 表示用户的家目录

    • [123] 其中一个

    • [^123] 取反

    • [0-9] 表示数字

    • file[a-z] 字母(有坑)缺少Z

    • file[A-Z] 字母(有坑)缺少a

    • [:lower:] 小写字母

    • [:upper:] 大写字母

    • [:alpha:] 所有字母 a-zA-Z

    • [:alnum:] 表示字母和数字

    • [:digit:] 表示数字

    创建目录

    mkdir 创建目录

    • -p 递归创建

    • -v 显示详细过程

    显示目录树

    安装:yum install -y tree

    tree 显示目录树

    -d 只显示文件夹

    -L # 只显示#层

    删除目录

    rmdir 只能删除非空目录

    -p 递归删除空父目录

    -v 显示删除过程

    rm -rf 删除非空目录

    复制文件和文件夹

    cp copy 默认情况下是别名,原来本身命令是不提示覆盖的

    Usage: cp [OPTION]... [-T] SOURCE DEST
    or:  cp [OPTION]... SOURCE... DIRECTORY
    or:  cp [OPTION]... -t DIRECTORY SOURCE...
     -i 显示提示信息
     -n 不覆盖
     -r -R 递归复制
     -d 只复制链接文件,不复制源文件
     -a 归档
     -v 显示过程
     -b 备份原来的文件
     --backup=number 备份文件加上数字
     -p 保留原来的属性
     
    • 如果源文件是文件的话

      • 目标是文件

        • 目标文件如果不存在的话,则新建目标文件,并把内容写到目标文件中

        • 如果目标文件存在的话,本来的命令是直接覆盖,建议使用-i来提示用户

      • 目标是文件夹

        • 在文件夹中新建一个同名的文件,并把文件内容写到新文件中

    • 如果源文件为多个文件的话

      • 目标必须是文件夹,文件夹必须存在,其他情况都会报错

    • 如果源文件是文件夹的话

      • 目标文件是文件: 不可以

      • 目标文件必须是文件夹,必须使用-r选项

      • 如果目标文件不存在:则直接创建目标文件夹,并把源文件夹的数据都复制到目标文件夹

      • 如果目标文件存在:

        • 如果是文件的话,则报错

        • 如果是文件夹:则在目标文件夹中创建同名文件夹,并把所有数据都复制到新文件夹

    移动、重命名

    mv move

    Usage: mv [OPTION]... [-T] SOURCE DEST
    or:  mv [OPTION]... SOURCE... DIRECTORY
    or:  mv [OPTION]... -t DIRECTORY SOURCE...
    -i 提示
    -f 强制
    -b 备份
    --backup=number 备份后面加数字
    -v 显示过程

    删除

    rm remove

    Usage: rm [OPTION]... FILE...
    -i 提示
    -r -R 递归删除
    -f 强制删除
    rm -rf 慎用
    rm -rf /*
    cd /
    rm -rf *

    链接

    软链接

    • 相当于windows的快捷方式

    • 创建命令 ln -s 源文件 目标文件

    • 可以对目录做软链接

    • 指向另外的一个文件或者目录的路径,大小是路径的长度的字符

    • 对磁盘引用次数没有影响

    • 可以跨分区

    • 源文件发生改变,软链接会跟着发生变化

    • 源文件删除,软链接不能访问

    硬链接

    • 磁盘引用次数会发生变化

    • 指向的是硬盘上的同一块区域

    • 磁盘的引用数会随着硬链接次数来增加

    • 不能对目录做硬链接

    • 不能跨越分区

    • 源文件发生改变,硬链接也会跟着变化

    • 源文件删除以后,硬链接可以访问

    查看文件类型

    file

    输入和输出

    • 标准输入 默认是来自键盘的输入 stdin 0

    • 标准输出 默认输出到终端窗口 stdout 1

    • 标准错误输出 默认输出到终端窗口 stderr 2

    I/O重定向

    > 覆盖

    • > 将标准输出重定向到文件中

    • 2> 将错误输出重定向到文件中

    • &> 将所有的输出都重定向到文件中

    禁止、允许覆盖

    • 禁止覆盖 set -C

    • 允许覆盖 set +C

    >> 追加

    >> 将标准输出追加到文件中

    2>> 将错误输出追加到文件中

    &>> 将所有输出追加到文件中

    标准输入和错误输入分开保存

    [root@localhost ~]#ls f 45yuio > log.log 2> error.log
    [root@localhost ~]#cat log.log 
    f
    [root@localhost ~]#cat error.log 
    ls: cannot access 45yuio: No such file or directory
    

    合并所有的输出

    • &> 覆盖重定向

    • &>> 追加重定向

    • command > file 2>&1

    • command >> file 2>&1

    • ():合并多个文件的输出

    • /dev/null 黑洞

    从文件导入stdin

    tr 字符替换

    -t 截断
    -d 删除
    -s 压缩,去重
    -c 取反
    [root@localhost ~]#tr 'a-z' 'A-Z' < /etc/issue
    \S
    KERNEL \R ON AN \M
    [root@localhost ~]#tr 'a-z' 'A-Z' 
    qwertyy
    QWERTYY
    12345678
    12345678
    ASDFGHJ
    ASDFGHJ
    qwertyuio
    QWERTYUIO
    ^C
    [root@localhost ~]#tr ab 12
    ab
    12
    abb
    122
    asdfghjkl
    1sdfghjkl
    ^C
    [root@localhost ~]#tr abc 12
    ab
    12
    abc
    122
    abc
    122
    ^C
    [root@localhost ~]#tr ab 123
    ab
    12
    abb
    122
    avc
    1vc
    qbc
    q2c
    abc
    12c
    [root@localhost ~]#tr -t abc 12
    abc
    12c
    ab
    12
    [root@localhost ~]#tr -d abc
    qwertyui
    qwertyui
    an^H^H
    n
    
    abc
    
    artyibrtyuiocrtyuiop
    rtyirtyuiortyuiop
    ^C
    [root@localhost ~]#tr -d abc < /etc/issue
    \S
    Kernel \r on n \m
    
    [root@localhost ~]#cat /etc/issue
    \S
    Kernel \r on an \m
    [root@localhost ~]#tr -s a
    abc
    abc
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabc
    abc
    ^C
    [root@localhost ~]#tr -sc a 
    aasdaaaaaaa
    aasdaaaaaaa
    ^[[A^H^H^C
    [root@localhost ~]#tr -sc a 
    aaaaaaaaabbbbbbbbbbbbbccccccccddddddddddd
    aaaaaaaaabcd
    [root@localhost ~]#tr -dc a
    aaaaaaaaaaaabbbbbbbbbb
    asdfghjkqwertyuiozxcvbnmxcvbnm,.
    aaaaaaaaaaaaa
    ctrl+d 结束
    [root@localhost ~]#tr -dc "a\n"
    asdfghjk
    a
    wertyujk;l'
    
    
    
    asdfghj
    a
    [root@localhost test]#tr -d a < issue > issue  处理完成以后不能写会到源文件,要写到新的文件中
    [root@localhost test]#seq 1 10 > b
    [root@localhost test]#cat b
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [root@localhost test]#tr -d "\n" < b
    12345678910[root@localhost test]#tr -d "\n" < b
    [root@localhost test]#tr "\n" " " <b
    1 2 3 4 5 6 7 8 9 10 [root@localhost test]#tr "\n" " " <b >c
    [root@localhost test]#cat c
    1 2 3 4 5 6 7 8 9 10 [root@localhost test]#tr " " "\n" <c
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    多行发送给stdin

    # 第一种方式
    [root@localhost test]#cat > f1
    qwert
    wertyui
    wertyui
    wertyuiopasdfghjk
    sdfghjkl
    sdfyhjkl;sdfghjkl;xcvb
    
    # 第二种方式
    [root@localhost test]#cat > f2 <<EOF
    > qwerty
    > qwertyu
    > wertyui
    > qwertyu
    > EOF
    EOF 不是必须得,只要两个相同就可以

    管道

    管道使用“|”来表示

    命令1|命令2|命令3

    • 把命令1的输出结果当做命令2的输出结果,把命令2的输出结果当成命令3的输入结果

    • 默认情况下,管道只能传送标准输出

    • 如果需要把错误输出也传递,则需要|&

    • 一般用来组合多个命令

    • 有一些命令是不接受管道的

    [root@localhost test]#ls f1|tr 'a-z' 'A-Z'
    F1
    [root@localhost test]#ls f
    ls: cannot access f: No such file or directory
    [root@localhost test]#ls f|tr 'a-z' 'A-Z'
    ls: cannot access f: No such file or directory
    [root@localhost test]#ls f|&tr 'a-z' 'A-Z'
    LS: CANNOT ACCESS F: NO SUCH FILE OR DIRECTORY
    [root@localhost test]#echo file{1..20}|touch 
    touch: missing file operand
    Try 'touch --help' for more information.
    

    ------------3------------

    cat 显示文本

    -E 显示结尾的$符
    -n 对显示的每一行进行编号
    -b 对非空行进行编号
    -s 对连续的空行进行压缩

    tac 倒序显示

    less 分屏显示文本

    向下翻一屏 空格

    向下翻一行 回车

    q 退出

    / 文本 搜索文本

    n 向下查找 N向上查找

    less 是man命令的默认分页器

    more 分页显示文件

    默认情况下显示读取的百分比

    读取完成自动退出

    q 退出

    -d 显示翻屏和退出的提示

    head 显示文件的前面的内容

    默认显示前10行

    -# 显示前#行

    -n # 显示前#行

    -c # 显示前#个字符

    tail 显示文件的后面的内容

    默认显示后10行

    -# 显示后#行

    -n # 显示后#行

    -c # 显示后#个字符,换行符也是一个字符

    cut 切割

    cut OPTION... [FILE]...
    -c 按照字符切割
    tail passwd |cut -c2-5
    -d 指定切割符,默认是tab
    -f # 显示第#个字段
    #,#,# 显示离散的多个
    #-# 表示连续的
    1-5,7 可以结合使用
    tail passwd |cut -d: -f1-5,7
    tail passwd |cut -d: -f1-5
    tail passwd |cut -d: -f1,3,5

    paste 合并

    默认是相同行合并到一起,默认是tab键

    -d 执行间隔符

    -s 将所有的行按照列来显示

    paste a.txt b.txt

    paste -d: a.txt b.txt

    paste -s a.txt b.txt

    wc 用来对文本进行统计

    [root@localhost test]#wc b.txt 
    4  5 20 b.txt
    行数 单词数 字节数 文件名
    -l 只显示行数
    -w 只显示单词数
    -c 只显示字节数
    -m 只显示字符数
    -L 显示文件中最长行的长度

    sort 排序

    Usage: sort [OPTION]... [FILE]...
    or:  sort [OPTION]... --files0-from=F
    默认是按照字母排序
    -r 倒序
    -R 随机排序
    -n 按照数字排序
    -f 忽略大小写
    -t 指定分隔符
    -k # 指定按照第#个字段进行排序
    sort -t: -k3 passwd
    sort -nt: -k3 passwd

    uniq合并相同的行

    • 相邻

    • 完全一样

    -c 显示相同的行出现的次数
    -d 只显示重复的行
    -u 显示从没有重复过的行
    cut -d" " -f4 d|sort |uniq -c

    pv page

    uv user

    diff 对比文件

    [root@localhost test]#echo "123" >> f
    [root@localhost test]#diff d f
    11a12
    > 123
    [root@localhost test]#echo "1234" >> d
    [root@localhost test]#diff d f
    12c12
    < 1234
    ---
    > 123

    chown 用来修改所有者和组

    Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
    or:  chown [OPTION]... --reference=RFILE FILE...
    chown wu c 修改属主
    chown wu:wu c 修改属主和属组
    chown root.root c
    chown :wu c 直接属组
    chown -R wu test 递归修改
    chown --reference=c d

    chgrp 修改文件的属组

    Usage: chgrp [OPTION]... GROUP FILE...
    or: chgrp [OPTION]... --reference=RFILE FILE...

    权限

    9位表示权限

    3组

    3位表示一组

    --- --- ---

    • 文件权限可以读以下定义

      • 属主 u

      • 属组 g

      • 其他 o

      • 全部 a

    • 每个文件的权限

      • r 读

      • w 写

      • x 执行

    • 对于文件来说

      • r 可以使用文本查看工具来查看里面的内容

      • w 可以修改文本的内容

      • x 执行可以直接./file

    • 对于目录来说

      • r 可以使用ls等文件查看的命令查看

      • w 可以创建文件,也可以删除

      • x 可以cd进入

    • 数字表示

      --x

      001 1

      -w-

      010 2

      r--

      100 4

      rw-

      110 6

      rwx

      111 7

      r-x

      101 5

      -wx

      011 3

    修改权限

    • 可以直接修改某一类用户的权限

    chmod u+x c 增加
    chmod u-x c 删除
    chmod u=r c 直接赋值

    shabang ---》 解释器

    • 可以直接使用数字表示

    • 可以基于某个文件来修改

    设定特殊权限

    chattr +i 不能删除、不能修改、不能变更

    lsattr 查看属性

    chattr +a 只能追加数据

    vi/vim

    打开文件

    vim [option] .... file....

    +# 直接定位到第#行
    +/pattern 打开文件后,直接定位到第一个匹配到patter的地方
    -b 以二进制方式打开文件
    -d file1 file2 对比打开多个文件
    -m file 只读方式打开文件
    -e 直接以末行模式打开

    模式

    • 命令模式:可以光标,可以粘贴、复制文本,默认

    • 插入模式或者编辑模式:可以修改文本

    • 末行模式(扩展命令模式):保存、退出等等

    • esc 退出当前的模式

    模式之间切换

    • 命令模式- 插入模式

      • i 光标所在处插入

      • I 在当前光标所在的行的行首插入

      • a 光标所在位置的后面插入

      • A 在当前光标所在的行尾插入

      • o 在当前光标所在的行的下一行(新开)插入

      • O 在当前光标所在的行的上一行(新开一行)插入

    • 插入模式- 命令模式

      • esc

    • 命令模式 -- 末行模式

    • 末行模式 -- 命令模式

      • esc esc

      • esc enter

    关闭文件

    • 末行模式

      • :w 保存

      • :q 退出

      • :wq 保存并退出

      • :q! 强制退出

      • :wq!强制保存退出

      • :x 保存并退出

    • 命令模式

      • ZZ 保存退出

      • ZQ 不保存退出

    扩展命令行模式

    • 按":" 来进入

    • w 写入

    • q 退出

    • wq 保存并退出

    • q! 强制退出

    • x 保存并退出

    • r file 读入文件

    • w file 另存为

    • !command 直接执行命令

    • r!command 直接把命令的结果写到文件中

    命令模式跳转

    • 字符之间跳转

      • l 向右

      • h 向左

      • j 向下

      • k 向上

    • 单词间跳转

      • w 下一次的单词的词首

      • e 当前词的词尾或者下一个单词的词尾

      • b 当前词的词首或者上一词的词首

      • # command 直接跳转#个单词

    • 页面间跳转

      • H 页首

      • L 页尾

      • M 页中

      • zt 将光标所在行移动到屏幕的顶端

      • zb 将光标所在行移动到屏幕的底部

      • zz 将光标所在行移动到屏幕的中间

    • 行首行尾之间跳转

      • ^ 跳转到当前光标所在行的第一个非空字符

      • 0(数字) 跳转到行首

      • $ 跳转到行尾

    • 行间移动

      • #G 跳转到第#行

      • 在命令扩展模式下,直接:# 跳转到对应的行

      • G 直接到最后一行

      • gg 跳转到第一行

      • 1G 跳转到第一行

    • 段落之间跳转(空行)

      • { 上一段

      • } 下一段

    • 翻屏

      • ctrl+f 向文件尾部翻一屏

      • ctrl+b 向文件首部翻一屏

      • ctrl+d 向文件尾部翻半屏

      • ctrl+u 向文件首部翻半屏

    命令模式编辑

    • 字符编辑

      • x 删除光标所在处的字符

      • #x 删除#个字符

      • xp 将光标所在处的字符和后面的字符互换位置

      • ~ 将光标所在的位置大小写互换

      • J 删除当前行的换行符

    • 替换

      • r 替换当前光标所在处的字符

      • R 进入替换模式

    • 删除

      • d 删除,需要跟字符跳转结合

      • d$ 删除到行尾,删除当前位置

      • d0 删除到行首,当前位置不删除

      • d^ 删除到非空字符

      • dw 删除一个单词

      • de 向后删除一个单词

      • db 向前删除一个单词

      • dd 删除正行

      • # dd 删除#行

      • dG 删除到结尾

      • dgg 删除到开头

      • D 相当于d$

    • 复制

      • y,也可以跟字符跳转结合

      • y$

      • y0

      • y^

      • yw

      • ye

      • yb

      • yy 一正行

      • #yy 复制#行

      • yG 复制到结尾

      • ygg 复制到开头

      • Y 复制整行

    • 粘贴

      • p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面

      • P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面

    • 改变,删除以后并将模式切换成插入模式

      • c 可以跟光标的跳转做结合

      • c$

      • c0

      • c^

      • cw

      • ce

      • cb

      • #command

      • cc 删除正行并插入

      • C 相当于c$

    • #[i|I|a|A|o|O]string esc 将string粘贴#次

    • 搜索

      • /pattern 从当前光标往下搜索

      • ?pattern 从当前光标往上搜索

      • n 同命令相同的方向

      • N 同命令相反的方向

    • 撤销

      • u 撤销最近的修改

      • # u 撤销最近的#次修改

      • ctrl +r 撤销之前的撤销动作

      • . 重复最后一次操作

      • #. 最后一次操作重复执行#次

    命令扩展模式

    地址定界

    :start,end

    # 具体到第#行

    #,# 第#行到第#行

    #,+n 从第#开始,到第#+n行结束 1,+2 ==>1,3

    . 表示当前光标所在的行

    $ 表示最后一行

    $-1 表示倒数第二行

    % 表示全文

    /pat1/,/pat2/ 从第一个pat1匹配到的地方,到pat2第一次匹配到的地方

    #,/pat/ 从第#行开始,到第一次被pat匹配到的地方

    /pat/,$ 从第一次被pat匹配到的到结尾

    可以使用的命令

    • d

    • y

    • w file 重新另存为文件

    • r file 将文件的内容写到匹配到的下一行

    查找并替换

    • 要使用地址定界来进行查找

    • s 在扩展命令模式下使用为替换

    • 格式: s/要查找的内容/要替换的内容/装饰器

    • 要查找的内容可以使用正则

    • 替换的内容不能为正则

      • 可以为分组:%s/(nfs.*)/#\1/

      • \1表示第一个分组内的内容

      • \2

      • \3

      • & 可以代表前面匹配到的内容

    • 装饰器

      • i 忽略大小写

      • g 表示全部替换

      • gc 每一次替换之前都要询问是否替换

    • 分隔符还可以使用

      • @

      • #

    可视化

    • v 面向字符

    • V 面向行的

    • ctrl +v 面向块

    • 可以结合所有的跳转键进行结合

    • 对突出显示部分可以使用删除、复制、变更、过滤、替换、另存为等等

    打开多个文件

    vim file1 file2 file3

    :next 下一个

    :prev 上一个

    :first 第一个

    :last 最后一个

    :qall 退出全部

    :wall 保存全部

    :wqall 保存并退出全部

    :xall 保存并退出全部

    使用多个窗口

    vim -o 水平分隔

    vim -O 垂直分隔

    切换ctrl+w 加上上下左右箭头

    单文件切割

    ctrl+w,s 水平切割

    ctrl+w,v 垂直切割

    ctrl+w,q 取消相邻的窗口

    ctrl+w,o 取消全部窗口

    vim工作特性

    配置文件

    • 全局有效:/etc/vimrc

    • 对当前用户有效: ~/.vimrc

    • 行号:set nu 取消 set nonu

    • 忽略大小写(搜索) set ic 取消set noic

    • 自动缩进(同上一行) set ai 取消set noai

    • 设置高亮显示(搜索到的内容) set hls 取消set nohls

    • 语法高亮 syntax on 取消 syntax off

    • 文件格式

      • windows格式 set fileformat=dos

      • unix set fileformat=unix

    • 添加标识线: set cul 取消标识线 set nocul

    • 获取帮助: set all

    • 获取帮助信息:

      • :help

      • :help topic

      • vimtutor

    ------------4------------

    find

    是linux里面的一个实时查找工具,通过制定路径完成文件查找

    find [options] ..... [查找路径] [查找条件] [处理动作]

    查找路径:查找的位置,默认是当前文件夹

    查找条件:制定查找的标准,文件名、大小、类型、日期等等

    处理动作:对符合条件的文件做什么操作,默认是输出到屏幕上

    查找条件

    • 根据文件名查找

      • -name 指定名称,可以使用正则

      • -iname 忽略大小写

      • -links n 引用次数为n的文件

      • -regex 后面跟完整路径,而不是文件名, 必须整个路径完全匹配

    • 制定搜索的层级

      • -maxdepth level 最大的搜索深度,指定的目录为第1层

      • -mindepth level 最小的搜索深度,包括level层

    • 根据属主、属组来查找

      • -user username 查找属主为username的文件

      • -group groupname 查找属组为groupname的文件

      • -uid id 查找属主为id的文件

      • -gid id 查找属组为id的文件

      • -nouser 查找没有属主的文件

      • -nogroup 查找没有属组的文件

    • 根据文件类型 -type

      • d 目录

      • f 文件

      • l 符号链接

      • s 套接字

      • b 块设备

      • c 字符设备

      • p 管道文件

    • 空文件或者空目录

      • -empty

    • 条件

      • 与 -a

      • 或 -o

      • 非 -not

    • 摩根定律

      • 非(A或者B) 非A 且非B

      • 非(A且B)非A或非B

    • 排除目录

      • -path

    • [root@localhost test]#find /etc -name *_config
      /etc/ssh/ssh_config
      /etc/ssh/sshd_config
      [root@localhost test]#find /etc -path /etc/ssh -name *_config
    • 按照大小来查找

      • -size # (#-1,#] 不包括#-1,包括#

      • -size -# [0,#-1] 包括#-1

      • -size +# (#,......)

    • 按照时间来查找

      • -atime # [#,#+1)

      • -atime -# (0,#)

      • -atime +# [#+1,....]

      • 查找7天以后的文件 find -atime +7

      • -mtime

      • -ctime

      • 以分钟为单位

        • -amin

        • -mmin

        • -cmin

    处理动作

    • -print 默认的处理动作,显示在屏幕上

    • -ls 类似于ls -l 显示长格式

    • -delete 删除查找到的文件

    • -fls file 将查找的结果以长格式保存到文件中

    • -ok command {} \; 对每一个查找到的文件执行command命令,在执行命令之前要先提示用户是否要执行

    • -exec command {} \; 对查到的每一个文件执行command命令,不需要确认,一次性交给后面命令处理

    xargs

    • 有的命令不支持管道

    • 命令参数过长

    • xargs 将管道前面的内容一条一条的交给后面命令处理

    • 一般会跟find使用

    linux三贱客

    grep

    awk

    sed

    grep

    grep [option] "模式" file

    option

    --color=auto 对匹配到的行添加颜色
    -v 取反
    -i 不区分大小写
    -n 查找的内容增加行号
    -c 打印匹配到的行数
    -o 只显示匹配到的文字
    -q 静默模式
    -A # after 向下显示#行
    -B # before 向上显示#行
    —C # context 上下分别显示#行
    -e 或者 grep -e 'user' -e 'root' passwd
    -E 扩展正则表达式
    -F 不使用正则表达式
    -r 递归
    -w 匹配整个单词

    正则表达式元字符

    • 字符匹配

      • . 任意单个字符

      • [] 匹配指定范围内的任意单个字符 [0-9] [a-z] [A-Z]

      • [^] 取反

      • [:upper:] 大写字母

      • [:lower:] 小写字母

      • [:alnum:] 字母和数字

      • [:alpha:] 大小写字母

      • [:digit:] 数字

      • [:black:] 空白

      • [:punct:] 标点符号

    • 匹配次数

      • * 表示任意次数

      • .* 任意字符任意次数

      • \? 表示0或者1次

      • \+ 至少一次

      • \{n\} 表示n次

      • \{m,n\} 最少m次,最多n次

      • \{n,\} 至少n次

      • \{,n\} 至多n次

    • 位置锚定

      • ^ 开头

      • $结尾

      • ^$ 空行

      grep -v "^#" /etc/ssh/sshd_config |grep -v "^$" 显示不以#开头并且不是空行
    • 分组

      grep "\(c\|C\)at" a
    • 向后引用

      • \1 前面第一个括号出现的内容匹配完成之后再后面在出现一次

      • \2

    • 扩展正则表达式

      • 与正则表达式的区别是不需要转义

    压缩

    gzip

    压缩文件

    gzip [option]... file
    -c 将压缩结果输出到屏幕,保留原来的文件
    gzip -c passwd > passwd.gz
    -1-9 指定压缩比,默认9
    -d 解压
    zcat 不解压的情况下查看压缩比内的内容
    gunzip 解压

    bzip2

    bzip [option] file

    直接压缩
    bunzip2 解压
    -k 保留原来的文件
    -d 解压
    -1-9 指定压缩比
    bzcat 不解压的情况下查看压缩包的内容

    xz

    xz [option] file

    unxz 解压
    -k 保留原来的文件
    -d 解压
    -1-9 指定压缩比
    xzcat 不解压直接查看

    zip

    zip [option] zipfile 要压缩的文件
    zip -r network.zip /etc/sysconfig/network-scripts
    unzip network.zip

    tar

    归档工具

    归档
    tar cpvf etc.tar /etc 
    c 创建
    v 显示过程
    f 指定归档文件
    p 把原来的属性也带过来
    tar -r -f etc.tar /etc 追加
    tar -t -f etc.tar 查看归档文件内的内容
    tar xf etc.tar  解压文件
    tar xf etc.tar -C 
    -z 使用gzip压缩
    -j 使用bzip2压缩
    -J 使用xz压缩
    --exclude 排除文件
    

    split

    split -b 指定大小 文件(只能为文件) 切割以后的名字
    -d 指定后缀为数字
    -a 指定后缀几位
    cat 切割后的文件 > 新文件

    ------------5------------

    用户

    • 超级管理员用户 root 0

    • 普通用户

      • 系统用户: 用来启动系统的一些服务和进程的用户,不可以登陆 1-999(centos7)1-499 (centos6)

      • 可登陆用户:能登录系统的用户 1000-65535(centos7)500-65535(centos6)

    useradd

    Usage: useradd [options] LOGIN
          useradd -D
          useradd -D [options]
    普通用户的id是递增,系统用户的id是递减的
    -d 用来指定用户的家目录
    -g 指定用户组的id
    -G 指定用户的附加组
    -k 指定复制那个文件夹下的内容,需要和-m一起使用
    -m 创建用户的家目录
    -c "message" 指定用户的描述信息
    -N 不创建同名的组,以users为组
    -s 指定用户登录后使用的shell
    -u 指定用户的id
    —D 显示系统的默认配置
    -D [options] 可以修改系统的默认配置
    • 相关文件

      • /etc/default/useradd 创建用户的默认文件

      • /etc/skel/* 默认复制的文件

    用户修改usermode

    -c 修改描述信息
    -d 修改家目录,默认不会创建新目录,如果想移动家目录,则需要使用-m
    -g 修改用户组
    -G 修改用户的附加组,默认情况下是替换
    -a 追加附加组
    -l newname 修改用户的登录名称
    -L 锁定用户,不能登录系统,修改密码默认情况下回解锁
    -U 解锁用户
    -s 修改用户登录后的shell
    -u 修改用户的uid
    -e 年-月-日 修改用户的过期时间,过期以后不能登录

    删除用户 USERDEL

    默认删除用户不删除用户的家目录
    -r 删除家目录
    -f 强制删除
    默认情况下,用户登录状态下是不能删除用户,强制删除用户以后,用户还是可以用的

    查看用户相关信息id

    -g 只显示组id
    -G 只显示附加组id
    -u 只显示用户id
    -n 显示名称,需要和guG来配合使用

    切换用户

    su [options] [-] [USER [arg]...]

    切换用户的方式

    • 完整切换:su - username 登录式切换,环境变量等都会切换

    • 不完整切换:su username 不会切换用户的环境变量家目录等

    • root切换普通用户不需要密码,非root用户切换需要密码

    切换用户执行命令

    [root@localhost ~]#su - peiqi -c "whoami"
    peiqi

    执行本身不能执行的命令

    sudo 配置文件为/etc/sudoers

    peiqi   ALL=(ALL)       NOPASSWD:ALL
    其中的NOPASSWD 是不需要输入密码

    /etc/passwd文件

    • 用户名称

    • 密码,使用x来占位

    • uid

    • gid

    • 描述信息

    • 家目录

    • 登录后使用的shell

    设置密码passwd

    passwd [OPTION...] <accountName>
    -d 删除指定用户的密码,删除密码之后就不能登录
    -l 锁定用户
    -u 解锁用户
    -e 在下次登录以后强制用户修改密码
    -f 强制操作
    -x maxday 密码的最长使用时间
    -n minday 密码的最短使用时间
    -w warnday 密码过期前多长时间提醒
    -i inactiveday 密码过期多长时间以后禁用
    --stdin 从标准输入读取密码 echo '123'|passwd --stdin peiqi

    存放文件/etc/shadow

    • 用户名

    • 密码 $加密方式(默认sha512)$盐$加密后的字符串$

    • 从1970年1月1日到最近一次修改密码经过的时间

    • 密码的最短使用时间(0表示随时可以修改)

    • 密码的最长使用时间(99999表示永不过期)

    • 密码过期多长时间提醒(默认是一周)

    • 密码过期多长时间锁定

    • 从1970年1月1日开始算起,多长时间后账号失效

    密码的复杂性策略

    • 必须包括数字、大小写、特殊字符

    • 密码必须12位以上

    • 不能为弱口令

    • 必须为随机密码

    • 3个月或者半年修改一次

    机器免密登录

    ssh-keygen 一路回车
    ssh-copy-id 要登录的机器

    修改用户密码策略 chage

    -E
    -I
    -m
    -M
    -W
    change login 可以使用交互式的修改密码策略

    chfn 修改用户的个人信息

    用户组

    • 超级用户组 root 0

    • 普通用户组

      • 系统用户组 1-999(centos7) 1-499(centos6)

      • 可登陆用户组 1000-65535(centos7)500-65535 (centos6)

    groupadd
    -g 指定组id
    -r 创建系统用户组

    组的文件

    /etc/group

    • 组名

    • 密码占位

    • gid

    • 组成员

    /etc/gshadow

    • 组名

    • 密码

    • 组管理员的密码

    • 组成员

    修改组信息

    groupmod

    -g 修改gid
    -n 修改组名

    删除组

    groupdel 删除组

    软件

    windows exe

    centos(redhat) rpm

    rpm: radhat package manager

    rpm

    yum

    包的命名规范

    MySQL-python-1.2.5-1.el7.x86_64.rpm  
    名字-版本(大版本.小版本.修订版)-打包版本.可用的系统.架构.rpm
    架构:
    	x86_64
    	x86
    	i386
    	i486
    	i686
    	ppc
    	noarch 表示通用

    包的来源

    • 光盘

    • 第三方网站

    • 官方网站

    • 自己做

    • https://pkgs.org

    • epel 第三方包的结合地

    rpm 包的查询

    rpm -q 查询指定的包是否安装
    -a  all 表示当前系统安装的所有的包
    -f filename 查询指定的文件由那个包安装生成
    -c 查看指定的包生成了哪些配置文件
    -d 查询指定的包生成了哪些文档
    -i 查询指定包的详细信息
    -l 查询指定的包生成到文件
    常用的选项
    -qi
    -qa
    -ql
    -qc
    -qd

    yum

    yum 会自动解决依赖关系

    仓库 存放的是 多个包和包的元数据信息(所在仓库,依赖关系)

    仓库的位置:

    • http://

    • https: //

    • ftp: //

    • file: //(本地文件)

    • 配置文件存放在/etc/yum.repos.d

    yum配置文件

    [base] #名称
    name=CentOS-$releasever - Base - mirrors.aliyun.com # 描述信息
    failovermethod=priority # 定义挑选顺序 priority 按顺序 roundrobin 随机
    baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
            http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
            http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
    enabled ={0|1} 是否启用,1启用,0是不启用
    gpgcheck={0|1} 使用校验
    gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 # 校验文件
    默认值
    $releasever 发行版
    $basearch 系统架构

    yum 源

    • 阿里

    • 163

    • sohu

    • 腾讯

    • 北大

    • 中科大学

    • 。。。。

    yum命令

    • yum repolist 查看仓库

    • yum list 列出仓库里面所有的包 安装的包前面带@

    • yum install 安装包

    • yum reinstall 重新安装

    • yum update 更新所有的包

    • yum update pkg 更新指定的包

    • yum downgrade 降级

    • yum check-update 检查包是否可以更新

    • yum remove 卸载包

    • yum info pkg 显示包的详细信息

    • yum clean all 删除元数据信息

    • yum makecache 重新构建元数据信息

    • yum search 搜索软件包(包名称、描述信息只要包含就可以搜索出来)

    • yum provides 搜索命令是由哪个包提供的

    软件包组

    • yum grouplist 查看包组

    • yum groupinstall 安装

    • yum groupinfo 获取包的信息,查看包组有哪些包组成

    • yum groupupdate 更新

    • yum groupremove 卸载包组

    yum选项命令

    -y 自动确认

    -q 静默模式

    源码安装

    • 下载 wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz

    • 解压文件 tar xf

    • 切换目录 cd

    • 可以查看帮助信息 README INSTALL 文件

    • 安装所需文件

    • 编译(检查程序所需的文件)./configure

    • 构建安装程序 make

    • 安装程序 make install

    • 配置环境变量

    全双工通信

    ------------6------------

    磁盘管理

    查看磁盘空间的占用

    df 
    -h 显示人类易读的方式
    linux下磁盘命名格式
    /dev/sd[a-z]

    查看目录的占用空间

    du
    -s 查看目录
    -h 显示人类易读的方式
    du -sh /*

    dd

    dd if=/dev/zero of=file bs=size count=number
    if = input file 表示从inputfile里面读取内容
    of = output file 表示将读出的数据写入到什么地方
    bs = byte size 可以是K,M,G,T

    RAID 阵列卡

    • raid0

      • 读、写速度有所提升

      • 可用空间N(磁盘的个数)*每一块的大小

      • 没有容错能力

      • 最少磁盘数2

    • raid1

      • 读有所提升,写性能下降

      • 可用空间,所有磁盘中最小的一块大小

      • 有容错能力

      • 最少是2,2N

    • raid5

      • 读写速度有提升

      • 可用空间(N-1)*大小

      • 有容错能力,最多可以坏一块硬盘

      • 最少要3块

    • raid6

      • 读写速度有所提升

      • 可用空间(N-2)*大小

      • 有容错能力,最多可以坏2块

      • 最少要4块

    • raid10

      • 先实现raid1,在实现raid0

      • 读写性能有提升

      • 可用空间N*大小/2

      • 有容错能力,每组镜像可以坏一块

      • 最少要4块

    • raid01

      • 先实现raid0,在实现raid1

      • 读写性能有提升

      • 可用空间N*大小/2

      • 有容错能力,只能坏同一组的

      • 最少要4块

    网络

    网络基础知识

    ipv4:4段 32位

    网络位+主机位

    网段:

    主机:

    A 网络位为8位

    主机位为24位

    第一位不可以变

    0 0000001

    0 1111111

    1-126

    127 有特殊用途,回环地址

    可用网段数:2^7 -1

    每一个网段有多少可用主机:2^24-2

    有两个是不可以用:

    主机位全为0,表示一个网段

    主机位全为1,表示网段里面的广播地址

    私有地址:自己可以用的

    子网掩码:255.0.0.0

    10 段

    共有地址: 都可以访问的地址

    1.1.1.1/8

    00000001.0.0.0

    11111111.0.0.0

    1.0.0.0

    B

    16位网络位

    16位为主机位

    10 000000 00000000

    10 111111 11111111

    128

    191

    可用网段:2^14

    每个网段有多少可用主机:2^16-2

    私有地址:

    172.16-172.31

    子网掩码:255.255.0.0

    C

    前24位为网络位

    后8位为主机位

    110 00000 000000000 00000000

    110 11111 11111111 11111111

    192

    223

    可用网段:2^21

    每个网段有多少可用机器:2^8-2

    私有地址:

    192.168.0 -192.168.255

    子网掩码 255.255.255.0

    D

    作为多播地址

    1110 0000

    1110 1111

    224

    239

    E

    作为科研使用

    CIDR(无类域间路由)

    网络位向主机位借位

    16 +5

    21位网络位 11个 2^11 2046

    255.255.11111000.0

    255.255.248.0

    网络位向主机位借位:

    24+6 30

    2^2 -2

    子网掩码

    网络位全为1,主机位全为0

    ip地址和子网掩码来确定属于那个网段

    按位与 :只要有0就是0,全部为1,才是1

    1&0 0
    2&3 2

    按位或:只要有1就是1,全部为0,才是0

    1|0 1
    2|3 3

    异或:相同为0,不同为1

    1^0 1
    2^3 1
    3^5 6

    取反:-(n+1)

    ~2  -3
    ~-4 3

    左移:n*2的左移次方

    2<<2 8
    10<<3 80

    右移:n/2的右移次方(向下取整,不是四舍五入)

    12>>2 3
    13>>2 3
    50>>2 12
    2>>2 0

    10.20.43.65/10

    网段

    10.20.43.65
    00001010.00010100.
    11111111.11000000
    10.0.0.0

    网络配置

    • 手动

      • ip

      • 配置文件

    • 自动分配

      • dhcp

    ip

    • 增加ip地址

      ip a add 192.168.21.23/24 dev ens33

    • 删除 ip

      ip a del 192.168.21.23/24 dev ens33

    • 增加ip地址并增加别名

      ip a add 192.168.21.23/24 dev ens33 label ens33:0

    • 删除

      ip a del 192.168.21.23/24 dev ens33 label ens33:0

    网卡配置文件

    • 配置文件 /etc/sysconfig/network-scripts/ifcfg-name

      TYPE="Ethernet"  # 网卡的接口类型
      PROXY_METHOD="none"
      BROWSER_ONLY="no"
      BOOTPROTO="dhcp" # 获取ip地址的方式,可以是dhcp,static,none
      DEFROUTE="yes"
      IPV4_FAILURE_FATAL="no"
      IPV6INIT="yes"
      IPV6_AUTOCONF="yes"
      IPV6_DEFROUTE="yes"
      IPV6_FAILURE_FATAL="no"
      IPV6_ADDR_GEN_MODE="stable-privacy"
      NAME="ens33" # 网卡名称
      UUID="c252096f-57e0-41bd-a1d9-5158a86f9ba1" # 设备唯一标识码
      DEVICE="ens33" 
      ONBOOT="yes" #开机是否启动
      HWADDR="" #mac地址
      IPADDR=ip地址
      NTEMASK=子网掩码
      GATEWAY=网关

    DNS配置文件

    • /etc/reslov.conf

      nameserver 192.168.21.2

    主机名

    • 获取主机名 hostname

    • 设置主机名 hostname name

    • 配置文件

      • /etc/hostname centos7

      • /etc/sysconfig/network centos6

    • 永久生效

      • hostnamectl set-hostname s22

      • 修改配置文件

    ss、netstat

    ss命令用来打印linux系统中网络的状态信息,可以让管理员更好的了解网络情况

    -a 所有
    -l 监听中的
    -t tcp
    -u udp
    -x unix socket文件
    -p 相关的程序
    -n 显示服务的端口号
    常用组合 -anlp -tnlp -unlp
    * ipv4 0.0.0.0 表示当前主机上的所有ip地址
    :: ipv6 所有地址

    解析

    • 本地解析 /etc/hosts

    • dns解析

    • 根节点 总共13组

    wget

    用来下载网络资源

    -q 静默模式
    -c 断点续传
    -O filename 另存为的名称
    -P 保存到指定的目录
    -r 递归下载
    -p 下载所有的html文件

    systemctl

    管理服务 service

    start name ... 启动服务

    stop name ... 关闭服务

    reload name 重读配置文件 平滑重启

    restart name 重启服务

    status name 查看状态

    enable name 开机自启动

    disabled name 关闭开机自启动

    systemctl list-unit-files |grep sshd 查看服务是否开机自启动

    centos6

    service 动作 服务

    chkconfig 用来管理服务的开机启动

    计划任务(定时任务)

    /etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    # For details see man 4 crontabs
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    22 * * * * *  root touch b.txt 每天的每小时的第22分钟做什么事
    25 15 * * * root touch /tmp/c.txt 每天下午的三点25分
    27 15,16,17 * * * root touch /tmp/d.txt  每天的15点,16点,17点的第27分钟
    28 15-19 * * * root touch /tmp/e.txt 表示 每天的15点到19点的28分钟
    30 10-20/5 * * * root touch /tmp/f.txt 每天的10点到20点每个5小时
    */7 * * * * root touch /tmp/f.txt  从0开始重新结算
    37 * 10,20,30 * 4 echo $(date) >> /tmp/g.txt 表示每个月的10,20,30或者每周的周四
    建议:
    分钟不要写成*
    分钟不要写成*
    分钟不要写成*

    crontab 命令

    -e 编辑
    -u 指定用户,如果不写,默认为当前用户
    -l 列出当前用户的计划任务
    -r 删除用户的计划任务
    • 默认写入的文件在/var/spool/cron/username

    计划任务作用

    • 定时删除

    • 定时备份

    • 同步时间 ntpdate

    ------------7------------

    补充内容

    1.crontab的日志

    /var/log/cron

    2.命令最好写绝对路径

    3.ping

    -c 指定次数
    ICMP 协议    ---> 自行百度

    进程

    查看进程 ps

     ps [options]

    支持的命令格式

    • unix格式:-h -e

    • BSD格式:a,x,u

    • GNU长格式:--help

    选项

    [root@s22 ~]#ps
      PID TTY         TIME CMD
    28019 pts/4    00:00:00 ps
    83674 pts/4    00:00:00 bash
    pid   终端       当前命令占用cpu的时间 命令
    a 所有的终端
    x 包括不连接终端的终端
    u 显示进程详细信息
    f 显示进程树
    k 指定排序方式 ,默认是递增,如果想递减,则需要在排序的字段上加上-
    o 指定显示的属性,不能跟u同时使用
    L 获取支持的选项,
    -L 显示线程
    -e 相当于 ax
    -f 显示详细信息,相当于u
    -F 显示更详细信息
    -H 显示树状结构
    -U username 获取指定的用户信息
    常用选项: aux -ef -eFH

    ps输出属性

    VSZ 虚拟内存(程序认为可以获取到的)

    RSS 实际内存

    psr cpu编号

    STAT 状态

    %cpu cpu的占用率

    %mem 内存的占用率

    根据名称来查询进程

    pidof name
    [root@s22 ~]#pidof python
    1169 825

    系统工具

    uptime

    [root@s22 ~]#uptime 
    09:17:40 up 1 day, 22:19,  5 users, load average: 2.14, 1.59, 0.84
    当前时间   当前服务器运行时长 当前的在线用户数   cpu的负载 1分钟 5分钟 15分钟
    cpu平均负载:在特定时间之内cpu运行的平均进程数,不超过cpu核心数的2倍认为为良好

    top

    首部信息

    • uptime信息 l 显示与隐藏

    • tasks :进程总数,运行,睡眠数,停止数,僵尸进程 t

    • cpu信息: %Cpu(s): 0.3 us, 4.6 sy, 0.0 ni, 95.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

      用户空间 系统空间 nice值 空闲 等待 硬中断 软中断 虚拟机偷走时间

    • 内存信息 m

    • cpu分别显示 1(数字)

    排序:

    模式是cpu的占用率 P

    M:内存占用率

    T: cpu的占用时间

    退出:q

    修改刷新频率:s,默认是3秒

    杀死进程:k,默认是第一个

    W 保存文件

    选项:

    -d 刷新时间

    -b 显示所有的信息

    -n # 指定刷新#次后退出

    htop

    • epel源

    性能分析

    free

    -b 字节
    -k kb
    -m mb
    -g gb
    -h 人类易读方式
    -c # 刷新次数

    vmstat

    vmstat [options] [delay [count]]
    [root@s22 ~]#vmstat 1 3 每秒刷新一次,刷新3次
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
    r b   swpd   free   buff cache   si   so   bi   bo   in   cs us sy id wa st
    1  0  37028 162708      0 808588    0    0     8     6   34   34  0  2 97  0  0
    0  0  37028 162560      0 808588    0    0     0     0 4535 6893  1  5 95  0  0
    0  0  37028 162544      0 808588    0    0     0     0 4463 6772  0  5 95  0  0
    procs:
    r:正在运行的进程个数
    b:阻塞队列的长度
    memory:
    swap: 虚拟内容大小
    free: 空闲物理内存的大小
    buff:用于buff的大小
    cache:用户cache的大小
    swap:
    si:从磁盘交换到内存的数据速率(kb/s)
    so: 从内存交换到磁盘的数据速率(kb/s)
    io:
    bi: 从磁盘读取到系统的速率(kb/s)
    bo: 从系统写入到磁盘的速率(kb/s)
    system:
    in:中断频率
    cs:进程之前切换的频率
    cpu:
    us
    sy
    id
    wa
    st

    iostat

    查看磁盘读写速度

    iostat 1 10

    dstat 查看所有

    -c cpu
    -d 硬盘
    -m 内存
    -n 网络
    -p 进程
    -r io请求
    -s swap
    --top-cpu 显示占用cpu最多的进程
    --top-io 显示占用io最多的进程
    --top-mem 显示占用内存最多的进程
    --tcp 显示tcp的信息
    --udp 显示udp的信息

    iftop 显示网卡的流量

    进程的管理工具

    kill

    向进程发送信号,实现对进程的管理,每个信号,对应不同的值,对应不同的含义,不区分大小写

    查询可用信号:kill -l

    常用信号:

    1) sighub 不需要关闭程序,重新加载配置文件

    2) sigint 终止进程,相当于ctrl+c

    9) sigkill 强制杀死进程

    15) sigterm 终止正在运行的进程

    18)sigcont 继续运行

    19)sigstop 后台休眠

    按照pid: kill-n pid

    按照名称:killall -n name

    按照名称:pkill -n name

    作业管理

    • 前台作业:一直占用终端的作业

    • 后台作业:不占用当前的终端

    让作业运行于后台:

    • ctrl+z 对于启动中

    • command & 也会输出到终端

    脱离终端:

    • nohup command &>/dev/null &

    • screen

      -list 查看所有的screen窗口
      -r 进入

    安全

    防火墙

    • 绿盟

    • 深信服

    • 启明星辰

    • 飞塔

    • 思科

    • 华为

    • 华三

    4表5链
    iptables -L 查看 防火墙策略
    iptables -F 清空 防火墙
    systemctl disable firewalld 开机并启动
    systemctl stop firewalled

    selinux

    美国国家安全局

    • 配置文件 /etc/selinux/config

    • SELINUX=disabled

    • setenforce 0 临时生效

    • getenforce 查看selinux的状态

    rhcea

    rhce

    rhca

    ccnp

    ccie

    ccia

    ocp

    编译后的软件如果想删除,直接删除编译生成到目录就可以

    虚拟环境

    安装

    pip3 install virtualenv -i https://pypi.douban.com/simple

    创建虚拟环境

    virtualenv --no-site-packages django11 
    --no-site-packages 创建一个全新的python环境
    --python 指定以哪个python来创建虚拟环境

    进入虚拟环境

    source envdir/bin/activate 

    退出虚拟环境

    deactivate

    确保环境一致

    在windows上执行如下命令:
    将windows上安装的包做快照
    pip freeze > requirement.txt
    将requirement.txt发送到linux上
    切换虚拟机
    pip install -r requirement.txt -i https://pypi.douban.com/simple

    virtualenvwrapper

    为了解决虚拟环境管理的问题,因为虚拟环境可以在任何目录下创建

    1. 安装
    pip3 install virtualenvwrapper -i https://pypi.douban.com/simple
    2.修改文件
    vim ~/.bashrc
    export WORKON_HOME=/envdir  
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   
    export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3      
    source /opt/python36/bin/virtualenvwrapper.sh 
    3. 加载~/.bashrc
    source ~/.bashrc
    4.创建环境
    mkvirtualenv django11 创建并切换
    5.进入虚拟环境
    workon name
    6.切换到当前虚拟环境的文件夹
    cdvirtualenv
    7.切换到当前虚拟环境的第三方包的文件夹
    cdsitepackages
    8.退出
    deactivate
    9.列出当前管理的虚拟环境
    lsvirtualenv
    10.列出当前虚拟环境的第三方包
    lssitepackages
    11.删除虚拟环境
    rmvirtualenv 必须要退出才能删除

     

  • 相关阅读:
    JWT在ASP.NET Core3.1的应用
    .NET Core 3.0中IAsyncEnumerable<T>有什么大不了的?
    C#类继承中构造函数的执行序列
    C#中的out 参数,ref参数,值参数
    ABP之启动配置
    ABP之模块系统
    ABP之N层架构
    ABP之什么是ABP(ASP.NET Boilerplate)
    如何使用ASP.NET Core、EF Core、ABP(ASP.NET Boilerplate)创建分层的Web应用程序(第一部分)
    ABP之Setting
  • 原文地址:https://www.cnblogs.com/diracy/p/16137790.html
Copyright © 2020-2023  润新知