Linux中怎么终止正在运行的后台程序

linux 任务管理-后台运行与终止

linux查找进程并kill linux找到进程linux查找进程并kill linux找到进程


linux查找进程并kill linux找到进程


linux查找进程并kill linux找到进程


fg、bg、jobs、&、ctrl + z命令

一、 &

加在一个命令的,可以把这个命令放到后台执行 ,如gftp &,

二、ctrl + z

可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行

三、jobs

查看当前有多少在后台运行的命令

jobs

-l选项可显示所有任务的PID,jobs的状态可以是running, stopped,

Terminated,但是如果任务被终止了(kill),shell

从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;

四、fg

将后台中的命令调至前台继续运行

如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

五、bg

将一个在后台暂停的命令,变成继续执行 (在后台执行)

如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

将任务转移到后台运行:

先ctrl + z;再bg,这样进程就被移到后台运行,终端还能继续接受命令。

概念:当前任务

如果后台的任务号有2个,[1],[2];如果当个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”

的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务

进程的终止

后台进程的终止:

方法一:

通过jobs命令查看job号(设为num),然后执行kill %num

方法二:

通过ps命令查看job的进程号(PID,设为pid),然后执行kill pid

前台进程的终止:

ctrl+c

kill的其他作用

kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。

SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能这个信号。

进程的挂起

后台进程的挂起:

在solaris中通过stop命令执行,通过jobs命令查看job号(设为num),然后执行stop %num;

在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;

当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;

前台进程的挂起:

ctrl+Z;

先获取后台程序的PID. ps -Aef

然后 kill -9 "PID"

在Linux系统中查看进程及杀僵尸进程的方法

ps

命令

ps

命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、

进程

是否结束、进程有没有僵、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地.

ps

命令及其参数

ps

命令最经常使用地还是用于后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设

备进行通信地,所以如果需要检测其情况,便可以运用

ps

命令了.

该命令语法格式如下:

ps

[选项]

-e

显示所有进程,环境变量

-f

全格式

-h

不显示标题

-l

长格式

-w

宽输出

a显示终端上地所有进程,包括其他用户地进程

r只显示正在运行地进程

x显示没有控制终端地进程

O[+|-]

k1

[,[+|-]

k2

[,…]]

根据

SHORT

KEYS、k1、k2

中快捷键指定地多级排序顺序显示进程列表.

对于

ps

地不同格式都存在着默认地顺序指定.这些默认顺序可以被用户地指定所覆盖.在这里面“+”字符是可选地,“-”

字符是倒转指定键地方向.

pids

只列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地一个选项后面紧接着给出,中间不能插入

空格.比如:ps

-f1,4,5.

以下介绍长命令行选项,这些选项都运用“--”开头:

--sort

X[+|-]

key

[,[+|-]

key

[,…]]

从SORT

KEYS

段中选一个多字母键.“+”字符是可选地,因为默认地方向就是按

数字升序或者词典顺序.比如:

ps

-jax

-sort=uid,-ppid,+pid.

--

显示帮助信息.

--version

显示该命令地版本信息.

在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是

ps

运用地内部值,并非

仅用于某些输出格式地伪值.排序键列表见表

4-3.

排序键列表

ccmd

可执行地简单名称

Ccmdline

完整命令行

fflags

长模式标志

gpgrp

进程地组

ID

Gtpgid

控制

tty

进程组

ID

jcutime

累计用户时间

Jcstime

累计系统时间

kutime

用户时间

Kstime

系统时间

mmin_flt

次要页错

查找Zombie进程

首先,当桌面程序卡的时候,你可以尝试进入其他tty终端。切换方式:ctrl

+alt

+[1,2,3,4,5,6,7],7是桌面终端

其次,你可以使用top命令查看当前是否有Zombie进程

从上图可以看到僵尸进程数,num

zombie,num大于0,则代表系统存在僵尸进程

,利用ps命令查找Zombie进程

代码

代码如下:

ps

-A

-ostat,ppid,pid,cmd

|grep

-e

'^[zZ]'

示例

:杀Zombie进程

直接kill

-9

Zombiepid是没有作用的,原因是:Zombie表示进程已经退出,想要清理这样的进程,需要清除其父进程或者等很长时间后内核将其清除

代码

代码如下:

kill

-HUP

ppid

后记

不知道为什么我注销之后重新登录还有这个僵尸进程,怀疑是否是LightDM的bug,不过Ubuntu12.04

desktop

display

mar就是LightDM,所以kill

-HUP至少起到了注销的作用,不用重启了

Linux下 netstat ps kill 命令详解及常用命令收集

前言,phper 脱离 fpm 学习 swoole GO 时 经常会用一些进程管理命令 这里熟悉下

netstat 命令

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Intece Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

常见参数

-a (all) 显示所有选项,默认不显示 LISTEN 相关

-t (tcp) 仅显示 tcp 相关选项

-u (udp) 仅显示 udp 相关选项

-n 拒绝显示别名,能显示数字的全部转化成数字。

-l 仅列出有在 Listen () 的服务状态

-p 显示建立相关链接的程序名

-r 显示路由信息,路由表

