Linux(centos)常用命令

很长一段时间打比赛用到了服务器,但对于服务器命令没有做一个汇总,导致每次都需要重新百度才知道,现在做个简单汇总,持续更新。

一些基本操作

进入目录

cd

查看当前目录的所有文件

ls

删除,使用rm -rf命令一定需要谨慎,确定自己是真的不需要这个文件了,而且执行前检查命令是否正确,一不小心可能就把所有文件都删了,之前有个梗就是程序员一键删除跑路(逃),删除一时爽,复原火葬场。

rm -rf file1

下载github的代码(程序员必备)(cv<ctrl-c,ctrl-v>工程师)

git clone https://github.com/xxx.git

ssh 进入其他节点,像本人所用的服务器,所有的GPU资源需要访问不同的节点,之前为了用MPI分布式执行,设置了所有节点都免密登录,我记得当时弄了很久,好像需要弄密钥啥的,具体也忘了。

ssh 节点名字

scp远程拷贝文件及文件夹

以前一直使用的是第三方软件来下载文件,例如MobaXterm,VScode等,但存在一个问题,对于小文件来说可能下载很快,但大文件的话就很难受了。
其中file1指的是远程服务器的文件,而file2则是本地服务器的文件,可以将远程服务器文件拷贝到本地。

scp -r name@ip:file1 file2

同样的,上传文件到远程服务器则和下载相反

scp -r file2 name@ip:file1

压缩解压文件

上传和下载文件,是通过FTP服务进行的,用压缩包是最快的,如果直接拷贝整个文件夹的话,所需要处理的时间会很长,因为这样的话,文件夹每一个文件都是一个数据报,而对于压缩包则由服务自动分片(个人理解)

zip -r xxx.zip ./*
unzip filename.zip

还有个最常用的

tar -zcvf xxxx.tar.gz ./*

监测CPU

top

监测GPU

这个是最常用到的

nvidia-smi

不过,我习惯持续地监测GPU,以便知道模型是否还在运行

watch -n 0.1 nvidia-smi

其中,watch命令也可以用于其他命令,每隔一段时间进行执行和刷新。

Screen后台窗口执行命令

在不知道这个命令之前,还傻乎乎地生怕本地和远程服务器断开连接而不敢关电脑。有了这个Screen命令后,极大地释放了电脑~
(Screen命令有个小小的缺陷,当用Screen窗口时,所有的↑↓←→按键和鼠标上滑下滑都失效了,类似于汇编语言,转换成了相应的Ascii值。)

screen 创建新窗口
screen -S name 和上面一样,同时取名,方便管理
输入你想要的运行的内容
ctrl-a d 先按ctrl+a,再按d,dettach,此时你可以关闭连接了,做自己想做的事情去。
screen -ls 查看当前有哪些会话,并显示id
screen -r id 恢复会话~~~~
screen -S id -X quit 删除会话

nohup

还有个后台执行命令nohup,这个和screen不同的是,无法显示执行窗口,而直接在后台执行该程序,把输出信息都输出到log文件中,例如在训练模型时,可以使用这个,如果要停止的话只能用kill。

nohup python -u test.py > test.log 2>&1 &

查看进程

ps命令很常用,可以加一些参数查看更多的信息,个人比较常用的是ps -aux,可以查看所有进程

ps
ps -aux

因为有时候非法关闭远程连接会导致某些进程没有正常结束,一直卡在CPU里面,一般个人是和kill命令配套
其中,pid则是进程号

kill -9 pid

当然,kill的时候也需要注意,别把自己训练到一半的程序给kill了,因为-9参数表示直接强制停止该命令(之前本人就弄过一次qwq)

apex安装

由于训练模型的需要,安装apex。

git clone https://github.com/NVIDIA/apex.git
cd apex
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . 

其中,遇到一个坑,在pip安装时,没有在GPU节点上进行,导致安装失败,因此需要先登录到GPU资源中再进行pip安装!

猜你喜欢

转载自blog.csdn.net/Geek_/article/details/113066660