OS第1次实验:熟练使用Linux命令并剖析ps命令

0.个人信息

  • 姓名:王璐璐
  • 学号:201821121037
  • 班级:计算1812

1.实验环境介绍

  •  操作系统:Ubuntu 16.04.6 LTS
  • 平台:虚拟

命令行的窗口如下:

 2.常用命令使用

1.mkdir +文件夹名:创建一个新的文件夹

wanglulu@wanglulu-VirtualBox:~$ ls
examples.desktop  公共的  模板  视频  图片  文档  下载  音乐  桌面
wanglulu@wanglulu-VirtualBox:~$ mkdir test
wanglulu@wanglulu-VirtualBox:~$ ls
examples.desktop  test  公共的  模板  视频  图片  文档  下载  音乐  桌面

 2.rmdir +文件夹名:删除一个文件夹

wanglulu@wanglulu-VirtualBox:~$ ls
examples.desktop  test  公共的  模板  视频  图片  文档  下载  音乐  桌面
wanglulu@wanglulu-VirtualBox:~$ rmdir test
wanglulu@wanglulu-VirtualBox:~$ ls
examples.desktop  公共的  模板  视频  图片  文档  下载  音乐  桌面

 3.touch +文件名:创建一个文件,这个文件可以是C文件,也可以是python文件,也可以是普通文件

wanglulu@wanglulu-VirtualBox:~/test$ touch hello.c
wanglulu@wanglulu-VirtualBox:~/test$ ls
hello.c
wanglulu@wanglulu-VirtualBox:~/test$ touch hello.py
wanglulu@wanglulu-VirtualBox:~/test$ ls
hello.c  hello.py
wanglulu@wanglulu-VirtualBox:~/test$ touch hello
wanglulu@wanglulu-VirtualBox:~/test$ ls
hello  hello.c  hello.py

 4.mv 文件路径1 文件路径2:将文件路径1指定的文件移动到文件路径2下,还可以用于重命名

wanglulu@wanglulu-VirtualBox:~/test$ ls
hello  hello.c  hello.py
wanglulu@wanglulu-VirtualBox:~/test$ mv hello ../test2
wanglulu@wanglulu-VirtualBox:~/test$ ls
hello.c  hello.py
wanglulu@wanglulu-VirtualBox:~/test$ cd ../test2
wanglulu@wanglulu-VirtualBox:~/test2$ ls
hello
wanglulu@wanglulu-VirtualBox:~/test2$ ls
hello.txt
wanglulu@wanglulu-VirtualBox:~/test2$ mv hello.txt world.txt
wanglulu@wanglulu-VirtualBox:~/test2$ ls
world.txt

 5.cat +文件名:读取文件中的内容

more +文件名:与cat功能相类似

less +文件名:将进入一个终端显示中显示文件内容

wanglulu@wanglulu-VirtualBox:~/test2$ cat world.txt
hello world !!!
wanglulu@wanglulu-VirtualBox:~/test2$ more world.txt
hello world !!!

6.pwd:显示当前目录的完整路径

wanglulu@wanglulu-VirtualBox:~/test2$ pwd
/home/wanglulu/test2

3.剖析ps命令

 (1)运行  man ps,得到以下结果(部分):

NAME
       ps - report a snapshot of the current processes.

SYNOPSIS
       ps [options]
EXAMPLES
       To see every process on the system using standard syntax:
          ps -e
          ps -ef
          ps -eF
          ps -ely

       To see every process on the system using BSD syntax:
          ps ax
          ps axu

       To print a process tree:
          ps -ejH
          ps axjf

       To get info about threads:
          ps -eLf
          ps axms

       To get security info:
          ps -eo euser,ruser,suser,fuser,f,comm,label
          ps axZ
          ps -eM

       To see every process running as root (real & effective ID) in user
       format:
          ps -U root -u root u

       To see every process with a user-defined format:
          ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
          ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
          ps -Ao pid,tt,user,fname,tmout,f,wchan

       Print only the process IDs of syslogd:
          ps -C syslogd -o pid=

       Print only the name of PID 42:
          ps -q 42 -o comm=

 (2)运行ps的各个参数,查看结果:

  • ps -ef:使用标准语法来查看每个进程(较常用)
wanglulu@wanglulu-VirtualBox:~$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 20:35 ?        00:00:01 /sbin/init splash
root         2     0  0 20:35 ?        00:00:00 [kthreadd]

ps -e:显示所有程序,使用-e选项的效果与指定“A”选项一样;在-e后加一个f,则会多显示UID,PPIP,C与STIME这4项栏位

wanglulu@wanglulu-VirtualBox:~$ ps -e
  PID TTY          TIME CMD
    1 ?        00:00:01 systemd
    2 ?        00:00:00 kthreadd

 ps -eF:显示的栏目比  ps -ef要多出SZ,RSS,PSR这3栏

