前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux操作系统中进程的操作命令(ps,kill,keep)

Linux操作系统中进程的操作命令(ps,kill,keep)

原创
作者头像
用户7605975
修改2020-07-29 14:19:19
2.2K0
修改2020-07-29 14:19:19
举报
文章被收录于专栏:技术积累技术积累

在Linux中,通常执行任何一个命令都会创建一个或多个进程,即命令是通过进程实现的。当进程完成了预期的目标,自行终止时,该命令也就执行完了。不但用户可以创建进程,系统程序也可以创建进程。可以说,一个运行着的操作系统就是由许许多多的进程组成的。

ps命令

ps命令是查看进程状态的最常用的命令,它可以提供关于进程的许多信息。操作者可以根据显示的信息确定哪个进程正在运行,哪个进程是被挂起或出了问题,进程已运行了多久,进程正在使用的资源情况,进程的相对优先级以及进程的标识号(PID)。所有这些信息对用户都很有用,对于系统管理员来说更为重要。

ps命令的一般格式是: ps [选项] Ps命令的常用选项有: -a 显示系统中与tty相关的(除会话组长之外)所有进程的信息。 -e 显示所有进程的信息。 -f 显示进程的所有信息。 -l 以长格式显示进程信息。 -r 只显示正在运行的进程。 -u 显示面向用户的格式(包括用户名,CPU及内存使用情况、进程运行状态等信息)。 -x 显示所有终端上的进程信息。

不带选项的ps命令可以列出每个与当前shell有关的进程的基本信息:

其中,各字段的含义如下:

PID 进程标识号。

TTY 该进程建立时所对应的终端,“?”表示该进程不占用终端。

TIME 报告进程累计使用的CPU时间。注意,尽管有些命令(如sh)已经运转了很长时间,但是它们真正使用CPU的时间往往很短。所以,该字段的值往往是00:00:00。

CMD 执行进程的命令名,command的缩写。

kill命令

信号(signal,也称作软中断)机制是在软件层次上对中断机制的一种模拟。异步进程可以通过彼此发送信号来实现简单通信。系统预先规定若干个不同类型的信号(如x86平台中Linux内核设置了32种信号,而现在的Linux和POSIX.4定义了64种信号),各表示发生了不同的事件,每个信号对应一个编号。进程遇到相应事件或者出现特定要求时(如进程终止或运行中出现某些错误——非法指令和地址越界等),就把一个信号写到相应进程task_struct结构的signal位图(表示信号的整数)中。接收信号的进程在运行过程中要检测自身是否收到了信号,如果已收到信号,则转去执行预先规定好的信号处理程序。在处理之后,再返回原先正在执行的进程。

kill命令是通过向指定进程发送指定的信号来终止相应进程。终止一个前台进程可以使用<Ctrl+C>键,也可以使用kill命令。但是,对于一个后台进程就只能用kill命令来终止。

kill命令的一般格式是:

kill [-s 信号|-p ] 进程号… kill -l [信号] 其中,各选项的含义如下: -s 指定要发送的信号——可以是信号名(如SIGKILL),也可以是对应信号的编号(如9)。 -p 指定kill命令只是显示进程的PID(进程标识号),并不真正发出终止进程的信号。 -l 显示信号名称列表,这也可以在/usr/include/linux/signal.h文件中找到。

使用kill命令时应注意:

(1)kill命令可以带信号,也可以不带。如果没有带信号,kill命令就会发出终止信号(编号为15),这个信号可以被进程捕获,使得进程在退出之前清理并释放资源。也可以用kill向进程发送特定的信号,例如:kill -2 123 。它的效果等同于:当在前台运行PID为123的进程时,按下<Ctrl+C>键。但是,普通用户使用kill命令时不要带信号,或者至多带信号编号9。

(2)kill可以用进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。

(3)可以向多个进程发信号或终止它们。

(4)当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下键使shell的命令提示符再次出现时,才会显示出来。

(5)应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用SIGKILL信号(编号为9),因为进程不能首先捕获它。

要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0 来终止所有由当前shell启动的进程,是个有效的方法。

sleep命令

sleep命令的功能是使进程暂停执行一段时间。

其一般使用格式是:

sleep 时间值

其中,“时间值”参数以秒为单位,即让进程暂停由时间值所指定的秒数。此命令大多用于shell程序设计中,使两条命令执行之间停顿指定的时间。

例如,下面的命令使进程先暂停100秒,然后查看用户test00001是否在系统中:

[root@VM_255_145_centos ~]# sleep 100;who |grep 'test00001'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • ps命令
  • kill命令
  • sleep命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档