关于linux程序的查看、前台运行、后台运行、杀死的管理操作。
前言
在Linux中,
程序(program)是放在磁盘上的程序,是不会执行的。
进程(process)是程序被触发,从而加载到内存中的,会被CPU随机执行。
Linux中,有非常多的进程在实时运行,对于进程的管理也是运维非常重要的一部分
Linux的程序变为进程的过程。 以 touch 命令为例子
1:由用户去触发磁盘中的程序,
2:根据触发的用户的权限取得执行的权限,不同的用户权限不同,如root的是 UID/GID = 0/0。
3:取得程序运行的相关资料,也就是程序的上下文。比如touch需要知道当前所在文件路径,当前文件夹的权限。
4:将执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中。
5:Linux生成一个PID进程id,Linux会根据程序的PID来管理此进程。同一个程序运行多次也会有不同的PID,比如运行3次sleep;多个用户登录执行/bin/bash;他们的PID都是不同的。
6:执行完毕后,成功退出,或者失败退出,此时PID被收回,内存中的数据消失。还有可能成为僵尸进程,一直停留在内存中,哈哈哈。
也可以理解,我们可以通过对程序PID的操作来查看管理程序。
Linux中程序与程序间的关系
在 Linux 的程序调用通常称为 fork-and-exec 的流
程 !程序都会借由父程序以复制 (fork) 的方式产生一个一模一样
的子程序, 然后被复制出来的子程序再以 exec 的方式来执行实际要进
行的程序,最终就成为一个子程序的存在。
在子程序执行的时候,父程序会sleep。子程序结束的时,子程序的PID,内存中的数据会消失,再回到父程序的流程中。
程序的前台运行与后台运行:bash 的 job control
在某些特定的环境下,会在/etc/security/limits.conf 里面设置使用者同时
可以登陆的连线数,在这样的情况下,某些使用者可能仅能以一个连线
来工作。所以有时候需要用单个bash来处理多个工作。这时候就需要把程序放在后台执行了。
直接将指令丢到背景中“执行”的 &
tar -zpcf /tmp/etc.tar.gz /etc &
这条命令可以将打包的过程放到后台执行,但是将工作丢到背景当中要特
别注意数据的流向。包括上面的讯息就有出现错误讯息,导致我的前台被影响。
如果想要前台不被影响则可以像下面这样:
tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
如此一来,输出的信息都给他传送到 /tmp/log.txt 当中,当
然就不会影响到我们前台的作业了。 这就是数据流重导向的重要性。
将“目前”的工作丢到后台中“暂停”:[ctrl]-z
如:sleep 1000
这时,后台程序会暂停,不会再执行了。
使用 jobs -l 查看后台的程序。
[1] 和 [2] 是工作号,可以通过工作号来操作任务。
将后台工作拿到前台来处理:fg + 任务编号
让工作在后台下的状态变成运行中: bg + 任务编号
管理背景当中的工作: kill
kill向以 PID 进程号或者 JOBSPEC 任务声明指定的进程发送一个以
SIGSPEC 信号声明或 SIGNUM 信号编号命名的信号 来管理进程。
kill有如下的信号码
一般的话,使用1,9,15这三个即可达成很多目的了。
-1是重新加载配置文件。
-9 这个 signal 通常是用在“强制删除一个不正常的
工作”时所使用的, -15 则是以正常步骤结束一项工作(15也是默认
值),两者之间并不相同呦!举上面的例子来说, 我用 vim 的时候,
不是会产生一个 .filename.swp 的文件吗? 那么,当使用 -15 这个 signal
时, vim 会尝试以正常的步骤来结束掉该 vi 的工作, 所以
.filename.swp 会主动的被移除。但若是使用 -9 这个 signal 时,由于该
vim 工作会被强制移除掉,因此, .filename.swp 就会继续存在文件系统
当中。
通常使用 -9 是因为某些程序你
真的不知道怎么通过正常手段去终止他,这才用到 -9 的
另外, kill 后面接的数字默认会是 PID ,如果想要管理 bash 的工作控制,就得要加上 %数字 了, 这点也得特别留意才行喔!
如:
kill -9 %1
kill -9 %2
离线管理问题
要注意的是,我们在工作管理当中提到的“背景”指的是在终端机
模式下可以避免 [crtl]-c 中断的一个情境, 你可以说那个是 bash 的背
景,并不是放到系统的背景去喔!所以,工作管理的背景依旧与终端机
有关啦! 在这样的情况下,如果你是以远端连线方式连接到你的 Linux
主机,并且将工作以 & 的方式放到背景去, 请问,在工作尚未结束的
情况下你离线了,该工作还会继续进行吗?答案是“否”!不会继续进
行,而是会被中断掉。
简单说,如果bash关掉,当前bash的后台任务也会结束
那该如何处理呢? 首先,你可以参考前一章的 at 来处理即
可!因为 at 是将工作放置到系统背景, 而与终端机无关。如果不想要
使用 at 的话,那你也可以尝试使用 nohup 这个指令来处理喔!这个
nohup 可以让你在离线或登出系统后,还能够让工作继续进行。他的语
法有点像这样:
[root@study ~]# nohup [指令与参数] <==在终端机前景中工作。
[root@study ~]# nohup [指令与参数] & <==在终端机背景中工作
有够好简单的指令吧!上述指令需要注意的是, nohup 并不支持
bash 内置的指令,因此你的指令必须要是外部指令才行。 我们来尝试
玩一下下面的任务吧!
1. 先编辑一支会“睡着 500 秒”的程序:
[root@study ~]# vim sleep500.sh
#!/bin/bash
/bin/sleep 500s
/bin/echo “I have slept 500 seconds.”
2. 丢到背景中去执行,并且立刻登出系统:
[root@study ~]# chmod a+x sleep500.sh
[root@study ~]# nohup ./sleep500.sh &
[2] 14812
[root@study ~]# nohup: ignoring input and appending output to `nohup.out’ <==会告知这个讯息!
[root@study ~]# exit
如果你再次登陆的话,再使用 pstree 去查阅你的程序,会发现
sleep500.sh 还在执行中喔!并不会被中断掉! 这样了解意思了吗?由于
我们的程序最后会输出一个讯息,但是 nohup 与终端机其实无关了,
因此这个讯息的输出就会被导向“ ~/nohup.out ”,所以你才会看到上述
指令中,当你输入 nohup 后, 会出现那个提示讯息啰。
如果你想要让在背景的工作在你登出后还能够继续的执行,那么
使用 nohup 搭配 & 是不错的运行情境喔! 可以参考看看!
注意事项:
这些工作所触发的程序必须来自于你 shell 的子程序(只管理自己
的 bash);
前景:你可以控制与下达指令的这个环境称为前景的工作
(foreground);
背景:可以自行运行的工作,你无法使用 [ctrl]+c 终止他,可使用
bg/fg 调用该工作;
背景中“执行”的程序不能等待 terminal/shell 的输入(input)
相关文章:

