【使用手册】Linux常用命令大全

Linux命令–基于CentOS7

VI/VIM编辑器

基本内容
  • VI

    VI 是Unix操作系统和类Unix操作系统中最通用的文本编辑器

  • VIM

    VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜

    色辨别语法的正确性,方便程序设计。

  • VIM 与 VI 编辑器完全兼容

一般模式
  • vi打开一个档案就直接进入一般模式(默认模式)

  • 在这个模式中, 可以使用『上下左右』按键来移动光标

    可以使用『删除字符』或『删除整行』来处理档案内容

    也可以使用『复制、粘贴』来处理你的文件数据

  • 常用

    语法功能描述
    yy复制光标前一行
    y 数字 y复制一段
    p箭头移动到目的行粘贴
    u撤销上一步
    dd删除光标当前行
    d 数字 d删除光标(含)后n行
    x剪切一个字母,相当于del
    x剪切一个字母,相当于Backspace
    yw复制一个词
    dw删除一个词
    shift+6移动至行头
    shift+4移动至行尾
    1+shift+g移动至页头
    shift+g移动至页尾
    数字+shift+g移动至目标行
  • 键盘图

    img

编辑模式
  • 在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容的!
  • 要等到你按下i, I, o, O, a, A等任何一个字母之后才会进入编辑模式。

通常在Linux中,按下这些按键时,在画面的左下方会出现『INSERT或 REPLACE』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下 『Esc』这个按键即可退出编辑模式。

  • 进入编辑模式

    按键功能
    i当前光标前
    a当前光标后
    o当前光标行的下一行
    I光标所在行最前
    A光标所在行最后
    O当前光标行的上一行
  • 退出编辑模式

    按下 『Esc』键即可退出编辑模式,之后所在模式转变为一般模式

指令模式
  • 在一般模式当中,输入『 : / ?』3个中的任何一个按钮,就可以将光标移动到最底下那一行。

在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等动作是在此模式中达成的!

  • 常用

    命令功能
    :w保存
    :q退出
    :!强制执行
    /查找的词查找,按n查找下一个,按N往上查找
    :noh取消高亮显示
    :set nu显示行号
    :set nonu关闭行号
    :%s/old/new/g替换内容,以new替换old,/g替换匹配到的所有内容

    :wq!强制保存退出

模式间转换

image-20220606201640591

系统管理

service服务管理
  • 基本语法(CentOS7不使用)

    service 服务名 start | stop | restart | status
    

    查看服务的方法:/etc/init.d/服务名

  • 实操案例

    # 查看网络服务的状态
    service network status
    # 停止网络服务
    service network stop
    # 启动网络服务
    service network start
    # 启动网络服务
    service network restart
    
chkconfig设置后台服务的自启配置
  • 基础语法

    # 查看所有服务器自启配置
    chkconfig
    # 关掉指定服务的自启动
    chkconfig 服务名 off
    # 开启指定服务的自启动
    chkconfig 服务名 on
    # 查看服务开机启动状态
    chkconfig 服务名 --list
    
  • 实操案例

    # 开启网络服务的自启动
    chkconfig network on
    # 关闭网络服务的自启动
    chkconfig network off
    
    # 开启网络服务指定级别的自启动
    chkconfig --level 指定级别 network on
    # 关闭网络服务指定级别的自启动
    chkconfig --level 指定级别 network off
    
systemctl
  • 基本语法

    systemctl start | stop | restart | status 服务名
    

    查看服务的方法:/usr/lib/systemd/system

  • 实操案例

    # 查看防火墙服务的状态
    systemctl status firewalld
    # 停止防火墙服务的状态
    systemctl stop firewalld
    # 启动防火墙服务的状态
    systemctl start firewalld
    # 重启防火墙服务的状态
    systemctl restart firewalld
    
systemctl设置后台服务的自启配置
  • 基本语法

    # 查看服务开机启动状态
    systemctl list-unit-files
    # 关闭指定服务的自启动
    systemctl disable service_name
    # 开启指定服务的自启动
    systemctl enable service_name
    
  • 实操案例

    # 开启防火墙服务的自启动
    systemctl enable firewalld.service
    # 关闭防火墙服务的自启动
    systemctl disable firewalld.service
    
