Fork me on GitHub

机器学习、深度学习中常用的Linux命令

前言

作为一名coder,Linux命令是基本生存技能,但Linux的命令何其多,要想完全掌握可不易。。。在我平常的学习和工作中,Linux服务器主要是用来跑ML、DL代码的(Linux运维大神请略过)。因此本文将主要从跑代码的角度浅谈一下常用的Linux操作。

基本操作

1、常用快捷键

1
2
3
4
5
// 告别手指抽筋的方向键
ctrl + e // 光标回到行末
ctrl + k // 删除光标处到行尾的字符
ctrl + u // 删除命令行的整段命令
ctrl + y // 恢复上一次删除内容
1
2
3
4
5
6
// vim快捷键(命令行模式下使用)
gg: 将光标移动到文档开头
G: 将光标移动到文档末尾
$: 将光标移动到本行尾
0: 将光标移动到本行行首
ndd: 删除n行(如10+dd)

2、文件夹操作

1
2
3
4
5
pwd //显示当前路径
ls //显示当前目录的内容
ll //详细显示内容
du -sh * //显示当前文件夹下所有内容的大小
tar -xzvf //解压命令

说明

3、复制、移动、重命名、删除

1
2
3
4
5
cp source destination //将目标赋值到目的地
mv source desination //将目标移动到目的地
mv file1 file2 //将file1重名为file2
rm //删除文件,慎用rm -f
rm -r //删除文件夹

4、查询、检索、统计

1
2
find . -name "*.py" | wc -l //查看当前文件夹(包含子文件夹)下共有多少个py文件
grep -o root a.txt | wc -l // 统计文件a.txt中root这个词出现的次数

5、shell脚本、txt文件等的操作

1
2
3
4
chmod +x run.sh //更改shell脚本的权限
./run.sh //运行shell脚本,也可用 sh run.sh
cat test.txt //查看test.txt文件
wc -l test.txt //显示test.txt文件有多少行

进阶操作

1、如何让代码在后台运行

由于实验室的网络有时候不稳定,会导致跑了好几个小时的代码在快要出结果的时候断网了,导致与服务器的连接中断,从而代码也就停止运行了,这点着实让人很苦恼。同时,如果在跑代码的时候还想进行其它Linux操作,也可以考虑把代码放到服务器后台运行。这里主要有两种方法实现代码的后台运行。

第一种

1
nohup python model.py >log.txt 2>&1 &    //将代码后台挂起运行,并将结果输出到log.txt中,2>&1表示若有错误也将一同输出到log.txt中

第二种
如果我想实时的观察到代码的运行状态,并不想最终运行完以后才能在日志文件中看。这时可以用screen这个命令。
可以简单的认为用这个命令你可以为不同的任务开不同的窗口,这个窗口之间是可以切换的,同时,窗口和你的会话连接基本上没有任何区别,这样你可以在开一个连接的时候同时干多件事情,并且在终端看得到运行过程的同时而不会由于断网而导致代码停止运行。常用命令如下:

1
screen -S train_cnn //创建一个新窗口并命名为train_cnn

当你执行完上述命令后,就会自动跳入名为train_cnn的窗口中,在这个窗口里你可以开始跑代码。
然后通过快捷键ctrl + a + d 断开这个窗口的连接而回到会话界面,注意这里只是断开了窗口并未终止任务的运行。

可以通过上述命令开启多个窗口。可通过以下命令查看所有的窗口,并连接到其中一个窗口

1
2
screen -ls //显示所有窗口
screen -r train_cnn //返回到train_cnn窗口下

如果要断开某个窗口,可直接使用快捷键 ctrl + d 退出即可。

总结一下,screen可以实现代码在后台运行时的可视化,同时,能在开一个会话连接时创建多个窗口处理不同的任务。用起来也很方便。

2、服务器上jupyter notebook的使用

在服务器上jupyter notebook也是经常需要使用到的。服务器下配置jupyter(已安装anaconda)可以参考这篇文章

如果您觉得这篇文章对您有帮助,就支持我一下咯,感谢!