-e 显示扩展信息,例如 uid 等

-s 按各个协议进行统计

-c 每隔一个固定时间,执行该 netstat 命令。

提示:LISTEN 和 LISTENING 的状态只有用 - a 或者 - l 才能看到

常见命令

列出所有端口 (包括和未的)

netstat -a #列出所有端口

netstat -at #列出所有的tcp 端口

netstat -au #列出所有的udp 端口

列出所有处于状态的 Sockets

netstat -l #只显示在的端口

netstat -lt #只显示所有的在的tcp 端口

netstat -lu #只显示所有的在的udp 端口

netstat -lx #只显示所有的在的unix 端口

在 netstat 输出中显示 PID 和进程名称 netstat -p

netstat -pt #显示所有tcp端口的PID 和进程名称

查找 (经常使用)

netstat -ap | grep xxx #查找程序名为xxx的运行端口

netstat -an | grep ':80' #找出运行在指定端口的进程

PS 命令

PS 是 LINUX 下最常用的也是非常强大的进程查看命令

常用命令

ps -ef | grep 进程关键字 #查找某一进程

参数解释

UID :程序被该 UID 所拥有

PID :就是这个程序的 ID

PPID :则是其上级父程序的ID

C :CPU使用的资源百分比

STIME :系统启动时间

TTY :登入者的终端机位置

TIME :使用掉的CPU时间

CMD :所下达的是什么指令

ps -ax | less # 按向下键查看进程 q 键退出

pstree 树形显示所有进程 pstree -p 9005 树形显示某个端口进程

ps -eo pid,user,args 参数 -e 显示所有进程信息,-o 参数控制输出。Pid,User 和 Args 参数显示 PID,运行应用的用户和该应用。可以查看现在有谁登入了你的

kill 命令

kill -9 PID 可以杀进程

kill -9 $(ps -ef | grep xxx) 杀 查找到的所有进程 有点危险!

常用参数

HUP 1 终端断线

INT 2 中断(同 Ctrl + C)

QUIT 3 退出(同 Ctrl + )

TERM 15 终止

KILL 9 强制终止

CONT 18 继续(与STOP相反, fg/bg命令)

STOP 19 暂停(同 Ctrl + Z)

如何查找和杀掉Linux中的僵尸进程?

Linux 系统中,进程就是一个程序的运行实例。它可能运行在前端(比如有交互的进程),也可能运行在后端(比如无交互或自动运行的进程)。它可能是一个父进程(运行期间创建了其他进程),也可能是一个子进程(由其他进程所创建)。

在 Linux 系统中,除 PID 为 0 的个 init 进程(或 d )外,其余进程都有父进程。进程也可以拥有自己的子进程。

你可以通过使用 pstree 命令 来查看进程的树型结构,你可以清晰的看到各个进程的“家族树”。

在 Linux 系统中,正常情况下,子进程亡后其父进程会接收到通知进行一些例如释放内存之类的清理作。但是,如果父进程未收到通知察觉子进程亡,那么子进程就进入了“僵”状态。

这就是僵进程产生的原因。

僵尸进程并不可怕,少量的僵尸进程对系统影响并不大。但如果系统的内存已经所剩不多或者有太多的僵尸进程在耗掉内存,问题会变得糟糕。

同样,大部分 Linux 系统进程 PID 设置为 32768,如果过多僵尸进程导致其他重要任务没有 PID 可用,那么你的系统会发生崩溃。

特别当存在一个编码糟糕的程序开始大量产生僵尸进程的时候,这种情况经常发生。在这种情况下,我们就需要找到并杀僵尸进程。

在linux系统中,进程有如下几种状态,它们随时可能处于以上状态中的一种:

我们可以在命令终端中通过 top命令 来查看系统进程和它的当前状态。

命令如下:

如上面截图中看到的,其有 个任务(进程),其中 1 个处在 “运行中running” 状态,248 个进程处于 “休眠sleep” 状态,还有一个处于 “僵尸zombie” 状态。

现在问题进入下一步,如何杀 “僵尸” 进程?

僵尸进程对系统来说就是已经亡的进程,那么如何杀掉一个已经亡的进程呢?

方法很简单,我们只需要通过如下ps命令就可以列举僵尸进程,得到它们的进程 ID。

ps ux 命令输出的第 8 列显示了进程状态。上述命令将会打印所有处在 Z+ 状态(表示僵尸状态)的进程。

确认了进程 ID 后,我们可以得到它的父进程 ID:

你也可以将上述两个命令结合在一起,直接得到僵尸进程的 PID 及其父进程的 PID:

通过以上命令都可以找到僵尸进程,然后你就可以通过 kill命 令杀掉了。

或者通过如下命令查看僵尸进程:

该命令输出结果上你可以直接看出其父进程ID,这时候你直接使用kill命令杀掉即可。

再次运行 ps 命令或 top 命令,你可以验证僵尸进程是否已经。

通过本文你将认识 Linux 系统中的僵尸进程以及明白了其产生的主要原因。同时,你也能学会如何查找僵尸僵尸进程并杀掉僵尸进程。

当然你也可以自己别写脚本设置成定时运行任务自动来替你做这些工作。