龙空技术网

Linux进程状态怎么查看?控制进程管理有啥命令?如何而杀进程

亓官以铱 338

前言:

如今看官们对“linux进程状态查看”都比较重视,姐妹们都想要知道一些“linux进程状态查看”的相关内容。那么小编也在网络上搜集了一些有关“linux进程状态查看””的相关文章,希望看官们能喜欢,兄弟们一起来学习一下吧!

进程状态和进程管理知识点汇总:

(此处已添加圈子卡片,请到今日头条客户端查看)一、了解进程

了解进程

进程

Linux 是一个多任务的操作系统,系统上同时运行着多个进程,正在执行的一个或多个相关进程称为一个作业。使用作业控制,用户可以同时运行多个作业,并在需要时在作业之间进行切换。本章详细介绍进程管理及作业控制的命令,包括启动进程、查看进程、调度作业的命令。

Linux 系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux 用分时管理方法使所有的任务共同分享系统资源。

进程的一个比较正式的定义是:在自身的虚拟地址空间运行的一个单独的程序。进程与程序是有区别的,进程不是程序,虽然它由程序产生。

程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。

Linux 操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。

1、交互进程—由一个 shell 启动的进程。交互进程既可以在前台运行,也可以在后台运行。

2、批处理进程—这种进程和终端没有联系,是一个进程序列。

3、监控进程(也称守护进程)—Linux 系统启动时启动的进程,并在后台运行。

上述三种进程各有各的作用,使用场合也有所不同。

在这里要区别进程和作业的概念。

作业

一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。

作业控制指的是控制正在运行的进程的行为,比如,用户可以挂起一个进程,等一会儿再继续执行该进程。shell 将记录所有启动的进程情况,在每个进程过程中,用户可以任意地挂起进程或重新启动进程。作业控制是许多 shell(包括 bash 和tcsh)的一个特性,使用户能在多个独立 作业间进行切换。

每个进程都有自己的进程号,除了进程号每个进程通常还具有优先级、私有内存地址、环境、系统资源、文件描述、安全保证。象人类一样,一个进程可以同时身为一个进程的子进程,及另一个进程的父进程。我们可以使用 pstree –p 查看进程间的关系和进程号。

二、查看进程状态

查看进程状态

ps

ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

ps 的常用参数:

-a 显示所有进程,但不包括不隶属于任何一个终端的进程-u 显示不属于任何一个终端的进程,诸如各类系统网络服务的后台程序-l 以长模式显示进程的信息-u 显示进程的拥有者信息在 ps 的参数中,是否加-号,表示不同的参数。

ps 显示中的 STAT,可以为:

R:正在运行。S:进程睡眠中,通常可以因事件发生而被唤醒。T:进程已停止。D:进程睡眠中,除非发生指定事件,否则不会被唤醒。Z:僵尸进程,例如未能被父进程回收的子进程。通常是一个系统 bug 或非法操作。< :高优先级进程。N:低优先级进程。

在 bash 进程前面有条横线,意味着该进程便是用户的登录 shell,所以对于一个登录用户来说带短横线的进程只有一个。还可以看到%CPU、%MEM 两个选项,前者指该进程占用的 CPU 时间和总时间的百分比;后者指该进程占用的内存和总内存的百分比。

在这种情况下看到了所有控制终端的进程;但是对于其他那些没有控制终端的进程还是没有观察到,所以这时就需要使用 x 选项。使用 x 选项可以观察到所有的进程情况。

ps 命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/ 输出设备进行通信的,所以如果需要检测其情况,便可以使用 ps 命令了。

该命令语法格式如下:

ps [ 选 项 ]

下面对命令选项进行说明:-e 显示所有进程。-f 全格式。-h 不显示标题。-l 长格式。-w 宽输出。a 显示终端上的所有进程,包括其他用户的进程。r 只显示正在运行的进程。x 显示没有控制终端的进程。--help 显示帮助信息。--version 显示该命令的版本信息。

Top

在上一小节中我们介绍了 top 的使用方法和概念,在此我们就不具体介绍了。

三、控制进程

控制进程

进程控制

当需要中断一个前台进程的时候,通常是使用 Ctrl+c 组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于 kill 命令。该命令可以终止后台进程。至于终止后台进程的原因很多,或许是该进程占用的 CPU 时间过多;或许是该进程已经挂死。总之这种情况是经常发生的。

kill 可以通过向一个进程发送一个讯号来控制进程。这个讯号既可以是数字,也可以是名称。默认情况下,kill 向进程传送进程号 15,即 terminate,以通知进程结束。我们可以使用 kill –l 列出所有可以由 kill 传递的讯号。

