• 第1次 更多的bash shell命令


    1.检测程序

           程序都是进程在运行,进程里面有很多线程,面试经常会问进程和线程的区别,线程可以访问另一个线程的什么什么的,这些我都听腻了,区别就是进程会分配程序需要的空间,创建线程需要的资源,用一个中二的说法:进程就是世界,线程是世界意志的执行者。线程可以访问进程的各种资源,但是不能访问线程自己的堆栈。

            查看进程的命令是ps,它有很多搭配的参数,比如ps -e 输出全部进程,ps -f显示进程的完整信息,还可以组合ps -ef

           实时检测进程的运行情况:top

            进程显示的信息有哪些?

            UID 启动这些进程的用户

            PID 进程的ID号

            PPID 父进程的ID

            C 进程生命周期中CPU利用率

            STIME 进程启动时的系统时间

            TTY 启动进程时的终端时间

            CMD 启动的程序名称

           使用ps -l会出现更多的字段,可以自行查询

    2.结束进程

            我们需要知道进程的各种状态,根据情况结束进程,唤醒进程,挂起进程等等,进程是通过信号来通信。下面列举了几种信号对应的状态

    信号名称描述
    1HUP挂起
    2INT中断
    3QUIT结束运行
    9KILL无条件终止
    11SEGV段错误
    15TERM尽可能终止
    17STOP无条件停止运行,但是不终止
    18TSTP停止或者暂停,但继续在后台运行
    19CONT在STOP或者TSTP后恢复运行

    (1).kill命令

        kill PID  

            终止PID代表的进程,这是向进程发生TERM命令,有些进程会很调皮,无视这个命令,这个时候你可以强硬一点,使用kill -s PID,pid进程会立刻GG

    (2). killall命令

    kill需要pid,killall可以指定进程名字,还能用通配符

    3.监测磁盘空间

    有时候我们还要处理LINUX系统空间,所以这也是一项基本技能。

    1.挂载存储媒体

    LINUX文件系统把所有的磁盘并入到一个虚拟目录下,把新的储存媒体比如U盘放在虚拟目录下,这样的工作叫做挂载。

    (1).mount命令

    这是挂载媒体的命令,输入mount,输出当前系统上挂载的设备列表

    mount命令提供四个部分的信息:

    (1).媒体的设备文件名

    (2).媒体挂载的虚拟目录的挂载点

    (3).文件系统类型

    (4).已挂载媒体的访问状态

    ·修改挂载点 mount -t type device directory

    type:格式化方法,有很多种,比如vfat,ios9660,ntfs

    device:目前的挂载点

    directory:修改到指定位置的挂载点

    mount -t  vfat /dev/sdb1 /media/disk

    把sdb1的挂载点修改到/media/disk

    mount还可以搭配其他的参数,完成更加复杂的命令,这里只介绍重要的-o

    -o可以添加一些其他的命令,后面用逗号分割,

    ro只读挂载

    rw读写挂载

    user允许普通用户挂载文件系统

    check-none挂载时不检测

    loop挂载一个文件

    2.umount移除挂载设备

    从系统中移除一个可移动设备,需要先卸载。

    umount [directory | device]

    可以指定设备名字或者挂载点来移除设备,如果设备正在使用,则会失败

    3.df命令

    查看挂载设备的内存使用情况

    这个输出很容易看懂,下面就是df的输出,分别是设备的设备文件位置,块(1M)的数量,已经使用的块,可以空间,使用率,挂载点

    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/root       61054632 3911020  54605344   7% /
    devtmpfs          781052       0    781052   0% /dev
    tmpfs             946812       0    946812   0% /dev/shm
    tmpfs             378728    1188    377540   1% /run
    tmpfs               5120       4      5116   1% /run/lock
    /dev/mmcblk0p1    261108   31228    229880  12% /boot
    tmpfs             189360      20    189340   1% /run/user/1000

    df -h 输出更明白

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/root        59G  3.8G   53G   7% /
    devtmpfs        763M     0  763M   0% /dev
    tmpfs           925M     0  925M   0% /dev/shm
    tmpfs           370M  1.2M  369M   1% /run
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    /dev/mmcblk0p1  255M   31M  225M  12% /boot
    tmpfs           185M   20K  185M   1% /run/user/1000

    4.du命令

    df是看整体的情况,则du是看某个指定文件夹下面的内存情况,某人情况下是看当前的文件夹,它会输出指定文件夹下的子文件夹使用情况。这种输出会从文件夹最底层开始,也就是最里面开始输出。也许我们并不需要知道每个文件夹的情况。只需要知道指定的文件夹整体情况。

    du -s 则输出文件夹下的整体占用空间

    du -h 输出普通人看得明白的数据,和上面那个一样

    du -c 输出整体的情况,它是在末尾多了一个统计而已

    我的桌面有一个Linux文件目录

    du -s linux #输出Linux的文件大小

    输出:

    6236    linux

    du -h linux

    64K     linux/.git/hooks
    4.0K    linux/.git/refs/heads
    4.0K    linux/.git/refs/tags
    12K     linux/.git/refs
    8.0K    linux/.git/info
    4.0K    linux/.git/branches
    4.0K    linux/.git/objects/info
    4.0K    linux/.git/objects/pack
    12K     linux/.git/objects
    116K    linux/.git
    64K     linux/linux-2.6/.git/hooks
    4.0K    linux/linux-2.6/.git/refs/heads
    4.0K    linux/linux-2.6/.git/refs/tags
    12K     linux/linux-2.6/.git/refs
    8.0K    linux/linux-2.6/.git/info
    4.0K    linux/linux-2.6/.git/branches
    4.0K    linux/linux-2.6/.git/objects/info
    5.9M    linux/linux-2.6/.git/objects/pack
    5.9M    linux/linux-2.6/.git/objects
    6.0M    linux/linux-2.6/.git
    6.0M    linux/linux-2.6
    6.1M    linux

    64      linux/.git/hooks
    4       linux/.git/refs/heads
    4       linux/.git/refs/tags
    12      linux/.git/refs
    8       linux/.git/info
    4       linux/.git/branches
    4       linux/.git/objects/info
    4       linux/.git/objects/pack
    12      linux/.git/objects
    116     linux/.git
    64      linux/linux-2.6/.git/hooks
    4       linux/linux-2.6/.git/refs/heads
    4       linux/linux-2.6/.git/refs/tags
    12      linux/linux-2.6/.git/refs
    8       linux/linux-2.6/.git/info
    4       linux/linux-2.6/.git/branches
    4       linux/linux-2.6/.git/objects/info
    6000    linux/linux-2.6/.git/objects/pack
    6008    linux/linux-2.6/.git/objects
    6112    linux/linux-2.6/.git
    6116    linux/linux-2.6
    6236    linux
    6236    total

    5. 处理数据文档

    (1) sort 对文档的数据排序

    默认情况是安装字符串的升序排序,如果你的文档是数字字符,然后你想按数字排序,可以用-n,如果开头是时间,可以按时间排序,-r是降序,-t指定分隔符,-k指定排序的字段。-k和-t一起使用很有效。

    理解一下:

    du linux | sort -nr

    6236    linux
    6116    linux/linux-2.6
    6112    linux/linux-2.6/.git
    6008    linux/linux-2.6/.git/objects
    6000    linux/linux-2.6/.git/objects/pack
    116     linux/.git
    64      linux/linux-2.6/.git/hooks
    64      linux/.git/hooks
    12      linux/linux-2.6/.git/refs
    12      linux/.git/refs
    12      linux/.git/objects
    8       linux/linux-2.6/.git/info
    8       linux/.git/info
    4       linux/linux-2.6/.git/refs/tags
    4       linux/linux-2.6/.git/refs/heads
    4       linux/linux-2.6/.git/objects/info
    4       linux/linux-2.6/.git/branches
    4       linux/.git/refs/tags
    4       linux/.git/refs/heads
    4       linux/.git/objects/pack
    4       linux/.git/objects/info
    4       linux/.git/branches

    Linux文件下全部文件降序排列 ,|是管道符

    sort -t ':' -k 3 /etc/passwdsystemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
    systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
    systemd-timesync:x:103:109:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
    messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
    _rpc:x:105:65534::/run/rpcbind:/usr/sbin/nologin
    sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
    statd:x:107:65534::/var/lib/nfs:/usr/sbin/nologin
    avahi:x:108:113:Avahi mDNS daemon,,,:/run/avahi-daemon:/usr/sbin/nologin
    dnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
    lightdm:x:110:114:Light Display Manager:/var/lib/lightdm:/bin/false
    rtkit:x:111:116:RealtimeKit,,,:/proc:/usr/sbin/nologin
    pulse:x:112:119:PulseAudio daemon,,,:/run/pulse:/usr/sbin/nologin
    saned:x:113:122::/var/lib/saned:/usr/sbin/nologin
    colord:x:114:123:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
    hplip:x:115:7:HPLIP system user,,,:/run/hplip:/bin/false
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
    sys:x:3:3:sys:/dev:/usr/sbin/nologin
    backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
    list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
    irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/usr/sbin/nologin
    man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
    nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
    lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
    mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
    systemd-coredump:x:996:996:systemd Core Dumper:/:/usr/sbin/nologin
    news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

    观察一下,它把: 作为分割符号,分为很多个字段,指定第三个字段作为排序的指标,然后升序排列。

    (2).搜索数据:grep

    他的使用方法很多,需要仔细研究。命令模式:

    grep [options] pattern [file]

    比如我们有一个文本test.txt,内容如下:

    abc
    def
    123
    456

    grep a test.txt

    输出:abc

    grep -v a test.txt #-v表示输出不含查询的字符

    def
    123
    456

    有很多选项,可以自己查询

    6.压缩文件

    有很多工具可以压缩,比如bzip2,compress,gzip,zip

    后缀名也各不一样,分别对应.bz2,.z,.gz,.zip

    介绍一下gzip,这是GUN的一个压缩软件

    (1).gzip 压缩文件

    (2).gzcat 查看压缩文件的内容

    (3).gunzip 解压

    7.归档文件

    虽然gzip可以压缩文件,但是它是对单个文件使用,我们常常需要对一系列文件使用,所以需要tar命令。

    tar function [option] object1 object2 object3

    功能有很多

    -A 把一个归档的文件追加到另一个中

    -c 创建一个新的归档文件

    -d 比较两个归档文件的不同

    -r 追加归档文件到末尾

    -t 列出归档文件的内容

    -u 更新,追加同名文件

    -x 从归档文件中提取文件

    选项也有很多

    -C dir 切换到指定dir

    -f file 输出结果到文件file

    -j 重定向输出结果给bzip2来压缩文件

    -p 保留文件权限

    -v 处理文件的时候显示文件

    -z 重定向给gzip命令来压缩文件

    比如压缩三个文件a1,a2,a3

    tar -cvf A.tar a1 a2 a3

    把a1 a2 a3 的内容输入到创建的文件A.tar中

    查看压缩文件

    tar -tf A.tar

    则输出a1 a2 a3

     A.tar会被重新构建

    解压命令:

    tar -zxvf A.tar

  • 相关阅读:
    NET 8 预览版 2 亮点是Blazor
    VUE cli3.0项目打包部署服务器
    Linux命令-文件管理模块
    Netty源码学习8——从ThreadLocal到FastThreadLocal(如何让FastThreadLocal内存泄漏doge)
    Mybatis 框架 ( 四 ) QueryWrapper
    6.824 lab2
    amber14自由能计算及增强采样方法
    机械原理复习试题
    嵌入式Linux应用开发-驱动大全-同步与互斥③
    mac 本地运行 http-proxy-middleware ,请求超时
  • 原文地址:https://blog.csdn.net/weixin_42581560/article/details/133628542