ps命令和jobs kill
来源:互联网 发布:linux中反引号的作用 编辑:程序博客网 时间:2024/06/06 02:49
http://www.ibm.com/developerworks/cn/linux/l-lpic1-v3-103-5/根据需要选择和排列进程的显示方式
使用 ps
到目前为止所讨论的 ps
命令仅列出从终端会话启动的进程(注意清单 14 中的第二个例子的 SID 列,即会话 ID 列)。要通过控制终端查看所有进程,使用 -a
选项。-x
选项显示不使用控制终端的进程,-e
选项显示每一个进程的信息。清单 17 显示带控制终端的所有进程的完整格式。
清单 17. 显示其他进程
ian@attic4:~$ ps -afUID PID PPID C STIME TTY TIME CMDian 3878 2643 0 09:17 pts/1 00:00:06 xclock -d -update 1ian 5485 2643 0 15:00 pts/1 00:00:00 sh pmc.shian 5487 2643 0 15:01 pts/1 00:00:00 bash pmc.shian 7192 5485 0 16:00 pts/1 00:00:00 sleep 30ian 7201 5487 0 16:00 pts/1 00:00:00 sleep 30ian 7202 2095 0 16:00 pts/0 00:00:00 ps -af
注意在 TTY 列中列出的控制终端。为了获取这个列表,我已切换到原先打开的终端窗口(pts/0),因此ps -af
命令在 pts/0 下运行,尽管为本文创建的命令在 pts/1 下运行。
有许多针对 ps
的选项,包括控制显示哪些字段和以何种方式显示的选项。其他选项控制选择显示的进程,例如,为特定的用户(-u
)或命令(-C
)选择这些进程。在清单 18 中,列出了所有运行getty
命令的进程;我们使用 -o
选项来自指定将要显示的列。我们将user
选项添加到单纯使用 ps
获取到的常规列表,因此您可以看到哪个用户正在运行 getty
。
清单 18. 谁正在运行 getty 命令?
ian@attic4:~$ ps -C getty -o user,pid,tty,time,commUSER PID TT TIME COMMANDroot 1192 tty4 00:00:00 gettyroot 1196 tty5 00:00:00 gettyroot 1209 tty2 00:00:00 gettyroot 1219 tty3 00:00:00 gettyroot 1229 tty6 00:00:00 gettyroot 1731 tty1 00:00:00 getty
有时您需要根据特定的字段对输出进行排序,您也可以使用 --sort
选项指定要排序的字段来实现该目的。默认值为以升序的方式进行排序(+
),但您也可以指定以降序的方式进行排序(-
)。清单 19 显示了最终的ps
例子,其中使用作业的格式列出了所有进程,并且根据会话 ID 和命令名对输出进程排序。首先,我们使用默认的排序;其次,我们显式地指定这两种排序方式。
清单 19. 对来自 ps 命令的输出进行排序
ian@attic4:~$ ps -aj --sort -sid,+comm PID PGID SID TTY TIME CMD 5487 5487 2643 pts/1 00:00:00 bash 9434 9434 2643 pts/1 00:00:00 ps 5485 5485 2643 pts/1 00:00:00 sh 9430 5485 2643 pts/1 00:00:00 sleep 9433 5487 2643 pts/1 00:00:00 sleep 3878 3878 2643 pts/1 00:00:10 xclock 8019 8019 2095 pts/0 00:00:00 man 8033 8019 2095 pts/0 00:00:00 pagerian@attic4:~$ ps -aj --sort sid,comm PID PGID SID TTY TIME CMD 8019 8019 2095 pts/0 00:00:00 man 8033 8019 2095 pts/0 00:00:00 pager 5487 5487 2643 pts/1 00:00:00 bash 9435 9435 2643 pts/1 00:00:00 ps 5485 5485 2643 pts/1 00:00:00 sh 9430 5485 2643 pts/1 00:00:00 sleep 9433 5487 2643 pts/1 00:00:00 sleep 3878 3878 2643 pts/1 00:00:10 xclock
和平常一样,查看手册页详细了解您可以指定多少个选项和字段,或者使用 ps --help
命令了解简要说明。
使用 top
如果您在一行内多次运行 ps
,以便看看发生了什么变化,您可能需要改用 top
命令。它显示持续更新的进程列表和有用的摘要信息。清单 20 显示 top
命令输出的前几行。使用子命令 q 退出 top。
清单 20. 使用 top 显示进程
top - 16:07:22 up 18:29, 5 users, load average: 0.03, 0.02, 0.00Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombieCpu(s): 2.1%us, 0.5%sy, 0.0%ni, 97.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 4057976k total, 1543616k used, 2514360k free, 194648k buffersSwap: 10241428k total, 0k used, 10241428k free, 613000k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6820 ian 20 0 506m 78m 26m S 1 2.0 0:23.97 firefox 1381 root 20 0 634m 40m 18m S 1 1.0 2:06.74 Xorg 2093 ian 20 0 212m 15m 10m S 1 0.4 0:13.53 gnome-terminal 6925 ian 20 0 1118m 298m 19m S 1 7.5 1:07.04 java 6855 ian 20 0 73416 11m 8808 S 1 0.3 0:05.01 npviewer.bin 7351 ian 20 0 19132 1364 980 R 0 0.0 0:00.07 top 1 root 20 0 19584 1888 1196 S 0 0.0 0:00.74 init 2 root 15 -5 0 0 0 S 0 0.0 0:00.01 kthreadd
top
命令有许多子命令,其中开始学习时最有用的子命令为:
- h
- 获得帮助
- q
- 退出
top
命令
- f
- 在显示结果中添加或删除字段
- o
- 显示顺序
- F
- 选择需要根据其进行排序的字段
查看手册页详细了解 top
的各种选项,包括如何根据内存使用或其他标准进行排序。清单 21 显示了一个根据虚拟内存使用量以降序的方式进行排序的例子。
清单 21. 对 top 命令的输出结果进行排序
top - 16:21:48 up 18:43, 5 users, load average: 0.16, 0.06, 0.01Tasks: 170 total, 3 running, 167 sleeping, 0 stopped, 0 zombieCpu(s): 2.1%us, 0.8%sy, 0.0%ni, 96.6%id, 0.0%wa, 0.0%hi, 0.5%si, 0.0%stMem: 4057976k total, 1588940k used, 2469036k free, 195412k buffersSwap: 10241428k total, 0k used, 10241428k free, 613056k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6925 ian 20 0 1171m 338m 21m S 0 8.5 1:44.10 java 1381 root 20 0 634m 40m 18m S 0 1.0 2:13.63 Xorg 6820 ian 20 0 506m 83m 26m S 3 2.1 0:51.28 firefox 2004 ian 20 0 436m 23m 15m S 0 0.6 0:01.55 nautilus 2031 ian 20 0 419m 13m 10m S 0 0.3 0:00.11 evolution-alarm 2118 ian 20 0 372m 10m 7856 S 0 0.3 0:00.06 evolution-data- 2122 ian 20 0 344m 13m 10m S 0 0.3 0:00.10 evolution-excha 2001 ian 20 0 331m 22m 14m S 0 0.6 0:13.61 gnome-panel 1971 ian 20 0 299m 9.9m 7244 S 0 0.3 0:05.00 gnome-settings- 1989 ian 20 0 288m 15m 11m S 0 0.4 0:11.95 metacity 1954 ian 20 0 265m 5460 3412 S 0 0.1 0:00.28 pulseaudio
回页首
向进程发送信号
现在,让我们看一下 Linux 信号,它是一种与进程通信的异步方式。我们已经提到 SIGHUP 信号并且使用了 Ctrl-c 和 Ctrl-z 组合键,它们是向进程发送信号的其他方式。发送信号的常见方式是使用kill
命令。
使用 kill 命令发送信号
kill
命令将信号发送到指定的作业或进程。清单 22 显示使用 SIGTSTP 和 SIGCONT 信号来停止和恢复后台作业。使用 SIGTSTP 信号等效于使用fg
命令将作业放到前台并使用 Ctrl-z 暂停它。使用 SIGCONT 类似于使用 bg
命令。
清单 22. 停止和重新启动后台作业
ian@attic4:~$ kill -s SIGTSTP %1[1]+ Stopped xclock -d -update 1ian@attic4:~$ jobs -l[1]+ 3878 Stopped xclock -d -update 1[2] 5485 Running nohup sh pmc.sh &[3]- 5487 Running nohup bash pmc.sh &ian@attic4:~$ kill -s SIGCONT 3878ian@attic4:~$ jobs -l[1] 3878 Running xclock -d -update 1 &[2]- 5485 Running nohup sh pmc.sh &[3]+ 5487 Running nohup bash pmc.sh &
在本例中,我们使用作业指示 (%1) 停止 xclock 进程,然后使用进程 ID(PID)重新启动(继续)它。如果您停止 job %2,然后使用tail
及其后面的 -f
选项,您将看到仅有一个进程正在更新 nohup.out 文件。
您可以使用 kill -l
在系统中显示许多其他信号。其中一些信号用于报告错误,比如非法操作代码,浮点异常,或试图访问进程无权访问的内存。注意,信号也有编号(比如 20)和名称(比如 SIGTSTP)。您可以使用连字符 (-) 前面的编号,也可以使用-s
选项和信号名。在我的系统中,我使用 kill -20
,而不是 kill -s SIGTSTP
。在确定哪个编号对应哪个信号之前,您应该检查系统中信号的编号。
信号处理程序和进程终止
您已经看到使用 Ctrl-c 可以终止进程。事实上,它向进程发送一个 SIGINT(或中断)信号。如果您使用不带任何信号名的kill
,它将发送一个 SIGTERM 信号。在大多数情况下,这两个信号是等效的。
您已经看到 nohup
命令可以让进程避开 SIGHUP 信号。一般情况下,进程可以实现一个信号处理程序 来捕捉 信号。因此进程可以实现信号处理程序来捕捉 SIGINT 或 SIGTERM。因为信号处理程序知道发送的信号是什么,所以它可能选择忽略 SIGINT,并且在收到(比如)SIGTERM 时才终止。清单 23 显示了如何将 SIGTERM 信号发送到 job %2。注意,在发送信号之后,进程状态立即显示为 “Terminated”。如果我们使用 SIGINT,将显示为 “Interrupt”。在片刻之后,将开始清除进程,作业也不再出现在作业列表中。
清单 23. 使用 SIGTERM 终止进程
ian@attic4:~$ kill -s SIGTERM %2ian@attic4:~$ [2]- Terminated nohup sh pmc.shian@attic4:~$ jobs -l[1]- 3878 Running xclock -d -update 1 &[3]+ 5487 Running nohup bash pmc.sh &
信号处理程序给进程提供了很大的灵活性。进程可以完成其常规工作,并且为了实现特定目的可以被信号中断。除了允许进程捕捉终止请求和采取可能的行动(比如关闭正在进行的文件或检查点事务)之外,信号还通常用于告诉守护进程重新读取其配置文件和重启操作。您在添加新的打印程序时可能要更改网络参数或 line printer daemon (lpd),这时可能需要进行该操作。
无条件终止进程
有一些信号是无法捕获的,比如某些硬件异常。您最常用的 SIGKILL 就不能被信号处理程序捕捉到,因此需要无条件终止它。总而言之,仅当所有办法都无法终止进程时,才选择无条件终止它。
- ps命令和jobs kill
- ps 和 kill 命令详解
- ps 和 kill 命令详解
- linux进程命令 Ps和 kill
- Linux系统ps和kill命令
- 1.系统管理命令ps和kill
- linux经常管理与查看指令:ps、pstree、top、kill、jobs和nice
- Linux 命令集中ps和kill命令的用法
- Linux命令基础16-ps和kill命令
- ps 和 kill使用方法
- linux中bg/fg/jobs/kill命令
- linux命令: ps、grep、kill
- linux命令: ps、grep、kill
- linux命令: ps、grep、kill
- linux命令--ps kill top
- linux命令: ps、grep、kill
- linux命令: ps、grep、kill
- linux操作学习07:进程(定义、优先级、前后台调用、进程信号)#nice、ps、jobs、fg、bg、kill、w,用户登录审记(last)、top命令
- ros学习
- Ubuntu 下让sublime-text3支持中文输入法
- Long Long Message+POJ+后缀数组之求最长公共子串
- 文搏科技 生产、销售一体化机构
- JavaSe基础XX16——API对象-基本数据类型对象包装类
- ps命令和jobs kill
- JAVA爬虫WebCollector教程列表
- 获取任意一个storyboard的视图控制器的方法
- DSP6000的几个简单优化技巧
- 进程间通讯方式总结
- 使用IDEA开发Android项目时遇到Cannot merge new index into a non-jumbo instruction! 的解决
- jstl中的日期格式化
- 数字信号处理的学习资源
- Python 折半插入排序