Linux实用指令记录

du

  • Linux du(英文全拼:disk usage)命令用于显示目录或文件的大小。du 会显示指定的目录或文件所占用的磁盘空间。
  • 用例:当前路径/home/hzf/Voice/wespeaker-master
    $ du -h -d 1
    371G    ./examples
    52K     ./tools
    280K    ./runtime
    444K    ./wespeaker
    12K     ./docs
    195M    ./data
    12K     ./.github
    371G    .
    
  • 参数解释:-h人类可读,-d递归深度

watch

  • Linux中的watch命令提供了一种方式处理重复的任务。默认watch会每2秒重复执行命令。watch是一个很好的观察log的工具。
  • 用例:查看GPU占用
    $ watch -n 1 -d nvidia-smi
    Every 1.0s: nvidia-smi
    
    Fri Feb 10 20:29:56 2023
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 460.80       Driver Version: 460.80       CUDA Version: 11.2     |
    |-------------------------------+----------------------+----------------------+
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
    |                               |                      |               MIG M. |
    |===============================+======================+======================|
    |   0  GeForce GTX 108...  Off  | 00000000:02:00.0 Off |                  N/A |
    | 37%   53C    P0    63W / 250W |      0MiB / 11178MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    |   1  GeForce GTX 108...  Off  | 00000000:03:00.0 Off |                  N/A |
    | 41%   55C    P0    65W / 250W |      0MiB / 11178MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    |   2  GeForce GTX 108...  Off  | 00000000:82:00.0 Off |                  N/A |
    | 40%   53C    P0    60W / 250W |      0MiB / 11178MiB |      0%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    |   3  GeForce GTX 108...  Off  | 00000000:83:00.0 Off |                  N/A |
    | 37%   52C    P0    58W / 250W |      0MiB / 11178MiB |      3%      Default |
    |                               |                      |                  N/A |
    +-------------------------------+----------------------+----------------------+
    
    +-----------------------------------------------------------------------------+
    | Processes:                                                                  |
    |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
    |        ID   ID                                                   Usage      |
    |=============================================================================|
    |  No running processes found                                                 |
    +-----------------------------------------------------------------------------+
    
  • 参数解释:-n在更新之间等待的秒数,-d突出显示更新之间的更改

