← 返回首页

值得顺便掌握一下的那些linux指令

命令行能够即时地做很多事情,甚至代表一种简洁而切题的计算机哲学。 为了直接进入正题,省略诸如 cd 这样的广为人知的基础指令,直接看那些显著提升体验的东西。

edit time: 2026-03-10 11:31:56

df

用于查看磁盘空间。使用场景比如训模型会保存很多中间文件,可以这样看看需要清理哪些。

使用效果: 比如 fuse-overlayfs 是这个实例本身的存储, shared-nvme 是它的外接可持久化存储,使用率分别为 50% 和 40% 。

以下截取需要关注的输出行:

$ df
Filesystem              1K-blocks        Used  Available Use% Mounted on
fuse-overlayfs           31457280    15468244   15989036  50% /
/dev/sda3               931347132    85832692  845514440  10% /base
JuiceFS:shared-juice3   104857600    41665660   63191940  40% /root/shared-nvme

至于要看哪几个文件最大,可以和 ncdu 这样的工具搭配使用。

grep

查找关键词,关键词可以写正则。 通常和其他指令通过管道搭配使用,简单的用法、强大的功能。

使用效果:

$ df | grep /dev
/dev/sda3               931347132    85849780  845497352  10% /base
tmpfs                       65536           0      65536   0% /dev
tmpfs                       65536           0      65536   0% /dev/tty
tmpfs                   528231156           0  528231156   0% /sys/devices/virtual/powercap
/dev/xvdb               308521792    15468280  277308488   6% /etc/hosts
tmpfs                    62914560         112   62914448   1% /dev/shm

也可以加 -i 参数用于忽略大小写。

ps

ps aux 用于查看当前用户的进程。 但是输出往往很冗长。我只关心我运行的实验,怎么做? 答案很方便:管道加grep!

$ ps aux | grep uv
root        7482  0.0  0.0 232328 36616 pts/0    Sl+  11:02   0:00 uv run scripts/batch_sweep.sh --use-wandb --train-data data/tinystories_train.bin --val-data data/tinystories_val.b
root        7512  0.0  0.0 232332 36100 pts/0    Sl+  11:02   0:00 uv run python -m cs336_basics.train --train-data data/tinystories_train.bin --data-dtype uint16 --vocab-size 10000
root        8012  0.0  0.0   3960  1976 pts/1    S+   11:27   0:00 grep --color=auto uv

nvidia-smi

仅适用于使用nvidia显卡的设备。 可以查看GPU情况,包括CUDA版本、有几个设备和设备的使用率等。

使用效果: 这里是单卡5090,CUDA版本为12.8,因此需要安装2.7.1等PyTorch版本。

nvidia-smi

输出中可以关注 Driver Version、CUDA Version、GPU Name、Memory-Usage 和 GPU-Util,以及 Processes 区域中 Python 进程的显存占用。本次输出中的 GPU 为 NVIDIA GeForce RTX 5090,显存使用量为 1114MiB / 32607MiB,利用率为 24%。

-v -vv -vvv

严格来说这个不是指令,而是一个常见的命令参数。但好用。 有许多工具默认状态给你提供的信息是很有限的,比如 pip 。如果加了 -v ,它就会给你提供更多的信息;-vv 更多更多…… 比如你怀疑某个指令是不是卡在网络连接问题上了、又没有信息,就可以加这个参数看看。

使用效果(不加参数):

(pymc) PS > pip install einops
Collecting einops
  Using cached einops-0.8.1-py3-none-any.whl.metadata (13 kB)
Using cached einops-0.8.1-py3-none-any.whl (64 kB)
Installing collected packages: einops
Successfully installed einops-0.8.1

使用效果(-v):

pip install -v einops

输出会增加 pip 和 Python 的版本、候选下载链接、Python 版本要求,以及获取包元数据的过程。例如以下输出说明某个版本需要 Python 3.9 以上:

Link requires a different Python (3.8.0 not in: '>=3.9')

使用效果(-vv):

pip install einops -vv

以下截取网络请求和缓存判断部分:

Fetching project page and analyzing links: https://pypi.org/simple/einops/
Getting page https://pypi.org/simple/einops/
Found index url https://pypi.org/simple/
Looking up "https://pypi.org/simple/einops/" in the cache
Request header has "max_age" as 0, cache bypassed
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/einops/ HTTP/1.1" 304 0
Fetched page https://pypi.org/simple/einops/ as application/vnd.pypi.simple.v1+json

-vvv 就不说了。肯定更多。

评论