From a1e7c3dc07c54209a587908e221d75c4e3113f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=93=E5=8F=91=E5=8F=97=E9=95=BF=E7=94=9F?= Date: Mon, 13 Jan 2020 01:55:30 +0800 Subject: [PATCH] =?UTF-8?q?linux=E5=AE=88=E6=8A=A4=E8=BF=9B=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- images/linux/disown.png | Bin 0 -> 22508 bytes images/linux/任务暂停.png | Bin 0 -> 34799 bytes source/_posts/linux/linux守护进程.md | 128 +++++++++++++++++++++++++++ 3 files changed, 128 insertions(+) create mode 100644 images/linux/disown.png create mode 100644 images/linux/任务暂停.png create mode 100644 source/_posts/linux/linux守护进程.md diff --git a/images/linux/disown.png b/images/linux/disown.png new file mode 100644 index 0000000000000000000000000000000000000000..9f7f93180bd963fd55c4da882497794efc7e7a25 GIT binary patch literal 22508 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 literal 0 HcmV?d00001 diff --git a/source/_posts/linux/linux守护进程.md b/source/_posts/linux/linux守护进程.md new file mode 100644 index 0000000..b484dc7 --- /dev/null +++ b/source/_posts/linux/linux守护进程.md @@ -0,0 +1,128 @@ +--- +title: linux守护进程 +date: 2020-01-12 19:31:20 +tags: + - linux +categories: + - linux +--- + +多数的服务端程序都需要在服务器上持续运行 +比如使用nodejs运行一个http服务 + +```javascript +// server.js +const http = require('http') +http.createServer(function(req, res){ + console.log('收到一个请求') + res.writeHead(200, {'Content-Type': 'text/plain'}) + res.end('Hello') +}).listen(3000) +``` +现在运行,直接执行`node server.js`即可 +但是按照这种方式运行一旦断开ssh的链接,该进程就会停止 + +> 以这种方式启动的进程,按`Ctrl+C`可以中断该进程 + +### 前台任务与后台任务 +上面这种运行的方式,实际是创建了一个`前台任务` +在执行的命令后面加上`&`符号,是将其作为一个`后台任务` +```bash +node server.js & +``` +如果要让正在执行的前台任务转化为后台任务 +可以先按`Ctrl+Z`然后输入`bg` + +> `Ctrl+Z`的作用是将当前的前台任务转换为后台任务,但是处于暂停状态,在输入bg之前是不能访问的 + +![任务暂停](/images/linux/任务暂停.png) +`jobs`命令可以查看当前session的后台任务列表 + +后台任务有如下特点 +1. 继承当前会话(session)的标准输出(stdout)与错误输出(stderr) +上图中的执行方式并没有对输出进行重定向,所以转换为后台任务后依然会在命令行输出 +2. **不再**继承当前会话(session)的标准输入(stdin) +上图中的执行方式也没有对标准输入进行重定向,所以标准输入仍然来自于命令行,当然这段代码当中并没有从标准输入获取内容的操作 +如果有,该进程就会一直暂停执行 + +### SIGNUP 信号 +变成后台任务之后,该进程是否会继续执行,Linux的机制是这样的 +1. 用户准备断开session(比如logout命令或者exit命令) +2. 系统向该session发出`SIGNUP`信号 +3. session将`SIGNUP`信号发给所有子进程 +4. 子进程收到`SIGNUP`信号后,自动中断 + +概括来说,就是进程是否会中断退出,就是取决于其是否会收到SIGNUP信号 + +后台任务是否会收到SIGNUP信号,是由`huponexit`参数决定的 +```bash +shopt | grep huponexit +``` +大多数的Linux系统,该参数的值都是off,当然也不排除个别情况或者人为修改 +所以多数情况下我们可以用后台任务来作为守护进程 + +### disown 命令 +该命令是将指定的一个后台任务移出后台任务列表 +这样无论上面提到的参数设定是什么,它都不会再收到SIGNUP信号了 + +![disown](/images/linux/disown.png) + +常见用法 +```bash +# 移出最近一个正在执行的后台任务 +disown + +# 移出所有正在执行的后台任务 +disown -r + +# 移出所有后台任务 +disown -a + +# 不移出后台任务,但是让它们不会收到SIGHUP信号 +disown -h + +# 根据jobId,移出指定的后台任务 +disown %2 +disown -h %2 +``` +上图中的`[1]`就是jobId + +当然有些程序执行会有大量的标准输出 +习惯上我们会将需要后台运行的进程标准输出、错误输出、标准输入进行重定向 + +```bash +node server.js > stdout.txt 2 > stderr.txt < /dev/null & +disown +``` + +### nohup 命令 +实现的目标是一样的,这个命令还更加简单一些 +``` +nohup node server.js & +``` +`nohup`做了3件事 ++ 阻止SIGHUP信号发到这个进程。 ++ 关闭标准输入。该进程不再能够接收任何输入,即使运行在前台。 ++ 重定向标准输出和标准错误到文件nohup.out。 + +该命令实际上是把子进程与它所在的session分离了 +但是它并不会自动把进程转换为后台任务,所以`&`还是要加的 + +--- + +### 任务、进程与线程 +`任务(task)`本身是一个逻辑概念,是指由软件完成的一个活动,或者说是一系列共同达到某一目的的操作 +它可以是一个或多个进程,也可以是线程 + +在说进程之前,必须要先说一下`程序(program)`,它是一段静态的代码,是保存在非易失性存储器上的的**指令和数据的有序集合**,没有任何执行的概念 + +`进程(process)`是指一个具有独立功能的程序在某个数据集合上的一次动态执行过程,它是操作系统进行资源分配和调度的基本单元。 +它是程序的一次执行过程,包括了动态**创建、调度、执行和消亡**的整个过程(这一系列都由操作系统的调度机制来完成),它是程序执行和资源管理的最小单位。进程不但包括程序的指令和数据,而且包括程序计数器和处理器的所有寄存器以及存储临时数据的进程堆栈。从操作系统的角度看,进程是程序执行时相关资源的总称。当进程结束时,所有资源被操作系统自动回收。 + +> 一次任务的运行可以同时激活多个进程,这些进程相互合作来完成该任务的一个最终目标。 + +#### 线程 +进程是系统中程序执行和资源分配的基本单位。每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换时操作系统的开销比较大。 +为了提高效率,操作系统又引入了另一个概念——`线程(thread)`。 +线程是进程上下文中执行的代码序列,又称为轻量级的进程。它是操作系统能够调度的最小单元。线程可以对进程的内存空间和资源进行访问,并与同一进程中的其他线程共享。因此,线程的上下文切换的开销比进程小得多。一个进程可以拥有多个线程,其中每个线程共享该进程所拥有的资源。 +要注意的是,由于线程共享了进程的资源和地址空间,因此,任何线程对系统资源的操作都会给其他线程带来影响。由此可知,多线程中的同步是非常重要的问题