常用命令

echo

终端输出显示字符串或者变量提取后的值

Bash
# echo Helloworld
# echo $SHELL

date

显示或者设置系统时间与日期

Bash
# date
2024年 05月 02日 星期四 12:25:43 CST

# date "+%Y-%m-%d %H:%M:%S"  # 格式化时间
2024-05-02 12:26:28

# date "+j"  # 今年的第几天

timedatectl

time date control 设置系统时间

Bash
# timedatectl status # 显示状态信息
Local time: 2024-05-02 12:30:10 CST
           Universal time: 2024-05-02 04:30:10 UTC
                 RTC time: 2024-05-02 04:30:10
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

# timedatectl list-timezones # 列出已知时区
# timedatectl set-time # 设置系统时间
# timedatectl set-timezone # 设置生效时区

reboot

重启计算机

poweroff

关闭计算机

wget

终端文件下载命令 web get

-b 后台下载模式 -P 下载到指定目录 -t 最大尝试次数 -c 断电续传 -p 下载页面所有资源 -r 递归下载

ps

查看进程状态

-a 显示所有进程 -u 用户和其他详细信息 -x 显示没有控制终端的进程

pstree

树状图展示进程之间关系

top

动态监视进程活动和系统负载等信息

nice

调整进程优先级

pidof

查询指定服务进程的PID号

kill

终止某个指定PID值的服务进程

killall

终止某个指定名称的服务所对应的全部进程

系统状态检测命令

ifconfig

获取网络卡配置和网络状态等信息

uname

查询系统内核变笨与系统架构等信息

或者可以查看lsb-release文件 cat /etc/lsb-release

uptime

查看系统负载信息和当前系统运行时间

free

显示系统中内存使用量信息

-h 人性化输出

Bash
# free -h
        total      used        free      shared      buff/cache   available
内存:   31Gi       1.2Gi       6.8Gi      17Mi          23Gi        29Gi
交换:   15Gi       0.0Ki       15Gi

iostat

iostat 是一个用于监控系统 I/O 统计信息的命令行工具,它可以报告 CPU 使用情况、磁盘 I/O 统计信息以及其他相关硬件的使用情况。iostat 是一个非常有用的工具,特别是在诊断 I/O 性能瓶颈时

下载:

sudo apt install sysstat

用法:

iostat [选项] [时间间隔] [次数]

例如: iostat -c 1 10 只显示时间信息,一秒刷新一次,显示10次

  • -c:只显示 CPU 统计信息。
  • -d:显示磁盘统计信息。
  • -k:以 KB/s 显示 I/O 速率。
  • -m:以 MB/s 显示 I/O 速率。
  • -t:显示时间戳。
  • -x:显示扩展磁盘统计信息。
Bash
# 每秒1次显示sda设备的信息
$ iostat -x sda 1
Device            r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz     f/s f_await  aqu-sz  %util
sda              0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00      0.00     0.00   0.00    0.00     0.00    0.00    0.00    0.00   0.00
  • Device: 显示设备名称,这里是 sda
  • r/s (reads per second): 每秒读取次数。在这个例子中,0.00 表示每秒没有读取操作。
  • rkB/s (read kilobytes per second): 每秒读取的千字节数。同样地,0.00 表示每秒没有读取的数据量。
  • rrqm/s (read requests merged per second): 每秒合并的读请求次数。0.00 表示没有读请求被合并。
  • %rrqm (% read requests merged): 合并的读请求所占比例。由于没有合并操作,所以这个值也是 0.00
  • r_await (read request wait time in milliseconds): 读请求等待时间(毫秒)。0.00 表示没有读请求等待。
  • rareq-sz (average read request size in sectors): 平均读请求大小(扇区数)。0.00 表示没有平均读请求大小。
  • w/s (writes per second): 每秒写入次数。0.00 表示每秒没有写入操作。
  • wkB/s (write kilobytes per second): 每秒写入的千字节数。0.00 表示每秒没有写入的数据量。
  • wrqm/s (write requests merged per second): 每秒合并的写请求次数。0.00 表示没有写请求被合并。
  • %wrqm (% write requests merged): 合并的写请求所占比例。由于没有合并操作,所以这个值也是 0.00
  • w_await (write request wait time in milliseconds): 写请求等待时间(毫秒)。0.00 表示没有写请求等待。
  • wareq-sz (average write request size in sectors): 平均写请求大小(扇区数)。0.00 表示没有平均写请求大小。
  • d/s (IOs per second): 每秒 I/O 操作次数。0.00 表示每秒没有 I/O 操作。
  • dkB/s (IO kilobytes per second): 每秒 I/O 数据量(千字节)。0.00 表示每秒没有 I/O 数据量。
  • drqm/s (I/O requests merged per second): 每秒合并的 I/O 请求次数。0.00 表示没有 I/O 请求被合并。
  • %drqm (% I/O requests merged): 合并的 I/O 请求所占比例。由于没有合并操作,所以这个值也是 0.00
  • d_await (I/O request wait time in milliseconds): I/O 请求等待时间(毫秒)。0.00 表示没有 I/O 请求等待。
  • dareq-sz (average I/O request size in sectors): 平均 I/O 请求大小(扇区数)。0.00 表示没有平均 I/O 请求大小。
  • f/s (flushes per second): 每秒刷新次数。0.00 表示每秒没有刷新操作。
  • f_await (flush request wait time in milliseconds): 刷新请求等待时间(毫秒)。0.00 表示没有刷新请求等待。
  • aqu-sz (average queue length): 平均队列长度。0.00 表示没有平均队列长度。
  • %util (percent of CPU time spent in I/O operations): CPU 时间中用于 I/O 操作的百分比。0.00 表示没有 CPU 时间用于 I/O 操作。