关于linux程序的查看、前台运行、后台运行、杀死的管理操作。
前言 在Linux中, 程序(program)是放在磁盘上的程序,是不会执行的。 进程(process)是程序被触发,从而加载到内存中的,会被CPU随机执行。 Linux中,有非常多的进程在实时运…...

STM32作业设计
目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…...

PHPSTOM配置Laradock,xdebug,phpunit
原理图: 片面理解: phpstorm启用一个9000端口,这个端口用来接收到信息后,启用xdebug功能。服务器端(docker), 当客户端访问laravel项目域名后, 并读取xdebug.ini的配置, 把调试的请求数据, 向配置里面的端口发送消息, 配置里面的端…...
使用Java进行数据分析和处理:应用在实际业务场景中的技术
在当今数据驱动的时代,数据分析和处理已经成为各行各业中不可或缺的一部分。Java作为一种广泛应用于企业级开发的编程语言,也在数据领域展现出了强大的能力。本文将探讨如何使用Java进行数据分析和处理,以及在实际业务场景中应用的技术。 ##…...
C++中的List
摘要 C 标准库中的 std::list 是一种双向链表容器,它允许在常数时间内进行插入和删除操作,每个元素包含一个指向前一个和后一个元素的指针。这给我们开发提供了高效的插入和删除操作。 引入头文件 要使用 std::list,需要包含头文件 <li…...
go map 如何比较两个 map 相等
go map 如何比较两个 map 相等 都为 nil非空、长度相等,指向同一个 map 实体对象相应的 key 指向的 value 相等 直接将使用 map1 map2 是错误的。这种写法只能比较 map 是否为 nil。因此只能是遍历map 的每个元素,比较元素是否都是深度相等。...

