Linux如何查看进程、kill进程、启动进程


查看firefox的进程ID

ps -ef | grep firefox

或者

top | grep firefox

 

使用kill指令来终止进程:

kill -s 9 进程ID     // -s 9表示发送给进程的信号是9(SIGKILL);

 

根据进程的名字来终止进程:

pgrep firefox | xargs kill -s 9  // pgrep的p表明了这个命令是专门用于进程查询的grep, 该指令直接输出进程id.

// xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数.


Kill命令:

在Shell下面输入kill可以看到kill的语法如下,

   kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

-s 指定发送的信号,sigspec表示信号

pid是要终止的进程编号

通过kill -l可以看到所有的信号变量:

Linux如何查看进程、kill进程、启动进程_第1张图片

 

kill pid和kill -s 15 pid等价,表示发送一个SIGTERM的信号给对应的进程。

大部分程序在接收到SIGTERM信号后,会先释放自己的资源,然后再停止。但也有一些程序在收到信号后,做一些其他事情,并且这些事情是可以配置的。

kill -9 pid等于kill -s 9 pid,发送给进程的信号是9(SIGKILL),表示强制,尽快终止一个进程。

==================

 

  Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME

 


进程终止信号:

SIGTERM:该信号可由进程捕获,使用该信号让进程有机会在退出之前做好清理工作,从而优雅地终止。

SIGINT:当用户按下中断键(一般采用delete或ctrl + c)时,终端驱动程序产生此信号并发送至前台进程组中的每一个进程。

SIGKILL: 该信号不能被进程捕捉和忽略,它向系统管理员提供了一种可靠地杀死任何进程的方法。

在terminal里面用ctrl+C终止一个进程时,向进程发送的是SIGINT信号。  ctrl-z 发送 SIGTSTP 信号给进程,常用于挂起一个进程。


写一个脚本用来启动动或停止程序:

#!/bin/sh
# first

cd  /home/xxx/xxx/  #可执行文件所在的目录
echo "================"
param=$1       #执行脚本时传入的参数

echo $1
echo $param

if [ "start" = $param ]  #传入的参数为start的话,开始执行;注意,[前后要有空格
    then
    ./exe1 &
    ./exe2 &
    sleep 3s  #睡眠3s
    ./exe3 &
    echo "========st========="
fi

if [ "stop" = $param ]  #传入的参数为stop的话,kill掉进程
    then
    pgrep exe1| xargs kill -s 9
    pgrep exe2 | xargs kill -s 9
    pgrep exe3 | xargs kill -s 9
    echo "========end========="
fi

exit 0

编辑完脚本文件后,chmod +x filename,使其可执行,然后,进入脚本所在目录,在terminal输入 ./filename start启动exe, 输入./filename stop 终止进程。
 

 


查看进程:ps命令介绍

    可以用man ps查看使用方法,只不过是一个小工具而已!

    ps a 显示现行终端机下的所有程序,包括其他用户的程序。
    ps -A 显示所有程序。
    ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
    ps -e 此参数的效果和指定"A"参数相同。
    ps e 列出程序时,显示每个程序所使用的环境变量。
    ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
    ps -H 显示树状结构,表示程序间的相互关系。
    ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
    ps s 采用程序信号的格式显示程序状况。
    ps S 列出程序时,包括已中断的子程序资料。
    ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
    ps u 以用户为主的格式来显示程序状况。

    ps x 显示所有程序,不以终端机来区分。

            ps -o 说明用户自定义格式

最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。

 

    ps aux | grep program_filter_word

例如: ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。


Ref:

http://www.cnblogs.com/grefr/p/6095059.html

https://blog.csdn.net/Post_Yuan/article/details/53065473

你可能感兴趣的:(Linux)