(预)简单快捷使用你的linux

  • Post author:
  • Post category:linux




简单快捷使用你的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

  • 在环境配置完毕之后,一般目录下自动会生成该文件,如果缺失该功能,可以手动添加此功能
  1. 在用户根目录下创建-> usr/.bash_profile 文件
  2. 打开文件,在文件中写入以下代码.

    if test -f .bashrc ; then 
    source .bashrc
    fi
    
  3. 保存文件



3.2 创建自定义命令

  • 使用自定义命令可以极大的简化我们的操作.例如如下场景

    在每次登陆终端后,我们都需要激活anaconda的虚拟环境,需要输入以下命令

    > source activate tensorflow
    

    在自定义命令后,我们可以使用-evtf-来代替上面的命令

  • 具体步骤如下

  1. 在用户根目录下打开-> usr/.bashrc 文件
  2. 打开文件,在文件中写入以下代码.

    alias evtf='source activate tensorflow'
    alias evpt='source activate pytorch'
    
  3. 保存文件
  • 由此,我们实现了两大功能,通过输入 ‘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

# 确认代码正常运行 可以关闭中断或者切换到后台 开启下一个任务



版权声明:本文为qq_36142248原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。