zoukankan      html  css  js  c++  java
  • Linux -- 部分命令

    • ls -- 文件按时间排序
    • sort 对文档中的内容进行排序
    • ps
    • 标准输入
    • file 命令
    • rm -- 根据 inode 号删除文件
    • cut
    • xargs

    ls -- 文件按时间排序


    ls -alt                    // 按修改时间排序
    ls --sort=time -la        // 等价于 ls -alt
    ls -alc                    // 按创建时间排序
    ls -alu                    // 按访问时间排序
    
    # 按以上标准逆向排序 -r
    ls -alrt
    ls --sort=time -lra
    ls -alrc
    ls -alru

    sort 对文档中的内容进行排序


    sort -k3 -t: -n /etc/passwd
    
    // -k3        对该文档的第三个字段进行排序;
    // -t:        使用 : 作为分隔符;
    // -n:        数值排序, 使用第三段的整个数字进行排序;

    ps


    ps命令讲解

    ''' Linux中的 ps 命令是 <Process Status> 的缩写, ps命令用来列出系统中当前运行的哪些进程; ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程, 如果想要动态的显示进程信息,可以使用 top 命令; 要对进程进行监测和控制, 首先必须要了解当前进程的情况, 也就是需要查看当前的进程, 而 ps 命令就是最基本同时也是非常强大的进程查看命令; 使用该命令可以确定有哪些进程正在运行和运行状态 , 进程是否结束, 进程有没有僵死 , 哪些进程占用了过多的资源等等, 总之大部分信息都是可以通过该命令得到.
    ps 为我们提供了进程的一次性的查看, 它所提供的结果并不是动态连续的;
    '''
    
    ps命令常用用法(方便查看系统进程)
    
    1ps a 显示现行终端机下的所有程序,包括其他用户的程序。
    
    2ps -A 显示所有进程。
    
    3ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
    
    4ps -e 此参数的效果和指定"A"参数相同。
    
    5ps e 列出程序时,显示每个程序所使用的环境变量。
    
    6ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
    
    7ps -H 显示树状结构,表示程序间的相互关系。
    
    8ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
    
    9ps s 采用程序信号的格式显示程序状况。
    
    10ps S 列出程序时,包括已中断的子程序资料。
    
    11ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。
    
    12ps -u root  显示root用户信息
    
    13ps x  显示所有程序,不以终端机来区分。
    
    最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
    
    ############################################################
    
    实例3:显示所有进程信息,连同命令行
    
          命令:ps -ef
    
    实例4:ps 与grep 常用组合用法,查找特定进程
    
          命令:ps -ef|grep ssh
    
    实例5:将目前属于您自己这次登入的 PID 与相关信息列示出来
    
          命令:ps -l
    
        说明:
    
        各相关信息的意义:
    
        F 代表这个程序的旗标 (flag), 4 代表使用者为 super user
    
        S 代表这个程序的状态 (STAT),关于各 STAT 的意义将在内文介绍
    
        UID 程序被该 UID 所拥有
    
        PID 就是这个程序的 ID !
    
        PPID 则是其上级父程序的ID
    
        C CPU 使用的资源百分比
    
        PRI 这个是 Priority (优先执行序) 的缩写,详细后面介绍
    
        NI 这个是 Nice 值,在下一小节我们会持续介绍
    
        ADDR 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
    
        SZ 使用掉的内存大小
    
        WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作
    
        TTY 登入者的终端机位置
    
        TIME 使用掉的 CPU 时间。
    
        CMD 所下达的指令为何
    
        在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID。
    
    实例6:列出目前所有的正在内存当中的程序
    
        命令:ps aux
    
    说明:
    
    USER:该 process 属于那个使用者账号的
    
    PID :该 process 的号码
    
    %CPU:该 process 使用掉的 CPU 资源百分比
    
    %MEM:该 process 所占用的物理内存百分比
    
    VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
    
    RSS :该 process 占用的固定的内存量 (Kbytes)
    
    TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
    
    STAT:该程序目前的状态,主要的状态有
    
    R :该程序目前正在运作,或者是可被运作
    
    S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
    
    T :该程序目前正在侦测或者是停止了
    
    Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
    
    START:该 process 被触发启动的时间
    
    TIME :该 process 实际使用 CPU 运作的时间
    
    COMMAND:该程序的实际指令
    
    实例7:列出类似程序树的程序显示
    
    命令:ps -axjf
    
    实例8:找出与 cron 与 syslog 这两个服务有关的 PID 号码
    
    命令:ps aux | egrep '(cron|syslog)'
    
     
    
    3. 输出指定的字段
    
    命令:ps -o pid,ppid,pgrp,session,tpgid,comm
    
     
    
    注意:"ps aux""ps -aux"不相同。例如"-u"用来显示该用户的进程。但是"u"则是显示详细的信息。
    
    BSD风格:在BSD风格的语法选项前不带连字符。例如: ps aux
    
    UNIX/LINUX的风格:在linux风格的语法选项前面有一个破折号.例如: ps -ef
    
    混合使用两种Linux系统上的语法风格是好事儿。例如“ps ax -f”。
    
    1、显示所有进程:
    
    $ ps ax
    
    $ ps -ef
    
    "u"或者"-f"参数来显示所有进程的详细信息
    
    $ ps aux
    
    $ ps -ef -f
    
    注意:为什么用户列不显示我的用户名,但显示其他用户,如root、www等,对于所有的用户名(包括你)如果长度大于8个字符,然后ps将只显示UID,而不是用户名。
    
    2、根据用户显示进程:
    
    由进程的所属用户使用“-u”选项后跟用户名来显示。多个用户名可以提供以逗号分隔。
    
    $ ps -f -u www-data
    
    3、通过名字和进程ID显示进程:
    
    通过名字或命令搜索进程,使用“-C”选项后面加搜索词。
    
    $ ps -C apache2
    
    4、根据CPU或者内存进行排序:
    
    “–sort”选项由逗号分隔的多个字段可以用指定。此外,该字段可以带有前缀“-”或“”符号,表示降序或升序分别排序。通过进程列表进行排序有很多参数,你可以检查手册页的完整列表。
    
    $ ps aux --sort=-pcpu,+pmem
    
    $ ps aux --sort=-pcpu | head -5
    
    5、用树的风格显示进程的层次关系:
    
    许多进程实际上是一些父进程分的分支,知道这父子进程关系往往是有用的。在'–forest'选项将建立ASCII艺术风格层次的树视图。
    
    下面的命令将搜索进程名字为Apache2,形成一个树结构来显示详细的信息。
    
    $ ps -f --forest -C apache2
    
    6、显示一个父进程的子进程:
    
    这里有一个例子显示所有apache进程的分支
    
    $ ps -o pid,uname,comm -C apache2
    
    7、显示一个进程的线程:
    
    “-L”选项将显示进程的线程。它可以用来显示特定进程的所有线程或者所有进程。
    
    下面的命令将显示所有id为3150的进程所拥有的线程。
    
    $ ps -p 3150 -L
    
    8、改变要显示的列:
    
    ps命令可以配置为只显示选中的列表。为了显示完整列表可以查看手册。
    
    下面的命令只显示PID,用户名,CPU,内存和命令的列。
    
    $ ps -e -o pid,uname,pcpu,pmem,comm
    
    可以重命名列标签,相当的灵活。
    
    $ ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm
    
    9、显示进程运行的时间:
    
    表示进程的运行时间。对于运行的时间,列默认情况下是不显示的,可以使用“-O”选项查看。
    
    $ ps -e -o pid,comm,etime
    
    10、把ps命令变成一个实时查看器:
    
    像往常一样,watch命令可以用来实时捕捉ps显示进程。简单的例子如下:
    
    $ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'

    ps 参数

    ===================================ps 的参数说明=============================
    
    l 长格式输出;
    
    u 按用户名和启动时间的顺序来显示进程;
    
    j 用任务格式来显示进程;
    
    f 用树形格式来显示进程;
    
    a 显示所有用户的所有进程(包括其它用户)。显示所有进程
    
    -a 显示同一终端下的所有程序
    
    x 显示无控制终端的进程;
    
    r 显示运行中的进程;
    
    ww 避免详细参数被截断;
    
    -A 列出所有的进程
    
    -w 显示加宽可以显示较多的资讯
    
    -au 显示较详细的资讯
    
    -aux 显示所有包含其他使用者的进程
    
    -e 显示所有进程,环境变量
    
    -f 全格式
    
    -h 不显示标题
    
    -l 长格式
    
    -w 宽输出
    
    a   显示终端上地所有进程,包括其他用户地进程
    
    r   只显示正在运行地进程
    
    x   显示没有控制终端地进程
    
    我们常用的选项是组合是 aux 或 lax,还有参数 f 的应用。
    
    pids 只列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地最后一个选项后面紧接着给出,中间不能插入空格.比如:ps -f1,4,5 显示的是进程ID为1,4,5的进程
    
    下介绍长命令行选项,这些选项都运用“--”开头:
    
    --sort X[+|-] key [,[+|-] key [,…]] 从SORT KEYS段中选一个多字母键.“+”字符是可选地,因为默认地方向就是按数字升序或者词典顺序,“-”字符是逆序排序(即降序).
    
    比如: ps -jax -sort=uid,-ppid,+pid.
    
    --help 显示帮助信息.
    
    --version 显示该命令地版本信息.
    
    在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是ps运用地内部值,并非仅用于某些输出格式地伪值.排序键列表见下表.
    
    ============排序键列表==========================
    
    c cmd   可执行地简单名称
    
    C cmdline   完整命令行
    
    f flags   长模式标志
    
    g pgrp   进程地组ID
    
    G tpgid   控制tty进程组ID
    
    j cutime   累计用户时间
    
    J cstime   累计系统时间
    
    k utime   用户时间
    
    K stime   系统时间
    
    m min_flt   次要页错误地数量
    
    M maj_flt   重点页错误地数量
    
    n cmin_flt 累计次要页错误
    
    N cmaj_flt 累计重点页错误
    
    o session   对话ID
    
    p pid   进程ID
    
    P ppid   父进程ID
    
    r rss   驻留大小
    
    R resident 驻留页
    
    s size   内存大小(千字节)
    
    S share   共享页地数量
    
    t tty   tty次要设备号
    
    T start_time 进程启动地时间
    
    U uid   UID
    
    u user   用户名
    
    v vsize   总地虚拟内存数量(字节)
    
    y priority 内核调度优先级

    ps aux 或者 lax 输出格式

    USER PID %CPU %MEM VSZ RSS TTY STA START TIME COMMAND
    
    USER        // 进程所有者
    PID         // 进程ID
    %CPU        // 占用的 CPU 使用率
    %MEM        // 占用的内存使用率
    VSZ         // 占用的虚拟内存大小
    RSS         // 占用的内存大小
    TTY         // 终端的次要装置号码(minor device number of tty)
    STAT        // 进程状态
    START       // 启动进程的时间
    TIME        // 进程消耗 CPU 的时间
    COMMAND     // 命令的名称和参数

    标准输入


    // 标注输入,为指定用户创建密码
    $ echo 123 |passwd zxjr --stdin
    
    // 对相应的字符串进行加密
    $ echo 123 |openssl passwd -1 -stdin
        $1$xPokL2Yn$OlmcFvyqt3/ifxdhHPeJg0

    file 命令


    命令格式:

      file [-bchikLnNprsvz] [-f namefile] [-F separator] [-m magicfiles] file ...

    命令功能:

      用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月和年份;

      通过file命令, 辨识文件类型.

    命令参数:

        -b    列出辨识结果时, 不显示文件名称;
        -c    详细显示指令执行过程,便于排错或分析程序执行的情形;
        -f <文件名>    列出文件中文件名的文件类型;
        -F    使用指定分割符号替换输出文件名后的默认的 ":" 分割符;
        -i    输出mime类型的字符串;
        -L    查看对应软链接对应文件的文件类型;
        -z    尝试去解读压缩文件的内容;
        --help    显示命令在线帮助;
        -version    显示命令版本信息
     
    使用示例:
    // 查看文件类型
    file install.log
        install.log: UTF-8 Unicode text
    
    // 不输出文件名称,只显示文件格式及编码
    file -b install.log
        UTF-8 Unicode text
    
    // 输出mime类型的字符串
    file -i install.log
        install.log: text/plain; charset=utf-8
        
    // 查看文件中的文件名的文件类型
    vim test
        /etc/networks
        testing
    file -f test
        /etc/networks: ASCII text
        testing:       cannot open 'testing' (No such file or directory)
    
    // 使用指定分割符号代替输出文件名后的默认 ":" 分割符
    file -F '--' test
        test-- ASCII text
    
    // 尝试去解读压缩文件的内容
    file -z test.gz
        test.gz: ASCII text (gzip compressed data, was "test", from Unix, last modified: Fri Jul  7 13:17:16 2017)
    
    // 查看软链接对应文件的文件类型
    file test.txt
        test.txt: symbolic link to `test'

    rm -- 根据 inode 号删除文件


    ls -i           // 查找文件或目录的inode号;
    
    // 使用上面查询到的 inode 号进行删除文件;
    find ./ -inum 25789760 -exec rm {} ;

    cut


    命令选项

    // cut 命令主要用于截取一行中若干个, 选项:
        * -b    // 根据字节来截取,忽视多字符,比如汉字,可以配合[-n]选项来忽视不完整的多字符;
        * -c    // 根据字符来截取,多字节字符当做一个字符;
        * -d    // 根据字段来截取时,定义分割符,默认是TAB;配合[-f]输出指定字段;
        * -f    // 根据字段来截取时,输出指定的字段;
        * -n    // 截取后忽略不完整的字符,配合 [ -b ]使用;
        * -s    // 根据字段来截取时,忽略不包含分割符的行,配合 [ -d ] 使用.

    字节截取和字符截取

    // 使用方法
        * cut -b LIST
        * cut -c LIST
    // LIST为要输入的字节位置,可以指定位置也可以指定区间,例如1,3,5表示第一第三第五个字节;1,3-5表示第一和第三到第五个字节;
    // 区别在于多字节字符的处理上,比如汉字;通过下面例子解析:
    
    [root@bogon ~]# echo "烽火戏诸侯" |cut -b 1-3
    烽
    [root@bogon ~]# echo "烽火戏诸侯" |cut -b 1-4
    烽
    [root@bogon ~]# echo "烽火戏诸侯" |cut -b 1-5
    烽
    [root@bogon ~]# echo "烽火戏诸侯" |cut -b 1-6
    烽火
    ******************************************************************
    [root@bogon ~]# echo "烽火戏诸侯" |cut -c 1
    烽
    [root@bogon ~]# echo "烽火戏诸侯" |cut -c 1,2
    烽火
    [root@bogon ~]# echo "烽火戏诸侯" |cut -c 1-3
    烽火戏
    ********************************************************************************
    // -d参数配置[ -n ]选项忽略不完整的字符
    [root@bogon ~]# echo "烽火戏诸侯" |cut -nb 1-7
    烽火
    [root@bogon ~]# echo "烽火戏诸侯" |cut -nb 1-4

    字段截取

    // cut还可以根据字段截取行字符,默认字段分割符为TAB表示,可以使用 [ -d ] 来指定分割符,分割符限定为单字符.特别需要注意的是:多字节字符也是单字符,例如:
    // 配合[ -s ] 选项,可以忽略不包含分割符的行,例如某个文件中,里面没有TAB,全是空格
    [root@bogon ~]# vim test.txt
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0 Oct09 ?        00:00:13 init [5]
    root         2     1  0 Oct09 ?        00:00:06 [ksoftirqd/0]
    root         3     1  0 Oct09 ?        00:00:05 [events/0]
    root         4     3  0 Oct09 ?        00:00:00 [khelper]
    
    // 截取方法:
    [root@bogon ~]# cat test.txt |cut -d : -f 2
    UID        PID  PPID  C STIME TTY          TIME CMD
    00
    00
    00
    00
    [root@bogon ~]# cut -sd : -f 2 test.txt
    00
    00
    00
    00
    [root@bogon ~]# echo "烽火戏诸侯"|cut -d 戏 -f 2
    诸侯

    xargs


      很多命令不支持管道来传递参数 -- xargs

    参数:

    • -0 : 当 sdtin 含有特殊字符的时候, 将其当成一般字符;
    • -a <file> : 从文件中读入作为参数;
    • -p : 当每次执行一个 argumer 的时候询问一次用户;
    • -n <num> : 表示命令在执行的时候一次用的argument的个数, 默认是用所有的;
    • -t : 表示先打印命令, 然后再执行
    • -i 或 -I : 一行一行赋值给{}, 可以用 {} 代替;
    • -r : 当 xargs 的输入为空时停止 xargs, 不再去执行了

    示例:

    // -0 参数
    echo '
    ' |xargs echo
     n
    echo '
    ' |xargs -0 echo
     
    
     
    // -a 参数
    xargs -a test echo
     good good study day day up gogogo good gold goood goolld
     
    // -e 参数
    cat test |xargs -E 'gogogo' echo
     good good study day day up
     
    // -p 参数
    cat test |xargs -p echo
     echo good good study day day up gogogo good gold goood goolld ?...y
     good good study day day up gogogo good gold goood goolld
     
    // -n 参数
    cat test |xargs -n1 echo
     good
     good
     study
     day
     day
     up
     gogogo
     good
     gold
     goood
     goolld
     
    // -t 参数
    cat test |xargs -t echo
     echo good good study day day up gogogo good gold goood goolld 
     good good study day day up gogogo good gold goood goolld
     
    // -i 参数
    ls |xargs -t -i mv {} {}.back
     mv test test.back
     
    // -r 参数
    echo "" |xargs -t -r mv

    // 使用 xargs 进行操作;
    find ./ -type f -name tian
     ./tian
    find ./ -type f -name tian |xargs rm -f ;        // 使用 xargs 进行删除;
    find ./ -type f -name tian -exec rm -f {} ;     // 使用 -exec 进行删除, 必须使用{} , 及 ; 结尾...
  • 相关阅读:
    C2B未来:大数据定制
    Linux开发环境的搭建和使用——Linux 常用的命令使用
    iebook 发布到网站 独家秘诀
    ZOJ 2679 Old Bill(数学)
    DFA最小化 -- Hopcroft算法 Python实现
    How to initialize a static const map in c++?
    新秀操作和维护注意事项:Windows关于使用Xshell管理你的云主机
    HDOJ 4883 TIANKENG’s restaurant
    谈论multistage text input(中国输入法)下一个UITextView内容长度的限制
    iOS 网络错误-分类
  • 原文地址:https://www.cnblogs.com/haorong/p/10717205.html
Copyright © 2011-2022 走看看