系统运行级别
  • 运行级别

    开机–>BIOS–>/boot–>init进程–>运行级别–>运行级对应的服务

    运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

    运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

    运行级别2:多用户状态(没有NFS),不支持网络

    运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

    运行级别4:系统未使用,保留

    运行级别5:X11控制台,登陆后进入图形GUI模式

    运行级别6:系统正常关闭并启动,默认运行级别不能设置为6,否则不能正常启动

  • 基本语法

    # 查看默认运行级别
    vi /etc/inittab
    # 查看当前运行级别
    systemctl get-default
    # 修改当前运行级别
    systemctl set-default TARGET.target
    

    TARGET取multi-user.targetgraphical.target

  • CentOS7运行级别简化

    multi-user.target等价于原运行级别3(多用户有网无图形界面)

    graphical.target等价于原运行级别5(多用户有网有图形界面)

关闭防火墙
  • 临时关闭防火墙

    # 查看防火墙状态
    systemctl status firewalld
    # 临时关闭防火墙
    systemctl stop firewalld
    
  • 开机启动时关闭防火墙

    # 查看防火墙开机启动状态
    systemctl enable firewalld.service
    # 设计开机时关闭防火墙
    systemctl disable firewalld.service
    
关机重启命令
  • 在Linux领域内大多用在服务器上,很少遇到关机的操作。除非特殊情况下,不得已才会关机。

  • 基本语法

    # 将数据由内存同步到硬盘中
    sync
    # 停机,关闭系统,但不断电
    halt
    # 关机,断电
    poweroff
    # 立即重启
    reboot
    
    shutdown -H|-r now|时间
    

    -H,相当于--halt,停机

    -r,相当于reboot,重启

    now,立即关机

    时间,等待多久后关机(时间单位是分钟)

  • 经验技巧

具体操作

帮助命令
  • man获取帮助信息

    # 获取帮助信息
    man [命令或配置文件]
    
    • 显示信息

      信息功能
      NAME命令的名称和单行描述
      SYNOPSIS如何使用命令
      DESCRIPTION命令功能的深入讨论
      EXAMPLES如何使用命令的例子
      SEE ALSO相关主题
  • help获取shell内置命令的帮助信息

    # 获取shell内置命令的帮助信息
    help 命令
    

    一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令被称为“外部命令”

    # 判断是内置命令还是外置命令
    type 命令
    
  • 常用快捷键

    常用快捷键功能
    ctrl+c停止进程
    ctrl+l清屏
    tab自动补全
    上下键查找执行过的命令
文件目录类
pwd显示当前工作目录的绝对路径
  • 基本语法

    # 显示当前工作目录的绝对路径
    pwd
    

    print working directory 打印工作目录

ls列出目录的内容
  • 基本语法

    ls [选项] [目录或文件]
    
    • list 列出目录内容

    • 选项功能
      -a全部文件,包括隐藏档列出
      -l长数据串列出,包含文件的属性与权限
    • 显示信息

      文件类型与权限、链接数、文件属主、文件属组、文件大小(用byte表示)、建立或最近修改时间、名字

  • 案例

    # 查看当前目录的所有内容信息
    ls -a
    
cd切换目录
  • 基本语法

    # 基础使用
    cd [参数]
    # 切换路径
    cd 相对路径
    cd 绝对路径
    # 回到自己的家目录
    cd ~ / cd
    # 回到上一次所在目录
    cd -
    # 回到当前目录的上一级目录
    cd ..
    # 跳转到实际物理路径,并非快捷方式路径
    cd -P
    

    Change Directory 切换路径

  • 实操

    # 使用绝对路径切换到root目录 
    cd /root/
    # 使用相对路径切换到“公共的”目录
    cd 公共的/ 
    # 表示回到自己的家目录,亦即是 /root 这个目录 
    cd ~ 
    # 回到上一次所在目录
    cd -
    #表示回到当前目录的上一级目录,亦即是 “/root/公共的”的上一级目录的意思;
    cd ..
    
mkdir创建一个新的目录
  • 基本语法

    # 创建一个目录
    mkdir 目录名
    # 创建多级目录
    mkdir -p 目录1/目录2
    

    Make Directory 建立目录

rmdir删除一个空的目录
  • 基本语法

    rmdir 空目录名
    

    Remove Directory 移除目录

touch创建空文件
  • 基本语法

    touch 文件名称
    
cp复制文件或目录
  • 基本语法

    # 复制source源文件到dest目标文件目录
    cp source dest
    # 递归复制整个文件夹
    cp -r source dest
    

    强制覆盖不提示的方法:\cp

rm删除文件或目录
  • 基本语法

    # 删除指定文件
    rm 文件
    # 递归删除目录中所有内容
    rm -r deleteFile
    # 强制执行删除操作
    rm -f deleteFile
    # 显示指令的详细执行过程
    rm -v deleteFile
    
mv移动文件与目录或重命名
  • 基本语法

    # 重命名 
    mv oldNameFile newNameFile
    # 移动文件
    mv /movefile /targetFolder
    
