linux强制中断命令,linux中断正在执行命令的方法

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

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

成都创新互联-专业网站定制、快速模板网站建设、高性价比鄂托克前网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式鄂托克前网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖鄂托克前地区。费用合理售后完善,十年实体公司更值得信赖。

netstat 命令

Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface 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的基本命令,在当前章节,我们先简单的学习下一些系统的基本命令,慢慢的由浅入深,在后面的章节中我们将学习其他的命令比如文件操作、备份压缩等

命令我们可以理解成在Windows中我们常常为了查看ip输入的ipconfig,在Linux中也有很多的命令,比如操作目录、文件、网络、磁盘等等命令

使用者权限:管理员用户

参数说明:

添加用户czbk(传智播客的首拼)执行

我们使用useradd命令创建了一个用户czbk

useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。

执行如下

由上图我们发现,我们在使用useradd新增用户的时候,出现了权限不足,也就是说我们使用用户itcast没有创建用户的权限。

我们通过管理员账号root进行创建,首先我们从控制台中切换到root

在 密码的地方输入我们的root密码【root】即可进入到root用户下。

我们在root下继续创建czbk用户

以下是useradd常用选项

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用

使用者权限:管理员用户

指定和修改用户口令的Shell命令是 passwd 。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:

可使用的选项:

设置当前用户的口令

此处我们设置密码和itcast账号密码一致,为【Itheima888】

usermod 命令通过修改系统帐户文件来修改用户账户信息

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

使用者权限:管理员用户

修改已有用户的信息使用 usermod 命令,其格式如下:

下面命令将用户czbk用户名修改成czbk2019

以下是usermod常用选项

假如我们其中一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

使用者权限:管理员用户

删除一个已有的用户账号使用 userdel 命令,其格式如下:

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件

此命令删除用户czbk2019

成功删除用户czbk2019

以下是userdel常用选项

引子:

为了方便用户管理, 提出了 组 的概念, 如下图所示

比如新建账户【张三】,那么它默认对应的组就是张三

一个用户可以有一个或者多个组

假如说(如上图),我们在企业级开发过程中,我们有多个组,其中一个开发组对应三个账户,张三、李四、王五、如果就像上面提到的,一个用户默认对应一个组,那么三个账户张三、李四、王五就有了三个不同的组,如果大家都操做一个文件,在进行权限分配的时候,就要对不同的三个组进行授权,显然这样是不合理的,因为太过繁琐。

所以,才有了组(新建组)的概念,我们把张三、李四、王五统一放到【开发组】,在对文件授权的时候,我们只对【开发组】进行授权由此,这样的话【张三、李四、王五】都有相等的权利操作了。

新增一个用户组(组名可见名知意,符合规范即可),然后将用户添加到组中

使用者权限:管理员用户

使用的选项有:

新增用户组czbk-it

上面的命令向系统中增加了一个新组czbk-it,新组的组标识号是在当前已有的最大组标识号的基础上加1

以下是groupadd常用选项

使用者权限:管理员用户

常用的选项有:

上面的命令将组czbk-it的组名修改为czbk-it-2019。

以下是groupmod常用选项

在查询用户所属的用户组前,我们先增加一个用户ituser-groups

要查询一个用户属于哪个用户组,使用groups命令,其格式如下

查询用户ituser-groups属于某个用户组,执行groups命令

由此可见,ituser-groups用户属于用户组ituser-groups(用户组默认与用户名一样)

使用者权限:管理员用户

要删除一个已有的用户组,使用groupdel命令,其格式如下

删除czbk-it-2019用户组

删除成功

以下是groupdel常用选项

1、创建一个新的组,并添加组ID(需要切换到root用户)

执行效果如下

2、创建3个用户(需要切换到root用户)

3、将上面三个用户添加到组itbj2020group

我们通过passwd命令将三个用户添加到组

什么是gpasswd:

gpasswd 是 Linux 下工作组文件 /etc/group 和 /etc/gshadow 管理工具,用于将一个用户添加到组或者从组中删除。

语法

将上面的三个用户使用gpasswd添加到组(需要切换到root用户)

执行如下

查看用户组下所有用户(所有用户)

执行效果如下(或者直接打开/etc/group文件都可以)

由上图可知:三个用户全部都加入到了itbj2020group组。

date 可以用来显示或设定系统的日期与时间

使用者权限:所有用户

语法如下:

参数

-d字符串:显示字符串所指的日期与时间。字符串前后必须加上双引号;

-s字符串:根据字符串来设置日期与时间。字符串前后必须加上双引号;

-u:显示GMT;

--help:在线帮助;

--version:显示版本信息

1、设置时间