wanglulu@wanglulu-VirtualBox:~$ ps -eF
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         1     0  0  5995  1600   0 20:35 ?        00:00:01 /sbin/init splas
root         2     0  0     0     0   0 20:35 ?        00:00:00 [kthreadd]

 ps -ely:对比以上几种参数,罗列的栏目更多

wanglulu@wanglulu-VirtualBox:~$ ps -ely
S   UID   PID  PPID  C PRI  NI   RSS    SZ WCHAN  TTY          TIME CMD
S     0     1     0  0  80   0  1600  5995 -      ?        00:00:01 systemd
S     0     2     0  0  80   0     0     0 -      ?        00:00:00 kthreadd
  •  ps -axu:使用BSD语法来查看每个进程(较常用)
wanglulu@wanglulu-VirtualBox:~$ ps -axu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  23980  1600 ?        Ss   20:35   0:01 /sbin/init spla
root         2  0.0  0.0      0     0 ?        S    20:35   0:00 [kthreadd]

 ps -ax:在-ax后增加一个u得到的信息更详细

wanglulu@wanglulu-VirtualBox:~$ ps -ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 /sbin/init splash
    2 ?        S      0:00 [kthreadd]
  •  ps axjf:打印出进程树 ;可以查看进程之前的管理,更加清晰
wanglulu@wanglulu-VirtualBox:~$ ps axjf
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    0     2     0     0 ?           -1 S        0   0:00 [kthreadd]
    2     3     0     0 ?           -1 I        0   0:00  \_ [kworker/0:0]
    2     4     0     0 ?           -1 I<       0   0:00  \_ [kworker/0:0H]
    2     6     0     0 ?           -1 I<       0   0:00  \_ [mm_percpu_wq]

 ps -ejH:通过空格来显示进程之前的管理

wanglulu@wanglulu-VirtualBox:~$ ps -ejH
  PID  PGID   SID TTY          TIME CMD
    2     0     0 ?        00:00:00 kthreadd
    3     0     0 ?        00:00:00   kworker/0:0
    4     0     0 ?        00:00:00   kworker/0:0H

    1     1     1 ?        00:00:01 systemd
  225   225   225 ?        00:00:00   systemd-journal
  248   248   248 ?        00:00:00   systemd-udevd
  582   582   582 ?        00:00:00   rsyslogd
  583   583   583 ?        00:00:00   systemd-logind
  590   590   590 ?        00:00:00   acpid
  595   595   595 ?        00:00:00   accounts-daemon
  608   608   608 ?        00:00:00   avahi-daemon
  650   608   608 ?        00:00:00     avahi-daemon
  627   627   627 ?        00:00:00   snapd
  •  ps -eLf:获取进程的相关信息
wanglulu@wanglulu-VirtualBox:~$ ps -eLf
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
root         1     0     1  0    1 20:35 ?        00:00:01 /sbin/init splash
root         2     0     2  0    1 20:35 ?        00:00:00 [kthreadd]

root       225     1   225  0    1 20:35 ?        00:00:00 /lib/systemd/systemd-
root       248     1   248  0    1 20:35 ?        00:00:00 /lib/systemd/systemd-
root       369     2   369  0    1 20:35 ?        00:00:00 [iprt-VBoxWQueue]
syslog     582     1   582  0    4 20:36 ?        00:00:00 /usr/sbin/rsyslogd -n
syslog     582     1   651  0    4 20:36 ?        00:00:00 /usr/sbin/rsyslogd -n

 ps axms:

wanglulu@wanglulu-VirtualBox:~$ ps axms
  UID   PID   PENDING   BLOCKED   IGNORED    CAUGHT STAT TTY        TIME COMMAND
    0     1  00000000         -         -         - -    ?          0:01 /sbin/i
    0     -  00000000 <28014a03  00001000 <800004ec Ss   -          0:01 -

  104   582  00000000         -         -         - -    ?          0:00 /usr/sb
  104     -  00000000  00000000  01001206 <80114801 Ssl  -          0:00 -
  104     -  00000000 <7febfeff  01001206 <80114801 Ssl  -          0:00 -
  104     -  00000000 <7febfeff  01001206 <80114801 Ssl  -          0:00 -
  104     -  00000000 <7febfeff  01001206 <80114801 Ssl  -          0:00 -
    0   583  00000000         -         -         - -    ?          0:00 /lib/sy
    0     -  00000000 <00000000 <00001000 <80000000 Ss   -          0:00 -
    0   590  00000000         -         -         - -    ?          0:00 /usr/sb
    0     -  00000000  00000000  00001000  00004007 Ss   -          0:00 -
    0   595  00000000         -         -         - -    ?          0:00 /usr/li
    0     -  00000000  00000000  00001000 <80004002 Ssl  -          0:00 -
    0     -  00000000 <7ffbfeff  00001000 <80004002 Ssl  -          0:00 -
    0     -  00000000  00000000  00001000 <80004002 Ssl  -          0:00 -

 除了以上这4种参数,还有其他的几种参数,在这里不一一展开了。