cat查看文件内容
  • 基本语法

    # 查看文件内容
    cat 文件名
    # 显示文件所有行号,包括空行
    cat -n 文件名
    

    查看文件内容,从第一行开始显示

more文件内容分屏查看器
  • 基本语法

    # 显示文本文件内容
    more 文件名
    

    more指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

  • 操作说明

    操作功能说明
    空格键代表向下翻一页
    Enter代表向下翻一行
    q表示立刻离开more,不再显示该文件内容
    Ctrl+F向下滚动一屏
    Ctrl+B返回上一屏
    =输出当前行的行号
    :f输出文件名和当前行号
less分屏显示文件内容
  • 基本语法

    # 分屏查看文件内容
    less 文件名
    

    less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。

    less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

  • 操作说明

    操作功能说明
    空格键向下翻动一页
    [pagedown]向下翻动一页
    [pageup]向上翻动一页
    /字串向下搜索字串的功能
    ?字串向上搜索字串的功能
    q离开less程序
head显示文件头部内容
  • 基本语法

    # 查看文件头10行内容
    head 文件名
    # 查看头部内容任意行数
    head -n <行数> 文件名
    

    head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容。

tail输出文件尾部内容
  • 基本语法

    # 查看文件尾部10行内容
    tail 文件名
    # 查看尾部内容任意行数
    tail -n <行数> 文件名
    # 实时追踪文档的更新
    tail -f 文件名
    