用 -s选项可以设置系统时间,如下:

2、显示时间

协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。。

(2)GMT

即 格林尼治 平太阳时间,是指格林尼治所在地的标准时间,也是表示地球自转速率的一种形式

外文名: Universal Time

其他外文名 G.M.T.(Greenwich Mean Time)

(3)CST

北京时间 (中国国家标准时间) 北京时间是中国采用国际时区东八时区的区时作为标准时间 。 北京时间并不是北京(东经116.4°)的地方时间,而是东经120°的地方时间,故东经120度地方时比北京的地方时早约14分半钟。因为北京处于国际时区划分中的东八区,同格林尼治时间(世界时)整整相差8小时(即北京时间=世界时+8小时),故命名为“北京时间”。东八区包括的范围从东经112.5°到东经127.5°,以东经120°为中心线,东西各延伸7.5°,总宽度为15°的区域。 而中国幅员辽阔,东西相跨5个时区(即东五区、东六区、东七区、东八区、东九区5个时区)授时台必须建在地理中心地带,从而也就产生了长短波授。“北京时间”与“北京当地时间”是两个概念, “北京时间”的发播不在北京,而在陕西蒲城(处于东七区)

(4)东八区

东八区( UTC / GMT +08:00)是比 世界协调时间 (UTC)/ 格林尼治时间 (GMT)快8小时的时区,理论上的位置是位于 东经 112.5度至127.5度之间,是东盟标准的其中一个候选时区。当格林尼治标准时间为0:00时,东八区的标准时间为08:00

pre class="md-fences md-end-block ty-contain-cm modeLoaded" spellcheck="false" lang="" cid="n486" mdtype="fences" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; caret-color: rgb(51, 51, 51); color: rgb(51, 51, 51); position: relative !important; background-position: inherit; background-repeat: inherit;"总结:

上面提到了很多知识:即UTC/GMT/CST/东八区

总结一下就是,北京时间(中国国家标准时间CST)采用东八区区时,即:

协调世界时(UTC)+8 / 格林尼治时间(GMT)+8

也就是说+8后的时间才是北京时间/pre

logname命令用于显示用户名称。

执行logname指令,它会显示目前用户的名称

语法为如下:

参数 :

显示登录账号的信息

su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

使用权限:所有使用者。

语法如下:

变更帐号为 root 并在执行 ls 指令后退出返回原使用者

切换到root

这样的话,我们就进入到了root用户下。

id命令用于显示用户的ID,以及所属群组的ID。

id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。

使用者权限:所有用户

语法

参数说明:

显示当前用户信息

执行效果如下

sudo:控制用户对系统命令的使用权限,root允许的操作。

通过sudo可以提高普通用户的操作权限

使用者权限:普通用户

语法如下:

sudo -V

sudo -h

sudo -l

sudo -v

sudo -k

sudo -s

sudo -H

sudo [ -b ] [ -p prompt ] [ -u username/#uid] -s

sudo command

参数说明 :

sudo命令使用

指定root用户执行指令

修改网卡配置文件

比如,在下面的例子中,我们使用普通用户修改网卡的配置文件,在进行保存的时候,提示我们【无法打开并写入文件】,那么此时,我们可以通过sudo命令来提升自己的写入权限

执行:

执行效果如下(保存)

然后点击回车

执行效果如下(键入itcast密码)

执行保存

top命令用于实时显示 process 的动态。

使用权限:所有使用者。

显示进程信息

执行效果如下

显示完整命令,与top命令不同的就是command属性像是进行了命令补全

执行效果如下

执行效果如下

Linux ps命令用于显示当前进程 (process) 的状态信息

使用者权限:所有用户

语法如下:

显示进程信息

显示指定用户信息

显示所有进程信息

Linux kill命令用于删除执行中的程序或工作(可强制中断)

使用者权限:所有用户

语法如下:

参数说明 :

杀死一个进程

强制杀死进程

彻底杀死进程

杀死指定用户所有进程

1.方法一 过滤出itcast用户进程

2.方法二,直接杀死

shutdown命令可以用来进行关闭系统,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机

使用者权限:管理员用户

语法如下:

参数说明 :

立即关机

指定1分钟后关机,1分钟关机并显示警告信息

指定1分钟后重启,并发出警告信息

reboot命令用于用来重新启动计算机

使用者权限:管理员、普通(需要验证)用户

语法如下:

参数 :

开始重新启动

重启效果如下

who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等

使用者权限:所有使用者都可使用。

语法如下:

参数说明 :

显示当前登录系统的用户

显示明细(标题)信息

由上图可知,截止到现在只有itcast在线。

引子:

timedatectl是用于控制系统时间和日期。可以用来查询和更改系统时钟于设定,同时可以设定和修改时区信息。

在实际开发过程中,系统时间的显示会和实际出现不同步;我们一般为了校正服务器时间、时区的时候会使用timedatectl命令/pre

使用者权限:所有使用者都可使用,设置时间需要管理员,下面会标注。

几个常见的概念,进行总结如下:

显示系统的当前时间和日期,使用命令行中的timedatectl命令

执行效果如下

上图显示中国时区

4-5 Linux 中断进程 --- kill (kill -2 实验)

1、信号:传递给 Liunx 的事件发生通知机制。

2、kill -l:显示所有信号。一共有62个信号(没有32、33)。

3、常用的信号有:

kill -2 PID —— 正常中断进程(Ctrl + C 一样)。程序在结束之前,能够保存相关数据,然后再退出。

kill -9 PID —— 强制杀死一个进程。

kill -15 PID —— 正常方式终止一个程序。中断进程时应首先用 -15,以便于其能够预先清理临时文件和释放资源。-9 作为最后手段,应对那些失控的进程。

--------------------------------------------------------------------------------

1)、kill -2 中断后台运行的进程。

