文章目录
设置环境变量
命令: export
shell
以常见的两个环境变量:PATH和LD_LIBRARY_PATH为例
1. PATH
如果你有自己安装的命令,希望暴露出来直接使用。比如miniconda中的python,如果不加环境变量一般需要写完整的路径:/x/x/x/miniconda3/bin/python,如果希望直接写python就能用到调用conda中的python指令,那么可以:
export PATH=/x/x/x/miniconda3/bin:$PATH
先解释上述命令的格式,右侧的路径可以写多个,以:分隔,$PATH表示求PATH变量的值,因为PATH环境变量以前可能已经有值,需要保留那些值不影响其他命令的使用,其次当输入了python命令时,会从PATH变量的路径下去找python可执行文件,先找到哪个就用哪个,因此:前后路径的先后顺序也很重要。
2. LD_LIBRARY_PATH
和PATH路径一样,只不过LD_LIBRARY_PATH是设置动态链接库的搜索路径。比如安装了CUDA以后,一般需要设置:
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
如果要查看是否设置成功可以使用命令:env | grep PATH 进行确认
最后以上设置的环境变量只在当前terminal的上下文中有效,如果希望全局有效,那么将export命令写入文件: ~/.bashrc,然后执行:source ~/.bashrc 生效或新打开终端
查看GPU信息
命令:nvidia-smi
shell
user@host:/tmp/test_directory# nvidia-smi
Mon Nov 8 11:55:26 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.82 Driver Version: 440.82 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 TITAN X (Pascal) Off | 00000000:01:00.0 On | N/A |
| 31% 57C P0 66W / 250W | 408MiB / 12194MiB | 2% Default |
+-------------------------------+----------------------+----------------------+
| 1 TITAN X (Pascal) Off | 00000000:04:00.0 Off | N/A |
| 93% 27C P8 11W / 250W | 2MiB / 12196MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1450 G /usr/lib/xorg/Xorg 32MiB |
| 0 2804 G /usr/lib/xorg/Xorg 351MiB |
+-----------------------------------------------------------------------------+
shell
Memory-Usage # 内存的使用情况
408MiB / 12194MiB # 前者408MiB代表已使用的显存,后者12194MiB代表总现存
shell
GPU-Util # GPU的使用率
2% # 使用率百分比
如果需要不停的输出GPU占用信息,那么使用nvidia-smi -l 1
每隔1秒输出一次,或使用watch -n 1 nvidia-smi
也是同样的效果
查看/杀死进程
查看进程命令: ps
杀死进程命令:kill
shell
root@container-5e3e11aeb4-948a17b1:~# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:04 ? 00:00:00 bash /init/boot/boot.sh
root 58 48 8 14:04 ? 00:00:03 /root/miniconda3/bin/python /root/miniconda3/bin/jupyter-lab --allow-root
root 60 48 0 14:04 ? 00:00:00 /usr/sbin/sshd -D
root 61 48 10 14:04 ? 00:00:04 /root/miniconda3/bin/python /root/miniconda3/bin/tensorboard --host 0.0.0.0 --port 6006 --logdir /root/tf-logs
root 146 61 0 14:04 ? 00:00:00 /root/miniconda3/lib/python3.8/site-packages/tensorboard_data_server/bin/server --logdir=/root/tf-logs
root 402 338 99 14:05 pts/0 00:00:06 python tensorflow2.x-test.py
从ps的输出结果中根据执行的命令名称找到要杀死的进程,比如最后python tensorflow2.x-test.py
命令执行的进程ID是402,因此可以:
shell
root@container-5e3e11aeb4-948a17b1:~# kill -9 402
root@container-5e3e11aeb4-948a17b1:~#
kill后可以再次使用ps -ef确认进程是否已经结束。
查看进程的CPU和内存占用
命令:top
shell
Tasks: 11 total, 2 running, 9 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 1.3 sy, 0.0 ni, 96.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 52801571+total, 45453059+free, 7807904 used, 65677196 buff/cache
KiB Swap: 2074620 total, 2074620 free, 0 used. 51678192+avail Mem
PID user@host PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2316 root 20 0 21.846g 1.796g 244664 R 101.4 0.4 0:05.56 python
58 root 20 0 372352 84804 15540 S 1.4 0.0 0:05.40 jupyter-lab
59 root 20 0 713796 11288 7668 S 1.4 0.0 0:01.31 proxy
2395 root 20 0 45920 3940 3444 R 1.4 0.0 0:00.01 top
1 root 20 0 25368 3724 3404 S 0.0 0.0 0:00.07 bash
48 root 20 0 55060 24328 9728 S 0.0 0.0 0:00.33 supervisord
60 root 20 0 72304 5872 5140 S 0.0 0.0 0:00.01 sshd
61 root 20 0 9756148 315032 156124 S 0.0 0.1 0:04.16 tensorboard
146 root 20 0 1582996 6964 5296 S 0.0 0.0 0:00.04 server
338 root 20 0 25824 4312 3800 S 0.0 0.0 0:00.18 bash
481 root 20 0 25824 4544 4040 S 0.0 0.0 0:00.18 bash
如果有高负载(CPU使用率高)的情况,那么一般进程都会排在最上边,根据进程名称可以进行确认。那么这个进程占用的CPU可以通过%CPU
字段读取出来,内存更复杂一些,但是一般看RES
字段就够了。比如上边第一个Python进程CPU的占用率是101.4%
,内存使用大小是1.796g
(Tips:如果内存显示的单位和上述不同,按e
键切换)
重定向日志
命令: >
shell
user@host:/tmp# python train.py # 一般情况下日志会输出到stdout/stderr中
Epoch.1 Iter 20
Epoch.1 Iter 40
Epoch.1 Iter 50
...
user@host:/tmp# python train.py > ./train.log 2>&1 # 把stdout/stderr中的日志重定向到train.log文件中,最后的2>&1中,2代表stderr, 1代表stdout,&1可以理解成像c语言中的求地址
user@host:/tmp# cat ./train.log # 将train.log文件中的内容打印在stdout。cat(Concatenate FILE(s) to standard output.)
Epoch.1 Iter 20
Epoch.1 Iter 40
Epoch.1 Iter 50
...
user@host:/tmp$ python train.py > ./train.log 2>&1 & # 如果最后再加一个&的效果是后台运行,还可以参考nohup的配合使用