VPS必备知识!Linux操作系统常用指令,附解释与实例!(仅选取个人常用命令)

更多命令请参阅Linux 常用命令学习

Linux常用命令

1️⃣ls 命令

就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限) 查看目录信息等等。

  1. ls -a 列出目录所有文件,包含以.开始的隐藏文件
  2. ls -A 列出除.及..的其它文件
  3. ls -r 反序排列
  4. ls -t 以文件修改时间排序
  5. ls -S 以文件大小排序
  6. ls -h 以易读大小显示
  7. ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
  1. ls -lhrt

    按易读方式按时间反序排序,并显示文件详细信息

  2. ls -lrS

    按大小反序显示文件详细信息

  3. ls -l t*

    列出当前目录中所有以”t”开头的目录的详细内容

  4. ls | sed “s:^:pwd/:”

    列出文件绝对路径(不包含隐藏文件)

  5. find $pwd -maxdepth 1 | xargs ls -ld

    列出文件绝对路径(包含隐藏文件)

2️⃣cd 命令

  1. cd [目录名]

说明:切换当前目录至 dirName。

  1. cd /

    进入主要目录

  2. cd ~

    进入 “home” 目录

  3. cd -

    进入上一次工作路径

  4. cd !$

    把上个命令的参数作为cd参数使用。

3️⃣pwd 命令

  1. pwd 命令用于查看当前工作目录路径。
  1. pwd

    查看当前路径

  2. pwd -P

    查看软链接的实际路径

4️⃣mkdir 命令

  1. mkdir 命令用于创建文件夹。

可用选项:

  • -m: 对新建目录设置存取权限,也可以用 chmod 命令设置;
  • -p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
  1. mkdir t

    当前工作目录下创建名为 t的文件夹

  2. mkdir -p /tmp/test/t1/t

    在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建

5️⃣rm 命令

  1. rm [选项] 文件…

删除一个目录中的一个或多个文件或目录,如果没有使用 -r 选项,则 rm 不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

  1. rm -i *.log

    删除任何 .log 文件,删除前逐一询问确认

  2. rm -rf test

    删除 test 子目录及子目录中所有档案删除,并且不用一一确认

  3. rm -- -f*

    删除以 -f 开头的文件

6️⃣rmdir 命令

  1. 从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。

注意:不能删除非空目录

  1. rmdir -p parent/child/child11

    当 parent 子目录被删除后使它也成为空目录的话,则顺便一并删除

7️⃣mv 命令

  1. 移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命名该文件)。
  2. 当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。
  1. mv test.log test1.txt

    将文件 test.log 重命名为 test1.txt

  2. mv llog1.txt log2.txt log3.txt /test3

    将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中

  3. mv -i log1.txt log2.txt

    将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖

  4. mv * ../

    移动当前文件夹下的所有文件到上一级目录

8️⃣cp 命令

将源文件复制至目标文件,或将多个源文件复制至目标目录。

  1. -i 提示
  2. -r 复制目录及目录内所有项目
  3. -a 复制的文件与原文件时间一样

注意:命令行复制,如果目标文件已经存在会提示是否覆盖,而在 shell 脚本中,如果不加 -i 参数,则不会提示,而是直接覆盖!

  1. cp -ai a.txt test

    复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。

  2. cp -s a.txt link_a.txt

    为 a.txt 建立一个链接(快捷方式)

9️⃣ps 命令

命令参数:

  1. -A 显示所有进程
  2. a 显示所有进程
  3. -a 显示同一终端下所有进程
  4. c 显示进程真实名称
  5. e 显示环境变量
  6. f 显示进程间的关系
  7. r 显示当前终端运行的进程
  8. -aux 显示所有包含其它使用的进程

ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top

linux上进程有5种状态:

  1. 运行(正在运行或在运行队列中等待)
  2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
  5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)

ps 工具标识进程的5种状态码:

  1. D 不可中断 uninterruptible sleep (usually IO)
  2. R 运行 runnable (on run queue)
  3. S 中断 sleeping
  4. T 停止 traced or stopped
  5. Z 僵死 a defunct (”zombie”) process
  1. ps -ef

    显示当前所有进程环境变量及进程间关系

  2. ps -A

    显示当前所有进程

  3. ps -aux | grep apache

    与grep联用查找某进程

  4. ps aux | grep ‘(cron|syslog)’

    找出与 cron 与 syslog 这两个服务有关的 PID 号码

🔟top 命令

常用参数:

  1. -c 显示完整的进程命令
  2. -s 保密模式
  3. -p <进程号> 指定进程显示
  4. -n <次数>循环显示次数

