美文网首页
一些重要的Linux指令

一些重要的Linux指令

作者: oneoverzero | 来源:发表于2019-08-24 11:11 被阅读0次

    一、常用Linux命令:

    1.man命令:查看帮助文档。

    查看ls命令的帮助文档:

    man ls
    

    q可以退出帮助文档。

    2.cd命令:切换工作目录。

    .表示当前所在的目录,..表示上一级目录。

    (1)回到上一级目录:

    cd ..
    

    (2)回到主目录:

    cd ~
    

    cd
    

    3.ls命令:列出目标列表的信息。

    ls是list的缩写。llll -lh的别名,列出的信息更加详细。

    4.pwd命令:显示当前工作目录的绝对路径。

    5.cat命令:显示某一个文件的内容。

    6.headtail命令:显示文件开头、结尾部分的内容(默认显示10行)。

    显示train.py文件前20行的内容:

    head -n 20 train.py
    

    7.find命令:在指定目录下查找文件。

    将当前目录及其子目录下所有后缀名为.py的文件列出来:

    find . -name "*.py"
    

    8.grep命令:筛选命令,将满足筛选条件的item列出来。

    将当前目录下所有后缀名为.py的文件筛选出来:

    ls | grep .py
    

    9.whereis命令:查找包含指定关键字的文件。

    查找所有的文件名包含test的文件路径:

    whereis test
    # 输出
    test: /usr/bin/test /usr/share/man/man1/test.1.gz
    

    10.which命令:查找当前使用的命令的绝对路径。

    查看当前使用的python命令的绝对路径:

    python test2.py
    which python
    # 输出
    /home/oneorzero/anaconda3/bin/python
    

    11.locate命令:寻找包含关键字的所有文件路径。

    当查找到的内容较多时,文本会在屏幕上快速滚动,可以使用Ctrl+S停止滚动,Ctrl+Q恢复滚动,Ctrl+C退出当前命令。

    12.touch命令:创建文件;

    mkdir命令:创建文件夹。

    mkdir dir1 dir2  # 同时创建两个目录
    mkdir -p /tmp/dir1/dir2  # 创建一个目录树
    

    13.rm命令:删除文件。

    rm -r命令:删除文件夹。没有权限时需要使用rm -rf

    rm -r dir1 dir2 # 同时删除两个目录及它们的内容
    

    14.cp命令:复制文件或文件夹。

    (1)将file1中的内容复制到file2中:

    cp file1 file2
    

    注意这个操作其实执行的是替换功能:将file2中的内容全部替换成file1中的内容,因此这一操作会改变file2本身。

    (2)将文件夹folder1复制到folder2中:

    cp -r folder1 folder2
    

    这个操作是将folder1整个都复制到folder2中,相当于一次复制+粘贴操作,并不会替换folder2中的内容。

    (3)cpscp的区别:

    cp是普通的文件复制,scp是通过ssh本机和其他电脑上的复制。例如,

    scp -r folder1 szw@166.111.77.32:/home/data
    

    folder1复制到局域网IP为166.111.77.32的/home/data目录下。

    15.mv命令:移动。

    将original_file移动到target_folder目录下:

    mv original_file target_folder
    

    给文件重命名也是通过mv命令实现的:

    mv oldname newname
    

    16.vim命令:编辑文件。

    使用以下命令也可以编辑文件:

    sudo gedit filename
    

    17.压缩与解压缩命令:

    (1)zipunzip

    压缩文件:

    zip target_file.zip original_file
    

    压缩整个文件夹:

    zip target_folder.zip -r original_folder
    

    解压缩(对文件和文件夹均适用):

    unzip file.zip
    

    (2)tar

    *.tar是打包文件:只是把很多小文件拼接在一起,速度快,不占用CPU。比如ImageNet数据集就是一个打包文件,解包的速度非常快。打包后的文件大小和原始文件夹的大小基本一致。

    *.tar.gz是压缩文件:先打包成一个文件,然后再压缩一遍。如果原始文件是未压缩的格式,比如文本文件,则使用这个格式可以有很高的压缩比。但如果原始文件是压缩后的格式,比如jpg和png格式的文件,只打包就行,如果对ImageNet数据集先打包再压缩,就会有很长的耗时,并且文件不会明显变小。

    打包文件夹:

    tar -cvf folder1.tar folder2
    

    解包:

    tar -xvf folder.tar
    

    注意以上这两个操作并不涉及压缩,下面这两个命令才涉及压缩及解压缩:

    压缩文件夹:

    tar -czvf folder1.tar.gz folder2
    

    解压:

    tar -xzvf folder.tar.gz
    

    其中的字母的含义:

    • c:打包
    • x:解包
    • v:输出详细信息
    • f:指定打包文件
    • z:使用gzip压缩格式

    18.权限管理

    (1)sudo:以root权限执行命令。

    (2)su:切换用户。

    将当前用户切换到szw用户:

    sudo su szw
    

    (3)chmod:修改权限。

    把train文件夹修改为任何人可以读写:

    chmod -R 777 train
    

    rwx分别对应421。

    以d开头代表是目录,-开头代表是文件。

    移除所有人的可执行权限:

    chmod a-x train
    

    (4)chown:修改所有权。

    把test文件夹的所有权修改为szw:

    sudo chown -R szw test
    

    (5)passwd:修改密码。直接执行passwd可以修改当前用户密码。

    强制修改szw用户的密码:

    sudo passwd szw
    

    19.进程管理:

    (1)ps aux:列出所有进程的详细信息。

    使用ps aux获取所有的进程信息,然后用grep python查找带有python的进程,最后使用grep -V grep过滤grep进程本身:

    ps aux | grep python | grep -V grep
    

    (2)kill:杀掉执行中的进程,常配合ps命令使用。

    根据ps命令可以得到进程号,然后可以根据进程号删除该进程。例如:

    kill 8339
    

    (3)killall:通过进程名来杀掉所有跟该进程名有关的进程。

    杀掉所有python进程:

    killall python
    

    20.磁盘管理:

    (1)df:查看磁盘空间。

    查看磁盘的容量及可用空间:

    df -h
    

    如果磁盘下有很多小文件,可以通过以下命令查看文件表是否用完了:

    df -ih
    

    (2)du:显示一个目录及该目录下的所有文件夹的大小。

    如:

    du -h train
    

    (3)mount:挂载磁盘。

    将磁盘nvme挂载到data目录下:

    sudo mount -t ext4 /dev/nvme /data
    

    21.系统管理:

    (1)apt:包管理器,用于安装和卸载软件包。

    # 安装
    sudo apt install curl
    
    # 卸载
    sudo apt purge curl
    

    (2)export:设置环境变量,一般写在.bashrc.zshrc文件中。

    export PATH=/usr/local/cuda/bin:$PATH
    

    的作用是把/usr/local/cuda/bin目录添加到PATH最前面,这样就可以直接在命令行使用/usr/local/cuda/bin目录下的nvcc命令。

    (3)source:更新环境变量。

    如szw用户更新了~/.zshrc后,可以使用如下命令更新环境变量:

    source ~/.zshrc
    

    (4)echo:输出环境变量。如:

    echo $PATH
    

    (5)service:开启或关闭服务。如:

    sudo service network-manager restart
    

    (6)reboot:重启。如:

    sudo reboot
    

    22.系统监测:

    (1)uname:显示当前的系统信息。

    显示全部的信息(如内核版本号、硬件架构、主机名称和操作系统类型等):

    uname -a
    

    (2)top:实时查看系统的运行状态(如CPU、内存、进程的信息)。

    (3)ifconfig:查看当前网卡的ip地址。如:

    ifconfig | grep inet
    

    (4)free:查看内存使用情况。如:

    free -h
    

    23.网络通信:

    (1)ping:测试主机网络的连通性。如:

    ping baidu.com
    

    (2)ssh

    • 连接远程服务器:

      ssh szw@166.111.77.32
      
    • 映射远程端口:

      ssh -L 本地端口:本地服务器:远程端口 远程服务器
      

      如:把服务器上的 Jupyter 监听的8888端口映射到本地的8888端口,然后只需要在浏览器里输入http://localhost:8888,就可以连接远程服务器的Jupyter了。

    (3)wget:从指定的URL下载文件。

    • 下载单个文件:

      wget url
      
    • 下载并修改文件名:

      wget -O filename.zip url
      

    (4)scp:远程复制文件。

    复制文件/文件夹到远程服务器:

    scp 文件 用户名@目标主机:目标主机上的路径
    

    24..sh文件的运行方法:

    bash xxx.sh
    

    二、基于深度学习的Linux与Shell指令汇总

    # 查看自己主机的IP地址
    ifconfig 或 ip addr
    # windows下查看自己的ip地址
    ipconfig
    
    # 查看自己Ubuntu系统的用户名
    whoami
    
    # 修改配置文件
    vi ~/.bash_profile 
    # 使配置文件生效:
    source ~/.bash_profile
    # 配置环境变量
    sudo gedit ~/.bashrc
    
    # 显示当前GPU使用情况
    nvidia-smi
    
    # 显示当前路径下各文件大小并排序
    du -sk * | sort -rn
    
    # 登录服务器
    ssh -p 8005 szw@166.111.77.32
    # 登出服务器
    Ctrl + d
    
    # 从本机向服务器传文件
    scp -P 8005 filename szw@166.111.77.32:~
    # 从本机向服务器传一个文件夹
    scp -P 8005 -r filename szw@166.111.77.32:~
    # 从服务器5向服务器1传文件夹
    scp -r filename root@192.168.233.68:~/train
    
    # 从服务器上下载文件夹(下载文件时去掉-r)
    scp -r username@servername:/home/train /home/linjunjie/remote_dir/
    
    # 查找Linux历史命令中包含***的命令
    history | grep ***
    # 每个历史命令前面都对应了一个编号,使用以下命令可以执行编号对应的命令:
    !命令编号
    
    # 更改shell脚本的权限
    chmod +x run.sh
    # 递归地为.vim/文件及其目录下的所有子文件增加执行权限
    chmod +x -R .vim/   # -R表示recursively
    
    # 统计一个文件的行数、字数、字节数
    wc file1 file2 file3  # 也可以同时统计多个文件的信息
    
    # 查看当前文件夹及其子文件夹下有多少个.py文件
    find . -name "*.py" | wc -l # 管道的作用相当于传递结果,wc -l可以统计行数
    
    # 查看自己的Ubuntu版本号
    cat /etc/issue
    

    Tmux

    Tmux是一个用于在终端窗口中运行多个终端会话的工具。

    使用Tmux最大的益处在于,远程SSH访问服务器进行工作时,即使非正常掉线,它也能保存当前工作状态,并保证当前任务继续运行。当使用远程SSH工作时,Tmux的多会话、多窗口、多面板的收益才充分体现了出来。使用Tmux就不必开启多个标签连接多个ssh了,所有的工作一个ssh连接上就可以了。

    # server -> session -> window -> panel
    
    # 安装
    sudo apt-get install tmux
    
    # 使用
    tmux
    
    # 默认Ctrl + b = prefix,以下通过修改配置文件将prefix改成Ctrl + x
    ####################################################################
    #######################      修改配置文件     ########################
    ####################################################################
    # tmux的配置文件是 ~/.tmux.conf,首次修改时这个文件是不存在的,需要自己创建
    # 在配置文件中添加以下内容:
    # 设置前缀prefix = Ctrl + x
    set -g prefix C-x
    # 解除Ctrl + b与前缀的对应关系
    unbind C-b
    
    # 将r设置为加载配置文件,并显示"Reloaded successfully!"信息
    bind r source-file ~/.tmux.conf \; display "Reloaded successfully!"
    
    # 配置完以后,在tmux环境下,执行原来的prefix + r即可加载配置文件
    
    
    
    ####################################################################
    #######################      session操作     ########################
    ####################################################################
    # 创建新会话:
    tmux new -s session_name   # 这是在shell终端创建一个新会话
    prefix + :new-session      # 在tmux环境中创建一个新会话
    
    # 杀死会话
    tmux kill-session -t sess
    # 杀死所有会话
    tmux kill-server
    
    # 保存并退出会话,返回shell界面(此时tmux仍在后台运行)
    prefix + d
    
    # 在shell终端中查看当前所有正在运行的tmux会话
    tmux ls
    # 在tmux中查看所有正在运行的会话(可快速切换会话)
    prefix + s # 与prefix + w相比,prefix + s只会列出所有的会话,不包含窗口
    
    # 通过sess重新连接到对应的会话
    tmux attach -t sess
    tmux a -t sess
    
    # 为第<number>号的session赋予一个新的名字
    tmux rename-session -t <number> new_name
    
    ####################################################################
    #######################      window操作     ########################
    ####################################################################
    # 创建新窗口
    prefix + c
    # 关闭窗口
    prefix + &  # 会弹出一个对话框询问是否确认关闭
    
    # 列出所有session下的所有窗口(以方便快速在窗口之间进行切换)
    prefix + w # 与prefix + s相比,prefix + w会列出所有的会话及每一个会话对应的所有窗口
    
    # 切换至下一个窗口
    prefix + n            # n = next
    # 切换至上一个窗口
    prefix + p            # p = previous
    # 切换到最后使用的窗口
    prefix + l            # l = last
    
    # 在所有会话中查找指定文本
    prefix + f     # 会返回一个查找结果,告诉我们文本在哪个会话的哪个窗口及哪个panel下
    
    # 重命名当前窗口
    prefix + ,
    # 为当前窗口重新编号
    prefix + .     # 相当于重新调整这个窗口的排列顺序
    
    ####################################################################
    #######################       panel操作      ########################
    ####################################################################
    # 将当前面板平分为上下两块
    prefix + "
    # 将当前面板平分为左右两块
    prefix + %   # 这两个平分操作等价于创建新的panel
    
    # 关闭当前面板
    prefix + x   # 会弹出是否确认关闭的对话框
    Ctrl + d     # 不弹出对话框直接关闭当前panel(注意不需要配合prefix)
    
    # 在不同的面板之间切换
    prefix + 方向键
    
    # 将当前面板置于新窗口
    prefix + !   # 等价于创建一个新窗口,该窗口仅包含当前面板
    
    # 调整panel的大小
    # 将一个panel放大到全窗口/缩小至原panel大小
    prefix + z
    # 以一个单元格为单位调整当前面板大小
    prefix + Ctrl + 方向键      # 该组合键每按下一次只能调整一个单元格的距离
    # 以五个单元格为单位调整当前面板大小
    prefix + Alt + 方向键       # 该组合键每按下一次只能调整五个单元格的距离
    # 编号为num的窗格向左扩大20格
    Prefix + :resize-pane -t num -L 20 # 其他方向分别为U、D、R
    
    # 面板位置调整
    prefix + {        # 向前置换当前面板
    prefix + }        # 向后置换当前面板
    
    # 显示面板编号
    prefix + q
    
    # 复制模式copy-mode
    为了能够成功使用复制模式,首先要在配置文件中添加以下内容:
    set -g mode-keys vi   # copy-mode将快捷键设置为vi模式
    # 进入复制模式
    prefix + [
    # 按space开始复制,移动光标选择复制区域;按Enter复制并退出copy-mode
    # 将光标移动到指定位置,执行以下操作进行粘贴:
    prefix + ]
    # 退出复制模式:直接按q键
    

    错误进入Ctrl + Alt + F3界面后如何返回:

    Ctrl + Alt +F1可以返回到图形界面的锁屏状态,然后重新登录即可。

    终端操作:

    # 关闭终端
    exit
    
    # 进入/退出终端全屏
    F11
    

    以上内容主要参考:

    使用Anaconda创建虚拟环境

    # 修改anaconda下载源(通过命令操作就可以)
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --set show_channel_urls yes
    # 通过以上这两步操作,系统会自动生成一个Anaconda的配置文件:
    ~/.condarc
    # 如果要删除旧的镜像源,可以通过以下命令来实现:
    conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    
    # 修改pip的下载源
    # 需要修改~/.pip/pip.conf文件(如果没有,则需要创建)
    mkdir ~/.pip
    vim ~/.pip/pip.conf
    # 然后在pip.conf配置文件中添加以下内容:
    [global]
    index-url=https://pypi.tuna.tsinghua.edu.cn/simple
    [install]
    trusted-host=pypi.tuna.tsinghua.edu.cn
    disable-pip-version-check=true
    timeout=6000
    
    # Windows端创建Anaconda环境要通过Anaconda Prompt进入命令行
    
    # 检查conda是否安装以及查看当前conda的版本
    conda --version
    
    # 查看当前存在哪些虚拟环境
    conda info -e
    conda env list  # 这两个哪个都可以,效果一样
    
    # 创建一个名为name的虚拟环境并指定python版本
    # 这个虚拟环境对应的文件可以在Anaconda安装目录envs文件下找到
    conda create -n name pip python=X.X   
    
    # 查看当前环境下的python版本
    python --version
    
    # 激活创建的虚拟环境(这一操作可以将python的版本改变)
    # 针对Linux
    source activate name  # 激活后,终端将自动切换到新创建的虚拟环境下
    conda activate name   # 针对conda4(我们的conda版本是4,所以要用这一条命令)
    # 针对Windows
    activate name        
    # 激活后,可以再次使用python --version来检查python版本是否为想要的
    
    # 退出环境
    source deactivate
    conda deactivate # 针对conda4
    
    # 删除环境
    conda remove -n name --all
    
    # 安装第三方包
    conda install package
    pip install package
    # 卸载第三方包
    conda remove package
    pip uninstall package
    # 更新package包
    conda update package
    
    # 查看当前环境中已安装的包
    conda list
    
    # 查看cuda和cudnn版本
    nvcc --version
    
    # 导出当前环境的包信息
    conda env export > environment.yaml
    # 用配置文件创建新的虚拟环境
    conda env create -f environment.yaml
    
    # 复制某个环境
    conda create -n env2 --clone env1
    

    其他问题:

    • Ubuntu下搜狗输入法用Shift切换中英文输入的问题:已解决。

    • 解决由于错误安装nvidia显卡驱动导致无法开机的问题(屏幕上全是命令行,左边一串OK):

      参考:https://blog.csdn.net/qq_29573053/article/details/79044395

      https://blog.csdn.net/moshiyaofei/article/details/82286417

      重启,在系统选择界面中选择“Ubuntu高级选项”,然后进入高级选项中的ROOT模式,输入以下命令卸载nvidia显卡驱动:

      sudo apt-get remove nvidia-*
      sudo apt-get autoremove
      

      卸载完成后重启:

      sudo reboot
      

      然后选择正常进入Ubuntu系统即可。

    相关文章

      网友评论

          本文标题:一些重要的Linux指令

          本文链接:https://www.haomeiwen.com/subject/zubfectx.html