当前位置: 首页 > wzjs >正文

北海 做网站 英文东莞做网页公司

北海 做网站 英文,东莞做网页公司,企业官网首页设计,电力工程造价信息网setsid 是一个在 Linux 和 Unix 系统中运行的命令,用于启动一个新的会话(session),并将指定的程序在这个新会话中运行。它的主要作用是让进程脱离当前终端(terminal)的控制,成为独立的守护进程&…

setsid 是一个在 Linux 和 Unix 系统中运行的命令,用于启动一个新的会话(session),并将指定的程序在这个新会话中运行。它的主要作用是让进程脱离当前终端(terminal)的控制,成为独立的守护进程(daemon)。


基本语法

setsid [options] command [arguments]

核心功能

  1. 创建新会话

    • 调用进程会成为新会话的领导者(session leader),并脱离原终端的控制。
    • 新会话没有关联的控制终端(即使程序尝试打开终端也会失败)。
  2. 脱离终端依赖

    • 即使父进程(如终端)退出,通过 setsid 启动的进程仍会继续运行。
  3. 避免进程被信号干扰

    • 例如,终端关闭时发送的 SIGHUP 信号不会影响 setsid 启动的进程。

常见用途

  1. 启动守护进程
    让程序在后台运行,不受终端关闭的影响:

    setsid your_command &
    
  2. 避免终端退出时进程被终止
    比如运行一个长时间任务:

    setsid ./long_running_script.sh
    
  3. 结合 nohup 使用
    双重保障(脱离终端 + 忽略 SIGHUP):

    setsid nohup your_command &
    

常用选项

选项说明
-c, --ctty设置新会话的控制终端(需特权,极少使用)
-w, --wait等待子进程结束,并返回其退出状态
-V, --version显示版本信息
-h, --help显示帮助文档

示例

  1. 启动一个后台服务并脱离终端:

    setsid /usr/local/bin/my_service
    
  2. 运行脚本并忽略终端信号:

    setsid ./script.sh > /dev/null 2>&1
    
  3. 结合 nohup 和重定向:

    setsid nohup python3 server.py > output.log 2>&1 &
    

与类似命令对比

命令作用
nohup忽略 SIGHUP 信号,但进程仍属于原会话(需配合 & 实现后台运行)。
disown将已运行的作业从 shell 的作业表中移除,避免终端退出时收到 SIGHUP
tmux/screen通过虚拟终端管理会话,功能更强大,适合交互式任务。

注意事项

  • setsid 不能直接用于已经运行的进程。若需将现有进程移到新会话,可使用 reptyr 等工具。
  • 如果命令本身会自行守护进程(如 nginxsshd),则无需额外使用 setsid

通过 setsid,你可以轻松实现进程的“后台持久化”,特别适合需要长期运行的服务或任务。


忽略 SIGHUP 是什么意思?

SIGHUP(Signal Hang Up)是 Linux/Unix 系统中的一种信号(Signal),默认行为是终止进程。当终端(Terminal)关闭或父进程退出时,系统会向该终端关联的所有进程发送 SIGHUP 信号,导致这些进程被终止。


1. 什么情况下会收到 SIGHUP?

  • 关闭终端窗口(SSH 断开、本地终端退出)。
  • 父进程退出(如 shell 退出)。
  • 手动发送 SIGHUPkill -HUP <PID>)。

2. 如何让进程忽略 SIGHUP?

方法 1:使用 nohup

nohup(No Hang Up)命令可以让进程忽略 SIGHUP 信号:

nohup your_command &
  • 输出默认重定向到 nohup.out
  • 进程不会因终端关闭而终止。

方法 2:使用 setsid

setsid 让进程运行在新的会话(Session),不受原终端影响:

setsid your_command
  • 进程完全脱离终端,不会收到 SIGHUP

方法 3:使用 disown

如果进程已经在运行,可以用 disown 让它脱离 shell 控制:

./your_command &
disown -h %1  # 让作业 1 忽略 SIGHUP

方法 4:使用 trap(在脚本内部)

在脚本中捕获并忽略 SIGHUP

#!/bin/bash
trap '' HUP  # 忽略 SIGHUP
your_command

3. 对比不同方法

方法作用机制适用场景
nohup忽略 SIGHUP简单后台任务
setsid创建新会话,脱离终端长期守护进程
disown从 shell 作业表移除已运行的进程
trap脚本内部处理信号自定义信号处理

4. 示例

(1)用 nohup 运行 Python 脚本

nohup python3 server.py > server.log 2>&1 &
  • 即使终端关闭,server.py 仍会运行,日志写入 server.log

(2)用 setsid 启动守护进程

setsid /usr/local/bin/my_daemon
  • my_daemon 完全脱离终端,不会因 SIGHUP 终止。

(3)用 disown 保护已运行进程

./long_task.sh &  # 后台运行
disown -h %1      # 忽略 SIGHUP
  • 即使终端退出,long_task.sh 也不会被终止。

5. 总结

  • SIGHUP 是终端关闭时发送的信号,默认会终止进程。
  • nohupsetsiddisowntrap 都可以让进程忽略 SIGHUP
  • setsid 最彻底,适合守护进程;nohup 适合简单后台任务。
http://www.dtcms.com/wzjs/557035.html

相关文章:

  • 网站是广西住房和城乡建设厅中国建筑设计研究院官网
  • 建设部精神文明建设网站北滘网站建设公司
  • 吉林有做网站的吗诸暨北京有哪些网站制作公司
  • 网站管理是什么如何搜索asp网站
  • 网站工信部备案号wordpress 插件 文本
  • 北京天通苑网站建设潮流设计网站
  • 网站制作哈尔滨seo什么意思中文意思
  • 玉林网站推广我要自学网怎么样
  • 爱站网关键词查询工具一般网站设计多少钱
  • 中企动力科技股份有限公司常州分公司新人学会seo
  • 网站策划要遵循的原则wordpress 批量产品尺码
  • 安卓和网站开发找工作做网站v1认证是什么意思
  • 西安网站建设新闻网页编辑代码模板
  • 济宁市兖州区城市建设局网站wordpress mediawiki
  • 成都网站建设公司汇总哈尔滨创意网站建设
  • jquery网站开发实例图片素材网站有哪些
  • 山东网站建设是什么泛微oa办公系统官网
  • 无锡网站建设哪里好汉服网站的建设
  • 中国做网站最好的公司小程序模板购买
  • 在线制作表白网站的源码正能量软件不良网站直播
  • 网站开发语言选择网站建设实践报告3000字
  • 做灯具网站推广哪家好wordpress mo文件不起作用
  • 给个网站谢谢了文案策划的网站
  • 中国建设银行阜阳分行网站网站制作方案和主要内容
  • 如何做淘客推广网站婚恋网站 模板
  • 网站前端开发链接搜索
  • 旅游电子商务网站五金配件网站建设报价
  • 做网站要准备什么中建八局第一建设有限公司宁文忠
  • 企业网站建设有哪些书籍鸿星尔克的网络营销策略
  • 公司网站做的一样算不算侵权6科技大盗