美文网首页
centos7-守护进程

centos7-守护进程

作者: Fantast_d2be | 来源:发表于2020-06-09 23:29 被阅读0次

    前台任务与后台任务

    写一个简单node脚本server.js

    var http = require('http');
    
    http.createServer(function(req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello World');
    }).listen(5000);
    

    前台任务

    运行命令

    node server.js
    

    上面这样启动的脚本,称为"前台任务"(foreground job)。它会独占命令行窗口,只有运行完了或者手动中止,才能执行其他命令。
    并且一旦退出命令行窗口,这个应用就一起退出了,无法访问了。

    后台任务

    运行命令

    node server.js & 
    

    在命令的尾部加上符号&,启动的进程就会成为"后台任务"。

    前后台任务切换

    • 后台切换成前台

    查看当前后台任务

    jobs
    

    结果显示:

    [1]+  Stopped                 node server.js
    

    运行命令

    fg 1
    

    任务切换为前台。

    • 前台切换为后台
      可以先按ctrl + z,然后执行bg命令(让最近一个暂停的"后台任务"继续执行)。

    SIGHUP信号

    Linux系统SIGHUP信号设计

    用户准备退出 session
    系统向该 session 发出SIGHUP信号
    session 将SIGHUP信号发给所有子进程
    子进程收到SIGHUP信号后,自动退出

    "后台任务"是否也会收到SIGHUP信号?这由 Shell 的huponexit参数决定的。

    shopt | grep huponexit
    

    执行上面的命令,就会看到huponexit参数的值。
    大多数Linux系统,这个参数默认关闭(off)。因此"后台任务"不会随着 session 一起退出。

    • huponexit设置

    将huponexit设置为off

    shopt -u huponexit
    

    将huponexit设置为on

     shopt -s huponexit
    

    查看当前系统huponexit对应的值

    shopt | grep onexit
    

    当huponexit为on时,输入命令exit时后台任务会收到SIGHUP信号而退出。

    守护进程

    nohup

    nohup 的用途就是让提交的命令忽略 hangup 信号。

    nohup node server.js
    

    标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename 2>&1"来更改缺省的重定向文件名。

    disown

    使用disown 之后,会将把目标作业从作业列表中移除,我们将不能再使用jobs来查看它,但是依然能够用ps -ef查找到它。

    node server.js
    disown
    

    disown用法

    # 移出最近一个正在执行的后台任务
    disown
    
    # 移出所有正在执行的后台任务
    disown -r
    
    # 移出所有后台任务
    disown -a
    
    # 不移出后台任务,但是让它们不会收到SIGHUP信号
    disown -h
    
    # 根据jobId,移出指定的后台任务
    disown %2
    disown -h %2
    

    相关文章

      网友评论

          本文标题:centos7-守护进程

          本文链接:https://www.haomeiwen.com/subject/lqagzhtx.html