iotop

一般要以sudo权限运行, 用来显示io的最高使用排序

sudo iotop

who

查看登入主机的用户终端信息

last

调取主机被访问记录

ping

用于测试主机连通性

-c 总共发送次数 -l 指定网卡名称 -I 每次间隔时间 -W 最长等待时间

Bash
# ping www.baidu.com -c 4
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=52 time=8.48 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=52 time=8.29 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=52 time=8.28 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=52 time=8.30 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 8.284/8.336/8.476/0.080 ms

tracepath

显示数据包到达目的主机时途中经过的所有路由信息

netstat

显示网络连接,路由表。接口状态等网络信息

-a 显示所有有连接中的Socket -p 显示正在使用的Socket信息 -t 显示TCP协议的连接信息 -u 显示UPD协议的连接信息 -n 使用IP地址,不使用域名 -l 列出正在监听的服务状态 -i 现在网卡列表信息 -r 显示路由表信息

history

显示历史执行过的命令

查找定位文件命令

pwd

显示用户当前所处的工作目录

cd

切换当前的工作路径

~ 返回家目录

- 返回上一次目录

ls

显示目录中的文件信息

tree

以树状图的形式列出目录内容及结构

find

用于按照指定条件来查找文件所对应的位置

-name 匹配名称 -perm 匹配权限(mode 为完全匹配,-mode 为包含即可) -user 匹配所有者 -group 匹配所属组 -mtime -n +n 匹配修改内容的时间(-n 指 n 天以内,+n 指 n 天以前) -atime -n +n 匹配访问文件的时间(-n 指 n 天以内,+n 指 n 天以前) -ctime -n +n 匹配修改文件权限的时间(-n 指 n 天以内,+n 指 n 天以前) -nouser 匹配无所有者的文件 -nogroup 匹配无所属组的文件 -newer f1 !f2 匹配比文件 f1 新但比 f2 旧的文件

—type

b/d/c/p/l/f 匹配文件类型(后面的字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)

-size 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB 为查找小于 50KB

的文件)

-prune 忽略某个目录

-exec…… {}; 后面可跟用于进一步处理搜索结果的命令 (结尾必须是\)

Bash
# sudo find /etc/apt -name "source*"
/etc/apt/sources.list.distUpgrade
/etc/apt/sources.list.d
/etc/apt/sources.list.save
/etc/apt/sources.list

#  find /etc/apt -user root -name "source*" -type f -exec ls -alh {} \;
-rw-rw-r-- 1 root root 3.3K  8月 22  2022 /etc/apt/sources.list.distUpgrade
-rw-rw-r-- 1 root root 1.9K  9月 16  2022 /etc/apt/sources.list.save
-rw-rw-r-- 1 root root 1.2K  2月 17  2023 /etc/apt/sources.list

whereis

用于按照名称快速搜索二进制程序(命令)、源代码以及帮助文件所对应的位置

which

用于按照指定名称快速搜索二进制程序(命令)所对应的位置

文本文件编辑命令

cat

用于查看纯文本文件(内容较少的),英文全称为 “concatenate”

