linux强制中断命令,linux中断程序指令

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下如何强制中断一个程序的执行?(利用按键,而不是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中ctrl+z和ctrl+c的区别

在Linux系统中,Ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.

Ctrl+c是强制中断程序的执行,,进程已经终止

Ctrl+z是将任务中止(暂停的意思)。

在这一点上,任务还没有结束,它仍然在进行中,它只是挂着。用户可以使用fg/bg操作继续前台或后台任务,fg命令重启前台中断的任务,bg命令重启后台中断的任务。

Ctrl+d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。

扩展资料:

linux命令是对Linux系统进行管理的命令。

对于Linux系统,无论是CPU、内存、磁盘驱动器、键盘、鼠标还是用户都是文件,Linux系统管理命令是其正常操作的核心,类似于以前的DOS命令。

系统上有两种类型的Linux命令:内置的Shell命令和Linux命令。

控制台命令,是指通过输入字符接口的操作系统命令,如DOS命令就是控制台命令。

需要注意的是,与DOS命令不同,Linux命令(包括文件名等)是大小写敏感的,这意味着如果您在错误的情况下键入命令,系统将不会像您预期的那样响应。

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系统与设置命令

在前面的两个章节中,我们主要介绍了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命令

执行效果如下

上图显示中国时区

本文标题:linux强制中断命令,linux中断程序指令
文章地址:https://www.cdcxhl.com/article2/hedgoc.html

成都网站建设公司_创新互联,为您提供品牌网站建设手机网站建设服务器托管网站制作定制网站响应式网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网页设计公司