简单快捷使用你的linux
1 开始接触linux
- 当你刚接触到linux系统的时候,接触到神秘的命令行,发现这与平日中接触的图形化界面完全不一样,你懵了。看了这篇文章,可以教会你一些简单的linux常用命令. 方便你的操作.
2 开始linux命令
2.1 打开目录
- 在Windows系统中,我们最常用的就是打开/复制/剪切/删除等命令.
打开命令: cd [
dirName
]
# 跳到 /usr/bin/ :
cd /usr/bin
# 跳到自己的 home 目录 :
>> cd ~
# 返回上层目录 :
>> cd ..
2.2 拷贝文件
- 在项目中,我们常常需要拷贝文件或者数据集到自己的目录下,CP命令是必须要掌握的命令.
拷贝命令 cp [
options
] source… directory
-
常用参数说明:
-f:覆盖已经存在的目标文件而不给出提示。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
# 伪代码
cp –r test/ newtest
# cp 命令使用 -r 参数可以将 packageA 下的所有文件拷贝到packageB 中
cp -r /home/model/* /home/cp/model/
2.3 剪切文件
- 与上近似 一般理解为mv指令
mv [
options
] source… directory
-
常用参数说明:
-f:覆盖已经存在的目标文件而不给出提示。
-n: 不要覆盖任何已存在的文件或目录。
# 目标目录与原目录一致,指定了新文件名,效果就是仅仅重命名。
mv /home/model/a.txt /home/model/b.txt
# 目标目录与原目录不一致,没有指定新文件名,效果就是仅仅移动。
mv /home/model/a.txt /home/model/test/
# 目标目录与原目录一致, 指定了新文件名,效果就是:移动 + 重命名。
mv /home/model/a.txt /home/model/NIN_model/c.txt
2.4 删除文件
rm [
options
] name…
-
常用参数说明:
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
# 无提示删除当前目录下的所有文件及目录
rm -rf 要删除的文件名或目录
# 删除文件名 NIN.py:
rm -rf NIN.py
# 删除目录 model,不管该目录下是否有子目录或文件,都直接删除:
rm -rf model/
3 便捷的使用linux命令
3.1 登陆自动刷新.bashrc
- 在环境配置完毕之后,一般目录下自动会生成该文件,如果缺失该功能,可以手动添加此功能
- 在用户根目录下创建-> usr/.bash_profile 文件
-
打开文件,在文件中写入以下代码.
if test -f .bashrc ; then source .bashrc fi
- 保存文件
3.2 创建自定义命令
-
使用自定义命令可以极大的简化我们的操作.例如如下场景
在每次登陆终端后,我们都需要激活anaconda的虚拟环境,需要输入以下命令
> source activate tensorflow
在自定义命令后,我们可以使用-evtf-来代替上面的命令
-
具体步骤如下
- 在用户根目录下打开-> usr/.bashrc 文件
-
打开文件,在文件中写入以下代码.
alias evtf='source activate tensorflow' alias evpt='source activate pytorch'
- 保存文件
- 由此,我们实现了两大功能,通过输入 ‘evtf’ 命令,就相当于输入了’source activate tensorflow’ 极大的简化我们的输入量.
3.3 后台运行python代码
- 在这一节,我们探讨不同命令联合使用带来1+1>2的效果.
-
(提出需求)
当我们常用pycharm跑代码,但碰到一个问题,如果代码模型很大,需要的时间很久,当网络中断或者关闭电脑,服务器上的代码也停止运行了,如何能够实现代码在服务器上后台自动运行,并且我能够查看代码运行进度? -
(解决方案)
使用nohup/jobs/tail 实现单终端多python后台任务
3.3.1 tail
- tail命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f
filename
- 实例
# 要显示NIN.log 的内容并实时刷新
tail -f NIN.log
# 要显示NIN.log 的内容
tail NIN.log
3.3.2 jobs
-
jobs命令用来显示当前终端中运行的所有任务,包括前台任务和后台任务.当一个任务在运行的时候,我们可以通过
Ctrl+Z
将任务切换到后台,也可以通过
Ctrl+C
强行结束任务. -
常用参数说明:
-l:显示相信的列表信息,包括PID信息.
# 查询当前终端后台运行的进程
jobs
# 查询当前终端后台运行的进程,显示其PID
jobs -l
3.3.3 fg bg
-
fg和bg指令是让当前终端的jobs切换前后台,fg让后台进程切换到前台,bg让前台进程切换到后台,但其用法不同,具体请查阅linux命令指南.
-
常用参数说明:
%n:指定对应jobs号的进程切换前后台
fg %n #让后台运行的进程n到前台来
bg %n #让前台运行的进程n到后台去
# 切换后台进程1到前台
fg %1
# 切换前台进程2到后台
bg %2
3.3.4 nohup
- nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup
Command [ Arg … ] [ & ]
-
参数说明:
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍旧执行。
# 在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件
nohup /root/runoob.sh > runoob.log 2>&1 &
-
2>&1 解释:
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。
0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)
3.3.5 python
- python是用来运行py脚本的命令,其实就相当于调用了编译器,所以要注意虚拟环境的问题,调用合适环境的编译器,不然运行脚本会缺少环境而报错.
- python命令常用参数请自行查询,本文不再列举.
# 在后台执行 NIN_test.py 并将信息重定向到NIN_5.log中
nohup python -u NIN_test.py > NIN_5.log 2>&1 &
3.3.6 实操
- 一次整体操作,展现了如何通过服务器后台运行时间较长的任务.
# 激活TF环境
@ubuntu:~$ evtf
# 激活成功 前面带(tensorflow)
(tensorflow)@ubuntu:~$
# 后台运行py脚本
(tensorflow)@ubuntu:~$ nohup python -u NIN_test.py > NIN_5.log 2>&1 &
# 命令结束没有提示 需要使用jobs确认运行
(tensorflow)@ubuntu:~$ jobs
# 查看到命令正在运行 可以查看log
(tensorflow)@ubuntu:~$ tail -f NIN_5.log
# 确认代码正常运行 可以关闭中断或者切换到后台 开启下一个任务