linux 中常用的进程控制类命令

一  查看进程命令 ps && top

原文链接:https://blog.csdn.net/timchen525/article/details/76364706

ps 和 top 命令常用来查看Linux系统进程相关信

ps命令:可以查看进程的瞬间信息

top命令:可以持续的监视进程的信息

场景一:如何查看Linux系统中存在mysql、nginx、tomcat进程?

方法一:输入命令:ps -ef|grep 相应的进程名称

方法二:输入命令:ps aux | grep 相应的进程名称


场景二:如何去动态跟踪指定进程的资源使用情况呢?

动态跟踪的命令有很多,这里用top命令。

输入命令:top -p 进程id,则可以一秒一次跟踪cpu的使用情况。

补充知识点:

(1)top -d 1 -n 1000  这一行命令表示延迟1秒为周期,打印1000次。

(2)在top命令下,输入u,然后输入相应的用户名,则可以查看相应的用户进程,这个命令还是比较好用,比如,我们想看下mysql用户的动态进程信息。
(3)top 然后输入1,查看各个cpu的使用情况

二 关闭进程的方法 kill && killall

原文链接:https://blog.csdn.net/dghggij/article/details/87621517

1) kill -9

kill  -s  9  15572

其中,-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。 15572则是上面ps查到的火狐(firefox)的PID。

用法详解:

kill -9, 这个强大和危险的命令迫使进程在运行时突然终止进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。 
当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。 
如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。 


2.1) 改进 1 —— grep

把ps的查询结果通过管道传给grep,查找包含特定字符串的进程。管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。

例如: homer@ubuntu:~$ ps -aux | grep firefox

homer    15572  1.7  5.0 808644 103260 ?       Sl   23:45   0:07 /usr/lib/firefox/firefox
homer    15735  0.0  0.0  13584   920 pts/0    S+   23:52   0:00 grep --color=auto firefox

直接找到firefox进程PID, 输入: kill  -s  9  15572

2.2) 改进 2 —— pgrep

pgrep的p表明了这个命令是专门用于进程查询的grep

例如: homer@ubuntu:~$ pgrep firefox
15572

2.3) 改进 3 —— pidof

pidof命令,表示 pid of xx,字面翻译过来就是 xx的PID

例如: homer@ubuntu:~$ pidof firefox
15572

2.4) 改进4 —— grep + awk

grep firefox 列出firefox进程信息,并awk取第二个field,即PID

例如: homer@ubuntu:~$ ps -ef | grep firefox | grep -v grep | awk '{print $2}' 
15572

2.5) 改进 5 —— kill + xargs

杀死进程的方式有以下几种:

a) ps -ef | grep firefox | grep -v grep | awk '{print $2}' | xargs kill -s 9

b) pgrep firefox | xargs kill -s 9

c) pidof firefox | xargs kill -s 9

d) kill -s 9 `ps -ef | grep firefox | grep -v grep | awk '{print $2}'`

e) kill -s 9 `pgrep firefox`

f) kill -s 9 `pidof firefox`

2.6) 改进 6 —— pkill

pkill 类似于 pgrep, pkill 表示 pgrep+kill

例如: pkill firefox

3) killall

killall命令, 杀死同一进程组内的所有进程,其允许指定要终止的进程的名称,而非PID

killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。

homer@ubuntu:~$ killall firefo
firefo: no process found
homer@ubuntu:~$ killall firefox
homer@ubuntu:~$ killall -9 firefox

4) kill

杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。
例如: # kill -pid  
注释: 标准的kill命令,默认采用信号(signal)号是15,通常都能达到目的,终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。  

5) kill -l

例如: kill -l PID 

-l 选项, 告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。 

6) kill -HUP

有时候只想简单的停止和重启进程。
例如: # kill -HUP PID 
该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。  

三  nice及renice命令使用

参看链接:https://blog.csdn.net/XD_hebuters/article/details/79619213

     linux内核是一个了不起的马戏表演者,它在进程和系统资源之间小心地玩着杂耍,并保持系统的正常运转。同时,内核也很公平,它将资源公平地分配给各个进程。但是,如果用户需要给一个重要进程提高优先级、或是降低优先级,该怎么办呢?答案是需要由用户来为内核制定进程的优先级。这里对nice及renice命令做一个基本的介绍。

1.1、基本介绍

  nice命令可以修改进程的优先级,进而调整进程调度。nice值的范围是[-20, 19], -20表示进程的最高优先级,19表示进程的最低优先级。Linux进程的默认nice值为0。使用nice可调整进程的优先级,这样调度器就会依据进程优先级,为其分配CPU资源。

1)、sleep 200&后,ps -el | grep sleep抓取,无nice命令,优先级数值为0

2)、nice sleep 200&后,ps -el | grep sleep抓取,优先级NI数值为10

3)、nice -N sleep 200&,即在默认值0基础上加N,ps -el | grep sleep抓取

4)、nice –N sleep 200&,仅管理员可在默认值0基础上加 -N,ps -el | grep sleep抓取

1.2、使用场景
  在实际应用中,如果要运行一个CPU密集型程序,最好通过nice命令来启动它,这样可以保证其他进程获得更高的优先级,即使服务器或台式机在负载很重的情况下, 也可以快速响应

二、renice命令
2.1、基本介绍

  renice命令是与nice关联的一个命令,由re两个字母就知道可以重新调整进程执行的优先级,可以指定群组或者用户名调整优先级等级,并修改隶属于该群组或者用户的所有程序优先级。等级范围为[-20,19]。同样仅系统管理员可以拉高优先级。nice在进程拉起时调整,renice在进程执行时调整。

2.2、使用场景
  一个紧急进程,需要更多CPU资源时,可以拉低之前运行进程的优先级。

      renice -N pid  

你可能感兴趣的:(linux,linux)