红色下划线:sleep 10000 —— 后台运行延时 10000 秒的命令,进程 ID 为1516。

ps -j —— 以作业格式列出进程信息,可以看到 1516 sleep 命令的进程。

(PID:进程 ID、PGID:线程组 ID、SID:会话 ID、TTY:进程运行的终端,标识那个终端控制。(pts远程终端、tty系统终端)、TIME:进程运行的时间 和 CMD:命令的名称和参数)。

jobs -l —— 列出后台运行的命令,可以看到 1516 sleep 命令正在后台运行。

黄色下划线:kill -2 1516 —— 中断1516 进程。执行成功后,按 Enter 回车系统会给出提示Interrupt 提示(中断进程)。

蓝色方框:ps -j 已查询不到 1516 sleep 的进程。jobs -l 也没有后台运行的命令。

2)、kill -2 配合 fg 查看中断挂起的进程。

红色下划线:前台执行 sleep 10000 (延时10000秒)后 ctrl + z 挂起。

黄色下划线:ps -j 查看进程,可以看到 1344 sleep 进程。jobs -l 查看后台进程 1344 的状态是stopped 暂停状态。

蓝色下划线:kill -2 1344 中断 1344 进程。

绿色下划线:ps -j 查看进程,仍有 1344 sleep 进程。jobs -l 查看后台进程 1344 的状态是stopped 暂停状态。

暂时这样看,好像 kill -2 并没有起到中断进程的作用。

然而,用 fg 把后台的命令调至前台运行时可以发现 1344 sleep 已经被中断。

红色下划线:fg 把已经执行了 kill -2, 状态为 stopped 的1344 sleep命令调至前台执行。系统也反馈已经调至前台执行。(此时,实际上已经执行了 kill -2 中断了进程)

黄色方框:ps -j 已经没有了 1344 sleep 的进程。

蓝色方框:jobs -l 后台也没有指令。

3)、kill -2 配合 bg 查看中断挂起的进程。

通过上面的思路,kill -2 配合 bg 实验看看效果。同样的首先挂起一个命令,状态为 stopped 暂停。然后用 bg 命令恢复执行。

前面的步骤都是一样,挂起一个命令。通过 ps 和 jobs 查看进程和后台确认有 1379 的进程,状态为 stopped 暂停。然后执行 kill-2 中断进程,再次通过ps 和 jobs 查看进程和后台命令。确认状态为 stopped  1379 的进程仍然存在。

此时,用 bg 恢复运行挂起的命令,系统提示 sleep 命令已恢复在后台运行。然而通过 ps -j 查看进程会发现 sleep 已经被中断。jobs -l 查看后台也没有了运行的 sleep 命令了。

从实验上看:

1、后台命令运行时(Running),执行 kill -2 可以中断进程。

2、挂起命令,处于暂停状态时(Stopped),执行 kill -2 后通过 ps 还可以查询到进程, jobs还可以查询到后台命令,状态仍然是 Stopped 暂停状态。实际上,用 fg 把暂停的后台进程调至前台运行时,系统反馈 sleep 命令调至前台运行。而再用 ps 查询不到进程,已经中断了进程。用 jobs 已经查询不到后台命令。

3、挂起命令,处于暂停状态时(Stopped),执行 kill -2 后通过 ps 还可以查询到进程, jobs还可以查询到后台命令,状态仍然是 Stopped 暂停状态。用 bg 把暂停的后台命令恢复运行时,系统反馈 sleep 命令在后台运行。再用 ps 查询进程已经中断,用 jobs 已经查询不到后台命令。