(3)解释命令中每个参数的含义,如-e,-f等,具体如下:

-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-A:显示所有程序。
-c:显示CLS和PRI栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:此选项的效果和指定"A"选项相同。
e:列出程序时,显示每个程序所使用的环境变量。
-f:显示UID,PPIP,C与STIME栏位。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。
g:显示现行终端机下的所有程序,包括群组领导者的程序。
-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
h:不显示标题列。
-H:显示树状结构,表示程序间的相互关系。
-j或j:采用工作控制的格式显示程序状况。
-l或l:采用详细的格式来显示程序状况。
L:列出栏位的相关信息。
-m或m:显示所有的执行绪。
n:以数字来表示USER和WCHAN栏位。
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码>:指定程序识别码,并列出该程序的状况。
p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
r:只列出现行终端机正在执行中的程序。
-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s:采用程序信号的格式显示程序状况。
S:列出程序时,包括已中断的子程序资料。
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
-T:显示现行终端机下的所有程序。
-u<用户识别码>:此选项的效果和指定"-U"选项相同。
u:以用户为主的格式来显示程序状况。
-U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
U<用户名称>:列出属于该用户的程序的状况。
v:采用虚拟内存的格式显示程序状况。
-V或V:显示版本信息。
-w或w:采用宽阔的格式来显示程序状况。 
x:显示所有程序,不以终端机来区分。
X:采用旧式的Linux i386登陆格式显示程序状况。
-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。
-<程序识别码>:此选项的效果和指定"p"选项相同。
--cols<每列字符数>:设置每列的最大字符数。
--columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
--cumulative:此选项的效果和指定"S"选项相同。
--deselect:此选项的效果和指定"-N"选项相同。
--forest:此选项的效果和指定"f"选项相同。
--headers:重复显示标题列。
--help:在线帮助。
--info:显示排错信息。
--lines<显示列数>:设置显示画面的列数。
--no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
--group<群组名称>:此选项的效果和指定"-G"选项相同。
--Group<群组识别码>:此选项的效果和指定"-G"选项相同。
--pid<程序识别码>:此选项的效果和指定"-p"选项相同。
--rows<显示列数>:此选项的效果和指定"--lines"选项相同。
--sid<阶段作业>:此选项的效果和指定"-s"选项相同。
--tty<终端机编号>:此选项的效果和指定"-t"选项相同。
--user<用户名称>:此选项的效果和指定"-U"选项相同。
--User<用户识别码>:此选项的效果和指定"-U"选项相同。
--version:此选项的效果和指定"-V"选项相同。
--widty<每列字符数>:此选项的效果和指定"-cols"选项相同。

 (4)解释运行  ps -axu命令后,出现的每个字段的含义

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  • USER:该进程对应的使用者帐号
  • PID:该进程的进程ID号
  • %CPU:该进程使用掉的 CPU 资源百分比
  • %MEM:该进程所占用的物理内存百分比
  • VSZ:该进程使用掉的虚拟内存量 (Kbytes)
  • RSS:该进程占用的固定的内存量 (Kbytes)
  • TTY:该进程是在哪个终端机上面运作,若与终端机无关,则显示“?” ;另外,“tty1-tty7”是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序
  • STAT:该程序目前的状态。其中,它的值有R,S,T,Z这4种。R :该程序目前正在运作,或者是可被运作; S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒;T :该程序目前正在侦测或者是停止了; Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
  • START:该进程被触发启动的时间
  • TIME:该进程实际使用 CPU 运作的时间
  • COMMAND:该程序的实际指令是什么

(5)解释运行  ps -ef命令后,出现的每个字段的含义

 UID   PID  PPID   C STIME   TTY           TIME CMD
  • UID:表示执行者身份,用户ID
  • PID:进程的ID号
  • PPID:父进程的ID号
  • C:CPU使用的资源百分比
  • STIME:程序启动时间
  • TTY:进程与控制终端的关联值
  • TIME:进程使用的总CPU时间,即进程已经执行的时间
  • CMD:所下达的指令名称

(6)执行ps命令后还会有其他的几种字段,其中有些字段的含义是:

  • SID:会话ID
  • NI:优先级
  • PRI:进程优先级编号
  • WCHAN:目前这个程序是否在正在运行,- 表示正在运行
  • FLAGS:与进程相关的数字标识

除了这些,还有更多的字段含义。

4.遇到的问题

(1)在参数中,“-”该符号的含义是什么,为什么有无该符号的参数所代表的含义不一样?

5.参考链接

查看操作系统版本:https://www.linuxidc.com/Linux/2014-05/101121.htm

ps命令参数的详细解析:https://blog.csdn.net/l1394049664/article/details/81836184

ps命令常用选项参数详解:https://blog.51cto.com/wangzhihao/1945713

ps指令详解:http://www.360doc.com/content/19/0219/16/13328254_816120717.shtml

posted @ 2020-03-06 22:23  jmu_wll  阅读(349)  评论(0编辑  收藏  举报