服务器细碎知识点记录

文章目录

  • 服务器代码完成后自动关机
  • Linux基础
    • 重定向日志
    • 设置环境变量
    • 删除文件
    • 列出文件、文件夹
    • 新建/切换路径
    • 场景

服务器代码完成后自动关机

a) 终端运行方式

# 假设程序原执行命令为
python train.py

# 那么可以在您的程序后跟上shutdown命令
python train.py; shutdown    # 用;拼接意味着前边的指令不管执行成功与否,都会执行shutdown命令
python train.py && shutdown  # 用&&拼接表示前边的命令执行成功后才会执行shutdown。请根据自己的需要选择

b) python代码中执行shutdown指令

import os

if __name__ == "__main__":
    # xxxxxx
    os.system("shutdown")

Linux基础

查看GPU信息

# 查看一次当前GPU信息
命令:nvidia-smi
# 如果需要不停的输出GPU占用信息,
那么使用:
nvidia-smi -l 1    #每隔1秒输出一次,
或使用
watch -n 1 nvidia-smi  #也是同样的效果

重定向日志

命令: >

user@seeta:/tmp$ python train.py    # 一般情况下日志会输出到stdout/stderr中
Epoch.1 Iter 20
Epoch.1 Iter 40
Epoch.1 Iter 50
...

user@seeta:/tmp$ python train.py > ./train.log 2>&1  # 把stdout/stderr中的日志重定向到train.log文件中,最后的2>&1中,2代表stderr, 1代表stdout,&1可以理解成像c语言中的求地址

user@seeta:/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@seeta:/tmp$ python train.py > ./train.log 2>&1 &   # 如果最后再加一个&的效果是后台运行,还可以参考nohup的配合使用

设置环境变量

命令: export

以常见的两个环境变量: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 生效或新打开终端

删除文件

命令:rm (remove)
参数: -rf (-r代表递归, -f代表强制)

user@seeta:/tmp/test_directory$ ls
a.txt  folder
user@seeta:/tmp/test_directory$ rm -rf folder   
user@seeta:/tmp/test_directory$ rm -rf folder/*   # *是通配符号,这样代表folder文件夹下所有文件/文件夹```

列出文件、文件夹

命令:ls(list)

user@seeta:/tmp/test_dir$ ls    # 列出当前目录下的文件和文件夹
a.txt  b
user@seeta:/tmp/test_dir$ ls -l  # 列出文件和文件夹的详细信息:权限,Owner,Group和创建/更新时间
total 4
-rw-rw-r-- 1 root root    0 119 10:50 a.txt
drwxrwxr-x 2 root root 4096 119 10:50 b

新建/切换路径

新建命令: mkdir (make directory)
切换命令: cd (change working directory)

user@seeta:/tmp$ mkdir test_dir   # 新建一个叫test_dir的路径
user@seeta:/tmp$ cd test_dir/     # 进入 test_dir 路径
user@seeta:/tmp/test_dir$

场景

场景1
场景:发现程序停止了,但是显存还在占用

一般这种情况是进程假死,看上去停止了但是实际还在。可以通过ps -ef查看进程是否还存在,如果存在则用kill命令杀死进程,最后用nvidia-smi检查显存是否已经释放。

场景2
场景:想把实例中的模型/数据保存在网盘中一份,方便其他实例使用

user@seeta:~$ pwd
/root/
user@seeta:~$ ls
train.py  autodl-tmp  autodl-nas
user@seeta:~$ cp -r train.py autodl-nas/   # 把 train.py 文件存入网盘中

场景3
场景:发现进程内存会使用超过限制,导致进程被Killed

可以使用Top命令查看进程的占用内存情况,确认内存是不是会停留在一个值而不会一直增长,如果一直增长说明程序对内存的释放有漏洞,可以分析Python代码变量的引用来进行优化。

场景4
场景:使用JupyerLab的终端挂守护进程跑训练,担心关闭网页期间的日志看不到了

可以使用重定向日志功能,把日志写入文件

你可能感兴趣的:(笔记,服务器,人工智能)