Linux如何从命令行卡死的进程中退出?

不知道大家在使用Linux的时候,会不会遇到一些命令,有可能卡顿,有可能执行时间过长(比如使用 find 查找某个文件),这个时候我不想继续执行这个命令了,说来惭愧,我之前一直使用Ctrl+Z去终止这个命令,今天才知道,这样有很大的问题!

信号简介

一个进程在运行的时候,是能够接受内核发送的信号的,并且对这个信号做出自己的默认行为(没有被修改的话),我列举一下常见的信号列表:

先看一下信号9,我们熟知的kill -9 <进程号>,就是让内核发送给进程终止信号,进程接收以后就会终止。

同理,我们也可以使用键盘发送信号 ,Ctrl + Z发送的信号只是挂起这个进程,Ctrl + C才是终止。这意味着,使用Ctrl + Z从终端退出的进程,并没有被释放

实验

接下来通过两个实验,看看Ctrl + Z(挂起)和Ctrl + C(停止)的区别。

find 查找文件

我们使用find命令从home目录查找某个文件,然后分别使用Ctrl + Z(挂起)和Ctrl + C(停止),看看他们的区别。

  1. Ctrl + Z

    运行find命令后,使用ctrl +Z 退出

    此时使用ps -t显示当前正在运行的进程的信息:

​ 可以发现进程还存在着。

  1. Ctrl + C

    运行find命令后,使用ctrl +C

    此时可以发现进程被彻底关闭了。

其实这种情况还是好的一种情况,因为本质上shell终端也是一个进程,在shell终端里使用命令,相当于创建终端的子进程,当终端(父进程)被关闭时,其子进程也会被关闭(大部分时候)。对于上面的情况,当我们关闭shell命令行时,find进程也会被关闭。

但是,这也只是大部分情况,也可能有一些子进程即使在父进程被关闭之后也不会被关闭,而是一直被挂起!

端口占用

在系统开启一个进程,这个进程会监听某个端口:

  1. Ctrl + Z

    在这之后,即使关闭终端,56868进程也没有被释放。

​ 上图是在一个新的终端里使用sudo lsof -i :801查看端口的占用,发现这个进程并没有被释放,因此需 要使用kiil -9 56868释放进程。

  1. Ctrl + C

​ 进程被释放,端口也被释放。

所以大家如果不打算继续使用这个被退出的进程,记得使用Ctrl + C退出哦。

更多与Linux信号相关的知识,感兴趣的可以移步:https://www.cnblogs.com/curiositywang/p/17994774

