美文网首页
linux - 常用命令(一直更新)

linux - 常用命令(一直更新)

作者: Miliimoulins | 来源:发表于2017-09-11 15:24 被阅读250次

    修改文件权限:

    sudo chmod 666 xxx     # 将xxx文件/文件夹的权限改为所有人可写可读。
    

    更改当前工作目录:

    su - huangtiantian01      # 改到 [huangtiantian01@xxx]$ 用户目录下
    

    查看磁盘用量

    df -h
    

    软连接

    ln -s /ssd2/data /home/huangtiantian01/  
    # /ssd2/data为需要被链接的源文件目录,/home/huangtiantian01/为创建软链接的目标文件目录
    

    wget

    下载目录下所有文件:

    wget -r -np -nH -R index.html http://url/including/files/you/want/to/download/
    

    解释一下各个参数的含义:

     -r  : 遍历所有子目录
     -np  : 不到上一层子目录去
     -nH  : 不要将文件保存到主机名文件夹
     -R index.html  : 不下载 index.html 文件
    

    scp传文件

    scp -r desUser@privateIp:desPath localFilePath   # 从privateIp下载文件
    scp -r localFilePath desUser@privateIp:desPath   # 传文件到privateIp
    

    1、同一局域网下

    scp -P 22 -r localFilePath desUser@privateIp:desPath
    

    2、不同网络

    scp -P 8888 -r localFilePath desUser@publicIp:desPath
    

    统计文件个数

    ls -l |grep "^-"|wc -l      # 统计某文件夹下文件的个数 
    ls -l | wc -l               # 统计某文件夹下文件的个数
    ls -l | grep "^d"|wc -l     # 统计某文件夹下目录的个数   
    ls -lR | grep "^-"|wc -l      # 统计文件夹下文件的个数,包括子文件夹里的
    

    如统计/home/han目录(包含子目录)下的所有js文件

    ls -lR /home/han|grep js|wc -l    # 或
    ls -l "/home/han"|grep "js"|wc -l   
    grep "^-"    # 这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
    wc -l     # 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。
    

    零碎

    watch -n 0.2 nvidia-smi   #查看GPU使用情况
    uname -a        # 查看系统版本
    nvidia-smi      # 看用了多少内存
    lspci | grep -i vga    # 显示机器上的显卡信息
    lsmod | grep nvidia    # which drivers are loaded.
    ps -eo pid,start,cmd   # 看进程开始时间
    

    find

    find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。

    1、find的使用格式如下:

    $ find <指定目录> <指定条件> <指定动作>
      - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
      - <指定条件>: 所要搜索的文件的特征。
      - <指定动作>: 对搜索结果进行特定的处理。
    如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

    2、find的使用实例:

    搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
      $ find . -name 'my*'
    搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
      $ find . -name 'my*' -ls
    搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。
      $ find . -type f -mmin -10

    locate

    locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

    locate命令的使用实例:

    搜索etc目录下所有以sh开头的文件。
      $ locate /etc/sh
    搜索用户主目录下,所有以m开头的文件。
      $ locate ~/m
    搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
      $ locate -i ~/m

    ps

    ps aux | grep python  # 查看Python进程
    

    Linux下显示系统进程的命令ps,最常用的有ps -efps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD风格。
    ps aux 最初用到Unix Style中,而
    ps -ef 被用在System V Style中,两者输出略有不同。
    现在的大部分Linux系统都是可以同时使用这两种方式的。

    1、ps -ef 是用标准的格式显示进程的、其格式如下

    其中各列的内容意思如下

    UID     //用户ID、但输出的是用户名
    PID     //进程的ID
    PPID    //父进程ID
    C       //进程占用CPU的百分比
    STIME   //进程启动到现在的时间
    TTY     //该进程在那个终端上运行,
            //若与终端无关,则显示? 
            //若为pts/0等,则表示由网络连接主机进程。
    CMD     //命令的名称和参数
    
    2、ps aux 是用BSD的格式来显示、其格式如下

    ps -ef 不同的有列有
    USER      //用户名
    %CPU      //进程占用的CPU百分比
    %MEM      //占用内存的百分比
    VSZ       //该进程使用的虚拟內存量(KB)
    RSS       //该进程占用的固定內存量(KB)(驻留中页的数量)
    STAT      //进程的状态
    START     //该进程被触发启动时间
    TIME      //该进程实际使用CPU运行的时间
    

    其中STAT状态位常见的状态字符有

    D      //无法中断的休眠状态(通常 IO 的进程);
    R      //正在运行可中在队列中可过行的;
    S      //处于休眠状态;
    T      //停止或被追踪;
    W      //进入内存交换 (从内核2.6开始无效);
    X      //死掉的进程 (基本很少见);
    Z      //僵尸进程;
    <      //优先级高的进程
    N      //优先级较低的进程
    L      //有些页被锁进内存;
    s      //进程的领导者(在它之下有子进程);
    l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
    +      //位于后台的进程组;
    

    有关僵尸进程和Z状态进程,见我这篇文章:垃圾进程之 D & Z

    文件内容查阅

    cat      # 由第一行开始显示文件内容
    tac      # 从最后一行开始显示,可以看出 tac 是 cat 的倒著写
    nl       # 显示的时候,顺道输出行号
    more     # 一页一页的显示文件内容  
    less     # 与 more 类似,但是比 more 更好的是,他可以往前翻页
    head     # 只看头几行
    tail     # 只看尾巴几行
    od       # 以二进位的方式读取文件内容
    

    shell

    1、查看shell
    more /etc/shells   # 查看目前我们的Linux有多少可以使用的shells
    

    检查/etc/shells这个档案,至少有底下这几个可以用的 shells:

     /bin/sh (已经被 /bin/bash 所取代)
     /bin/bash (就是 Linux 预设的 shell)
     /bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)
     /bin/tcsh (整合 C Shell ,提供更多的功能)
     /bin/csh (已经被 /bin/tcsh 所取代)
     /bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)
    
    2、切换shell:
    chsh -s /bin/zsh     # 设置zsh为你的默认的shell
    chsh -s /bin/bash    # 如果想切换回来bash,使用该命令即可
    

    du

    du -sh                  # 查看当前目录总共占的容量。而不单独列出各子项占用的容量 
    du -lh --max-depth=1    # 查看当前目录下一级子文件和子目录占用的磁盘容量。
    

    零碎

    sudo apt-get remove cuda 
    # 官网下载tgz,解压出一个cuda文件夹
    sudo dpkg -i ***.deb
    sudo apt-get install cuda-8.0
    

    Use the following commands to uninstall a RPM/Deb installation:

    sudo apt-get --purge remove <package_name>    # Ubuntu
    sudo apt autoremove
    

    install CUDA 8.0 and add these to my .profile file:

    vim ~/.profile      
    
    # 添加这两行:
    export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64"
    export CUDA_HOME=/usr/local/cuda-8.0
    
    # 最后:
    source ~/.profile
    

    nvidia显卡驱动与编译器版本的查询命令

    转自 http://www.linuxdiyf.com/linux/16687.html

    1)首先验证你是否有nvidia的显卡(http://developer.nvidia.com/cuda-gpus这个网站查看你是否有支持gpu的显卡):

    $ lspci | grep -i nvidia 
    

    2)查看你的linux发行版本(主要是看是64位还是32位的):

    $ uname -m && cat /etc/*release
    

    3)看一下gcc的版本:

    $ gcc –version
    

    4)查看NVIDIA显卡的驱动版本

    $cat /proc/driver/nvidia/version
    

    5)查看nvcc编译器的版本

    nvcc -V i
    

    6)/dev/nvidia*这里的文件代表了本机的NVIDIA显卡,如:

    foo@bar-serv2:/dev$ ls -l nvidia*
    crw-rw-rw- 1 root root 195, 0 Oct 24 18:51 nvidia0
    crw-rw-rw- 1 root root 195, 1 Oct 24 18:51 nvidia1
    crw-rw-rw- 1 root root 195, 255 Oct 24 18:50 nvidiactl
    表示本机有两块NVIDIA显卡
    

    7)查看显卡名称以及驱动版本

    nvidia-smi
    nvidia-smi -a
    

    mac 查看、修改文件权限

    1)查看权限

    ls -l  文件夹名/文件名
    

    2)修改文件的权限

    chmod [<权限范围><权限操作><具体权限>] [文件或目录…]
    
    <权限范围> 
    u:User,即文件或目录的拥有者。 
    g:Group,即文件或目录的所属群组。 
    o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。 
    a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
    
    <权限操作> 
    +:表示增加权限 
    - :表示取消权限 
    =:表示唯一设定权限
    
    <具体权限> 
    r:表示可读取 
    w:表示可写入 
    x :表示可执行
    

    如:让其他用户都可以对111.txt文件有写的权限,则执行

    chmod o+w 111.txt
    

    解压、压缩

    .zip

    解压:unzip FileName.zip
    压缩:zip FileName.zip DirName
    

    .rar

    解压:rar x FileName.rar foldername/
    压缩:rar a FileName.rar DirName
    

    MAC下安装rar、unrar: https://blog.csdn.net/apple9005/article/details/55048241

    .tar

    解包:tar xvf FileName.tar
    打包:tar cvf FileName.tar DirName
    (注:tar是打包,不是压缩!)
    

    .gz

    解压1:gunzip FileName.gz
    解压2:gzip -d FileName.gz
    压缩:gzip FileName
    

    .tar.gz 和 .tgz

    解压:tar zxvf FileName.tar.gz
    压缩:tar zcvf FileName.tar.gz DirName
    

    .bz2

    解压1:bzip2 -d FileName.bz2
    解压2:bunzip2 FileName.bz2
    压缩: bzip2 -z FileName
    

    .tar.bz2

    解压:tar jxvf FileName.tar.bz2
    压缩:tar jcvf FileName.tar.bz2 DirName
    

    .bz

    解压1:bzip2 -d FileName.bz
    解压2:bunzip2 FileName.bz
    压缩:未知
    

    .tar.bz

    解压:tar jxvf FileName.tar.bz
    压缩:未知
    

    .Z

    解压:uncompress FileName.Z
    压缩:compress FileName
    

    .tar.Z

    解压:tar Zxvf FileName.tar.Z
    压缩:tar Zcvf FileName.tar.Z DirName
    

    .lha

    解压:lha -e FileName.lha
    压缩:lha -a FileName.lha FileName
    

    .rpm

    解包:rpm2cpio FileName.rpm | cpio -div
    

    .deb

    解包:ar p FileName.deb data.tar.gz | tar zxf -
    

    SCP

    https://www.vpser.net/manage/scp.html

    scp常用的一些参数:

    -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 . 可以用来查看连接,认证,或是配置错误。
    -C 启用压缩选项,
    -r 传递目录下的所有内容
    -P 选择端口 . 注意 -p 已经被 rcp 使用 .   
    -4 强行使用 IPV4 地址 .   
    -6 强行使用 IPV6 地址 . 
    

    scp是安全的文件拷贝,基于ssh的登录。

    假定你想把本地计算机/home下的一个名为a.tar.tz的文件拷贝到远程服务器192.168.0.2上的/home/tmp。而且你在远程服务器 上的帐号名为root。可以用这个命令: 
    scp /home/a.tar.tz root@192.168.0.2:/home/tmp/
    
    如果把文件从远程机器拷贝到本机当前目录用这个命令: 
    scp root@192.168.0.2:/home/a.tar.tz 
    
    拷贝远程机器的整个目录下的文件
    scp -r root@192.168.0.2:/home/* ./
    

    ubuntu下用命令行安装软件

    sudo dpkg -I iptux.deb  # 查看iptux.deb软件包的详细信息,包括软件名称、版本以及大小等(其中-I等价于--info)
    sudo dpkg -c iptux.deb  # 查看iptux.deb软件包中包含的文件结构(其中-c等价于--contents)
    sudo dpkg -i iptux.deb  # 安装iptux.deb软件包(其中-i等价于--install)
    sudo dpkg -l iptux  # 查看iptux软件包的信息(软件名称可通过dpkg -I命令查看,其中-l等价于--list)
    sudo dpkg -L iptux  # 查看iptux软件包安装的所有文件(软件名称可通过dpkg -I命令查看,其中-L等价于--listfiles)
    sudo dpkg -s iptux  # 查看iptux软件包的详细信息(软件名称可通过dpkg -I命令查看,其中-s等价于--status)
    sudo dpkg -r iptux  # 卸载iptux软件包(软件名称可通过dpkg -I命令查看,其中-r等价于--remove)
    

    注:dpkg命令无法自动解决依赖关系。如果安装的deb包存在依赖包,则应避免使用此命令,或者按照依赖关系顺序安装依赖包。

    修改屏幕分辨率

      856  xrandr --output HDMI-1 --mode 3840x2160_60.00
      857  sudo xrandr --newmode "3840x2160_60.00" 712.75  3840 4160 4576 5312  2160 2163 2168 2237 -hsync +vsync
      858  xrandr --output HDMI-1 --mode 3840x2160_60.00
      859  xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/"
      860  sudo xrandr --addmode HDMI-1 3840x2160_60.00
      861  xrandr --output HDMI-1 --mode 3840x2160_60.00
      862  cvt 3840 2160 30
      863  sudo xrandr --newmode "3840x2160_30.00"  338.75  3840 4080 4488 5136  2160 2163 2168 2200 -hsync +vsync
      864  xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/"
      865  sudo xrandr --addmode HDMI-1 3840x2160_60.00
      866  sudo xrandr --addmode HDMI-1 3840x2160_30.00
      867  xrandr --output HDMI-1 --mode 3840x2160_30.00
      868  cvt 3840 2160 25
      869  sudo xrandr --newmode "3840x2160_25.00"  278.75  3840 4064 4464 5088  2160 2163 2168 2194 -hsync +vsync
      870  sudo xrandr --addmode HDMI-1 3840x2160_25.00
      871  xrandr --output HDMI-1 --mode 3840x2160_25.00
    

    重启后出错:

     1050  xrandr --dpi 168
     1054  sudo gedit /etc/lightdm/lightdm.conf.d/lightdm.conf
     1055  sudo xrandr --newmode "3840x2160_25.00"  278.75  3840 4064 4464 5088  2160 2163 2168 2194 -hsync +vsync
     1056  sudo xrandr --addmode HDMI-1 3840x2160_25.00
     1057  xrandr --output HDMI-1 --mode 3840x2160_25.00
    

    相关文章

      网友评论

          本文标题:linux - 常用命令(一直更新)

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