Linux命令

(6 mins to read)

du

显示目录或文件的大小。

  • -b/-k/-m 以bytes/kb/mb为单位
  • -h 以K、M、G为单位,提高可读性
  • -s 只显示总和,也就是”.”目录的大小
  • --exclude 略过指定目录或文件

dust(du+rust)以树型结构展示,并显示大小占比,最下面是内存占用最大的文件或目录。

ncdudu的tui版本,从大到小列出所有目录或文件的大小,
?查看快捷键,其中d删除,q退出。

tldr

man的言简意赅版本。

md5sum

在传输大文件时,数据可能出现不一致问题,可以用md5值简单校验文件内容是否正确。

  • md5sum {{path/to/file}}:计算一个文件的md5h值
  • md5sum --check {{path/to/file.md5}}:检查该文件中罗列的每个文件与对应的md5值是否一致(每行是文件名和md5值)

pstack

唯一的用法就是pstack <PID>,用于打印正在运行的进程PID的堆栈信息。

用于了解一个进程当前正在做什么,帮助死锁检测、性能分析、问题排查等。

pkill

杀死指定名称的所有进程。

pmap

  • pmap <PID>:显示进程PID的地址空间
  • -p:显示完整路径

lsof

list open files(列出当前系统打开的文件)。

  • lsof
  • lsof {{path/to/file}}:输出打开该文件的所有进程
  • lsof -c {{command}}:输出该命令会打开的所有文件
  • lsof -p {{PID}}:输出进程PID打开的所有文件

uptime

快速查看系统在1min、5min和15min内的平均负载。

df

列出文件系统的磁盘使用情况。

dd

从标准输入或文件读取数据,转换并输出到文件、设备或标准输出。

cut

从文件的每一行中截取一部分。

  • -d指定分隔符
  • -f指定列(从1计数),只能和-d一起使用,不指定-d的话,默认分隔符为分配
  • -c提取指定范围的字符
  • -b提取指定范围的字节

sort

所有行按升序排序

  • -n按数值大小
  • -r降序排序
  • -u去重
  • -m合并多个已排序文件
  • -t指定排序时各列的分隔符

sed

逐行处理文本。

动作:

  • a:新增
  • c:替换
  • d:删除
  • i:插入
  • p:打印
  • s:取代

awk

逐行分析文本。

awk -F ':' '{print $1,$3}'打印按照:分割后的第1和3列。

sysstat

iostat

查看IO状态

mpstat

查看CPU状态

vmstat

virtual memory statistics(虚拟内存统计)

  • vmstat
  • vmstat 2 3:每隔2秒采集一次状态,共采集3次

pidstat

查看一个进程的系统资源占用情况。

pidstat -p {{PID}}

pldd

source

读取并执行文件中的命令,它与sh/bash的区别是不会创建一个子shell,而是在当前shell中执行。

.等价于source

stress

Linux下的可以对CPU、IO、MEM、Disk进行压力测试的工具。

1
2
3
4
5
-t, --timeout N    timeout after N seconds
-c, --cpu N spawn N workers spinning on sqrt()
-i, --io N spawn N workers spinning on sync()
-m, --vm N spawn N workers spinning on malloc()/free()
-d, --hdd N spawn N workers spinning on write()/unlink()

file

strip

去除无用的符号信息,减小release版本的共享库大小。
注意strip需要和共享库的平台一致(用file查看)。

1
2
strip --strip-debug xxx.so
strip --strip-unneeded xxx.so

top

查看各个进程的资源占用情况。

  • -p pid:指定进程
  • -H:在进程信息中显示线程详细信息
  • -i:不显示闲置或无用进程
  • -c:显示完整命令行而不截断
  • h:展示help信息

htop

top的现代版本

  • -p pid:指定进程
  • -t:以树形图展示
  • H:在进程信息中显示线程详细信息
  • F1:展示help信息

split

hyperfine

命令行的基准测试工具。

1
hyperfine --warmup 3 --runs 5 `grep -R TODO *`

find

查找文件

1
2
3
4
5
6
7
8
9
10
11
12
13
find {{root_path}} -name '{{*.ext}}'
# 以天为单位
-atime N access time
-ctime N changed time # (content)
-mtime N modified time # (meta data)
# 以分钟为单位
-amin N
-cmin N
-mmin N
+n for greater than n
-n for less than n
n for exactly n
-readable -writable -executable

grep

1
grep --recursive --line-number --ignore-case "{{search_pattern}}" {{path/to/file}}

watch

watch -n 1 -d command

每隔1秒(-n 1)重新运行一次命令(command),并高亮与上一次的差异(-d

nvitop

显示显卡使用情况,平替watch -n 1 nvidia-smi

taskset

taskset --cpu-list {{cpu_id}} {{command}}

设置CPU亲密度,同时起到限制核数的作用,

dmesg

display message:显示Linux内核ring buffer中的系统信息,里面会包含一些故障信息。