Linux如何从命令行卡死的进程中退出?的更多相关文章

  1. Docker命令行与守护进程如何交互?

    译者按: Docker是典型的C/S架构,其守护进程(daemon)与命令行(CLI)是通过REST API进行交互的. 原文: Understanding how the Docker Daemon ...

  2. Linux(CentOS 7)命令行模式安装VMware Tools 详解

    本篇文章主要介绍了如何在Linux(CentOS 7)命令行模式安装VMware Tools,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 本例中为在Linux(以CentOS 7为例)安装VM ...

  3. 在CMD命令行下关闭进程的命令

    转载: [重要]在CMD命令行下关闭进程的命令━━━━━━━━━━━━━━━━━━━━━━━━━━ 方法一: 在"运行"中输入:ntsd -c q -pn 程序名字(在MS-Dos ...

  4. mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)(转自筑梦悠然)

    原文链接https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/73805962 Mysql导入导出sql,txt,excel 首先我们通过命令行 ...

  5. 【转载】Linux系统下命令行连接蓝牙设备 查看查找 蓝牙

    Linux系统下命令行连接蓝牙设备 2018年11月26日 10:47:27 Zz笑对一切 阅读数:741   1.打开系统蓝牙 sudo service bluetooth start 1 进入bl ...

  6. 在linux下用命令行编译 java的eclipse项目

    由于jdk的版本问题导致在windows上编译打包好的jar包放在linux服务器上运行的时候出现一点小异常,所以决定在linux上进行一次项目编译,这有两个选择1.在相同的linux环境下安装lin ...

  7. Mac OSX系统、Linux、Windows命令行教程

    目录 Mac OSX系统.Linux.Windows命令行教程 一.各系统终端的使用方法 二.各系统命令的功能 Mac OSX系统.Linux.Windows命令行教程 用你的终端做一些事情 (com ...

  8. 在Linux主机使用命令行批量删除harbor镜像

     在Linux主机使用命令行批量删除harbor镜像 脚本使用说明: 此脚本不是万能脚本,根据自身环境要调整很多 能用harbor的域名就不要用IP 脚本前半部分可以套用,后半部分需一步一步试错,结合 ...

  9. [转帖]如何在Linux上使用命令行查看硬件信息

    如何在Linux上使用命令行查看硬件信息 时间:2016-01-13   作者:admin 分类:新手入门 阅读:126次 http://embeddedlinux.org.cn/emb-linux/ ...

  10. 在Linux下使用命令行打印文件

    近期需要将数学笔记打印出来复习,才发现Linux KDE环境下的默认PDF软件Okular根本无法将我在GoodNotes B5大小的页面写下的内容自适应地放大到A4纸上,只能以页面的原始尺寸打印.然 ...

随机推荐

  1. 字节二面:你怎么理解信道是golang中的顶级公民

    1. 信道是golang中的顶级公民 goroutine结合信道channel是golang中实现并发编程的标配. 信道给出了一种不同于传统共享内存并发通信的新思路,以一种通道复制的思想解耦了并发编程 ...

  2. Note -「拟阵交」& Solution -「CF 1284G」Seollal

    \(\mathscr{Description}\)   Link.   给定张含空格和障碍格的 \(n\times m\) 的地图.构造在四连通的空格中间放置墙壁的方案,使得: 所有空格在四连通意义下 ...

  3. Solution -「AGC 031E」Snuke the Phantom Thief

    \(\mathscr{Description}\)   Link.   在一个网格图内有 \(n\) 个格子有正价值,给出四种限制:横 / 纵坐标不大于 / 不小于 \(a\) 的格子不能选超过 \( ...

  4. 【事件分析】20250112-Usual 赎回机制调整事件

    背景信息 https://docs.usual.money/ Usual 是一个聚合 RWA 的稳定币发行协议,经济模型中存在三种代币: USD0:Usual 发行的稳定币. USD0++:USD0+ ...

  5. python基础学习6和7

    模块类与对象 模块 内置模块 time, random, os, json 第三方模块 requests, pandas, numpy,.... 自定义模块 xxx.py 常见的内置模块 hashli ...

  6. c++:-6

    上一节学习了C++中的多态性:c++:-5,本节学习C++的函数模版.数据结构以及排序查找操作: 模版 函数模版 思考:如果重载的函数,其解决问题的逻辑是一致的.函数体语句相同,只是处理的数据类型不同 ...

  7. uni-app之条件编译

    ifdef 仅出现在XXx平台上 仅出现在 App 平台下的代码 #ifdef APP-PLUS 需条件编译的代码 #endif <!-- 只在H5上有哈 --> <!-- #ifd ...

  8. 玩转云端 | 拥有HBlock这项“存储盘活绝技”,数据中心也能“热辣瘦身”!

    夏天马上就要到了,"瘦身"不光是特定人群的需求,也是数据中心的需求.构建轻量化.低碳化.高性价比的新型数据中心,更有效地支撑经济社会数字化转型,已成为业界主流趋势. 如何让数据中心 ...

  9. LeetCode 题解大全

    项目说明 LeetCode 系列题解致力于帮助程序员更好地理解和掌握算法思维,内容包含详细的解题思路分析.图文并茂的示例讲解和完整的代码实现. LeetCode 最全题解:持续更新中,欢迎 Star ...

  10. 科研界DeepSeek+AI应用协作攻略来了!

    自从DeepSeek爆火 AI应用届开启"精英集结" 与DeepSeek携手撑起国产AI一片天 比如,DeepSeek+Midjourney 成为设计师的好帮手 DeepSeek+ ...