• Linux 守护进程


    1.什么是守护进程
    守护进程daemon指的是在后台运行的进程

    2.前台任务和后台任务
    前台任务:独占命令行窗口,运行完毕或手动终止,才能执行其他命令
    以redis服务为例

    redis-server
    

    运行结果:

    中止服务或退出session(即服务器连接),就无法访问了

    后台任务:中止服务或退出session后,进程仍能访问

    redis-server&
    

    运行结果:

    中止服务或退出session(即服务器连接)
    运行结果:

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

    对于前台任务,若要变为后台任务,可以现按Ctrl+z,然后执行bg命令(让最后一个执行的任务后台继续执行)

    3.后台任务的特点
    1)继承当前session(服务器连接)的标准输出(stdout)和标准错误(stderr),因此任务的输出依然会在命令行下显示
    2)不再继承当前session的标准输入(stdin),因此输入,没有作用

    4.SIGHUP信号
    SIGHUP信号的作用是终止收到该信号的进程
    Linux退出session会发生以下操作:
    1)用户准备退出session
    2)系统向该session发出SIGHUP信号
    3)session将SIGHUP信号发给所有子进程
    4)子进程收到SIGHUP信号,自动退出

    由上可知,前台任务会随着session的退出而退出,因为它收到了SIGHUP信号
    当Shell的huponexit参数为off时,session退出的时候,不会把SIGHUP信号发给后台任务,因此后台任务不会随着session一起退出。

    查看系统huponexit参数值:

    有的系统huponexit参数的值可能是on,所以更好的方法是使用disown命令,disown可以将指定任务从任务列表中移除,这样session就不会向她发出SIGHUP信号。
    disown用法如下:

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

    5.标准IO
    disown后,如果退出session后,如果后台进程与标准IO有交互,它还是会挂掉
    此时需要对后台任务的标准IO进行重定向。

    redis-server > stdout.txt &
    

    6.nohup命令
    nohup命令比disown更方便,nohup命令作用如下:
    1)阻止SIGHUP信号发到这个进程
    2)关闭标准输入。该进程不再接受任何输入
    3)重定向标准输出和标准错误到nohup.out

    nohup将子进程与它所在的session分离了
    nohup不会自动把进程变为“后台任务”,必须加上“&”符号

    使用示例如下:

    nohup redis-server &
    

    7.Screen命令和Tmux命令
    Screen和Tmux命令,可以实现在一个终端里,管理多个session
    这样当当前session结束了,也不影响其他session,而且可以重新登录,再连上早先新建的session
    使用示例如下:

    $ screen
    $ redis-server
    

    按下ctrl+A和ctrl+D,可以回到原来的session
    screen命令如下:

    $ screen -S name
    
    # 切回指定 session
    $ screen -r name
    $ screen -r pid_number
    
    # 列出所有session
    $ screen -ls
    

    tmux功能类似,不再详述

    8.Systemd管理工具
    除了以上工具,Linux有还有一个守护进程管理工具Systemd,它是操作系统的一部分,直接与内核交互。
    后续再详细研究。

  • 相关阅读:
    网上找的,C# 小票打印机 直接打印,备用
    SlickUpload 破解方法
    全文索引的一点个人总结
    在ASP.NET中利用SlickUpload来上传大文件
    再谈iframe自适应高度 By 大米
    发送邮件到 163、Gmail、QQ 等邮箱时,全丢垃圾箱中怎么办?
    iis下Awstats的安装使用说明
    AutoCompleteExtender控件出现undefined和null现象
    IT业史上最棒的图片之一
    EnableViewState="false",取dropdownlist的值
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/9223975.html
Copyright © 2020-2023  润新知