牛客网刷题 | BC108 反斜线形图案
目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…...

数据的表示和运算
目录 一.各进制间的相互转换 1.各进制转化为10进制 2.二进制和八进制,十六进制之间地相互转化 3.十进制转换为其他进制 二.BCD码(Binary-Coded Decimal,用二进制编码的十进制) 1.8421码 2.余3码 3.2421码 三.无符号整数 …...

【爬虫工具】油管视频批量采集软件
一、背景介绍 1.1 爬取目标 我用Python独立开发了一款爬虫软件,作用是:通过搜索关键词采集ytb的搜索结果,包含14个关键字段:关键词,页码,视频标题,视频id,视频链接,发布时间,视频时长,频道名称,频道id,频道链接,播放数,点赞数,评…...

【LeetCode刷题】二分查找:寻找旋转排序数组中的最小值、点名
【LeetCode刷题】Day 14 题目1:153.寻找旋转排序数组中的最小值思路分析:思路1:二分查找:以A为参照思路2:二分查找,以D为参照 题目2:LCR 173.点名思路分析:思路1:遍历查找…...

使用python绘制小提琴图
使用python绘制小提琴图 小提琴图效果代码 小提琴图 小提琴图(Violin Plot)是一种结合了箱线图和核密度估计图的图形,用于显示数据分布的情况。它不仅展示了数据的四分位数、最大值和最小值,还通过密度曲线展示了数据的分布形状。…...
【C++】6-7 你好,输出的格式控制(三角形)
6-7 你好,输出的格式控制(三角形) 分数 10 全屏浏览 切换布局 作者 向训文 单位 惠州学院 完善程序:输入行数rows(大于0),第一行输出rows个*,接下来每行的*个数减1,直…...
力扣每日一题 6/1
2928.给小朋友们分糖果[简单] 题目: 给你两个正整数 n 和 limit 。 请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。 示例 1: 输入:n 5, limit 2 …...

决定短视频打开率的要素:成都鼎茂宏升文化传媒公司
在当下这个短视频盛行的时代,无论是个人创作者还是企业品牌,都希望通过短视频平台获得更多的曝光和关注。然而,如何让自己的短视频在众多内容中脱颖而出,吸引用户的点击和观看,成为了摆在我们面前的重要问题。成都…...
解决通过包管理器下载 Sharp 时遇到的二进制文件下载问题
sharp 是一个流行的 Node.js 库,用于高性能的图片处理。它依赖于预构建的 libvips 二进制文件,这些文件通常是从官方仓库下载的。 但在某些地区的网络环境下,直接下载可能会因为网络限制而失败。 通过在命令行中分别执行以下两行内容即可&a…...
反序输出c++
题目描述 输入n个数,要求程序按输入时的逆序把这n个数打印出来,已知整数不超过100个。也就是说,按输入相反顺序打印这n个数。 输入 输入一行共有n个数,每个数之间用空格隔开。 输出 如题要求:一行,共有n个数&…...
C++ 封装线程池(结合QT支持信号机制)
纯C风格线程池 纯C 风格线程池可参考这篇文章 https://llfc.club/category?catid225RaiVNI8pFDD5L4m807g7ZwmF#!aid/2c2IJUcCUOfzEQQRRdOXYIZuCjP 视频教程 相关线程池和并发编程的视频可以看看这个连接: https://www.bilibili.com/video/BV1Xt421H7M7/?vd_s…...

c# 学习教程
打印语句 折叠代码 变量 整形 浮点型 特殊类型...
【ros2】入门
ros2 在机器人控制,无人机飞行控制,自动驾驶领域,ros2可是如日中天的存在。无论是学习其架构设计,还是使用ros2开发机器人,ros2的是一个很错的选择。 安装 在ros2的,推荐“小鱼”的工具 wget http://fishros.com/i…...

网络安全基础技术扫盲篇 — 名词解释之“数据包“
用通俗易懂的话说: 数据包就像是一个信封。当你写信给某个人时,你将内容写在一张纸上,然后将纸叠起来并放入信封中,就形成了一个完整要发送的数据内容。信封上有发件人和收件人的详细地址,还有一些其他必要的信息&…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...