查看运行的进程,进程id,运行时间,占用内存,线程,结束进程(三)kill、killall结束和批量结束程序;结束终端
一、Linux查询进程和结束进程,kill
1、查询任务
1)ps -ef |grep java ##查看到是4394
2)kill[参数][进程号]
kill -9 4394 ##-9可以彻底删除
kill就是给某个进程id发送了一个信号。默认发送的信号是SIGTERM,而kill -9发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程
二、使用killall
killall java
killall -9 java #彻底删除
作用: 用于结束进程,但可以直接使用进程的名字而不是进程标识号
语法: killall [选项] name
常用选项:
-HUP(1):重跑进程
-KILL(9) :强制杀死进程
-TERM(15) :结束进程
-l:列出所有可用的信号名称
三、批量结束任务
1、ps -ef | grep chrome|awk '{print $2}' | xargs kill -9
其中chrome为查询进程关键词
2、杀死当前用户的所有线(进)程
pkill -u username
killall -u username
ps -ef | grep ^username |awk '{print$1}' | xargs kill -9
四、通过杀掉主进程,杀掉任务,或者杀掉某个登录终端(比如假死的)
首先在一个终端里启动进程如下图:
[chenfj@login12 md1]source /appsnew/source/cuda-9.2.sh
[chenfj@login12 md1]source /appsnew/source/intel2019.sh
[chenfj@login12 md1]source /appsnew/mdapps/amber18-intel2019-cuda9.2/amber.sh
[chenfj@login12 md1]$ mpirun -np 8 pmemd.MPI -O -i md.in -o ${SLURM_JOB_ID}md32.out -p 1tcew.prmtop -c den.rst -r ${SLURM_JOB_ID}md32.rst -x ${SLURM_JOB_ID}md32.mdcrd
在另一个终端查看运行的任务:
[root@login12 ~]# ps -ef |grep chenfj
黄色的箭头为子进程,由父进程272987(红色箭头)派生出来的
红色箭头(进程272987)由父进程272986(蓝色箭头,Intel的hydra_pmi_proxy代理)派生出来的--杀掉272987或者272986有可能会杀掉部分的进程,造成进程存留: kill 272986;kill 272987
蓝色箭头进程272986,由主进程272981(白色箭头)派生来的--杀掉主进程就可以杀掉所有的进程 kill 27298
主进程272981(白色箭头)270317 由sh守护进程派生出来的--所以我们杀掉270317(270316)以后得进程终端就会退出