ln软链接
  • 基本语法

    # 给源文件创建一个软链接
    ln -s [源文件或目录] [软链接名]
    # 删除软链接
    rm -rf 软链接名
    # 查看软链接
    ll
    

    软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放链接其他文件的路径

    如果使用``rm -rf 软链接名/ `删除,会把软链接对应的真实目录下内容删掉

  • 实操

history查看已经执行过历史命令
  • 基本语法

    # 查看已经执行过历史命令
    history
    
echo输出内容到控制台
  • 基本语法

    # 输出内容到控制台
    echo 输出内容
    # 支持转义字符的输出内容并展示
    echo -e 输出内容
    
>输出重定向和>>追加
  • 基本语法

    # 列表内容写入到文件中去,覆盖
    ls -l > 文件名
    # 列表内容追加到文件末尾
    ls -al >> 文件名
    # 将文件1的内容覆盖到文件2中
    cat 文件1 > 文件2
    # 将回响的内容追加到文件末尾
    echo "内容" >> 文件名
    
时间日期类
基本内容
date [OPTION] ... [+FORMAT]
  • OPTION

    选项功能
    -d <时间字符串>显示指定的“时间字符串”表示时间,非当前时间
    -s <日期时间>显示系统日期时间
  • 参数

    <+FORMAT>显示使用的日期格式

显示当前时间
  • 基本语法

    # 显示当前时间
    date
    # 显示当前年份
    date +%Y
    # 显示当前月份
    date +%m
    # 显示当前日期
    date +%d
    # 显示年月日时分秒
    date "+%Y-%m-%d%H:%M:%S"
    
显示非当前时间
  • 基本语法

    # 显示昨天时间
    date -d '1 days ago'
    # 显示明天时间
    date -d '-1 days ago'
    
显示系统时间
  • 基本语法

    date -s '字符串时间'
    
cal查看日历
  • 基本语法

    # 显示本月日历
    cal
    # 显示当年日历
    cal 某年
    
用户管理命令
useradd添加新用户
  • 基本语法

    # 添加新用户
    useradd 用户名
    # 添加新用户到某个组
    useradd -g 组名 用户名
    
passwd设置用户密码
  • 基本语法

    # 设置用户密码
    passwd
    
id查看用户是否存在
  • 基本语法

    # 查看用户是否存在
    id 用户名
    
cat /etc/passwd查看创建的用户
  • 基本语法

    # 查看创建哪些用户
    cat /etc/passwd
    
su切换用户
  • 基本语法

    # 切换用户,只能获得用户执行权限,不能获得环境变量
    su 用户名
    # 切换到用户并获得该用户的环境变量及执行权限
    su - 用户名
    
userdel删除用户
  • 基本语法

    # 删除用户但保存用户主目录
    userdel 用户名
    # 用户和用户主目录都删除
    userdel -r 用户名
    
who查看用户登录信息
  • 基本语法

    # 显示自身用户名称
    whoami
    # 显示登录用户名及登录时间
    who am i
    
sudo设置普通用户具有root权限
  1. 添加新用户,并设置密码

    # 添加新用户
    useradd newuser
    # 为新用户设置密码
    passwd newuser
    
  2. 修改配置文件

    vi /etc/sudoers
    

    修改/etc/sudoers文件,找到下面一行(91 行),在 root 下面添加一行

    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    newuser ALL=(ALL) ALL
    

    或设置为不需输入密码执行sudo命令

    ## Allow root to run any commands anywhere
    root ALL=(ALL) ALL
    newuser ALL=(ALL) NOPASSWD:ALL
    
  3. 使用新用户执行sudo+其他命令,获得root权限执行操作

usermod修改用户
  • 基本语法

     # 修改用户的初始登录组,给定的组必须存在。
    usermod -g 用户组 用户名
    

    默认组id是1。

用户组管理命令
  • 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同, 如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

  • 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

groupadd新增组
  • 基础语法

    # 增加一个新的组
    groupadd 组名
    
groupdel删除组
  • 基本语法

    # 删除存在的组
    groupdel 组名
    
groupmod修改组
  • 基本语法

    # 修改组名
    groupmod -n 新组名 老组名
    
cat /etc/group查看创建组
cat /etc/group
文件权限类
chmod改变权限
  • 基本概念

    image-20220620192503941

  • 基本语法

    # 方式一
    chmod [-R] [{ugo}{+-=}{rwx}] 文件名或目录名
    # 方式二
    chmod [-R] [mode=421] [文件名或目录名]
    

    -R递归操作,即修改整个文件夹内的文件

    u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)

    r=4 w=2 x=1 rwx=4+2+1=7

    1x 2w 3-wx 4r 5r-x 6rw- 7rwx 二进制转换

chown改变所有者
  • 基本语法

    # 改变文件或目录所有者
    chown [-R] [最终用户] [文件名或目录名]
    

    -R递归操作,即修改整个文件夹内的文件

chgrp改变所有组
  • 基本语法

    # 改变文件或目录所属组
    chgrp [最终用户组] [文件名或目录名]
    
搜索查找类
find查找文件或目录
  • 基本内容

    find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。

  • 基本语法

    # 查找文件或目录
    find [搜索范围] [OPTION]
    
    • OPTION

      选项功能
      -name<查询方式>按照指定的文件名查找模式查找文件
      -user<用户名>查找属于指定用户名所有文件
      -size<文件大小>按照指定的文件大小查找文件

      其中b–块(512字节),c–字节,w–字(2字节),k–千字节,M–兆字节,G–吉字节

      +n代表大于,-n代表小于,n代表等于

locate快速定位文件路径
  • 基本内容

    locate指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位给

    定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确

    度,管理员必须定期更新 locate 时刻

  • 基本语法

    locate 搜索文件
    

    由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创

    建 locate 数据库。

grep过滤查找及|管道符
  • 基本语法

    # 显示匹配行及行号
    grep -n 查找内容 源文件
    
  • 管道符|,表示将前一个命令的处理结果输出传递给后面的命令处理

压缩解压类
gzip/gunzip压缩
  • 基本语法

    # 压缩文件,只能将文件压缩为*.gz文件
    gzip 文件名
    # 解压缩文件
    gunzip 文件名.gz
    

    只能压缩文件不能压缩目录

    不保留原来的文件

    同时多个文件会产生多个压缩包

zip/unzip压缩
  • 基本语法

    # 压缩文件和目录
    zip [-r] XXX.zip 压缩内容
    # 解压缩文件,并指定解压后文件的存放目录
    unzip [-d<目录>] XXX.zip
    

    zip压缩命令在windows/linux都通用,可以压缩目录且保留源文件

tar打包
  • 基本内容

    # 打包目录,压缩后的 文件格式.tar.gz
    tar [OPTION] XXX.tar.gz 将要打包进去的内容
    

    OPTION

    选项功能
    -c产生.tar打包文件
    -v显示详细信息
    -f指定压缩后的文件名
    -z打包同时压缩
    -x解包.tar文件
    -C解压到指定目录
磁盘分区类
du查看文件和目录占用的磁盘空间
  • 基本用法

    # 显示目录下每个子目录的磁盘使用情况
    du 目录名/文件名
    

    disk usage 磁盘占用情况

    OPTION

    选项功能
    -h以易阅读的G,M,K等格式自行显示
    -a查看子目录/文件大小
    -c显示所有的文件和子目录大小及总和
    -s仅显示所有的文件和子目录大小的总和
    -max-depth=n指定统计子目录的深度为第n层
df查看磁盘空间使用情况
  • 基本使用

    # 列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
    df -h
    

    disk free 空余磁盘

lsblk查看设备挂载情况
  • 基本语法

    # 查看设备挂载情况
    lsblk
    # 查看详细的设备挂载情况,显示文件系统信息
    lsblk -f
    
mount/umount挂载/卸载
  • 准备工作

    image-20220621072725893

    image-20220621072751638

  • 基本语法

    # 挂载设备
    mount [-t vfstype] [-o options] device dir
    # 卸载设备
    umount 设备文件名或挂载点
    

    参数说明

    参数参数选择功能
    -t vfstype光盘或光盘镜像:iso9660
    DOS fat16文件系统:msdos
    Windows 9x fat32文件系统:vfat
    Windows NT ntfs文件系统:ntfs
    MountWindows文件网络共享:smbfs
    UNIX(LINUX) 文件网络共享:nfs
    指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。
    -o optionsloop:用来把一个文件当成硬盘分区挂接上系统
    ro:采用只读方式挂接设备
    rw:采用读写方式挂接设备
    iocharset:指定访问文件系统所用字符集
    主要用来描述设备或档案的挂接方式
    device要挂接(mount)的设备
    dir设备在系统上的挂接点(mount point)
fdisk分区
  • 基本语法

    # 查看磁盘分区详情
    fdisk -l
    # 对新增的磁盘进行分区操作
    fdisk 磁盘设备名
    

    该命令必须在 root 用户下才能使用

  • 功能说明

    • Linux分区

      Device:分区序列,Boot:引导,Start:从X磁柱开始,End:到Y磁柱结束,Blocks:容量,Id:分区类型ID,System:分区类型

    • 分区操作按键说明

      m:显示命令列表,p:显示当前磁盘分区,n:新增分区,w:写入分区信息并退出,q:不保存分区信息直接退出

进程线程类
ps查看当前系统进程状态
  • 基本语法

    # 查看系统中所有进程
    ps aux | grep xxx
    # 查看子父进程之间的关系
    ps -ef | grep xxx
    
    • process status 进程状态

    • OPTION

      选项功能
      a列出带有终端的所有用户的进程
      x列出当前用户的所有进程,包括没有终端的进程
      u面向用户友好的显示风格
      -e列出所有进程
      -u列出某个用户关联的所有进程
      -f显示完整格式的进程列表
    • 功能说明

      • ps aux显示信息说明

        信息项说明
        USER该进程是由哪个用户产生的
        PID进程的 ID 号
        %CPU该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源
        %MEM该进程占用物理内存的百分比,占用越高,进程越耗费资源
        VSZ该进程占用虚拟内存的大小,单位 KB
        RSS该进程占用实际物理内存的大小,单位 KB
        TTY该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端
        tty2-tty6本地的字符界面终端。
        pts/0-255 代表虚拟终端
        STAT进程状态。
        常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
        START该进程的启动时间
        TIME该进程占用 CPU 的运算时间,注意不是系统时间
        COMMAND产生此进程的命令名
      • ps -ef显示信息说明

        信息项说明
        UID用户 ID
        PID进程 ID
        PPID父进程 ID
        CCPU 用于计算执行优先级的因子。
        数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;
        数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
        STIME进程启动的时间
        TTY完整的终端名称
        TIMECPU 时间
        CMD启动进程所用的命令和参数
    • 如果想查看进程的 CPU 占用率和内存占用率,可以使用 aux;

      如果想查看进程的父进程 ID 可以使用 ef

kill终止进程
  • 基本语法

    # 通过进程号杀死进程
    kill [-9] 进程号
    # 通过进程名杀死进程,支持通配符
    killall 进程名称
    

    -9表示强迫进程立即停止

    通配符杀死进程,在系统因负载过大而变得很慢时很有用

pstree查看进程树
  • 基本语法

    # 显示进程的PID
    pstree -p
    # 显示进程的所属用户
    pstree -u
    
top实时监控系统进程状态
  • 基本语法

    # 指定top命令每隔几秒更新。默认是3秒在 top 命令的交互模式当中可以执行的命令
    top -d 秒数
    # 使top不显示任何闲置或者僵死进程。
    top -i
    # 通过指定监控进程 ID 来仅仅监控某个进程的状态
    top -p
    
    • 操作说明

      操作功能
      P以 CPU 使用率排序,默认此项
      M以内存的使用率排序
      N以 PID 排序
      q退出top
    • 查询结果字段解释

      • 第一行–任务队列信息

        内容说明
        12:26:46系统当前时间
        up 1 day, 13:32系统的运行时间,本机已经运行 1 天13 小时 32 分钟
        2 users当前登录了两个用户
        load average: 0.00, 0.00, 0.00系统在之前 1 分钟,5 分钟,15 分钟的平均负载。一般认为小于 1 时,负载较小。如果大于1,系统已经超出负荷。
      • 第二行–进程信息

        内容说明
        Tasks: 95 total系统中的进程总数
        1 running正在运行的进程数
        94 sleeping睡眠的进程
        0 stopped正在停止的进程
        0 zombie僵尸进程。如果不是 0,需要手工检查僵尸进程
      • 第三行–CPU信息

        内容说明
        Cpu(s): 0.1%us用户模式占用的 CPU 百分比
        0.1%sy系统模式占用的 CPU 百分比
        0.0%ni改变过优先级的用户进程占用的 CPU 百分比
        99.7%id空闲 CPU 的 CPU 百分比
        0.1%wa等待输入/输出的进程的占用 CPU 百分比
        0.0%hi硬中断请求服务占用的 CPU 百分比
        0.1%si软中断请求服务占用的 CPU 百分比
        0.0%stst(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比。
      • 第四行–物理内存信息

        内容说明
        Mem: 625344k total物理内存的总量,单位 KB
        571504k used已经使用的物理内存数量
        53840k free空闲的物理内存数量,我们使用的是虚拟机,总共只分配了 628MB 内存,所以只有 53MB 的空闲内存
        65800k buffers65800k buffers
      • 第五行–交换分区(swap)信息

        内容说明
        Swap: 524280k total交换分区(虚拟内存)的总大小
        0k used已经使用的交互分区的大小
        524280k free空闲交换分区的大小
        409280k cached作为缓存的交互分区的大小
netstat显示网络状态和端口信息
  • 基本语法

    # 查看该进程网络信息
    netset -anp | grep 进程号
    # 查看网络端口号占用情况
    netset -nlp | grep 端口号
    

    OPTION

    选项功能
    -a显示所有正在监听(listen)和未监听的套接字(socket)
    -n拒绝显示别名,能显示数字的全部转化成数字
    -l仅列出在监听的服务状态
    -p表示显示哪个进程在调用
系统定时任务
crontab系统管理
  • 重启crond服务

    systemctl restart crond
    
crontab定时任务设置
  • 基本语法

    # 编辑crontab定时任务
    crontab -e
    # 查询crontab任务
    crontab -l
    # 删除当前用户所有的crontab任务
    crontab -r
    
    • 进入crontab编辑界面。会打开vim编辑你的工作

      项目含义范围
      第一个“*”一小时当中的第几分钟0-59
      第二个“*”一天当中的第几小时0-23
      第三个“*”一个月当中的第几天1-31
      第四个“*”一年当中的第几月1-12
      第五个“*”一周当中的星期几0-7

      0 和 7 都代表星期日

    • 特殊符号

      特殊符号含义
      *代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
      ,代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的 8 点 0 分,12 点 0 分,16 点 0 分都执行一次命令
      -代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨 5 点 0 分执行命令
      */n*代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔 10 分钟就执行一遍命令
    • 特定时间执行命令

      时间含义
      45 22 * * * 命令每天22点45分执行命令
      0 17 * * 1 命令每周1的17点0分执行命令
      0 5 1,15 * * 命令每月1号和15号的凌晨5点0分执行命令
      40 4 * * 1-5 命令每周一到周五的凌晨4点40分执行命令
      */10 4 * * * 命令每天的凌晨 4 点,每隔 10 分钟执行一次命令
      0 0 1,15 * 1 命令每月1号和15号,每周1的0点0分都会执行命令

      星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱

软件包管理

RPM
  • 概述

    RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe,是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。

    RPM包的名称格式

    Apache-1.3.23-11.i386.rpm

    • “apache” 软件名称

    • “1.3.23-11”软件的版本号,主版本和此版本

    • “i386”是软件所运行的硬件平台,Intel 32位处理器的统称

    • “rpm”文件扩展名,代表RPM包

  • 查询命令

    # 查询所安装的所有 rpm 软件包
    rpm -qa
    

    由于软件包比较多,一般都会采取过滤。rpm -qa | grep rpm软件包

  • 卸载命令

    # 卸载软件包
    rpm -e RPM软件包
    # 卸载软件时,不检查依赖。
    rpm -e --nodeps 软件包
    

    不检查依赖的话,那些使用该软件包的软件在此之后可能就不能正常工作了

  • 安装命令

    # 安装命令
    rpm -ivh RPM包全名
    

    OPTION

    选项功能
    -iinstall,安装
    -v--verbose,显示详细信息
    -h--hash,进度条
    --nodeps安装前不检查依赖
YUM
  • 概述

    YUM(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

    image-20220621143626107

  • 常用命令

    yum -y [参数]
    

    参数说明

    参数功能
    install安装rpm软件包
    update更新rpm软件包
    check-update检查是否有可用的更新rpm软件包
    remove删除指定的rpm软件包
    list显示软件包信息
    clean清理yum过期的缓存
    deplist显示yum软件包的所有依赖关系
  • 修改网络YUM源

    默认的系统 YUM 源,需要连接国外 apache 网站,网速比较慢,可以修改关联的网络 YUM 源为国内镜像的网站,比如网易 163,aliyun 等

    # 安装wget
    yum install wget
    # 备份repos文件
    pwd /etc/yum.repos.d
    cp CentOS-Base.repo CentOS-Base.repo.backup
    # 下载阿里云的repos文件
    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    

克隆虚拟机

Shell编程

概述
  • Shell

    命令行解释器,接受应用程度/用户命令后调用操作系统内核

    image-20220707184409299

  • Shell编程

    Shell是一个功能强大的编程语言,易编写、易调试、灵活性强

基础内容
  • 脚本格式

    #!/bin/bash开头

    1. 创建Shell脚本,输出helloworld

      touch helloworld.sh
      vim helloworld.sh
      
    2. 在helloworld.sh中输入

      # !/bin/bash
      echo "helloworld"
      
  • 脚本执行方式

    • bash/sh+脚本路径的执行方式(相对路径/绝对路径)

      # sh+脚本相对路径
      sh ./helloworld.sh
      # sh+脚本绝对路径
      sh /home/user/shells/helloworld.sh
      # bash+脚本相对路径
      bash ./helloworld.sh
      # bash+脚本绝对路径
      bash /home/user/shells/helloworld.sh
      

      不用赋予脚本+x 权限

      本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行权限。

    • 脚本路径的直接执行方式

      1. 赋予helloworld.sh脚本 +x 权限

        chmod +x helloworld.sh
        

        赋予具有可执行 +x 权限

        在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则子 shell 关闭,回到父 shell 中。

      2. 执行脚本

        # 相对路径
        ./helloworld.sh
        # 绝对路径
        /home/user/shells/helloworld.sh
        

      本质是脚本需要自己执行,所以需要执行权限。

      在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则子 shell 关闭,回到父 shell 中。

    • 在脚本路径前加上.source

      . helloworld.sh
      source helloworld.sh
      

      可以使脚本内容在当前 shell 里执行,而无需打开子shell!

      开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell 中设置的当前变量,父 shell 是不可见的

变量
系统预定义变量
  • 系统变量

    • 查看

      echo $HOME
      
    • 显示

      set
      
  • $HOME

  • $PWD

  • $SHELL

  • $USER

自定义变量
  • 基本语法

    • 定义变量

      VarName=VarValue
      

      =号前后不能有空格

    • 撤销变量

      unset VarName
      
    • 声明静态变量

      readonly VarName=VarValue
      
  • 变量定义规则

    • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
    • 等号两侧不能有空格
    • 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
    • 变量的值如果有空格,需要使用双引号或单引号括起来。
特殊变量
  • $n

    • 基本语法

      $n
      

      n 为数字,$0 代表该脚本名称,$1-$9 代表第一到第九个参数;十以上的参数需要用大括号包含,如${10}

  • $#

    • 基本语法

      $#
      

      获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性。

  • $*$@

    • 基本语法

      $*
      

      代表命令行中所有的参数,$*把所有的参数看成一个整体

      $@
      

      代表命令行中所有的参数,不过$@把每个参数区分对待

  • $?

    • 基本语法

      $?
      

      最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。

运算符
  • 基本语法

    $ ((运算式))
    $ [运算式]
    
条件判断
  • 基本语法

    test condition
    [ condition ]
    

    条件非空即为 true,[ atguigu ]返回 true,[ ] 返回 false。

  • 判断条件

    • 两个整数之间比较

      -eq–等于(equal)

      -ne–等于(not equal)

      -lt–小于(less than)

      -le–小于等于(less equal)

      -gt–大于(greater than)

      -ge–大于等于(greater equal)

      如果是字符串之间的比较 ,用等号=判断相等;用!=判断不等。

    • 按照文件权限进行判断

      -r有读的权限(read)

      -w有写的权限(write)

      -x有执行的权限(execute)

    • 按照文件类型进行判断

      -e文件存在(existence)

      -f文件存在且是一个常规文件(file)

      -d文件存在且是一个目录(directory)

流程判断
  • if判断

    • 基本语法

      • 单分支

        if [ 条件判断式 ];then
        	程序
        fi
        
        if [ 条件判断式 ]
        then
        	程序
        fi
        
      • 多分支

        if [ 条件判断式 ]
        then
        	程序
        elif [ 条件判断式 ]
        then
        	程序
        else
        	程序
        fi
        

      [ 条件判断式 ],中括号和条件判断式之间必须有空格

      if后要有空格

  • case语句

    • 基本语法

      case $ VarName in
      "VarValue1")
      	如果变量的值等于值 1,则执行程序 1
      ;;
      "VarValue2")
      	如果变量的值等于值 2,则执行程序 2
      ;;
      	…省略其他分支…
      *)
      	如果变量的值都不是以上的值,则执行此程序
      ;;
      esac
      

      case 行尾必须为单词in,每一个模式匹配必须以右括号)结束。

      双分号;;表示命令序列结束,相当于 java 中的break

      最后的*)表示默认模式,相当于 java 中的default

  • for循环

    • 基本语法

      for ((初始值;循环控制条件;变量变化))
      do
      	程序
      done
      
      for VarName in VarValue1 VarValue2 VarValue3…
      do
      	程序
      done
      
  • while循环

    • 基本语法

      while [ 条件判断式 ]
      do
      	程序
      done
      
read读取控制台输入
  • 基本语法

    read [option] [parameter]
    
    • option

      -p–指定读取值时的提示符;

      -t–指定读取值时等待的时间(秒),如果-t不加表示一直等待;

    • parameter

      VarName–指定读取值的变量名

函数
系统函数
  • basename

    • 基本语法

      basename [string/pathname] [suffix]
      

      basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来

      basename 可以理解为取路径里的文件名称

      • suffix为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。
  • dirname

    • 基本语法

      dirname 文件绝对路径
      

      dirname 从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)

      dirname 可以理解为取文件路径的绝对路径名称

自定义函数
  • 基本语法

    [ funciton ] funname[()]
    {
    	Action;
    	[return int;]
    }
    

    必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一样先编译。

    函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)

正则表达式入门
  • 常规匹配

    一串不包含特殊字符的正则表达式匹配它自己

    cat /etc/passwd | grep zimo
    

    会匹配所有包含 zimo 的行

  • 特殊字符

    • ^匹配一行的开头

      cat /etc/passwd | grep ^a
      

      匹配出所有以 a 开头的行

    • $匹配一行的结束

      cat /etc/passwd |grep t$
      

      匹配出所有以 t 结尾的行

    • .匹配一个任意字符

      cat /etc/passwd | grep r..t
      

      匹配包含 rabt,rbbt,rxdt,root 等包含r..t的所有行

    • *不单独使用,和上一个字符连用,匹配上一个字符 0 次或多次

      cat /etc/passwd | grep ro*t
      

      会匹配 rt, rot, root, rooot, roooot 等所有行

    • [ ]匹配某个范围内的一个字符

      cat /etc/passwd | grep r[a,b,c]*t
      

      匹配 rt,rat, rbt, rabt, rbact,rabccbaaacbt 等等所有行

      [6,8]------匹配 6 或者 8

      [0-9]------匹配一个 0-9 的数字

      [0-9]*------匹配任意长度的数字字符串

      [a-z]------匹配一个 a-z 之间的字符

      [a-z]* ------匹配任意长度的字母字符串

      [a-c, e-f]-匹配 a-c 或者 e-f 之间的任意字符

    • \表示转义

      cat /etc/passwd | grep "a\$b"
      

      匹配所有包含 a$b 的行。注意需要使用单引号将表达式引起来

      不会单独使用。由于所有特殊字符都有其特定匹配模式,当我们想匹配 某一特殊字符本身时(例如,我想找出所有包含 ‘$’ 的行),就会碰到困难。此时我们就要 将转义字符和特殊字符连用,来表示特殊字符本身。

文本处理工具
  • cut

    • 概述

      cut是在文件中负责剪切数据用的

      cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出

    • 基本用法

      cut [option] filename
      

      默认分隔符是制表符

      • option

        -f 列号,提取第几列

        -d 分隔符,按照指定分隔符分割列,默认是制表符“\t”

        -c 按字符进行切割后加 n 表示取第几列 比如-c 1

  • awk

    • 概述

      把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理

    • 基本用法

      awk [option] '/pattern1/{action1} /pattern2/{action2}…' filename
      
      • pattern:表示 awk 在数据中查找的内容,就是匹配模式

      • action:在找到匹配内容时所执行的一系列命令

      • option

        -F 指定输入文件分隔符

        -v 赋值一个用户定义变量

    • awk内置变量

      变量说明
      FILENAME文件名
      NR已读的记录数(行号)
      NF浏览记录的域的个数(切割后列的个数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值