-n 可以用来显示行号

more

查看纯文本文件 (内容较多)

用于查看纯文本文件的前 N 行 默认查看前5行

-n 10 指定查看前10行

tail

用于查看纯文本文件的后 N 行或持续刷新文件的最新内容

-n 10 指定查看后10行 -f file 指定不断刷新file文件

tr

tr 命令用于替换文本内容中的字符,英文全称为“translate”

Bash
# cat test.cfg | tr [a-z] [A-Z]  # 小写全部替换为大写

wc

统计指定文本文件的行数、字数或字节数

-l 只显示行数 -w 只显示单词数 -c 只显示字节数

Bash
# wc -l /etc/passwd
53 /etc/passwd

stat

用于查看文件的具体存储细节和时间等信息

Bash
# stat /etc/passwd
  文件:/etc/passwd
  大小:3210      	块:8          IO 块大小:4096   普通文件
设备:10302h/66306d	Inode:262653      硬链接:1
权限:(0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
访问时间:2024-05-02 10:17:01.005293220 +0800
修改时间:2023-11-13 12:00:17.875851858 +0800
变更时间:2023-11-13 12:00:17.875851858 +0800
创建时间:2023-11-13 12:00:17.875851858 +0800

grep

用于按行提取文本内容

-b 将可执行文件(binary)当作文本文件(text)来搜索 -c 仅显示找到的行数 -I 忽略大小写 -n 显示行号 -v 反向选择—仅列出没有“关键词”的行

-B 打印查到到行的前 n 行 -A 打印查找到行的后 n 行 -C 打印查找到行的前后 n 行

cut

按列提取文本内容

-f 指定显示第几列 -d 指定分隔符

Bash
# head -n 4 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin

# head -n 4 /etc/passwd | cut -d : -f 1
root
daemon
bin
sys

diff

比较多个文件之间内容的差异,英文全称为 “different”

uniq

去除文本中连续的重复行,英文全称为 “unique”

sort

对文本内容进行再排序

-f 忽略大小写 -b 忽略缩进与空格 -n 以数值型排序 -r 反向排序 -u 去除重复行 -t 指定间隔符 -k 设置字段范围 -h 按照人类可读的格式对结果排序

Bash
# head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

# head -n 5 /etc/passwd | sort -t : -k 3 -r
sync:x:4:65534:sync:/bin:/bin/sync
sys:x:3:3:sys:/dev:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash

文件目录管理命令

torch

创建空白文件或设置文件的时间

-a 仅修改“访问时间” -m 仅修改“修改时间” -d 同时修改 访问时间和修改时间

mkdir

创建空白的目录

-p 递归创建

cp

复制文件或目录

-p 保留原始文件的属性 -d 若对象为“链接文件” ,则保留该“链接文件”的属性 -r 递归持续复制(用于目录) -i 若目标文件存在则询问是否覆盖 -a 相当于-pdr(p、d、r 为上述参数)

mv

剪切或重命名文件,英文全称为“move”

rm

删除文件或目录,英文全称为“remove”

-f 强制执行 -i 删除前询问 -r 删除目录 -v 显示过程

dd

按照指定大小和个数的数据块来复制文件或转换文件,语法格式为“dd if=参数值 of=参数值 count=参数值 bs=参数值”

if 输入的文件名称 of 输出的文件名称 bs 设置每个“块”的大小 count 设置要复制“块”的个数

file

用于查看文件的类型

Bash
# file /etc/passwd
/etc/passwd: ASCII text

tar

对文件进行打包压缩或解压

-c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包内有哪些文件 -z 用 gzip 压缩或解压 -j 用 bzip2 压缩或解压 -v 显示压缩或解压的过程 -f 目标文件名 -p 保留原始的权限与属性 -P 使用绝对路径来压缩 -C 指定解压到的目录

du

计算每个文件的磁盘用量,目录则取总用量。 -s 仅对每个命令行参数输出一个总使用量 -h 以人类可读的格式输出大小(例如,1K 234M 2G) -d —max-depth=N 仅当目录(指定了 —all 时也包括文件)深度小于或等于 <文件> 之下 N 层时才打印目录总大小

lsblk

lsblk 命令可以显示系统中所有块设备的信息,包括挂载点

df

显示每个 <文件> 所在的文件系统的信息,默认显示所有文件系统。您可以通过它间接查找挂载点

参数:

-h, —human-readable 以 1024 进制的单位显示大小(例如:1023M)