显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等

  1. 打印信息

    top - 14:06:23 up 70 days, 16:44, 2 users, load average: 1.25, 1.32, 1.35
    Tasks: 206 total, 1 running, 205 sleeping, 0 stopped, 0 zombie
    Cpu(s): 5.9%us, 3.4%sy, 0.0%ni, 90.4%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st
    Mem: 32949016k total, 14411180k used, 18537836k free, 169884k buffers
    Swap: 32764556k total, 0k used, 32764556k free, 3612636k cached
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    28894 root 22 0 1501m 405m 10m S 52.2 1.3 2534:16 java

  2. 详细说明

    前五行是当前系统情况整体的统计信息区

    第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:

    14:06:23 — 当前系统时间
    up 70 days, 16:44 — 系统已经运行了70天16小时44分钟(在这期间系统没有重启过的吆!)
    2 users — 当前有2个用户登录系统
    load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
    load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

    第二行,Tasks — 任务(进程),具体信息说明如下:

    系统现在共有206个进程,其中处于运行中的有1个,205个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

    第三行,cpu状态信息,具体属性说明如下:

    5.9%us — 用户空间占用CPU的百分比。
    3.4% sy — 内核空间占用CPU的百分比。
    0.0% ni — 改变过优先级的进程占用CPU的百分比
    90.4% id — 空闲CPU百分比
    0.0% wa — IO等待占用CPU的百分比
    0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
    0.2% si — 软中断(Software Interrupts)占用CPU的百分比

    备注: 在这里CPU的使用比率和windows概念不同,需要理解linux系统用户空间和内核空间的相关知识!

    第四行,内存状态,具体信息如下:

    32949016k total — 物理内存总量(32GB)
    14411180k used — 使用中的内存总量(14GB)
    18537836k free — 空闲内存总量(18GB)
    169884k buffers — 缓存的内存量 (169M)

    第五行,swap交换分区信息,具体信息说明如下:

    32764556k total — 交换区总量(32GB)
    0k used — 使用的交换区总量(0K)
    32764556k free — 空闲交换区总量(32GB)
    3612636k cached — 缓冲的交换区总量(3.6GB)

    第六行,空行。

    第七行以下:各进程(任务)的状态监控,项目列信息说明如下:

    PID — 进程id
    USER — 进程所有者
    PR — 进程优先级
    NI — nice值。负值表示高优先级,正值表示低优先级
    VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    SHR — 共享内存大小,单位kb
    S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
    %CPU — 上次更新到现在的CPU时间占用百分比
    %MEM — 进程使用的物理内存百分比
    TIME+ — 进程使用的CPU时间总计,单位1/100秒
    COMMAND — 进程名称(命令名/命令行)

  3. top 交互命令

    h 显示top交互命令帮助信息
    c 切换显示命令名称和完整命令行
    m 以内存使用率排序
    P 根据CPU使用百分比大小进行排序
    T 根据时间/累计时间进行排序
    W 将当前设置写入~/.toprc文件中
    o或者O 改变显示项目的顺序

1️⃣1️⃣kill 命令

常用参数:

  1. -l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
  2. -a 当处理当前进程时,不限制命令名和进程号的对应关系
  3. -p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
  4. -s 指定发送信号
  5. -u 指定用户

发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用”-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

  1. kill -9 $(ps -ef | grep pro1)

    先使用ps查找进程pro1,然后用kill杀掉

1️⃣2️⃣free 命令

命令参数:

  1. -b 以Byte显示内存使用情况
  2. -k 以kb为单位显示内存使用情况
  3. -m 以mb为单位显示内存使用情况
  4. -g 以gb为单位显示内存使用情况
  5. -s<间隔秒数> 持续显示内存
  6. -t 显示内存使用总合

显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

  1. 显示内存使用情况

    free
    free -k
    free -m

  2. 以总和的形式显示内存的使用信息

    free -t

  3. 周期性查询内存使用情况

    free -s 10

Linux vi/vim

什么是 vim

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
连 vim 的官方网站 (https://www.vim.org/) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

vim 键盘图

vim 键盘图

vi/vim 的使用

基本上 vi/vim 共分为三种模式,命令模式(Command Mode)输入模式(Insert Mode)命令行模式(Command-Line Mode)

命令模式

用户刚刚启动 vi/vim,便进入了命令模式

此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。 以下是普通模式常用的几个命令:
  • i – 切换到输入模式,在光标当前位置开始输入文本。
  • x – 删除当前光标所在处的字符。
  • : – 切换到底线命令模式,以在最底一行输入命令。
  • a – 进入插入模式,在光标下一个位置开始输入文本。
  • o:在当前行的下方插入一个新行,并进入插入模式。
  • O – 在当前行的上方插入一个新行,并进入插入模式。
  • dd – 剪切当前行。
  • yy – 复制当前行。
  • p(小写) – 粘贴剪贴板内容到光标下方。
  • P(大写)– 粘贴剪贴板内容到光标上方。
  • u – 撤销上一次操作。
  • Ctrl + r – 重做上一次撤销的操作。
  • :w – 保存文件。
  • :q – 退出 Vim 编辑器。
  • :q! – 强制退出Vim 编辑器,不保存修改。

若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。
命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。
在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

在命令模式下按下 :(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有:

  • :w 保存文件。
  • :q 退出 Vim 编辑器。
  • :wq 保存文件并退出 Vim 编辑器。
  • :q! 强制退出Vim编辑器,不保存修改。

按 ESC 键可随时退出底线命令模式。