使用权限:所有使用者基本格式:

kill [ -s signal | -p ] [ -a ] pid ... kill -l [ signal ]

说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号 -s (signal) : 其中可用的讯号有 HUP (1), KILL (9),

TERM (15), 分别代表着 重跑, 砍掉, 结束;

-p : 印出 pid , 并不送出信号

-l (signal) : 列出所有可用的信号名称例如:

将 pid 为 323 的行程砍掉 (kill) :

kill -9 323

将 pid 为 456 的行程重跑 (restart) :

kill -HUP 456

详 细 的 信 号 可 以 用 kill -l

# kill –l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL

5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE

9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2

13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD

18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN

22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO

30) SIGPWR 31) SIGSYS 33) SIGRTMIN 34) SIGRTMIN+1

35) SIGRTMIN+2 36) SIGRTMIN+3 37) SIGRTMIN+4 38) SIGRTMIN+5

39) SIGRTMIN+6 40) SIGRTMIN+7 41) SIGRTMIN+8 42) SIGRTMIN+9

43) SIGRTMIN+10 44) SIGRTMIN+11 45) SIGRTMIN+12 46) SIGRTMIN+13

47) SIGRTMIN+14 48) SIGRTMIN+15 49) SIGRTMAX-14 50) SIGRTMAX-13

51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10 54) SIGRTMAX-9

55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6 58) SIGRTMAX-5

59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2 62) SIGRTMAX-1

63) SIGRTMAX

对于忽视讯号 15 的进程,我们可以用 9 来强制杀死。

例如要结束一个 bash 时,你必须使用 kill 9 !

我们可以用 man 7 signal,来查询每一个讯号的意思与作用。

除了进程号,我们还可以在 killall 后添加一个关键字,可以用来杀死一批进程。

[root@uplooking root]# killall httpd

杀死所有 http 进程。(关闭 http 服务。)

四、进程的优先级

进程的优先级

进程的优先级

Linux 系统用 nice 值来判断一个进程的优先级,修改进程运行的优先级,是通过增加或减少进程的nice 值来实现。nice值中负值( -n )表示高优先级,正值( n )表示低优先级。nice 值的范围在-20~19 之间,数值越大表示优先级越低。系统默认的进程 nice 值为 0。

当我们使用 nice 指令可设定以一定的 nice 值来执行一个命令时,默认情况下 nice 值为 10。一般用户只能设定以一个正的 nice 值,即低优先级的方式来执行一个命令。只有 root 才可以指定以一个负的 nice 值,即高优先级的方式执行一个命令。

我们通过 renice 可以更改一个运行进程的 nice 值,对于一般用户,只能提高 nice 值, 降低优先级;只有 root 用户才能降低 nice 值,提升优先级。

nice

适用所有用户。说明:以更改过的优先序来执行程式, 如果未指定程式, 则会印出目前的排程优先序, 内定的 adjustment 为 10, 范围为 -20 (最高优先序) 到 19 (最低优先序) nice 命令的语法结构:

nice [increment] [command] [arguments]

例如:

-n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加

adjustment

--help 显示求助讯息

--version 显示版本资讯例如:

将 ls 的优先序加 1 并执行 :

nice -n 1 ls

nice ls 将 ls 的优先序加 10 并执行

注意 : 优先序 (priority) 为作业系统用来决定 CPU 分配的参数,Linux 使用回合制(round-robin) 的演算法来做 CPU 排程,优先序越高,所可能获得 CPU 时间就越多。

例如:

# vi abc

# ps -l -p 1401 (1401 为 vi 进程值) F S UID PPID C PRI NI ADDR SZ WCAN TTY TIME CMD

20 S 0 1401 0 75 20 fb117c18 400 f01af490 02 00:00:00 vi abc

可见,执行这个 vi 的 nice 值时 20(默认值).

# nice -17 vi abc

# ps -l -p 1404

F S UID PPID C PRI NI ADDR SZ WCAN TTY TIME CMD

20 S 0 1404 0 75 -17 fb118418 400 f01af4f4 02 00:00:00 vi abc

nice 值小的进程优先级高;nice 值大的进程的优先级低

renice 命 令 renice 命令允许用户修改一个正在运行进程的优先权。利用 renice 命令可以在命令执行时调整其优先权。

其格式如下:

$ renice -number PID

其中,参数 number 与 nice 命令的 number 意义相同。

1. 用户只能对自己所有的进程使用 renice 命令。

2. root 用户可以在任何进程上使用 renice 命令。

3. 只有 root 用户才能提高进程的优先权。

标签: #linux进程状态查看 #linux查看用户状态命令 #linux查看用户状态命令是什么