本文不涉及非常基础的命令知识,主要以提升效率为主,且不断更新中。
我的其他Linux文章:
vim实用操作
管道
1 重定向 tee
命令行之后将日志信息重定向到文件日志中。
# 标准输出和错误输出都进入管道且通过tee命令将输出重定向到test.log
python 1.py 2>&1 | tee test.log
GPU/DeepLearning相关
1 状态查看
- 查看服务器集群
cluster-smi
更多 cluster-smi
细节请参考 cluster-smi命令详解
- 查看本机的GPU细节
nvidia-smi
- 每0.5s查看GPU状态
watch -n 0.5 nvidia-smi
- 查看哪张卡是哪个用户在占用
# 使用python的库进行查看,先安装
pip install gpustat
# 查看
gpustat
效果如下:
- 查看GPU使用状态
# 使用python的库进行查看,先安装
pip install nvitop
# 查看
nvitop
效果如下:
- 服务器端开启tensorboard映射到本地,可以在本地查看服务器端tensorboard:
# Windows本地端口映射至服务器(Windows端或本机操作)
# ssh -L 本地端口:本地IP:远程端口 远程服务器用户名@远程服务器IP -p 服务器连接端口
ssh -L 6006:127.0.0.1:6006 wangyaqi@servers.eezhilu.com -p 19025
# 服务器开启tensorboard(服务器端操作)
tensorboard --logdir=logs
# 本地就可以浏览器访问tensorboard记录了
2 指定GPU训练
- 可以在运行命令时添加环境变量
CUDA_VISIBLE_DEVICES=4,7 python main.py
- 可以在程序开头添加
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0, 1, 2, 3, 4, 5'
后台进程篇
1 查杀后台进程
ps x | grep <cmdline> | awk '{print $1}' | xargs kill
ps x
:获取当前用户的所有进程。grep <cmdline>
:找到已经停止的程序进程,例如通过python train.py
启动程序,需要写成grep 'python train.py'
。awk '{print $1}'
:获取进程的pid。xargs kill
:杀掉进程,根据需要可能需要写成xargs kill -9
强制杀掉进程。
kill -9 <PID>
可以杀掉进程号为PID的进程
-
grep
:搜索命令,搜索指定字符串的行 -
awk
:文本格式化处理工具,可以对复杂文本进行处理
语法格式:awk [options] 'program' file1 file2 ...
,program包含两部分:'pattern{action}'
,最常用的两个action就是print
和printf
,awk把处理过的格式文本,用他们输出
工作方式:逐行扫描,并将每行用空格分割不同的列,$1
代表每行的第一列,$2
代表每行的第二列,以此类推,$NF
表示当前行分割后的最后一列。
# 输出文件第1列和第3列,用逗号分割
awk '{print $1, $3}' 1.txt
xargs
:给其他命令传递参数的一个工具
xargs 的默认命令是 echo,空格是默认分界符,也就是文本的换行和空白将全部变为空格。
fsd d ww d
dw
xssd w k
# 上述文本经过下面命令
cat 1.txt | xargs
# 输出
fsd d ww d dw xssd w k
2 后台进程挂起
tmux是一个很好用的后台进程挂起的工具,命令可以参考我的这篇笔记 tmux命令详解及自定义配置
3 状态查看
状态查看一共可以用两个命令,感觉都比较好用。
top
htop