linux后台任务执行

在命令后面加上可实现后台运行。使用示例:

但仅使用命令,当关闭控制台终端时,任务同样会被终止。

nohup(no hang up)命令,即忽略SIGHUP信号。nohup能保证关闭控制台终端时,任务不被终止:

关闭控制台终端后,通过ps查看,easeapi.sh 的父进程由终端进程变成了init进程,即使关闭终端,任务依然能保持运行。nohup命令默认会在当前目录创建nohup.out文件存储输出信息。如果要输出到指定文件则:

nohup命令虽然简单,但在一些情况下可能并不好用。比如,想使用scp命令从需要验证的服务端下载文件时,直接使用nohup命令并不会出现验证交互。这种情况下,推荐使用bg/fg命令。

Ctrl + C 和 Ctrl + Z是linux中两种中断命令,但作用有不同。Ctrl + C是强制中断进程,而Ctrl + Z则是暂停任务执行。在终端中正常执行scp命令,输入账户密码后,使用Ctrl + Z暂停任务。

jobs命令显示当前任务状态。

可以看到任务已经暂停,任务编号为1。

bg/fg将可将任务在前后台切换。现在将任务切换到后台:

在通过jobs查看,任务状态已变成了running:

当关闭终端后,任务可能会被终止。可使用disown命令忽略SIGHUP信号。

Linux中断补充

在系统结构中,CPU工作的模式有两种,一种是中断,由各种设备发起;一种是轮询,由CPU主动发起。

中断IRQ:

中断允许让设备(如键盘,串口卡,并口等设备)表明它们需要CPU。一旦CPU接收了中断请求,CPU就会暂时停止执行正在运行的程序,并且调用一个称为中断处理器或中断服务程序(interrupt service routine)的特定程序。CPU处理完中断后,就会恢复执行之前被中断的程序。

中断分类:

硬中断+软中断

硬中断:

①非屏蔽中断:不能被屏蔽,硬件发生的错误:内存错误,风扇故障,温度传感器故障等。

②可屏蔽中断:可被CPU忽略或延迟处理。当缓存控制器的外部针脚被触发的时候就会产生这种类型的中断,而中断屏蔽寄存器就会将这样的中断屏蔽掉。我们可以将一个比特位设置为0,来禁用在此针脚触发的中断。

软中断:

是软件实现的中断,也就是程序运行时其他程序对它的中断;而硬中断是硬件实现的中断,是程序运行时设备对它的中断。

CPU之间的中断处理(IPI)

处理器间中断允许一个CPU向系统其他的CPU发送中断信号,处理器间中断(IPI)不是通过IRQ线传输的,而是作为信号直接放在连接所有CPU本地APIC的总线上。

CALL_FUNCTION_VECTOR (向量0xfb)

发往所有的CPU,但不包括发送者,强制这些CPU运行发送者传递过来的函数,相应的中断处理程序叫做call_function_interrupt(),例如,地址存放在群居变量call_data中来传递的函数,可能强制其他所有的CPU都停止,也可能强制它们设置内存类型范围寄存器的内容。通常,这种中断发往所有的CPU,但通过smp_call_function()执行调用函数的CPU除外。

RESCHEDULE_VECTOR (向量0xfc)

当一个CPU接收这种类型的中断时,相应的处理程序限定自己来应答中断,当从中断返回时,所有的重新调度都自动运行。

INVALIDATE_TLB_VECTOR (向量0xfd)

发往所有的CPU,但不包括发送者,强制它们的转换后援缓冲器TLB变为无效。相应的处理程序刷新处理器的某些TLB表项。

Linux下如何强制中断一个程序的执行?(利用按键,而不是kill命令)

Linux下强制中断一个程序的执行使用键盘按键可以有多种方法。

1、CTRL+C键,这相当于发送Terminal信息到当前的程序。比如下图,在通过find命令查找名称带3b76的文件,可以直接按ctrl+c键结束掉循环。

2、CTRL+Z键,这是暂停键,暂停程序执行。可以再通过fg命令返回重新运行被暂停的程序。比如下图,在mysql中执行命令,这时候希望查询一下当前目录下的文件,就可以按CTRL+Z,然后执行完ls命令后,再执行fg命令即可回到mysql中。

3、CTRL+D键,发送exit信号,退出程序,比CTRL+C要温柔一些,比如下图,退出phython3.5就可以按CTRL+D键。


本文题目:linux强制中断命令,linux中断正在执行命令的方法
本文地址:http://scyanting.com/article/dsscihc.html