为您推荐:
精华内容
最热下载
问答
  • 5星
    469KB weixin_46414659 2021-04-02 17:24:37
  • 5星
    52KB weixin_43793181 2021-07-16 16:49:39
  • 5星
    158B douluo998 2021-06-07 18:09:54
  • 5星
    12.18MB mzl_sx 2021-05-12 11:03:46
  • 5星
    32.66MB weixin_42350212 2021-03-17 10:29:52
  • 5星
    52.16MB weixin_42350212 2021-03-15 15:58:54
  • 5星
    13KB m0_52957036 2020-03-10 14:42:49
  • 5星
    139.16MB flyrain2012 2021-01-15 10:49:22
  • 5星
    9.47MB weixin_53289408 2021-04-09 16:16:29
  • 5星
    10.46MB xipengbozai 2021-03-22 00:43:45
  • linux ps命令,查看进程cpu和内存占用率排序 使用以下命令查看: ps -aux | sort -k4,4n ps auxw --sort=rss ps auxw --sort=%cpu linux 下的ps命令 %CPU 进程的cpu占用率 %MEM 进程的内存占用率 VSZ 进程所...

    linux ps命令,查看进程cpu和内存占用率排序

    使用以下命令查看:

    ps -aux | sort -k4,4n

    ps auxw --sort=rss

    ps auxw --sort=%cpu

    linux 下的ps命令

    %CPU 进程的cpu占用率
    %MEM 进程的内存占用率
    VSZ 进程所使用的虚存的大小
    RSS 进程使用的驻留集大小或者是实际内存的大小
    TTY 与进程关联的终端(tty)
    STAT 检查的状态:进程状态使用字符表示的,如R(running正在运行或准备运行)、S(sleeping睡眠)、I(idle空闲)、Z (僵死)、D(不可中断的睡眠,通常是I/O)、P(等待交换页)、W(换出,表示当前页面不在内存)、N(低优先级任务)T(terminate终止)、W has no resident pages

    START (进程启动时间和日期)
    TIME ;(进程使用的总cpu时间)
    COMMAND (正在执行的命令行命令)
    NI (nice)优先级
    PRI 进程优先级编号
    PPID 父进程的进程ID(parent process id)
    SID 会话ID(session id)
    WCHAN 进程正在睡眠的内核函数名称;该函数的名称是从/root/system.map文件中获得的。
    FLAGS 与进程相关的数字标识

    常用参数
    -A 显示所有进程(等价于-e)(utility)
    -a 显示一个终端的所有进程,除了会话引线
    -N 忽略选择。
    -d 显示所有进程,但省略所有的会话引线(utility)
    -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
    -p pid 进程使用cpu的时间
    -u uid or username 选择有效的用户id或者是用户名
    -g gid or groupname 显示组的所有进程。
    U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
    -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
    -l 长格式(有F,wchan,C 等字段)
    -j 作业格式
    -o 用户自定义格式。
    v 以虚拟存储器格式显示
    s 以信号格式显示
    -m 显示所有的线程
    -H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
    e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
    h 不显示第一行

    转载:linux ps命令,查看进程cpu和内存占用率排序-maxiaolin0615-ChinaUnix博客

    展开全文
    m0_37268841 2018-11-06 13:19:19
  • 1.2 Linux多用户、多任务环境 2. 工作管理 (job control) 2.1 什么是工作管理 2.2 job control 的管理 2.2.1 直接将命令在后台运行的“&”: 2.2.2 将目前的工作丢到后台中暂停:[ctrl]-z 2.2.3 查看...

    1 进程

    在 Linux 中运行一个命令时,系统会将相关的权限、属性、程序码与数据等均加载内存, 并给予这个单元一个程序识别码(PID),最终该命令可以进行的任务则与这个 PID 的权限有关。

    1.1 进程和程序

    1 程序和进程区别

    程序一般是放置在实体磁碟中,然后透过使用者的运行来触发。触发后会加载到内存中成为一个个体,那就是程序。

    为了操作系统可管理这个程序,因此程序有给予运行者的权限/属性等参数,并包括程序所需要的命令码与数据或文件数据等, 最后再给予一个 PID 。系统就是透过这个 PID 来判断该 process 是否具有权限进行工作的!

    • ==程序== (program):通常为二进制,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在;

    • ==进程== (process):程序被触发后,运行者的权限与属性、程序的程序码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个识别码 (PID),可以说,进程就是一个正在运行中的程序。

    2 父子进程

    当我们登陆系统后,会取得一个 bash 的 shell ,然后,我们用这个 bash 提供的介面去运行另一个命令,例如 /usr/bin/passwd 或者是 touch 等等,那些另外运行的命令也会被触发成为 PID ,那个后来运行命令才产生的 PID 就是子程序了,而在我们原本的 bash 环境下,就称为父程序。

    其实,我们登陆 bash 之后, 就是取得一个名为 bash 的 PID 了,而在这个环境底下所运行的其他命令, 就几乎都是所谓的子程序了。

    fork and exec
    子程序与父程序之间的关系还挺复杂的,最大的复杂点在於程序互相之间的呼叫。在 Linux 的程序呼叫通常称为 fork-and-exec 的流程。

    image

    1. 系统先以 fork 的方式复制一个与父程序相同的缓存程序,这个程序与父程序唯一的差别就是 PID 不同! 但是这个缓存程序还会多一个 PPID 的参数,PPID 如前所述,就是父程序的程序识别码啦!
    2. 缓存程序开始以 exec的方式加载实际要运行的程序,以上述图示来讲,新的程序名称为 qqq ,最终子程序的程序码就会变成 qqq 了! 这样了解乎!

    系统或网络服务:常驻在内存的程序
    常驻在内存当中的程序通常都是负责一些系统所提供的功能以服务使用者各项任务,因此这些常驻程序就会被我们称为:服务 (daemon)

    一些负责网络连线的服务,例如 Apache, named, postfix, vsftpd等等。这些网络服务比较有趣的地方,在於这些程序被运行后,他会启动一个可以负责网络监听的端口 (port) ,以提供外部用户端 (client) 的连线要求。

    1.2 Linux多用户、多任务环境

    1. 多用户环境:在 Linux 系统上面具有多种不同的帐号, 每种帐号都有都有其特殊的权限,只有一个人具有至高无上的权力,那就是 root (系统管理员)。除了 root之外,其他人都必须要受一些限制的!每个人登陆后取得的 shell 的 PID 不同。
    2. 多任务行为: Linux 可以让 CPU 在各个工作间进行切换, 也就是说,其实每个工作都仅占去 CPU 的几个命令次数,所以 CPU 每秒就能够在各个程序之间进行切换。 目前 Linux 使用的多工切换行为是非常棒的一个机制,几乎可以将 PC 的性能整个压榨出来! 由於效能非常好,因此当多人同时登陆系统时,其实会感受到整部主机好像就为了你存在一般! 这就是多人多工的环境啦!

    2. 工作管理 (job control)

    这个工作管理 (job control) 是用在 bash 环境下的,也就是说:当我们登陆系统取得 bash shell 之后,在单一终端机介面下同时进行多个工作的行为管理 。举例来说,我们在登陆 bash 后, 想要一边复制文件、一边进行数据搜寻、一边进行编译,还可以一边进行 vi 程序撰写! 当然我们可以重复登陆那六个文字介面的终端机环境中,不过,能不能在一个 bash 内达成? 当然可以啊!就是使用 job control。

    2.1 什么是工作管理

    ==注意==:进行工作管理的行为中, 其实每个工作都是目前 bash 的子程序,亦即彼此之间是有相关性的。 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的 bash。

    要进行 bash 的 job control 必须要注意到的限制是:

    • 这些工作所触发的程序必须来自於你 shell 的子程序(只管理自己的 bash);
    • 前台:你可以控制与下达命令的这个环境称为前台的工作 (foreground);
    • 后台:可以自行运行的工作,你无法使用 [ctrl]+c 终止他,可使用 bg/fg 呼叫该工作;
    • 后台中运行的程序不能等待 terminal/shell 的输入(input)。

    2.2 job control 的管理

    2.2.1 直接将命令在后台运行的“&”:

    举个简单的例子,我们要将 ~/springboot-beatlsql打包为~/springboot-beatlsql.tar.gz 且不想要等待,那么可以这样做:

    [root@www ~]# tar -zcf springboot-beatlsql.tar.gz springboot-beatlsql &
    [1] 8400  <== [job number] PID 
    [root@www ~]# tar: Removing leading `/' from member names 
    # 在中括号内的号码为工作号码 (job number),该号码与 bash 的控制有关。
    # 后续的 8400 则是这个工作在系统中的 PID。至于后续出现的数据是 tar 运行的数据流,
    # 由于我们没有加上数据流重导向,所以会影响画面!不过不会影响前景的操作喔!

    好处:不怕被 [ctrl]+c 中断!

    ==改进==:
    在后台当中运行的命令,如果有 stdout 及 stderr 时,他的数据依旧是输出到萤幕上面的。由於是后台工作的 tar , 此时你怎么按下 [ctrl]+c 也无法停止萤幕被搞的花花绿绿的!所以,最佳的状况就是利用数据流重导向, 将输出数据传送至某个文件中。举例来说,我可以这样做:

    [root@www ~]$ tar -zcvf springboot-beatlsql.tar.gz springboot-beatlsql > log.txt 2>&1 &

    上面将打包的输出信息(包括标准输出和错误输出)都放入log文件中,不会影响前台工作。

    2.2.2 将目前的工作丢到后台中暂停:[ctrl]-z

    想个情况:如果我正在使用 vi ,却发现我有个文件不知道放在哪里,需要到 bash 环境下进行搜寻,此时是否要结束 vi 呢?呵呵!当然不需要!只要暂时将 vi 给他丢到后台当中等待即可。 例如以下的案例:

    [root@www ~]# vi ~/.bashrc
    # 在 vi 的一般模式下,按下 [ctrl]-z 这两个按键
    [1]+  Stopped                 vim ~/.bashrc
    [root@www ~]#   <==顺利取得了前景的操控权!
    [root@www ~]# find / -print
    ....(输出省略)....
    # 此时萤幕会非常的忙碌!因为萤幕上会显示所有的档名。请按下 [ctrl]-z 暂停
    [2]+  Stopped                 find / -print

    在 vi 的一般模式下,按下 [ctrl] 及 z 这两个按键,萤幕上会出现 [1] ,表示这是第一个工作, 而那个 + 代表最近一个被丢进背景的工作,且目前在背景下默认会被取用的那个工作 (与 fg 这个命令有关 )!而那个 Stopped 则代表目前这个工作的状态。在默认的情况下,使用 [ctrl]-z 丢到背景当中的工作都是暂停的状态!

    2.2.3 查看目前的后台状态:jobs

    [root@www ~]# jobs [-lrs]
    选项与参数:
    -l  :除了列出 job number 与命令串之外,同时列出 PID 的号码;
    -r  :仅列出正在后台 run 的工作;
    -s  :仅列出正在后台当中暂停 (stop) 的工作。
    
    范例一:观察目前的 bash 当中,所有的工作,与对应的 PID
    [root@www ~]# jobs -l
    [1]- 10314 Stopped                 vim ~/.bashrc
    [2]+ 10833 Stopped                 find / -print

    2.2.4 将后台工作拿到前台处理:fg

    [root@www ~]# fg %jobnumber
    选项与参数:
    %jobnumber :jobnumber 为工作号码(数字)。注意,那个 % 是可有可无的!
    
    范例一:先以 jobs 观察工作,再将工作取出:
    [root@www ~]# jobs
    [1]- 10314 Stopped                 vim ~/.bashrc
    [2]+ 10833 Stopped                 find / -print
    [root@www ~]# fg      <==默认取出那个 + 的工作,亦即 [2]。立即按下[ctrl]-z
    [root@www ~]# fg %1   <==直接规定取出的那个工作号码!再按下[ctrl]-z
    [root@www ~]# jobs
    [1]+  Stopped                 vim ~/.bashrc
    [2]-  Stopped                 find / -print

    2.2.5 让工作在后台下的状态变成运行中:bg(暂时没这需求)

    2.2.6 管理背景当中的工作: kill

    上面可以使用 fg 将后台工作拿到前台来, 那么,如果想要将该工作直接移除呢?或者是将该工作重新启动呢?这个时候就得需要给予该工作一个讯号 (signal) ,此时, kill 这个命令就派上用场啦!

    [root@www ~]# kill -signal %jobnumber
    [root@www ~]# kill -l
    选项与参数:
    -l  :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?
    signal :代表给予后面接的那个工作什么样的指示罗!用 man 7 signal 可知:
      -1 :重新读取一次参数的配置档 (类似 reload);
      -2 :代表与由键盘输入 [ctrl]-c 同样的动作;
      -9 :立刻强制删除一个工作;
      -15:以正常的程序方式终止一项工作。与 -9 是不一样的。
    
    范例一:找出目前的 bash 环境下的后台工作,并将该工作『强制删除』。
    [root@www ~]# jobs
    [1]+  Stopped                 vim ~/.bashrc
    [2]   Stopped                 find / -print
    [root@www ~]# kill -9 %2; jobs
    [1]+  Stopped                 vim ~/.bashrc
    [2]   Killed                  find / -print
    # 再过几秒你再下达 jobs 一次,就会发现 2 号工作不见了!因为被移除了!
    # %不可以省略!!
    
    范例:找出目前的 bash 环境下的背景工作,并将该工作『正常终止』掉。
    [root@www ~]# jobs
    [1]+  Stopped                 vim ~/.bashrc
    [root@www ~]# kill -SIGTERM %1
    # -SIGTERM 与 -15 是一样的!您可以使用 kill -l 来查阅!

    kill 后面接的数字默认会是 PID ,如果想要管理 bash 的工作控制,就得要加上 %数字 了, 这点也得特别留意才行!

    2.3 离线管理问题:nohup

    要注意的是,我们在工作管理当中提到的后台指的是在终端机模式下可以避免 [crtl]-c 中断的一个情境, 并不是放到系统的后台!所以,工作管理的背景依旧与终端机有关啦! 在这样的情况下,如果你是以远程连线方式连接到你的 Linux 主机,并且将工作以 & 的方式放到后台去, 请问,在工作尚未结束的情况下你离线了,该工作还会继续进行吗?答案是『否』!不会继续进行,而是会被中断掉。

    • 方法一: at 来处理!因为 at 是将工作放置到系统后台, 而与终端机无关。
    • 方法二:使用nohup!nohup可以让你在离线或注销系统后,还能够让工作继续进行。他的语法有点像这样:
    [root@www ~]# nohup [命令与参数]   <==在终端机前台中工作
    [root@www ~]# nohup [命令与参数] & <==在终端机后台中工作

    上述命令需要注意的是, nohup 并不支持 bash 内建的命令,因此你的命令必须要是外部命令才行。

    # 1. 先编辑一支会『睡著 500 秒』的程序:
    [root@www ~]# vim sleep500.sh
    #!/bin/bash
    /bin/sleep 500s
    /bin/echo "I have slept 500 seconds."
    
    # 2. 丢到后台中去运行,并且立刻注销系统:
    [root@www ~]# chmod a+x sleep500.sh
    [root@www ~]# nohup ./sleep500.sh &
    [1] 5074
    [root@www ~]# nohup: appending output to ‘nohup.out’ <==会告知这个信息!
    [root@www ~]# exit

    3 进程管理

    3.1 进程查看

    利用静态的 ps 或者是动态的 top,还能以 pstree 来查阅程序树之间的关系。

    3.1.1 ps:将某个时间点的程序运行情况选取下来

    [root@www ~]# ps aux  <==观察系统所有的程序数据
    [root@www ~]# ps -lA  <==也是能够观察所有系统的数据
    [root@www ~]# ps axjf <==连同部分程序树状态
    选项与参数:
    -A  :所有的 process 均显示出来,与 -e 具有同样的效用;
    -a  :不与 terminal 有关的所有 process ;
    -u  :有效使用者 (effective user) 相关的 process ;
    x   :通常与 a 这个参数一起使用,可列出较完整资讯。
    输出格式规划:
    l   :较长、较详细的将该 PID 的的资讯列出;
    j   :工作的格式 (jobs format)
    -f  :做一个更为完整的输出。

    直接背两个比较不同的选项, 一个是只能查阅自己 bash 程序的『 ps -l 』一个则是可以查阅所有系统运行的程序『 ps aux 』!

    3.1.2 仅观察自己的“ bash” 相关程序: ps -l

    [root@www ~]$ ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S   503  2449  2448  0  80   0 - 27592 do_wai pts/3    00:00:00 bash
    4 S   503  2641  2640  0  80   0 - 27592 do_wai pts/3    00:00:00 bash
    0 R   503  2661  2641  0  80   0 - 27437 -      pts/3    00:00:00 ps

    3.1.3 查看系统所有程序: ps aux

    3.1.4 动态查看进程:top

    [root@www ~]# top [-d 数字] | top [-bnp]
    选项与参数:
    -d  :后面可以接秒数,就是整个程序画面升级的秒数。默认是 5 秒;
    -b  :以批量的方式运行 top ,还有更多的参数可以使用喔!
          通常会搭配数据流重导向来将批量的结果输出成为文件。
    -n  :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
    -p  :指定某些个 PID 来进行观察监测而已。
    在 top 运行过程当中可以使用的按键命令:
        ? :显示在 top 当中可以输入的按键命令;
        P :以 CPU 的使用资源排序显示;
        M :以 Memory 的使用资源排序显示;
        N :以 PID 来排序喔!
        T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
        k :给予某个 PID 一个讯号  (signal)
        r :给予某个 PID 重新制订一个 nice 值。
        q :离开 top 软件的按键。

    3.1.5 pstree

    [root@www ~]# pstree [-A|U] [-up]
    选项与参数:
    -A  :各程序树之间的连接以 ASCII 字节来连接;
    -U  :各程序树之间的连接以万国码的字节来连接。在某些终端介面下可能会有错误;
    -p  :并同时列出每个 process 的 PID-u  :并同时列出每个 process 的所属帐号名称。

    3.2 进程管理

    程序之间是可以互相控制的!举例来说,你可以关闭、重新启动服务器软件,服务器软件本身是个程序,你既然可以让她关闭或启动,当然就是可以控制该程序啦!那么程序是如何互相管理的呢?其实是透过给予该程序一个讯号 (signal) 去告知该程序你想要让她作什么!因此这个讯号就很重要!

    那么到底有多少 signal 呢? 你可以使用 kill -l (小写的 L ) 或者是 man 7 signal 都可以查询到!主要的讯号代号与名称对应及内容是:

    代号名称内容
    1SIGHUP启动被终止的程序,可让该 PID重新读取自己的配置档,类似重新启动
    2SIGINT相当于用键盘输入 [ctrl]-c 来中断一个程序的进行
    9SIGKILL代表强制中断一个程序的进
    15SIGTERM以正常的结束程序来终止该程序
    17SIGCHLD相当于用键盘输入 [ctrl]-z 来暂停一个程序的进行

    注意:
    1. 必须记住1,9,15;
    1. SIGKILL代表强制中断一个程序的进行,如果该程序进行到一半, 那么尚未完成的部分可能会有『半产品』产生,类似 vim会有 .filename.swp 保留下来;
    1. SIGCHLD 以正常的结束程序来终止该程序。由於是正常的终止, 所以后续的动作会将他完成。不过,如果该程序已经发生问题,就是无法使用正常的方法终止时, 输入这个 signal 也是没有用的。

    3.2.1 kill -signal PID(使用的多)

    3.2.2 killall -signal 命令名称

    例如

    [root@www ~]# killall svnserve
    [root@www ~]# killall [-iIe] [command name]
    选项与参数:
    -i  :interactive 的意思,互动式的,若需要删除时,会出现提示字节给使用者;
    -e  :exact 的意思,表示『后面接的 command name 要一致』,但整个完整的命令
          不能超过 15 个字节。
    -I  :命令名称(可能含参数)忽略大小写。
    
    范例一:给予 syslogd 这个命令启动的 PID 一个 SIGHUP 的讯号
    [root@www ~]# killall -1 syslogd
    # 如果用 ps aux 仔细看一下,syslogd 才是完整的命令名称。但若包含整个参数,
    # 则 syslogd -m 0 才是完整的呢!
    
    范例二:强制终止所有以 httpd 启动的程序
    [root@www ~]# killall -9 httpd
    
    范例三:依次询问每个 bash 程序是否需要被终止运行!
    [root@www ~]# killall -i -9 bash
    Kill bash(16905) ? (y/N) n <==这个不杀!
    Kill bash(17351) ? (y/N) y <==这个杀掉!
    # 具有互动的功能!可以询问你是否要删除 bash 这个程序。要注意,若没有 -i 的参数,
    # 所有的 bash 都会被这个 root 给杀掉!包括 root 自己的 bash 喔! ^_^

    3.3 进程执行的顺序

    3.3.1 Priority 与 Nice 值

    Linux 给予程序一个所谓的优先运行序 (priority, PRI), 这个 PRI 值越低代表越优先的意思。不过这个 PRI 值是由核心动态调整的, 使用者无法直接调整 PRI 值的。先来瞧瞧 PRI 曾在哪里出现?

    [root@www ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0 18625 18623  2  75   0 -  1514 wait   pts/1    00:00:00 bash
    4 R     0 18653 18625  0  77   0 -  1102 -      pts/1    00:00:00 ps

    由于 PRI 是核心动态调整的,我们使用者也无权去干涉 PRI !那如果你想要调整程序的优先运行序时,就得要透过 Nice 值了!Nice 值就是上表的 NI 啦!一般来说, PRI 与 NI 的相关性如下:

    PRI(new) = PRI(old) + nice

    不过你要特别留意到,如果原本的 PRI 是 50 ,并不是我们给予一个 nice = 5 ,就会让 PRI 变成 55 喔! 因为 PRI 是系统『动态』决定的,所以,虽然 nice 值是可以影响 PRI ,不过, 最终的 PRI 仍是要经过系统分析后才会决定的。另外, nice 值是有正负的喔,而既然 PRI 越小越早被运行, 所以,当 nice 值为负值时,那么该程序就会降低 PRI 值,亦即会变的较优先被处理。

    此外,你必须要留意到:

    1. nice 值可调整的范围为 -20 ~ 19 ;
    2. root 可随意调整自己或他人程序的 Nice 值,且范围为 -20 ~ 19 ;
    3. 一般使用者仅可调整自己程序的 Nice 值,且范围仅为 0 ~ 19 (避免一般用户抢占系统资源);
    4. 一般使用者仅可将 nice 值越调越高,例如本来 nice 为 5 ,则未来仅能调整到大于 5;
    5. 这也就是说,要调整某个程序的优先运行序,就是『调整该程序的 nice 值』啦

    那么如何给予某个程序 nice 值呢?有两种方式,分别是:

    1. 一开始运行程序就立即给予一个特定的 nice 值:用 nice 命令;
    2. 调整某个已经存在的 PID 的 nice 值:用 renice 命令。

    3.3.2 nice :新运行的命令即给予新的 nice 值

    [root@www ~]# nice [-n 数字] command
    选项与参数:
    -n  :后面接一个数值,数值的范围 -20 ~ 19。
    
    范例一:用 root 给一个 nice 值为 -5 ,用於运行 vi ,并观察该程序!
    [root@www ~]# nice -n -5 vi &
    [1] 18676
    [root@www ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0 18625 18623  0  75   0 -  1514 wait   pts/1    00:00:00 bash
    4 T     0 18676 18625  0  72  -5 -  1242 finish pts/1    00:00:00 vi
    4 R     0 18678 18625  0  77   0 -  1101 -      pts/1    00:00:00 ps
    # 原本的 bash PRI 为 75  ,所以 vi 默认应为 75。不过由於给予 nice  为 -5 ,
    # 因此 vi 的 PRI 降低了!但并非降低到 70 ,因为核心还会动态调整!
    
    [root@www ~]# kill -9 %1 <==测试完毕将 vi 关闭

    3.3.3 renice :已存在程序的 nice 重新调整

    [root@www ~]# renice [number] PID
    选项与参数:
    PID :某个程序的 ID 啊!
    
    范例一:找出自己的 bash PID ,并将该 PID 的 nice 调整到 10
    [root@www ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0 18625 18623  0  75   0 -  1514 wait   pts/1    00:00:00 bash
    4 R     0 18712 18625  0  77   0 -  1102 -      pts/1    00:00:00 ps
    
    [root@www ~]# renice 10 18625
    18625: old priority 0, new priority 10
    
    [root@www ~]# ps -l
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    4 S     0 18625 18623  0  85  10 -  1514 wait   pts/1    00:00:00 bash
    4 R     0 18715 18625  0  87  10 -  1102 -      pts/1    00:00:00 ps

    3.4 系统资源的查看

    3.4.1 free :观察内存使用情况

    [root@www ~]# free [-b|-k|-m|-g] [-t]
    选项与参数:
    -b  :直接输入 free 时,显示的单位是 Kbytes,我们可以使用 b(bytes), m(Mbytes)
          k(Kbytes), 及 g(Gbytes) 来显示单位喔!
    -t  :在输出的最终结果,显示实体内存与 swap 的总量。
    
    范例一:显示目前系统的内存容量
    [root@www ~]# free -m
              total       used    free   shared   buffers    cached
    Mem:        725        666      59        0       132       287
    -/+ buffers/cache:     245     479
    Swap:       996          0     996

    仔细看看,我的系统当中有 725MB 左右的实体内存,我的 swap 有 1GB 左右, 那我使用 free -m 以 MBytes 来显示时,就会出现上面的资讯。

    Mem 那一行显示的是实体内存的量, Swap 则是虚拟内存的量。 total 是总量, used 是已被使用的量, free 则是剩余可用的量。 后面的 shared/buffers/cached 则是在已被使用的量当中,用来作为缓冲及缓存的量。

    仔细的看到范例一的输出喔,我们的 Linux 测试用主机是很平凡的,根本没有什么工作, 但是,我的实体内存是几乎被用光光的情况呢!不过,至少有 132MB 用在缓冲记忆 (buffers) 工作, 287MB 则用在缓存 (cached) 工作,也就是说,系统是『很有效率的将所有的内存用光光』, 目的是为了让系统的存取效能加速啦!

    很多人都会问到这个问题:“我的系统明明很轻松,为何内存会被用光光?” 被用光是正常的!而需要注意的反而是 swap 的量。一般来说, swap 最好不要被使用,尤其 swap 最好不要被使用超过 20% 以上, 如果您发现 swap 的用量超过 20% ,那么,最好还是买实体内存来插吧! 因为, Swap 的效能跟实体内存实在差很多,而系统会使用到 swap , 绝对是因为实体内存不足了才会这样做的!

    Linux 系统为了要加速系统效能,所以会将最常使用到的或者是最近使用到的文件数据缓存 (cache) 下来, 这样未来系统要使用该文件时,就直接由内存中搜寻取出,而不需要重新读取硬盘,速度上面当然就加快了! 因此,实体内存被用光是正常的!

    3.4.2 uname:查阅系统与核心相关信息

    [root@www ~]# uname [-asrmpi]
    选项与参数:
    -a  :所有系统相关的资讯,包括底下的数据都会被列出来;
    -s  :系统核心名称
    -r  :核心的版本
    -m  :本系统的硬件名称,例如 i686 或 x86_64 等;
    -p  :CPU 的类型,与 -m 类似,只是显示的是 CPU 的类型!
    -i  :硬件的平台 (ix86)
    
    范例一:输出系统的基本资讯
    [root@www ~]# uname -a
    Linux www.vbird.tsai 2.6.18-92.el5 #1 SMP Tue Jun 10 18:49:47 EDT 2008 i686
    i686 i386 GNU/Linux

    uname 可以列出目前系统的核心版本、 主要硬件平台以及 CPU 类型等等的信息。以上面范例一的状态来说,我的 Linux 主机使用的核心名称为 Linux,而主机名称为 www.vbird.tsai,核心的版本为 2.6.18-92.el5 ,该核心版本创建的日期为 2008/6/10,适用的硬件平台为 i386 以上等级的硬件平台。

    3.4.3 uptime:查看系统启动时间与工作负载

    这个命令很单纯呢!就是显示出目前系统已经启动多久的时间,以及 1, 5, 15 分钟的平均负载就是了。还记得 top 吧?没错啦!这个 uptime 可以显示出 top 画面的最上面一行!

    [root@www ~]# uptime
     15:39:13 up 8 days, 14:52,  1 user,  load average: 0.00, 0.00, 0.00
    # top 这个命令已经谈过相关资讯,不再聊!

    3.4.4 netstat :追踪网络

    [root@www ~]# netstat -[atunlp]
    选项与参数:
    -a  :将目前系统上所有的连线、监听、Socket 数据都列出来
    -t  :列出 tcp 网络封包的数据
    -u  :列出 udp 网络封包的数据
    -n  :不以程序的服务名称,以端口号 (port number) 来显示;
    -l  :列出目前正在网络监听 (listen) 的服务;
    -p  :列出该网络服务的程序 PID 
    
    范例一:列出目前系统已经创建的网络连线与 unix socket 状态
    [root@www ~]# netstat
    Active Internet connections (w/o servers) <==与网络较相关的部分
    Proto Recv-Q Send-Q Local Address        Foreign Address      State
    tcp        0    132 192.168.201.110:ssh  192.168.:vrtl-vmf-sa ESTABLISHED
    Active UNIX domain sockets (w/o servers)  <==与本机的程序自己的相关性(非网络)
    Proto RefCnt Flags       Type       State         I-Node Path
    unix  20     [ ]         DGRAM                    9153   /dev/log
    unix  3      [ ]         STREAM     CONNECTED     13317  /tmp/.X11-unix/X0
    unix  3      [ ]         STREAM     CONNECTED     13233  /tmp/.X11-unix/X0
    unix  3      [ ]         STREAM     CONNECTED     13208  /tmp/.font-unix/fs7100
    ....(中间省略)....

    范例二:找出目前系统上已在监听的网络连线及其 PID

    [root@www ~]# netstat -ltnp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address    Foreign Address  State   PID/Program name
    tcp        0      0 127.0.0.1:2208   0.0.0.0:*        LISTEN  4566/hpiod
    tcp        0      0 0.0.0.0:111      0.0.0.0:*        LISTEN  4328/portmap
    tcp        0      0 127.0.0.1:631    0.0.0.0:*        LISTEN  4597/cupsd
    tcp        0      0 0.0.0.0:728      0.0.0.0:*        LISTEN  4362/rpc.statd
    tcp        0      0 127.0.0.1:25     0.0.0.0:*        LISTEN  4629/sendmail: 
    tcp        0      0 127.0.0.1:2207   0.0.0.0:*        LISTEN  4571/python
    tcp        0      0 :::22            :::*             LISTEN  4586/sshd
    # 除了可以列出监听网络的介面与状态之外,最后一个栏位还能够显示此服务的
    # PID 号码以及程序的命令名称喔!例如最后一行的 4586 就是该 PID
    
    范例三:将上述的本地端 127.0.0.1:631 那个网络服务关闭的话?
    [root@www ~]# kill -9 4597
    [root@www ~]# killall -9 cupsd

    在使用netstat不知道参数时,可以使用口诀:查看所有监听的(l),tcp协议的(t),显示端口的(n),显示PID的(p)

    3.4.5 dmesg :分析核心产生的信息

    系统在启动的时候,内核会去检测系统的硬件,你的某些硬件到底有没有被捉到,那就与这个时候的侦测有关。 但是这些侦测的过程要不是没有显示在屏幕上,就是很飞快的在萤幕上一闪而逝!能不能把核心侦测的信息捉出来瞧瞧? 可以的,那就使用 dmesg!

    所有内核检测的信息,不管是启动时候还是系统运行过程中,反正只要是内核产生的信息,都会被记录到内存中的某个保护区段。 dmesg 这个命令就能够将该区段的信息读出来的!因为信息实在太多了,所以运行时可以加入这个管线命令『 | more 』来使画面暂停!

    范例一:输出所有的核心启动时的资讯
    [root@www ~]# dmesg | more
    
    范例二:搜寻启动的时候,硬盘的相关信息为何?
    [root@www ~]# dmesg | grep -i hd
        ide0: BM-DMA at 0xd800-0xd807, BIOS settings: hda:DMA, hdb:DMA
        ide1: BM-DMA at 0xd808-0xd80f, BIOS settings: hdc:pio, hdd:pio
    hda: IC35L040AVER07-0, ATA DISK drive
    hdb: ASUS DRW-2014S1, ATAPI CD/DVD-ROM drive
    hda: max request size: 128KiB
    ....(底下省略)....

    4 特殊文件与程序

    4.1 具有 SUID/SGID 权限的命令运行状态

    SUID 的权限其实与程序的相关性非常的大!为什么呢?先来看看 SUID 的程序是如何被一般使用者运行,且具有什么特色呢?

    • SUID 权限仅对二进位程序(binary program)有效;
    • 运行者对於该程序需要具有 x 的可运行权限;
    • 本权限仅在运行该程序的过程中有效 (run-time);
    • 运行者将具有该程序拥有者 (owner) 的权限。

    所以说,整个 SUID 的权限会生效是由于『具有该权限的程序被触发』,而我们知道一个程序被触发会变成程序, 所以,运行者可以具有程序拥有者的权限就是在该程序变成程序的那个时候。前面还没谈到程序的概念, 所以你或许那时候会觉得很奇怪,为啥运行了 passwd 后你就具有 root 的权限呢?不都是一般使用者运行的吗? 这是因为你在触发 passwd 后,会取得一个新的程序与 PID,该 PID 产生时透过 SUID 来给予该 PID 特殊的权限配置啦! 我们使用 dmtsai 登陆系统且运行 passwd 后,透过工作控制来理解一下!

    [dmtsai@www ~]$ passwd
    Changing password for user dmtsai.
    Changing password for dmtsai
    (current) UNIX password: <==这里按下 [ctrl]-z 并且按下 [enter]
    [1]+  Stopped                 passwd
    
    [dmtsai@www ~]$ pstree -u
    init-+-acpid
    ....(中间省略)....
         |-sshd---sshd---sshd(dmtsai)---bash-+-more
         |                                   |-passwd(root)
         |                                   `-pstree
    ....(底下省略)....

    从上表的结果我们可以发现,底线的部分是属於 dmtsai 这个一般帐号的权限,特殊字体的则是 root 的权限! 但你看到了, passwd 确实是由 bash 衍生出来的!不过就是权限不一样!透过这样的解析, 你也会比较清楚为何不同程序所产生的权限不同了吧!这是由於『SUID 程序运行过程中产生的程序』的关系啦!

    那么既然 SUID/SGID 的权限是比较可怕的,您该如何查询整个系统的 SUID/SGID 的文件呢? 应该是还不会忘记吧?使用 find 即可啊!

    find / -perm +6000

    4.2 /proc/* :内存数据存放位置

    其实,我们之前提到的所谓的程序都是在内存当中嘛!而内存当中的数据又都是写入到 /proc/* 这个目录下的,所以,我们当然可以直接观察 /proc 这个目录当中的文件啊! 如果你观察过 /proc 这个目录的话,应该会发现他有点像这样:

    [root@www ~]# ll /proc
    dr-xr-xr-x  5 root      root              0 Mar 11 08:46 1
    dr-xr-xr-x  5 root      root              0 Mar 11 00:46 10
    dr-xr-xr-x  5 root      root              0 Mar 11 00:46 11
    ....(中间省略)....
    -r--r--r--  1 root      root              0 Mar 20 12:11 uptime
    -r--r--r--  1 root      root              0 Mar 20 12:11 version
    -r--r--r--  1 root      root              0 Mar 20 12:11 vmstat
    -r--r--r--  1 root      root              0 Mar 20 12:11 zoneinfo

    基本上,目前主机上面的各个程序的 PID 都是以目录的型态存在于 /proc 当中。 举例来说,我们启动所运行的第一支程序 init 他的 PID 是 1 , 这个 PID 的所有相关资讯都写入在 /proc/1/* 当中!若我们直接观察 PID 为 1 的数据好了,他有点像这样:

    [root@www ~]# ll /proc/1
    dr-xr-xr-x 2 root root 0 Mar 12 11:04 attr
    -r-------- 1 root root 0 Mar 17 14:32 auxv
    -r--r--r-- 1 root root 0 Mar 17 14:32 cmdline  <==就是命令串
    -rw-r--r-- 1 root root 0 Mar 17 14:32 coredump_filter
    -r--r--r-- 1 root root 0 Mar 17 14:32 cpuset
    lrwxrwxrwx 1 root root 0 Mar 17 14:32 cwd -> /
    -r-------- 1 root root 0 Mar 17 14:32 environ  <==一些环境变量
    lrwxrwxrwx 1 root root 0 Mar 17 14:32 exe -> /sbin/init  <==实际运行的命令
    ....(以下省略)....

    里面的数据还挺多的,不过,比较有趣的其实是两个文件,分别是:

    • cmdline:这个程序被启动的命令串;

    - environ:这个程序的环境变量内容。

    相关的文件与对应的内容是这样的:

    档名文件内容
    /proc/cmdline加载 kernel 时所下达的相关参数!可了解系统是如何启动的
    /proc/cpuinfo本机的 CPU 的相关资讯,包含频率、类型与运算功能等
    /proc/devices记录了系统各个主要装置的主要设备代码,与 mknod 有关
    /proc/filesystems目前系统已经加载的文件系
    /proc/interrupts目前系统上面的 IRQ 分配状态
    /proc/ioports目前系统上面各个设备所配置的 I/O 位址
    /proc/kcore这个就是内存的大小啦!好大对吧!但是不要读他啦!
    /proc/loadavgtop 以及 uptime,上头的三个平均数值就是记录在此!
    /proc/meminfo使用 free 列出的内存资讯,嘿嘿!在这里也能够查阅到!
    /proc/modules目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦!
    /proc/mounts系统已经挂载的数据,就是用 mount 这个命令呼叫出来的数据啦!
    /proc/swaps到底系统挂加载的内存在哪里?呵呵!使用的分区 就记录在此啦!
    /proc/partitions使用 fdisk -l 会出现目前所有的分区 吧?在这个文件当中也有纪录
    /proc/pci在 PCI 总线上面,每个设备的详细情况!可用 lspci 来查阅!
    /proc/uptime就是用 uptime 的时候,会出现的资讯啦!
    /proc/version核心的版本,就是用 uname -a 显示的内容啦!
    /proc/bus/*一些总线的设备,还有 U盘 设备也记录在此喔!
    展开全文
    u013733747 2018-07-01 17:50:31
  • 平时收集些用到的命令 方便使用1: ls -lrt 时间排序 展示2:nslookup 查看dns解析3:lsof -p 进程号lsof `which httpd` //那个进程在使用apache的可执行文件lsof /etc/passwd //那个进程在占用/etc/passwdlsof /...

    平时收集些用到的命令 方便使用

    1:  ls -lrt 按时间排序  展示

    2:nslookup  查看dns解析

    3:lsof -p 进程号

    lsof `which httpd` //那个进程在使用apache的可执行文件

    lsof /etc/passwd //那个进程在占用/etc/passwd

    lsof /dev/hda6 //那个进程在占用hda6

    lsof /dev/cdrom //那个进程在占用光驱

    lsof -c sendmail //查看sendmail进程的文件使用情况

    lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn

    lsof -p 30297 //显示那些文件被pid为30297的进程打开

    lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列

    lsof -u1000 //查看uid是100的用户的进程的文件使用情况

    lsof -utony //查看用户tony的进程的文件使用情况

    lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思)

    lsof -i //显示所有打开的端口

    lsof -i:80 //显示所有打开80端口的进程

    lsof -i -U //显示所有打开的端口和UNIX domain文件

    lsof -i [email protected][url]www.akadia.com:123 //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接

    lsof -i [email protected]:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)

    lsof -i [email protected]:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数

    linux_常用命令_(ls, lsof,nslookup)_查看文件按照时间排序

    时间: 08-04

    展开全文
    weixin_42366752 2021-05-11 23:15:38
  • 关键字: linux进程、杀进程、起进程 1.查进程  ps命令查找与进程相关的PID号:  ps a 显示现行终端机下的所有程序,包括其他用户的程序。  ps -A 显示所有程序。  ps c 列出程序时,显示每...
    关键字: linux 查进程、杀进程、起进程
    1.查进程
        ps命令查找与进程相关的PID号:
        ps a 显示现行终端机下的所有程序,包括其他用户的程序。
        ps -A 显示所有程序。
        ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
        ps -e 此参数的效果和指定"A"参数相同。
        ps e 列出程序时,显示每个程序所使用的环境变量。
        ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
        ps -H 显示树状结构,表示程序间的相互关系。
        ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
        ps s 采用程序信号的格式显示程序状况。
        ps S 列出程序时,包括已中断的子程序资料。
        ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
        ps u 以用户为主的格式来显示程序状况。
        ps x 显示所有程序,不以终端机来区分。
       
        最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
        ps aux | grep program_filter_word,ps -ef |grep tomcat

    ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。
       
    2.杀进程
       使用kill命令结束进程:kill xxx
       常用:kill -9 324
       Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME

    3.进入到进程的执行文件所在的路径下,执行文件 ./文件名

    附:

    这是本人花了两天时间整理得来的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf手册下载 

    1. 更改档案拥有者 
    命令 : chown [-cfhvR] [--help] [--version] user[:group] file... 
    功能 : 更改文件或者文件夹的拥有者 
    参数格式 : 
          user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group) 
             -c : 若该档案拥有者确实已经更改,才显示其更改动作 
             -f : 若该档案拥有者无法被更改也不要显示错误讯息 
             -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案 
             -v : 显示拥有者变更的详细资料 
             -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更) 

    例如:chown -R oracle:oinstall /oracle/u01/app/oracle  
          更改目录拥有者为oracle 

    2. 修改权限 
        命令:chmod (change mode) 
        功能:改变文件的读写和执行权限。有符号法和八进制数字法。 
        选项:(1)符号法: 
      命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename 
              u (user)   表示用户本人。 
              g (group)  表示同组用户。 
              o (oher)   表示其他用户。 
              a (all)    表示所有用户。 
              +          用于给予指定用户的许可权限。 
              -          用于取消指定用户的许可权限。 
              =          将所许可的权限赋给文件。 
              r (read)   读许可,表示可以拷贝该文件或目录的内容。 
              w (write)  写许可,表示可以修改该文件或目录的内容。 
              x (execute)执行许可,表示可以执行该文件或进入目录。 
      
              (2)八进制数字法:   
      命令格式:chmod abc file 
      其中a,b,c各为一个八进制数字,分别表示User、Group、及Other的权限。 
              4 (100)    表示可读。 
              2 (010)    表示可写。 
              1 (001)    表示可执行。 
      若要rwx属性则4+2+1=7; 
      若要rw-属性则4+2=6; 
      若要r-x属性则4+1=5。 

        例如:# chmod a+rx filename 
                让所有用户可以读和执行文件filename。 
              # chmod go-rx filename 
                取消同组和其他用户的读和执行文件filename的权限。 
              # chmod 741 filename 
                让本人可读写执行、同组用户可读、其他用户可执行文件filename。 
      # chmod -R 755 /home/oracle 
        递归更改目录权限,本人可读写执行、同组用户可读可执行、其他用户可读可执行 

    3. 修改文件日期 
        命令:touch 
        格式:touch filenae 
        功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。 
        例如:% touch file 

    4. 链接文件 
        命令:ln (link) 
        格式:ln [option] filename linkname 
              ln [option] directory pathname 
        功能:为文件或目录建立一个链。其中,filename和directory是源文件名和 
              源目录名;linkname和pathname分别表示与源文件或源目录名相链接的 
              文件或目录。 
        选项:-s  为文件或目录建立符号链接。不加-s表示为文件或目录建立硬链接 
        注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出 
              现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。 
        例如:% ln -s filename linkname 

    5. 显示日期 
        命令:date 
        例如:% date 

    6. 显示日历 
        命令:cal (calendar) 
        格式:cal [month] year 
        功能:显示某年内指定的日历 
        例如:% cal 1998  

    7. 显示文件头部 
        命令:head 
        格式:head [option] filename 
        功能:显示文件的头部 
        选项:缺省  显示文件的头10行。 
              -i    显示文件的开始 i行。 
        例如:% head filename 

    8. 显示文件尾部 
        命令:tail 
        格式:tail [option] filename 
        功能:显示文件的尾部 
        选项:缺省  显示文件的末10行。 
              -i    显示文件最后 i行。 
              +i    从文件的第i行开始显示。 
        例如:% tail filename 

    9. 显示用户标识 
        命令:id 
        格式:id [option] [user] 
        功能:显示用户标识及用户所属的所有组。 
        选项:-a 显示用户名、用户标识及用户所属的所有组 
        注释: 
        例如:% id username 

    10. 查看当前登录的用户 
        命令:users 

    11. 显示都谁登录到机器上 
        命令:who 
        格式:who 
        功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。 
        例如:% who 

    12. 显示当前终端上的用户名 
        命令:whoami 
        格式:whoami 
        功能:显示出当前终端上使用的用户。 
        例如:% whoami 

    13. 寻找文件 
        命令:find 
        格式:find pathname [option] expression 
        功能:在所给的路经名下寻找符合表达式相匹配的文件。 
        选项:-name     表示文件名 
              -user     用户名,选取该用户所属的文件 
              -size     按大小查找,以block为单位,一个block是512B 
              -mtime n  按最后一次修改时间查找,选取n天内被修改的文件 
      -perm     按权限查找 
              -type     按文件类型查找 
      -atime    按最后一次访问时间查找 

        例如:% find ./ -name '*abc*' -print 

    14. 搜索文件中匹配符 
        命令:grep 
        格式:grep [option] pattern filenames 
        功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。 
        选项:-i    匹配时忽略大小写 
      -v 找出模式失配的行 

        例如:% grep -i 'java*' ./test/run.sh 

    15. 统计文件字数 
        命令:wc [option] filename 
        功能:统计文件中的文件行数、字数和字符数。 
        选项:-l 统计文件的行数 
    -w 统计文件的单词数 
    -c 统计文件的字符数 
        注释:若缺省文件名则指标准输入 
        例如:% wc -c ./test/run.sh 

    16. 显示磁盘空间 
        命令:df (disk free) 
        格式:df [option] 
        功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总 
              字节数、已用字节数、剩余字节数占用百分比。 
        选项: 
    -a:显示全部的档案系统和各分割区的磁盘使用情形 
    -i:显示i -nodes的使用量 
    -k:大小用k来表示 (默认值) 
    -t:显示某一个档案系统的所有分割区磁盘使用量 
    -x:显示不是某一个档案系统的所有分割区磁盘使用量 
    -T:显示每个分割区所属的档案系统名称 
    -h: 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。 
        注释: 
        例如:% df -hi 

    17. 查询档案或目录的磁盘使用空间 
        命令:du (disk usage) 
        格式:du [option] [filename] 
        功能:以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小 
        选项: 
    -a:显示全部目录和其次目录下的每个档案所占的磁盘空间 
    -b:大小用bytes来表示 (默认值为k bytes) 
    -c:最后再加上总计 (默认值) 
    -s:只显示各档案大小的总合 
    -x:只计算同属同一个档案系统的档案 
    -L:计算所有的档案大小 
    -h: 表示档案系统大小使用 GB、MB 等易读的格式。 
        例如:% du -a 
    % du -sh /etc 只显示该目录的总合 
    % du /etc | sort -nr | more 统计结果用sort 指令进行排序, 
    sort 的参数 -nr 表示要以数字排序法进行反向排序。 

    18. 显示进程 
        命令:ps 
        格式:ps [option] 
        功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。 
        选项: 
      -a 显示所有进程信息 
      -U uidlist 列出这个用户的所有进程 
              -e 显示当前运行的每一个进程信息 
              -f 显示一个完整的列表 
      -x 显示包括没有终端控制的进程状况 。 
        注释: 
        例如:% ps -ef 
      % ps -aux 然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。 

    19. 终止进程 
        命令:kill 
        格式:kill [option] pid 
        功能:向指定的进程送信号或终止进程。kill指令的用途是送一个signal给某一个process, 
        因为大部份送的都是用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill  
        选项:-9  强行终止进程 
        注释:pid标示进程号,可由ps命令得到。 
        例如:% kill -9 pid 
        你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形请参阅 man kill。 

    20. 查看自己的IP地址 
        命令:ifconfig 
        格式:ifconfig -a 
       
    21. 查看路由表 
        命令:netstat 
        格式:netstat -rn 

    22. 远程登录 
        命令:telnet 
        格式:telnet hostname 

    23. 文件传输 
        命令:ftp (file transfer program) 
        格式:ftp hostname 
        功能:网络文件传输及远程操作。 
        选项:ftp命令: 
               cd [dirname]  进入远程机的目录 
               lcd [dirname] 设置本地机的目录 
               dir/ls        显示远程的目录文件 
               bin           以二进制方式进行传输 
       asc           以文本文件方式进行传输 
               get/mget      从远程机取一个或多个文件 
               put/mput      向远程机送一个或多个文件 
               prompt        打开或关闭多个文件传送时的交互提示 
               close         关闭与远程机的连接 
               quit          退出ftp 
       !/exit ftp登陆状态下,!表示暂时退出ftp状态回到本地目录,exit表示返回ftp状态 
        注释: 
        例如:% ftp hostname 

    24. 查看自己的电子邮件 
        命令:mailx 
        格式:mailx 
        选项: 
    delete  删除 
    next    下一个 
    quit    退出 
             reply   回复    

    25. 回忆命令 
        命令:history 
        格式:history 
        功能:帮助用户回忆执行过的命令。 
        选项: 
        注释: 
        例如:% history 

    26. 网上对话 
        命令:talk 
        格式:talk username 
        功能:在网上与另一用户进行对话。 
        选项: 
        注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部 
              显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。 
        例如:% talk username 

    27. 允许或拒绝接受信息 
        命令:mesg (message) 
        格式:mesg [n/y] 
        功能:允许或拒绝其它用户向自己所用的终端发送信息。 
        选项:n 拒绝其它用户向自己所用的终端写信息 
              y 允许其它用户向自己所用的终端写信息(缺省值) 
        注释: 
        例如:% mesg n 

    28. 给其他用户写信息 
        命令:write 
        格式:write username [ttyname] 
        功能:给其他用户的终端写信息。 
        选项: 
        注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。 
        例如:write username 

    29. 创建、修改、删除用户和群组 
        a. 创建群组: 
    例如: groupadd oinstall    创建群组名为oinstall的组 
    groupadd -g 344 dba  
    创建组号是344的组,此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。 
        b. 修改群组: 
    groupmod:该命令用于改变用户组帐号的属性 
    groupmod –g 新的GID 用户组帐号名 
    groupmod –n 新组名 原组名:此命令由于改变用户组的名称 

        c. 删除群组: 
    groupdel 组名:该命令用于删除指定的组帐号 

        d. 新建用户: 
    命令: useradd [-d home] [-s shell] [-c comment] [-m [-k template]] 
    [-f inactive] [-e expire ] [-p passwd] [-r] name 
    主要参数 
    -c:加上备注文字,备注文字保存在passwd的备注栏中。  
    -d:指定用户登入时的启始目录。 
    -D:变更预设值。 
    -e:指定账号的有效期限,缺省表示永久有效。 
    -f:指定在密码过期后多少天即关闭该账号。 
    -g:指定用户所属的群组。 
    -G:指定用户所属的附加群组。 
    -m:自动建立用户的登入目录。 
    -M:不要自动建立用户的登入目录。 
    -n:取消建立以用户名称为名的群组。 
    -r:建立系统账号。 
    -s:指定用户登入后所使用的shell。 
    -u:指定用户ID号。 

    举例: # useradd -g oinstall -G dba oracle  创建Oracle用户 
        
        e. 删除用户 
    命令: userdel 用户名 
    删除指定的用户帐号 
    userdel –r 用户名(userdel 用户名;rm 用户名):删除指定的用户帐号及宿主目录 
    例:#useradd -g root kkk //把kkk用户加入root组里 

        f. 修改用户 
    命令: usermod
    修改已有用户的信息 
    usermod –l 旧用户名 新用户名: 修改用户名 
    usermod –L 用户名: 用于锁定指定用户账号,使其不能登陆系统 
    usermod –U 用户名: 对锁定的用户帐号进行解锁 
    passwd –d 用户名: 使帐号无口令,即用户不需要口令就能登录系统 
    例:#usermod -l user2 user1 //把用户user2改名为user1 

    30. 启动、关闭防火墙 
    永久打开或则关闭 
    chkconfig iptables on 
    chkconfig iptables off 
    即时生效:重启后还原 
    service iptables start 
    service iptables stop 
         或者: 
    /etc/init.d/iptables start 
    /etc/init.d/iptables stop 

    31. 启动VSFTP服务 
    即时启动: /etc/init.d/vsftpd start 
    即时停止: /etc/init.d/vsftpd stop 

    开机默认VSFTP服务自动启动: 
    方法一:(常用\方便) 
    [root@localhost etc]# chkconfig --list|grep vsftpd ( 查看情况) 
    vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off 
    [root@localhost etc]# chkconfig vsftpd on  (执行ON设置) 
    或者:方法二: 
    修改文件 /etc/rc.local , 把行/usr/local/sbin/vsftpd & 插入文件中,以实现开机自动启动。 

    32. vi技巧 
    a. 进入输入模式 
    新增 (append) 
    a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。 
    A:从光标所在列最後面的地方开始新增资料。 

    插入 (insert) 
    i:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。 
    I :从光标所在列的第一个非空白字元前面开始插入资料。 

    开始 (open) 
    o :在光标所在列下新增一列并进入输入模式。 
    O: 在光标所在列上方新增一列并进入输入模式。 
    b. 退出vi 
    在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命令,这个命令将不保存文件而直接退出vi。 

    c. 删除与修改文件的命令: 
    x:删除光标所在字符。 
    dd :删除光标所在的列。 
    r :修改光标所在字元,r 後接著要修正的字符。 
    R:进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。 
    s:删除光标所在字元,并进入输入模式。 
    S:删除光标所在的列,并进入输入模式。 

    d. 屏幕翻滚类命令 
    Ctrl+u: 向文件首翻半屏 
    Ctrl+d: 向文件尾翻半屏 
    Ctrl+f: 向文件尾翻一屏 
    Ctrl+b: 向文件首翻一屏 
    nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 

    e. 删除命令 
    ndw或ndW: 删除光标处开始及其后的n-1个字 
    do: 删至行首 
    d$: 删至行尾 
    ndd: 删除当前行及其后n-1行 
    x或X: 删除一个字符,x删除光标后的,而X删除光标前的 
    Ctrl+u: 删除输入方式下所输入的文本 

    f. 搜索及替换命令 
    /pattern: 从光标开始处向文件尾搜索pattern 
    ?pattern: 从光标开始处向文件首搜索pattern 
    n: 在同一方向重复上一次搜索命令 
    N: 在反方向上重复上一次搜索命令 
    :s/p1/p2/g: 将当前行中所有p1均用p2替代 
    :n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代 
    :g/p1/s//p2/g: 将文件中所有p1均用p2替换 

    g. 复制,黏贴 
    (1) 选定文本块,使用v进入可视模式;移动光标键选定内容 
    (2) 复制选定块到缓冲区,用y;复制整行,用yy 
    <div style="text-align%3
    展开全文
    qq_38042891 2017-04-20 08:37:14
  • gatieme 2016-06-17 16:45:51
  • yx511500623 2017-10-31 11:52:42
  • weixin_42092278 2019-04-14 16:54:25
  • qq_45048713 2020-05-28 15:00:41
  • ccj1985 2011-02-23 10:24:00
  • l471094842 2019-06-28 19:14:16
  • weixin_29442503 2021-05-13 03:04:41
  • u014753629 2018-04-09 11:00:52
  • manongxianfeng 2021-01-28 14:47:16
  • gatieme 2016-06-17 21:22:36
  • weixin_33344629 2021-05-09 01:21:50
  • weixin_39979245 2021-05-11 23:21:56
  • weixin_34375233 2011-09-08 16:41:57
  • weixin_42953006 2019-11-13 09:54:12
  • 175KB jingjingxujiayou 2014-06-23 19:29:54
  • qq_36119192 2018-08-29 19:22:15
  • u011436666 2017-06-23 18:42:06
  • AnneQiQi 2018-01-05 14:38:27
  • weixin_36422176 2021-05-11 09:03:24
  • fivedoumi 2015-12-25 11:03:15
  • weixin_43915810 2021-11-25 15:39:27

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,765
精华内容 9,906
关键字:

linux进程按日期排序

linux 订阅