ps、grep、awk、xargs、kill

  • Linux ps(英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
  • Linux grep 命令用于查找文件里符合条件的字符串。
  • awk 是一种处理文本文件的语言,是一个强大的文本分析工具。
  • xargs(英文全拼:extended arguments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
  • Linux kill 命令用于删除执行中的程序或工作。
  • 用例:列出所有进程的详细信息,查找名称带有指定字符串的进程,过滤掉grep进程,提取出pid,传递给kill,从而批量杀死进程。
    # 查找名称带有python的进程,过滤掉grep进程
    $ ps -ef | grep python | grep -v grep
    root      1485     1  0  2022 ?        00:00:09 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
    root      1768     1  0  2022 ?        00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
    root      3125  3060  0  2022 ?        00:00:00 /usr/bin/python3 -u /sbin/my_init
    ......
    
    # 查找名称带有python的进程,过滤掉grep进程,提取出pid
    $ ps -ef | grep python | grep -v grep | awk '{print $2}'
    1485
    1768
    3125
    ......
    
    # 查找名称带有python的进程,过滤掉grep进程,提取出pid,传递给kill
    # 请视自己的情况来执行
    $ ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill
    # 批量杀死进程后,再执行一遍会显示kill的帮助信息,因为没有参数传递给kill
    $ ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill
    Usage:
     kill [options] <pid> [...]
    
    Options:
     <pid> [...]            send signal to every <pid> listed
     -<signal>, -s, --signal <signal>
                            specify the <signal> to be sent
     -l, --list=[<signal>]  list all signal names, or convert one to a name
     -L, --table            list all signal names in a nice table
    
     -h, --help     display this help and exit
     -V, --version  output version information and exit
    
    For more details see kill(1).
    

lsblk

  • Linux中的lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。块设备有硬盘,闪存盘,CD-ROM等等。
  • 用例:查看哪些硬盘是固态硬盘。
    $ lsblk -o NAME,MOUNTPOINT,SIZE,ROTA
    NAME   MOUNTPOINT                       SIZE ROTA
    loop1  /snap/core18/2679               55.6M    1
    loop2  /snap/gnome-characters/781       476K    1
    loop3  /snap/core20/1822               63.3M    1
    loop4  /snap/gnome-3-28-1804/161      164.8M    1
    loop5  /snap/gnome-system-monitor/181   1.5M    1
    loop6  /snap/gnome-calculator/884       2.5M    1
    loop7  /snap/gnome-characters/741       704K    1
    loop8  /snap/core18/2667               55.6M    1
    loop9  /snap/gnome-3-26-1604/102      140.7M    1
    loop10 /snap/gnome-system-monitor/178   2.6M    1
    loop11 /snap/core20/1778               63.3M    1
    loop12 /snap/gnome-42-2204/56         452.4M    1
    loop13 /snap/core/14447               116.7M    1
    loop14 /snap/bare/5                       4K    1
    loop15 /snap/gnome-42-2204/44         446.3M    1
    loop16 /snap/gnome-3-28-1804/145      162.9M    1
    loop17 /snap/gnome-calculator/920       2.6M    1
    loop18 /snap/gtk-common-themes/1535    91.7M    1
    loop19 /snap/gnome-3-26-1604/104      140.7M    1
    loop20 /snap/gnome-3-38-2004/115      346.3M    1
    loop21 /snap/gnome-3-34-1804/77         219M    1
    loop22 /snap/gnome-logs/112             556K    1
    loop23 /snap/gnome-3-38-2004/119      346.3M    1
    loop24 /snap/gtk-common-themes/1534    81.3M    1
    loop25 /snap/gnome-logs/115             696K    1
    loop26 /snap/core/14399               116.7M    1
    loop27 /snap/gnome-3-34-1804/72         219M    1
    loop28 /snap/core22/504                72.9M    1
    loop29 /snap/core22/484                72.9M    1
    sda                                   232.9G    0
    ├─sda1 /boot                            285M    0
    └─sda2 /                              232.6G    0
    sdb                                     9.1T    1
    └─sdb1 /home                            9.1T    1
    sdc    /media/new_disk                  9.1T    1
    
  • 参数解释:-o指定要显示哪些信息,NAME设备名,MOUNTPOINT挂载点,SIZE总大小,ROTA是否为旋转设备0表示机械硬盘,1表示固态硬盘

df

  • Linux df(英文全拼:disk free)命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
  • 用例:配合lsblk,查看硬盘的占用大小
    $ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    udev             32G     0   32G   0% /dev
    tmpfs           6.3G   13M  6.3G   1% /run
    /dev/sda2       228G  112G  105G  52% /
    tmpfs            32G  1.5M   32G   1% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs            32G     0   32G   0% /sys/fs/cgroup
    /dev/loop2      512K  512K     0 100% /snap/gnome-characters/781
    /dev/loop6      2.5M  2.5M     0 100% /snap/gnome-calculator/884
    /dev/loop7      768K  768K     0 100% /snap/gnome-characters/741
    /dev/loop4      165M  165M     0 100% /snap/gnome-3-28-1804/161
    /dev/loop5      1.5M  1.5M     0 100% /snap/gnome-system-monitor/181
    /dev/loop9      141M  141M     0 100% /snap/gnome-3-26-1604/102
    /dev/loop14     128K  128K     0 100% /snap/bare/5
    /dev/loop15     447M  447M     0 100% /snap/gnome-42-2204/44
    /dev/loop16     163M  163M     0 100% /snap/gnome-3-28-1804/145
    /dev/loop18      92M   92M     0 100% /snap/gtk-common-themes/1535
    /dev/loop10     2.7M  2.7M     0 100% /snap/gnome-system-monitor/178
    /dev/loop17     2.7M  2.7M     0 100% /snap/gnome-calculator/920
    /dev/loop19     141M  141M     0 100% /snap/gnome-3-26-1604/104
    /dev/loop21     219M  219M     0 100% /snap/gnome-3-34-1804/77
    /dev/loop20     347M  347M     0 100% /snap/gnome-3-38-2004/115
    /dev/loop22     640K  640K     0 100% /snap/gnome-logs/112
    /dev/loop23     347M  347M     0 100% /snap/gnome-3-38-2004/119
    /dev/loop24      82M   82M     0 100% /snap/gtk-common-themes/1534
    /dev/loop25     768K  768K     0 100% /snap/gnome-logs/115
    /dev/loop26     117M  117M     0 100% /snap/core/14399
    /dev/loop27     219M  219M     0 100% /snap/gnome-3-34-1804/72
    /dev/sdc        9.1T  8.4T  217G  98% /media/new_disk
    /dev/sda1       266M  113M  136M  46% /boot
    /dev/sdb1       9.1T  6.8T  1.9T  79% /home
    tmpfs           6.3G   32K  6.3G   1% /run/user/123
    tmpfs           6.3G     0  6.3G   0% /run/user/1007
    /dev/loop8       56M   56M     0 100% /snap/core18/2667
    tmpfs           6.3G  8.0K  6.3G   1% /run/user/1032
    /dev/loop11      64M   64M     0 100% /snap/core20/1778
    tmpfs           6.3G     0  6.3G   0% /run/user/1036
    tmpfs           6.3G     0  6.3G   0% /run/user/1023
    /dev/loop13     117M  117M     0 100% /snap/core/14447
    /dev/loop29      73M   73M     0 100% /snap/core22/484
    /dev/loop12     453M  453M     0 100% /snap/gnome-42-2204/56
    /dev/loop1       56M   56M     0 100% /snap/core18/2679
    /dev/loop28      73M   73M     0 100% /snap/core22/504
    tmpfs           6.3G     0  6.3G   0% /run/user/1021
    /dev/loop3       64M   64M     0 100% /snap/core20/1822
    tmpfs           6.3G     0  6.3G   0% /run/user/1031
    tmpfs           6.3G     0  6.3G   0% /run/user/1037
    
  • 参数解释:-h人类可读

ls

  • Linux ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。
  • 用例:查看当前目录下所有文件(包括隐藏文件)的最后修改时间、大小、权限(用户组)
    $ ls -alh
    total 176M
    drwxr-xr-x 15 hzf  hzf  4.0K 210 13:20 .
    drwxr-xr-x 24 root root 4.0K 1218 18:08 ..
    -rw-------  1 hzf  hzf   28K 210 15:25 .bash_history
    -rw-r--r--  1 hzf  hzf   220 45  2018 .bash_logout
    -rw-r--r--  1 hzf  hzf  4.2K 126 15:48 .bashrc
    drwx------  6 hzf  hzf  4.0K 1229 21:57 .cache
    drwxrwxr-x  2 hzf  hzf  4.0K 126 15:48 .conda
    -rw-rw-r--  1 hzf  hzf   618 126 15:59 .condarc
    drwx------  6 hzf  hzf  4.0K 1229 22:16 .config
    drwxrwxr-x  2 hzf  hzf  4.0K 126 15:40 Download
    -rw-r--r--  1 hzf  hzf  8.8K 416  2018 examples.desktop
    drwx------  3 hzf  hzf  4.0K 124 22:18 .gnupg
    drwxrwxr-x  3 hzf  hzf  4.0K 1226 20:47 .ipython
    drwxrwxr-x  2 hzf  hzf  4.0K 1229 15:16 .keras
    drwxrwxr-x  3 hzf  hzf  4.0K 126 15:58 .local
    drwxrwxr-x 16 hzf  hzf  4.0K 126 15:48 miniconda3
    drwx------  3 hzf  hzf  4.0K 1228 15:09 .nv
    -rw-r--r--  1 hzf  hzf   807 45  2018 .profile
    -rw-------  1 hzf  hzf  2.0K 210 13:20 .python_history
    drwxrwxr-x 10 hzf  hzf  4.0K 12 23:32 rknn-toolkit2
    -rw-rw-r--  1 hzf  hzf  176M 1229 14:32 rknn-toolkit2.zip
    drwxrwxr-x  6 hzf  hzf  4.0K 14 00:02 Voice
    drwxrwxr-x  5 hzf  hzf  4.0K 210 16:44 .vscode-server
    -rw-rw-r--  1 hzf  hzf   183 124 22:25 .wget-hsts
    -rw-------  1 hzf  hzf   483 210 12:53 .Xauthority
    
  • 参数解释:-a全部文件,-l详细信息,-h人类可读

wc

  • Linux wc命令用于计算字数。利用wc指令我们可以计算文件的字节数、字符数、或是行数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
  • 用例:配合ls,计算文件或文件夹数量
    # 计算当前目录下的文件数量(不包含子目录中的文件),-l计算行数
    ls -l | grep "^-" | wc -l
    # 计算当前目录下的文件数量(包含子目录中的文件),-R递归执行
    ls -lR | grep "^-" | wc -l
    # 计算当前目录下的文件夹数量(不包含子目录中的目录)
    # 如果需要包含子目录的文件夹,加上R
    ls -l | grep "^d" | wc -l
    # 计算以“id11251”开头的目录下的文件数量(包含子目录中的文件)
    ls -lR id11251*/ | grep "^-" | wc -l
    

su

  • Linux su(英文全拼:switch user)命令用于变更为其他用户的身份,除root外,需要键入其他用户的密码。
  • 用例:修改root用户密码,切换到root用户,此后的操作等同于在命令前加sudo
    # root是要切换进入的用户的名称
    # 如果显示Authentication failure,可能是输入的密码不对
    # 或者root没有设置密码,比如树莓派默认就没有设置root密码
    $ su root
    Password: 
    su: Authentication failure
    
    # 如果root没有设置密码,可以先给root设置密码
    $ sudo passwd root
    Enter new UNIX password: 
    Retype new UNIX password: 
    passwd: password updated successfully
    
    # 再输入su,此后的操作等同于在命令前加`sudo`
    $ su
    Password: 
    root@
    

zip/unzip

  • Linux zip命令用于压缩文件,unzip命令用于解压文件。Linux下有许许多多的压缩文件格式,但为了更加通用,推荐使用zip文件。
  • 用例:压缩,解压。
    # 压缩wespeaker文件夹下的所有文件(包含子文件夹下的所有文件),-r递归执行
    # 得到wespeaker.zip文件,如果加上-q则不显示压缩过程
    $ zip -r wespeaker.zip wespeaker
      adding: wespeaker/ (stored 0%)
      adding: wespeaker/models/ (stored 0%)
      adding: wespeaker/models/speaker_model.py (deflated 53%)
      adding: wespeaker/models/projections.py (deflated 82%)
      adding: wespeaker/models/__pycache__/ (stored 0%)
      ...
    
    # unzip直接解压wespeaker.zip
    # -l显示压缩文件内文件信息,-v显示更多信息,只查看不解压
    $ unzip -v wespeaker.zip 
    Archive:  wespeaker.zip
     Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
    --------  ------  ------- ---- ---------- ----- --------  ----
           0  Stored        0   0% 2022-12-30 17:11 00000000  wespeaker/
           0  Stored        0   0% 2023-01-04 12:13 00000000  wespeaker/models/
        1248  Defl:N      586  53% 2022-12-30 17:11 9e0c81f8  wespeaker/models/speaker_model.py
       18356  Defl:N     3279  82% 2023-01-21 18:30 0acfdff3  wespeaker/models/projections.py
           0  Stored        0   0% 2023-01-23 20:37 00000000  wespeaker/models/__pycache__/
           ...
    

find

  • Linux find 命令用于在指定目录下查找文件和目录,它可以使用不同的选项来过滤和限制查找的结果。
  • 用例:查找文件、文件夹
    # 加双引号表示匹配正则表达式,必须要加,否则*号会被shell解析而不是find命令解析
    # 从当前目录开始,递归查找文件名符合NKF-GRU*的所有文件(普通文件、目录、符合链接)
    find . -name "NKF-GRU*"
    # -maxdepth表示递归深度,1表示禁止递归
    # 只在当前目录下,查找文件名符合NKF-GRU*的所有文件
    find . -maxdepth 1 -name "NKF-GRU*"
    # -type表示按文件类型查找,可以是f(普通文件)、d(目录)、l(符号链接)等,默认是全部类型
    # 只在当前目录下,查找目录名符合NKF-GRU*的目录(查找文件夹时使用)
    find . -maxdepth 1 -type d -name "NKF-GRU*"
    # -o表示“或”逻辑
    # 只在当前目录下,查找wav或ogg结尾的普通文件
    find . -maxdepth 1 -type f -name "*.wav" -o -name "*.ogg"
    # -L表示跟踪符号链接,默认情况下find将符号链接视为一个单独的文件,并不会遍历或传入链接所指向的目标
    # 只在当前目录下,查找wav或ogg结尾的普通文件,遇到符号链接,则进一步遍历所指向的目标
    find -L . -maxdepth 1 -type f -name "*.wav" -o -name "*.ogg"
    

你可能感兴趣的:(Linux,linux,bash,运维)