• linux系统 常用命令(全面总结)


    1. Linux 之 文件目录 工作机制


    Linux目录结构是树形结构,根目录是 /
    在这里插入图片描述


    linux有不同的文件类型:

    $ ls -l
    total 64
    dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
    dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
    
    • 1
    • 2
    • 3
    • 4

    文件类型:

    • 当为 d 则是目录
    • 当为 - 则是文件;
    • 若是 l 则表示为链接文档(link file);
    • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

    在这里插入图片描述


    Linux文件 属主属组

    • 在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组。
    • 文件拥有者以外的用户又可以分为 文件拥有者的同组用户 和 其他用户 。
    • 因此,Linux 系统按文件拥有者、文件拥有者同组用户和其他用户来规定了不同的文件访问权限。

    例如:

    $ ls -l
    total 64
    dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
    dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
    
    • 1
    • 2
    • 3
    • 4

    bin 文件是一个目录文件,属主和属组都为 root,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。

    2. Linux命令 之 文件目录管理


    关键词:cd, ls, pwd, mkdir, rmdir, tree, touch, ln, rename, stat, file, chmod, chown, locate, find, cp, scp, mv, rm

    2.1 目录管理

    2.1.1 cd


    cd 命令用来切换工作目录。

    示例:

    cd          # 切换到用户主目录
    cd ~        # 切换到用户主目录
    cd -        # 切换到上一个工作目录
    cd ..       # 切换到上级目录
    cd ../..    # 切换到上两级目录
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.1.2 ls


    ls 命令用来显示目录信息。

    ls        # 列出当前目录可见文件
    ls -l     # 列出当前目录可见文件详细信息
    ls -la    # 列出所有文件(包括隐藏)的详细信息
    ls -lh    # 列出详细信息并以可读大小显示文件大小
    ls -lt    # 按时间列出文件和文件夹详细信息
    ls -ltr   # 按修改时间列出文件和文件夹详细信息
    ls --color=auto     # 列出文件并标记颜色分类
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.1.3 pwd


    pwd 命令用来显示当前目录的绝对路径。

    2.1.4 mkdir


    mkdir 命令用来创建目录。

    • -p 确保目录名称存在,不存在的就建一个。
    # 在当前目录中创建 zp 和 zp 的子目录 test
    mkdir -p zp/test
    
    # 在当前目录中创建 zp 和 zp 的子目录 test;权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
    mkdir -p -m 750 zp/test
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.1.5 rmdir


    rmdir 命令用来删除空目录。

    # 删除子目录 test 和其父目录 zp
    rmdir -p zp/test
    
    • 1
    • 2

    2.1.6 tree(需要安装)


    tree 命令以树状显示目录的内。

    示例:

    # 列出目录 /private 第一级文件名
    tree /private -L 1
    /private/
    ├── etc
    ├── tftpboot
    ├── tmp
    └── var
    
    # 忽略文件夹
    tree -I node_modules            # 忽略当前目录文件夹 node_modules
    tree -P node_modules            # 列出当前目录文件夹 node_modules 的目录结构
    tree -P node_modules -L 2       # 显示目录 node_modules 两层的目录树结构
    tree -L 2 > /home/www/tree.txt  # 当前目录结果存到 tree.txt 文件中
    
    # 忽略多个文件夹
    tree -I 'node_modules|icon|font' -L 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2.2 文件管理

    2.2.1 touch


    touch命令有两个功能:一是用来创建空文件,二是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来。

    2.2.2 ln


    ln 命令用来为文件创建链接。默认是硬链接。

    • -s 创建软连接。

    注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

    链接又可分为两种 : 硬链接(hard link)软链接(symbolic link,又叫做 符号链接),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

    2.2.3 rename


    rename 命令用字符串替换的方式批量重命名。

    # 将 main1.c 重命名为 main.c
    rename main1.c main.c main1.c
    
    rename "s/AA/aa/" *             # 把文件名中的 AA 替换成 aa
    rename "s//.html//.php/" *      # 把 .html 后缀的改成 .php 后缀
    rename "s/$//.txt/" *           # 把所有的文件名都以 txt 结尾
    rename "s//.txt//" *            # 把所有以 .txt 结尾的文件名的.txt 删掉
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.2.4 stat


    stat 命令用于显示文件的状态信息。stat 命令的输出信息比 ls 命令的输出信息要更详细。

    2.2.5 file


    file 命令用来探测给定文件的类型。file 命令对文件的检查分为文件系统、魔法幻数检查和语言检查 3 个过程。

    示例:

    file install.log          # 显示文件类型
    file -b install.log       # 不显示文件名称
    file -i install.log       # 显示 MIME 类型
    file -L /var/spool/mail   # 显示符号链接的文件类型
    
    • 1
    • 2
    • 3
    • 4

    2.2.6 chmod


    chmod 命令用来变更文件或目录的权限。

    • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
      在这里插入图片描述

    三种执行权限对应值:

    r=读取属性  //值= 4
    w=写入属性  //值= 2
    x=执行属性  //值= 1
    
    • 1
    • 2
    • 3

    知识扩展:

      -rw-r--r--   1 user  staff   651 Oct 12 12:53 .gitmodules
    # ↑╰┬╯╰┬╯╰┬╯
    # ┆ ┆  ┆  ╰┈ 0 其他人
    # ┆ ┆  ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组
    # ┆ ╰┈┈┈┈ u 属主
    # ╰┈┈ 第一个字母 `d` 代表目录,`-` 代表普通文件
    
    # 案例:
    chmod u=rwx,g=rw,o=r file01 # 为属主,属组,其他人设定不同权限
    chmod a+x file01 # 对文件file01的u,g,o都设置可执行属性
    
    # -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
    chmod -R  755 /home/wwwroot/*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.2.7 chown


    chown 命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。

    • 只有文件拥有者和超级用户才可以便用该命令。
      示例:
    # 将目录/usr/meng及其下面的所有文件、子目录的文件主改成 liu
    chown -R liu /usr/meng
    
    • 1
    • 2

    2.2.8 locate


    locate 命令和 slocate 命令都用来查找文件或目录。

    locate 命令其实是 find -name 的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,所以使用 locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库

    示例:

    locate pwd      # 查找和 pwd 相关的所有文件
    locate /etc/sh  # 搜索 etc 目录下所有以 sh 开头的文件
    
    • 1
    • 2

    2.2.9 find


    find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

    • -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

    示例:

    # 当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容
    find . -type f -name "*" | xargs grep "140.206.111.111"
    
    # 列出当前目录及子目录下所有文件和文件夹
    find .
    
    # 在 /home 目录下查找以 .txt 结尾的文件名
    find /home -name "*.txt"
    # 同上,但忽略大小写
    find /home -iname "*.txt"
    
    # 当前目录及子目录下查找所有以 .txt 和 .pdf 结尾的文件
    find . -name "*.txt" -o -name "*.pdf"
    
    # 匹配文件路径或者文件
    find /usr/ -path "*local*"
    
    # 基于正则表达式匹配文件路径
    find . -regex ".*\(\.txt\|\.pdf\)$"
    # 同上,但忽略大小写
    find . -iregex ".*\(\.txt\|\.pdf\)$"
    
    # 找出 /home 下不是以 .txt 结尾的文件
    find /home ! -name "*.txt"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2.2.10 which


    which命令:查找命令的绝对路径。

    2.2.11 whereis


    whereis命令: 查找命令的程序、源代码等相关文件

    2.3 文件和目录通用管理

    2.3.1 cp


    cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。

    • 默认情况下,cp 命令不能复制目录,如果要复制目录,则必须使用-r选项;

    示例:

    # 将文件 file 复制到目录 /usr/men/tmp 下,并改名为 file1
    cp file /usr/men/tmp/file1
    
    # 将目录 /usr/men下的所有文件及其子目录复制到目录 /usr/zh 中
    cp -r /usr/men /usr/zh
    
    # 强行将 /usr/men下的所有文件复制到目录 /usr/zh 中,无论是否有文件重复
    cp -rf /usr/men/* /usr/zh
    
    # 将目录 /usr/men 中的以 m 打头的所有 .c 文件复制到目录 /usr/zh 中
    cp -i /usr/men m*.c /usr/zh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.3.2 mv


    mv 命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。

    示例:

    mv file1.txt /home/office/                      # 移动单个文件
    mv file2.txt file3.txt file4.txt /home/office/  # 移动多个文件
    mv *.txt /home/office/                          # 移动所有 txt 文件
    mv dir1/ /home/office/                          # 移动目录
    mv /usr/men/* .                                 # 将指定目录中的所有文件移到当前目录中
    
    mv file1.txt file2.txt          # 重命名文件
    mv dir1/ dir2/                  # 重命名目录
    mv -v *.txt /home/office        # 打印移动信息
    mv -i file1.txt /home/office    # 提示是否覆盖文件
    
    mv -uv *.txt /home/office       # 源文件比目标文件新时才执行更新
    mv -vn *.txt /home/office       # 不要覆盖任何已存在的文件
    mv -f *.txt /home/office        # 无条件覆盖已经存在的文件
    mv -bv *.txt /home/office       # 复制时创建备份
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.3.3 rm


    rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

    • -r 将目录及以下之档案亦逐一删除。 -r就有牵连目录以及目录以下的意思。

    示例:

    rm test.txt               # 删除文件
    rm -i test.txt test2.txt  # 交互式删除文件
    rm -r *                   # 删除当前目录下的所有文件和目录
    rm -r testdir             # 删除目录下的所有文件和目录
    rm -rf testdir            # 强制删除目录下的所有文件和目录
    rm -v testdir             # 显示当前删除操作的详情
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.3.4 scp


    scp 命令用于在 Linux 下进行远程拷贝文件的命令,和它类似的命令有 cp,不过 cp 只是在本机进行拷贝不能跨服务器,而且 scp 传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system 时,用 scp 可以帮你把文件移出来。另外,scp 还非常不占资源,不会提高多少系统负荷,在这一点上,rsync 就远远不及它了。虽然 rsync 比 scp 会快一点,但当小文件众多的情况下,rsync 会导致硬盘 I/O 非常高,而 scp 基本不影响系统正常使用。

    示例:

    # 拷贝文件到远程服务器的指定目录
    scp <file> <user>@<ip>:<url>
    scp test.txt root@192.168.0.1:/opt
    
    # 拷贝目录到远程服务器的指定目录
    scp -r <folder> <user>@<ip>:<url>
    scp -r test root@192.168.0.1:/opt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3. Linux 之 文件内容查看 和 编辑


    关键词:cat, head, tail, more, less, sed, vi, grep

    3.1 cat


    cat 命令用于连接文件并打印到标准输出设备上。

    示例:

    cat m1              # 在屏幕上显示文件 ml 的内容
    cat m1 m2           # 同时显示文件 ml 和 m2 的内容
    cat m1 m2 > file    # 将文件 ml 和 m2 合并后放入文件 file 中
    
    • 1
    • 2
    • 3

    3.2 head


    head 命令用于显示文件的开头内容。

    • 在默认情况下,head 命令显示文件的头部 10 行内容。
    • -n11参数:相当于查看头部的第11行。
    head -n11 file01 # 查看file01文件开头的11行
    
    • 1

    3.3 tail


    tail 命令用于显示文件的尾部内容。

    • 在默认情况下,tail 命令显示文件的尾部 10 行内容。
    • -n11命令:相当于查看尾部最后的11行。
    • tail -f 监视文件,一直监视者。

    示例:

    tail file           # 显示文件file的最后10行
    tail -n +20 file    # 显示文件file的内容,从第20行至文件末尾
    tail -c 10 file     # 显示文件file的最后10个字符
    
    • 1
    • 2
    • 3

    tail -f 监听的使用:

    • 所以有时候,一般看tomcat日志,就用tail -f来监听tomcat日志啥的。
    echo 123 >> aa 追加aa文件中。
    echo 123 > aa 覆盖aa文件中的内。
    
    tail -f ./aaas # 一直监控aaas文件
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3.4 more


    more 命令是一个基于 vi 编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持 vi 中的关键字定位操作。more 名单中内置了若干快捷键,常用的有 H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)

    • 按 Space 键:显示文本的下一屏内容。
    • 按 Enier 键:只显示文本的下一行内容。
    • 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
    • 按 H 键:显示帮助屏,该屏上有相关的帮助信息。
    • 按 B 键:显示上一屏内容。
    • 按 Q 键:退出 rnore 命令。

    示例:

    # 显示文件 file 的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。
    more -dc file
    
    # 显示文件 file 的内容,每 10 行显示一次,而且在显示之前先清屏。
    more -c -10 file
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意:more命令只能向前浏览。

    3.5 less


    less 命令的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是less 命令允许用户向前或向后浏览文件,而 more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。

    3.6 sed


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

    # 替换文本中的字符串
    sed 's/book/books/' file
    
    # -n 选项 和 p 命令 一起使用表示只打印那些发生替换的行
    sed -n 's/test/TEST/p' file
    
    # 直接编辑文件选项 -i ,会匹配 file 文件中每一行的第一个 book 替换为 books
    sed -i 's/book/books/g' file
    
    # 使用后缀 /g 标记会替换每一行中的所有匹配
    sed 's/book/books/g' file
    
    # 删除空白行
    sed '/^$/d' file
    
    # 删除文件的第2行
    sed '2d' file
    
    # 删除文件的第2行到末尾所有行
    sed '2,$d' file
    
    # 删除文件最后一行
    sed '$d' file
    
    # 删除文件中所有开头是test的行
    sed '/^test/'d file
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    3.7 vi


    vi 命令是 UNIX 操作系统和类 UNIX 操作系统中最通用的全屏幕纯文本编辑器。Linux 中的 vi 编辑器叫 vim,它是 vi 的增强版(vi Improved),与 vi 编辑器完全兼容,而且实现了很多增强功能。

    3.8 grep


    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

    示例:

    # 在多级目录中对文本递归搜索(程序员搜代码的最爱):
    $ grep "class" . -R -n
    
    # 忽略匹配样式中的字符大小写
    $ echo "hello world" | grep -i "HELLO"
    
    # 匹配多个模式:
    $ grep -e "class" -e "vitural" file
    
    # 只在目录中所有的.php和.html文件中递归搜索字符"main()"
    $ grep "main()" . -r --include *.{php,html}
    
    # 在搜索结果中排除所有README文件
    $ grep "main()" . -r --exclude "README"
    
    # 在搜索结果中排除filelist文件列表里的文件
    $ grep "main()" . -r --exclude-from filelist
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4. Linux 文件压缩和解压


    关键词:tar, gzip, zip, unzip

    4.1 tar


    tar 配合参数,实现打包,压缩,解压缩等等操作。


    示例:

    tar 打包:

    tar -cvf a.tar a.txt #仅仅打包,不会压缩,后缀名名字最好是.tar,也为了方便解压。
    
    • 1

    在这里插入图片描述

    tar 打包 + 压缩(gzip形式压缩)

    # 打包 + 压缩(gzip形式压缩)
    tar -zcvf a.tar.gz a.txt  # 打包后,以 gzip 压缩,后缀名最好是.tar.gz。
    
    • 1
    • 2

    在这里插入图片描述

    tar 打包+压缩(bzip2形式压缩)

    tar -jcvf a.tar.bz2 a.txt # 打包后,以 bzip2 压缩
    
    • 1

    在这里插入图片描述


    tar 解压缩:

    tar -ztvf log.tar.gz                    # 查阅上述 tar 包内有哪些文件
    tar -zxvf log.tar.gz                    # 将 tar 包解压缩
    tar -zxvf log30.tar.gz log2013.log      # 只将 tar 内的部分文件解压出来
    
    • 1
    • 2
    • 3

    4.2 gzip


    gzip 命令用来压缩文件。gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出“.gz”扩展名。

    gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip 不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和 tar 命令一起构成 Linux 操作系统中比较流行的压缩文件格式。据统计,gzip 命令对文本文件有 60%~ 70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

    示例:

    gzip * # 将所有文件压缩成 .gz 文件
    gzip -l * # 详细显示压缩文件的信息,并不解压
    gzip -dv * # 解压上例中的所有压缩文件,并列出详细的信息
    gzip -r log.tar     # 压缩一个 tar 备份文件,此时压缩文件的扩展名为.tar.gz
    gzip -rv test/      # 递归的压缩目录
    gzip -dr test/      # 递归地解压目录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.3 zip


    zip 命令用于压缩文件。zip 是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。

    示例:

    # 将 /home/Blinux/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip
    zip -q -r html.zip /home/Blinux/html
    
    • 1
    • 2

    4.4 unzip


    unzip 命令用于解压缩由 zip 命令压缩的“.zip”压缩包。

    示例:

    unzip test.zip              # 解压 zip 文件
    unzip -n test.zip -d /tmp/  # 在指定目录下解压缩
    unzip -o test.zip -d /tmp/  # 在指定目录下解压缩,如果有相同文件存在则覆盖
    unzip -v test.zip           # 查看压缩文件目录,但不解压
    
    • 1
    • 2
    • 3
    • 4

    5. Linux 之 硬件管理


    关键词:df, du, top, free, iotop

    5.1 df


    df 命令(disk)用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

    df命令显示的名称对应:
    在这里插入图片描述

    示例:

    # 查看系统磁盘设备,默认是 KB 为单位
    [root@root ~] df
    文件系统               1K-块        已用     可用 已用% 挂载点
    /dev/sda2            146294492  28244432 110498708  21% /
    /dev/sda1              1019208     62360    904240   7% /boot
    tmpfs                  1032204         0   1032204   0% /dev/shm
    /dev/sdb1            2884284108 218826068 2518944764   8% /data1
    
    # 使用 -h 选项以 KB 以上的单位来显示,可读性高
    [root@root ~] df -h
    文件系统              容量  已用 可用 已用% 挂载点
    /dev/sda2             140G   27G  106G  21% /
    /dev/sda1             996M   61M  884M   7% /boot
    tmpfs                1009M     0 1009M   0% /dev/shm
    /dev/sdb1             2.7T  209G  2.4T   8% /data1
    
    # 查看全部文件系统
    [root@root ~] df -a
    文件系统               1K-块        已用     可用 已用% 挂载点
    /dev/sda2            146294492  28244432 110498708  21% /
    proc                         0         0         0   -  /proc
    sysfs                        0         0         0   -  /sys
    devpts                       0         0         0   -  /dev/pts
    /dev/sda1              1019208     62360    904240   7% /boot
    tmpfs                  1032204         0   1032204   0% /dev/shm
    /dev/sdb1            2884284108 218826068 2518944764   8% /data1
    none                         0         0         0   -  /proc/sys/fs/binfmt_misc
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    5.2 du


    du 命令是对文件和目录磁盘使用的空间的查看

    示例:

    # 显示目录或者文件所占空间
    root@localhost [test]# du
    608 ./test6
    308 ./test4
    4 ./scf/lib
    4 ./scf/service/deploy/product
    4 ./scf/service/deploy/info
    12 ./scf/service/deploy
    16 ./scf/service
    4 ./scf/doc
    4 ./scf/bin
    32 ./scf
    8 ./test3
    1288 .
    
    # 显示指定文件所占空间
    [root@localhost test]# du log2012.log
    300 log2012.log
    
    # 查看指定目录的所占空间
    [root@localhost test]# du scf
    4 scf/lib
    4 scf/service/deploy/product
    4 scf/service/deploy/info
    12 scf/service/deploy
    16 scf/service
    4 scf/doc
    4 scf/bin
    32 scf
    
    # 显示多个文件所占空间
    [root@localhost test]# du log30.tar.gz log31.tar.gz
    4 log30.tar.gz
    4 log31.tar.gz
    
    # 只显示总和的大小
    [root@localhost test]# du -s
    1288 .
    
    [root@localhost test]# du -s scf
    32 scf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    5.3 top


    top 命令,就可以理解为linux系统的任务管理器。实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。

    5.4 free


    free 命令,针对内存的,可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

    示例:

    free -t    # 以总和的形式显示内存的使用信息
    free -s 10 # 周期性的查询内存使用信息,每10s 执行一次命令
    
    # 显示内存使用情况
    
    free -m
                 total       used       free     shared    buffers     cached
    Mem:          2016       1973         42          0        163       1497
    -/+ buffers/cache:        312       1703
    Swap:         4094          0       4094
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5.5 iotop (需要安装)


    iotop 命令是一个用来监视磁盘 I/O 使用状况的 top 类工具。
    在这里插入图片描述

    6. Linux 之 网络管理


    关键词:curl,wget, telnet, ip, hostname, ifconfig, route, ssh, ssh-keygen, firewalld, iptables, host, nslookup, nc/netcat, ping, traceroute, netstat

    6.1 curl、wget


    curl 命令是一个利用 URL 规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。作为一款强力工具,curl 支持包括 HTTP、HTTPS、ftp 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl 可以祝一臂之力。

    示例:

    # 下载文件
    $ curl http://man.linuxde.net/text.iso --silent
    
    # 下载文件,指定下载路径,并查看进度
    $ curl http://man.linuxde.net/test.iso -o filename.iso --progress
    ########################################## 100.0%
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    wget 命令用来从指定的 URL 下载文件。

    示例:

    # 使用 wget 下载单个文件
    $ wget http://www.linuxde.net/testfile.zip
    
    • 1
    • 2

    6.2 telnet


    telnet 命令一般用作测试远程端口连接,功能是用于远端登入。

    示例:

    telnet 192.168.2.10
    Trying 192.168.2.10...
    Connected to 192.168.2.10 (192.168.2.10).
    Escape character is '^]'.
    
        localhost (Linux release 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:44 EST 2012) (1)
    
    login: root
    Password:
    Login incorrect
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    6.4 ip


    ip 命令用来查看或操纵 Linux 主机的路由、网络设备、策略路由和隧道,是 Linux 下较新的功能强大的网络配置工具。

    示例:

    $ ip link show                     # 查看网络接口信息
    $ ip link set eth0 upi             # 开启网卡
    $ ip link set eth0 down            # 关闭网卡
    $ ip link set eth0 promisc on      # 开启网卡的混合模式
    $ ip link set eth0 promisc offi    # 关闭网卡的混个模式
    $ ip link set eth0 txqueuelen 1200 # 设置网卡队列长度
    $ ip link set eth0 mtu 1400        # 设置网卡最大传输单元
    $ ip addr show     # 查看网卡IP信息
    $ ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
    $ ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址
    
    $ ip route show # 查看系统路由
    $ ip route add default via 192.168.1.254   # 设置系统默认路由
    $ ip route list                 # 查看路由信息
    $ ip route add 192.168.4.0/24  via  192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
    $ ip route add default via  192.168.0.254  dev eth0        # 设置默认网关为192.168.0.254
    $ ip route del 192.168.4.0/24   # 删除192.168.4.0网段的网关
    $ ip route del default          # 删除默认路由
    $ ip route delete 192.168.1.0/24 dev eth0 # 删除路由
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    6.5 hostname


    hostname 命令用于查看和设置系统的主机名称。环境变量 HOSTNAME 也保存了当前的主机名。在使用 hostname 命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改 /etc/hosts 和 /etc/sysconfig/network 的相关内容。

    6.6 ifconfig


    ifconfig 命令被用于查看和配置 Linux 内核中网络接口的网络参数。用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

    6.7 route


    route 命令用来查看和设置 Linux 内核中的网络路由表,route 命令设置的路由主要是静态路由。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。

    示例:

    # 查看当前路由
    route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    112.124.12.0    *               255.255.252.0   U     0      0        0 eth1
    10.160.0.0      *               255.255.240.0   U     0      0        0 eth0
    192.168.0.0     10.160.15.247   255.255.0.0     UG    0      0        0 eth0
    172.16.0.0      10.160.15.247   255.240.0.0     UG    0      0        0 eth0
    10.0.0.0        10.160.15.247   255.0.0.0       UG    0      0        0 eth0
    default         112.124.15.247  0.0.0.0         UG    0      0        0 eth1
    
    route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0    # 添加网关/设置网关
    route add -net 224.0.0.0 netmask 240.0.0.0 reject      # 屏蔽一条路由
    route del -net 224.0.0.0 netmask 240.0.0.0             # 删除路由记录
    route add default gw 192.168.120.240                   # 添加默认网关
    route del default gw 192.168.120.240                   # 删除默认网关
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    6.8 ssh


    ssh 命令是 openssh 套件中的客户端连接工具,可以给予 ssh 加密协议实现安全的远程登录服务器

    示例:

    # ssh 用户名@远程服务器地址
    ssh user1@172.24.210.101
    # 指定端口
    ssh -p 2211 root@140.206.185.170
    
    • 1
    • 2
    • 3
    • 4

    6.9 ssh-keygen


    ssh-keygen 命令用于为 ssh 生成、管理和转换认证密钥,它支持 RSA 和 DSA 两种认证密钥。

    6.10 firewalld


    firewalld 命令是 Linux 上的防火墙软件

    6.10.1 firewalld 的基本使用


    1. 启动 - systemctl start firewalld
    2. 关闭 - systemctl stop firewalld
    3. 查看状态 - systemctl status firewalld
    4. 开机禁用 - systemctl disable firewalld
    5. 开机启用 - systemctl enable firewalld

    6.10.2 使用 systemctl 管理 firewalld 服务


    systemctl 是服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。

    • 启动一个服务 - systemctl start firewalld.service
    • 关闭一个服务 - systemctl stop firewalld.service
    • 重启一个服务 - systemctl restart firewalld.service
    • 显示一个服务的状态 - systemctl status firewalld.service
    • 在开机时启用一个服务 - systemctl enable firewalld.service
    • 在开机时禁用一个服务 - systemctl disable firewalld.service
    • 查看服务是否开机启动 - systemctl is-enabled firewalld.service
    • 查看已启动的服务列表 - systemctl list-unit-files|grep enabled
    • 查看启动失败的服务列表 - systemctl --failed

    6.10.3 配置 firewalld-cmd(需要安装)


    1. 查看版本 - firewall-cmd --version
    2. 查看帮助 - firewall-cmd --help
    3. 显示状态 - firewall-cmd --state
    4. 查看所有打开的端口 - firewall-cmd --zone=public --list-ports
    5. 更新防火墙规则 - firewall-cmd --reload
    6. 查看区域信息: firewall-cmd --get-active-zones
    7. 查看指定接口所属区域 - firewall-cmd --get-zone-of-interface=eth0
    8. 拒绝所有包:firewall-cmd --panic-on
    9. 取消拒绝状态 - firewall-cmd --panic-off
    10. 查看是否拒绝 - firewall-cmd --query-panic

    6.10.4 在防火墙中开放一个端口(常用)


    • 添加(–permanent 永久生效,没有此参数重启后失效) - firewall-cmd --zone=public --add-port=80/tcp --permanent
    • 重新载入 - firewall-cmd --reload
    • 查看 - firewall-cmd --zone= public --query-port=80/tcp
    • 删除 - firewall-cmd --zone= public --remove-port=80/tcp --permanent

    6.11 iptables


    iptables 命令是 Linux 上常用的防火墙软件,是 netfilter 项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

    示例:

    # 开放指定的端口
    iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT               #允许本地回环接口(即运行本机访问本机)
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    #允许已建立的或相关连的通行
    iptables -A OUTPUT -j ACCEPT         #允许所有本机向外的访问
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT    #允许访问22端口
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT    #允许访问80端口
    iptables -A INPUT -p tcp --dport 21 -j ACCEPT    #允许ftp服务的21端口
    iptables -A INPUT -p tcp --dport 20 -j ACCEPT    #允许FTP服务的20端口
    iptables -A INPUT -j reject       #禁止其他未允许的规则访问
    iptables -A FORWARD -j REJECT     #禁止其他未允许的规则访问
    
    # 屏蔽IP
    iptables -I INPUT -s 123.45.6.7 -j DROP       #屏蔽单个IP的命令
    iptables -I INPUT -s 123.0.0.0/8 -j DROP      #封整个段即从123.0.0.1到123.255.255.254的命令
    iptables -I INPUT -s 124.45.0.0/16 -j DROP    #封IP段即从123.45.0.1到123.45.255.254的命令
    iptables -I INPUT -s 123.45.6.0/24 -j DROP    #封IP段即从123.45.6.1到123.45.6.254的命令是
    
    # 查看已添加的iptables规则
    iptables -L -n -v
    Chain INPUT (policy DROP 48106 packets, 2690K bytes)
     pkts bytes target     prot opt in     out     source               destination
     5075  589K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
     191K   90M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:22
    1499K  133M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
    4364K 6351M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
     6256  327K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination
    
    Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
     pkts bytes target     prot opt in     out     source               destination
     5075  589K ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    6.12 host


    host 命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常
    在这里插入图片描述

    6.13 nslookup


    nslookup 命令是常用域名查询工具,就是查 DNS 信息用的命令。
    在这里插入图片描述

    6.14 nc/netcat


    nc 命令是 netcat 命令的简称,都是用来设置路由器。

    6.15 ping


    ping 命令用来测试主机之间网络的连通性

    6.16 traceroute(需要安装)


    traceroute 命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是 40 字节。

    在这里插入图片描述

    6.17 netstat


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

    示例:

    # 列出所有端口 (包括监听和未监听的)
    netstat -a     #列出所有端口
    netstat -at    #列出所有tcp端口
    netstat -au    #列出所有udp端口
    
    # 列出所有处于监听状态的 Sockets
    netstat -l        #只显示监听端口
    netstat -lt       #只列出所有监听 tcp 端口
    netstat -lu       #只列出所有监听 udp 端口
    netstat -lx       #只列出所有监听 UNIX 端口
    
    # 显示每个协议的统计信息
    netstat -s   显示所有端口的统计信息
    netstat -st   显示TCP端口的统计信息
    netstat -su   显示UDP端口的统计信息
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    7. Linux 之 用户管理


    关键词:groupadd, groupdel, groupmod, useradd, userdel, usermod, passwd, su, sudo

    7.1 groupadd


    groupadd 命令用于创建一个新的用户组,新用户组的信息将被添加到系统文件中。

    • -g:指定新建工作组的 id。

    相关文件:

    • /etc/group 组账户信息。
    • /etc/gshadow 安全组账户信息。
    • /etc/login.defs Shadow密码套件配置。

    示例:

    # 建立一个新组,344就是设置组ID,
    $ groupadd -g 344 itholmes
    
    # 此时在 /etc/group 文件中产生一个组 ID(GID)是 344 的项目。
    $ less /etc/group
    
    # 使用tail -1 更好!!
    $ tail -1 /etc/group
    itholmes:x:344:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    7.2 groupdel


    groupdel 命令用于删除指定的用户组,本命令要修改的系统文件包括 /ect/group 和 /ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

    7.3 groupmod


    groupmod 命令更改群组识别码(组ID)或名称(组名称)

    示例:

    # 查看group文件里面,最后一个添加的用户组 
    $ tail -1 /etc/group
    itholmes:x:344:
    
    # -g:指定新的组ID,-n:指定新的组名称
    $ groupmod -g 500 -n itholmesNes itholmes
    
    $ tail -1 /etc/group
    itholmesNes:x:500:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    7.4 useradd


    useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中

    • -r :建立系统帐号。
    • -g<群组>  指定用户所属的群组。
    • -G<群组>  指定用户所属的附加群组。
    • -d<登入目录>  指定用户登入时的起始目录。
    • -u<uid>  指定用户ID。

    示例:

    # 创建新用户itholmes,加入itholmesGroup组中。
    $ useradd -d /opt/ -g itholmesGroup -r -u 544 itholmes
    
    # -g:加入主要组、-G:加入次要组
    
    • 1
    • 2
    • 3
    • 4

    7.5 userdel


    userdel 命令用于删除给定的用户,以及与用户相关的文件若不加选项,则仅删除用户帐号,而不删除相关文件

    • -r  删除用户登入目录以及目录中所有文件。

    7.6 usermod


    usermod 命令用于修改用户的基本信息usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变 user id,必须确认这名 user 没在电脑上执行任何程序

    • -u<uid>  修改用户ID。
    • -d登入目录>  修改用户登入时的目录。
    • -g<群组>  修改用户所属的群组。
    • -G<群组>  修改用户所属的附加群组。
    • -L  锁定用户密码,使密码无效。

    示例:

    # 更改登录目录
    $ usermod -d /home/hnlinux root
    # 改变用户的uid
    $ usermod -u 123 root
    
    • 1
    • 2
    • 3
    • 4

    7.7 passwd


    passwd 命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码

    示例:

    # 比如我们让某个用户不能修改密码,可以用`-l`选项来锁定:
    $ passwd -l linuxde    # 锁定用户linuxde不能更改密码;
    Locking password for user linuxde.
    passwd: Success           # 锁定成功;
    
    # 通过su切换到itholmes用户;
    $ su itholmes 
    
    # -d 清除itholmes用户密码;
    $ passwd -d itholmes 
    
    # 查询itholmes用户密码状态
    $ passwd -S itholmes 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    7.8 su


    su 命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

    7.9 sudo

    7.9.1 sudo使用


    sudo 命令用来以其他身份来执行命令,预设的身份为 root(也就是默认是root)。在 /etc/sudoers 中设置了可执行 sudo 指令的用户。

    示例:

    # 指定用户执行命令
    $ sudo -u userb ls -l
    # 列出目前的权限
    $ sudo -l
    # 显示sudo设置
    $ sudo -L
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    7.9.2 给普通用户授权 sudo

    假设要给普通用户 itholmes 配置 sudo 权限:

    1. /etc/sudoers 文件存放了 sudo 的相关用户,但是默认是没有写权限的,所以需要设为可写:chmod u+w /etc/sudoers。
    2. 在该文件中添加 itholmes ALL=(ALL) ALL ,保存并退出,让 mary 具有 sudo 的所有权限。
    3. 再将 /etc/sudoers 的权限恢复到默认状态:chmod u-w /etc/sudoers。

    7.9.3 免密码授权 sudo

    与给普通用户授权 sudo 类似,区别仅在于第 2 步:mary ALL=(ALL) NOPASSWD: ALL。

    8. Linux 之 系统管理


    关键词:lsb_release, reboot, exit, shutdown, date, mount, umount, ps, kill, systemctl, service, crontab

    8.1 reboot


    reboot 命令用来重新启动正在运行的 Linux 操作系统

    示例:

    reboot        # 重开机。
    reboot -w     # 做个重开机的模拟(只有纪录并不会真的重开机)。
    
    • 1
    • 2

    8.2 exit


    exit命令用于退出目前的shell(脚本)

    • exit [状态值] 状态值0代表执行成功,其他值代表执行失败。

    示例:

    $ exit # 单独输入exit是退出终端的意思。
    
    • 1

    8.3 shutdown


    shutdown 命令用来系统关机命令。shutdown 指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。

    示例:

    # 指定现在立即关机
    shutdown -h now
    
    # 指定 5 分钟后关机,同时送出警告信息给登入用户
    shutdown +5 "System will shutdown after 5 minutes"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    8.4 date


    date 命令是显示或设置系统时间与日期

    示例:

    # 格式化输出
    date +"%Y-%m-%d"
    2009-12-07
    
    # 输出昨天日期
    date -d "1 day ago" +"%Y-%m-%d"
    2012-11-19
    
    # 2 秒后输出
    date -d "2 second" +"%Y-%m-%d %H:%M.%S"
    2012-11-20 14:21.31
    
    # 传说中的 1234567890 秒
    date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
    2009-02-13 23:02:30
    
    # 普通转格式
    date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
    2009/12/12 00:00.00
    
    # apache 格式转换
    date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
    2009-12-05 00:00.37
    
    # 格式转换后时间游走
    date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
    2007-12-05 00:00.37
    
    # 加减操作
    date +%Y%m%d                   # 显示前天年月日
    date -d "+1 day" +%Y%m%d       # 显示前一天的日期
    date -d "-1 day" +%Y%m%d       # 显示后一天的日期
    date -d "-1 month" +%Y%m%d     # 显示上一月的日期
    date -d "+1 month" +%Y%m%d     # 显示下一月的日期
    date -d "-1 year" +%Y%m%d      # 显示前一年的日期
    date -d "+1 year" +%Y%m%d      # 显示下一年的日期
    
    # 设定时间
    date -s                        # 设置当前时间,只有root权限才能设置,其他只能查看
    date -s 20120523               # 设置成20120523,这样会把具体时间设置成空00:00:00
    date -s 01:01:01               # 设置具体时间,不会对日期做更改
    date -s "01:01:01 2012-05-23"  # 这样可以设置全部时间
    date -s "01:01:01 20120523"    # 这样可以设置全部时间
    date -s "2012-05-23 01:01:01"  # 这样可以设置全部时间
    date -s "20120523 01:01:01"    # 这样可以设置全部时间
    
    # 有时需要检查一组命令花费的时间
    #!/bin/bash
    
    start=$(date +%s)
    nmap man.linuxde.net &> /dev/null
    
    end=$(date +%s)
    difference=$(( end - start ))
    echo $difference seconds.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    8.5 mount


    mount 命令用于挂载文件系统到指定的挂载点。

    • 挂载是将其他机器上的磁盘映射到本机器上来,使得在本机器上可以访问其他机器的文件;如在IP1服务器上可以访问IP2上的资源。
    • 软连接是一种快捷方式,这两个区分好!

    8.6 umount


    umount 命令用于卸载已经挂载的文件系统。利用设备名或挂载点都能 umount 文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。

    8.7 ps


    ps 命令用于报告当前系统的进程状态。

    示例:

    # 按内存资源的使用量对进程进行排序
    ps aux | sort -rnk 4
    
    # 按 CPU 资源的使用量对进程进行排序
    ps aux | sort -nk 3
    
    • 1
    • 2
    • 3
    • 4
    • 5

    8.8 kill


    kill 命令用来删除执行中的程序或工作预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序

    • kill -9 强制杀死, kill 是正常关闭。一般要用kill就行,因为有时就需要正常关闭才行,可以理解为先保存了再关闭!

    8.9 service


    service 命令是 Redhat Linux 兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

    示例:

    service network status
    配置设备:
    lo eth0
    当前的活跃设备:
    lo eth0
    
    service network restart
    正在关闭接口 eth0:                                        [  确定  ]
    关闭环回接口:                                             [  确定  ]
    设置网络参数:                                             [  确定  ]
    弹出环回接口:                                             [  确定  ]
    弹出界面 eth0:                                            [  确定  ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    8.10 crontab


    crontab 命令被用来提交和管理用户的需要周期性执行的任务

    详情见:https://www.runoob.com/linux/linux-comm-crontab.html
    ·

    8.11 systemctl


    systemctl 命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。

    示例:

    # 1.启动 nfs 服务
    systemctl start nfs-server.service
    
    # 2.设置开机自启动
    systemctl enable nfs-server.service
    
    # 3.停止开机自启动
    systemctl disable nfs-server.service
    
    # 4.查看服务当前状态
    systemctl status nfs-server.service
    
    # 5.重新启动某服务
    systemctl restart nfs-server.service
    
    # 6.查看所有已启动的服务
    systemctl list -units --type=service
    
    # 7. 开启防火墙 22 端口
    iptables -I INPUT -p tcp --dport 22 -j accept
    
    # 8. 彻底关闭防火墙
    sudo systemctl status firewalld.service
    sudo systemctl stop firewalld.service
    sudo systemctl disable firewalld.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    9. Linux 之 软件管理


    关键词:rpm, yum, apt-get

    9.1 rpm


    rpm 命令是 RPM 软件包的管理工具

    1. 安装rpm包
    # -i  显示套件的相关信息。
    # -v  显示指令执行过程。
    # -h或--hash  套件安装时列出标记。
    rpm -ivh xxx.rpm
    
    • 1
    • 2
    • 3
    • 4
    1. 安装.src.rpm 软件包
    $ rpm -i xxx.src.rpm
    $ cd /usr/src/redhat/SPECS
    
    # 一个和你的软件包同名的specs文件
    $ rpmbuild -bp xxx.specs      
           
    # 一个和你的软件包同名的目录
    $ cd /usr/src/redhat/BUILD/xxx/     
    
    # 这一步和编译普通的源码软件一样,可以加上参数
    $ ./configure                        
    $ make
    $ make install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    1. 卸载 rpm 软件包。
    • 使用命令 rpm -e 包名,包名可以包含版本号等信息,但是不可以有后缀.rpm

    有时会出现一些错误或者警告:
    … is needed by …
    这说明这个软件被其他软件需要,不能随便卸载,可以用 rpm -e --nodeps 强制卸载

    1. 查看与 rpm 包相关的文件和其他信息。
    # -a  查询所有套件。
    # -q  使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
    rpm -qa # 列出所有安装过的包
    
    • 1
    • 2
    • 3

    9.2 yum


    yum 命令 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

    在这里插入图片描述
    在这里插入图片描述


    替换yum源:

    cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
    
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    yum clean all
    
    yum makecache
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    9.3 apt-get 或 apt


    apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,大体就如同 Windows 上的安装文件。

    示例:

    # 更新 apt-get
    apt-get update
    
    # 安装一个软件包
    apt-get install packagename
    
    # 卸载一个已安装的软件包(保留配置文件)
    apt-get remove packagename
    
    # 卸载一个已安装的软件包(删除配置文件)
    apt-get –purge remove packagename
    
    # 如果需要空间的话,可以让这个命令来删除你已经删掉的软件
    apt-get autoclean apt
    
    # 把安装的软件的备份也删除,不过这样不会影响软件的使用的
    apt-get clean
    
    # 更新所有已安装的软件包
    apt-get upgrade
    
    # 将系统升级到新版本
    apt-get dist-upgrade
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
  • 相关阅读:
    用java写一个贪吃蛇小游戏(源码在最后)
    漏洞6个月未修补,谷歌云全球宕机2小时
    设计模式11-结构型设计模式-外观设计模式
    Python学的好,工作不愁找
    3.验证面试高频问题整理(附答案)
    制作一个简单HTML游戏网页(HTML+CSS)米哈游 1页 带轮播图
    Webmin--System and Server Status模块
    【数据库】MySQL的事务特性与隔离级别
    二蛋赠书七期:《云原生数据中台:架构、方法论与实践》
    【待读重要】
  • 原文地址:https://blog.csdn.net/IT_Holmes/article/details/125486291