博客
关于我
linux环境下的各种后台执行
阅读量:791 次
发布时间:2023-02-04

本文共 1228 字,大约阅读时间需要 4 分钟。

进程后台运行的技巧与方法

在实际工作中,有时需要某些进程在后台运行。以下是一些常用的方法和技巧,帮助我们更高效地管理后台任务。


一、已知需要后台运行且尚未运行的进程

当我们计划让某个进程在后台运行时,通常需要确保它不会因挂断终端(HUP)信号而中断。以下是一些常用的方法:

  • 使用 nohup 命令

    nohup 的作用是让提交的命令忽略 HUP 信号。它非常适合用来运行需要长时间后台执行的脚本或程序。
    示例:

    nohup ./filename.sh > filename.log 2>&1 &

    优势:

    • 保障进程不会因挂断终端而异常中断。
    • 任务放置到后台运行,不占用当前终端。
    • 支持将错误输出打印到 log 文件中,默认情况下,只有标准输出会被记录。
  • 使用 setsid 命令

    setsid 会在一个新的会话中运行命令,从而避免当前终端发出的 HUP 信号对进程造成影响。
    示例:

    setsid COMMAND [ARG]...

    优势:

    • 适用于需要完全避免 HUP 信号干扰的场景。
    • 不需要在每个命令前都加 nohupsetsid
  • 结合 & 产生子shell

    通过在命令后加上 &,可以将任务放置到后台运行。
    示例:

    (COMMAND [ARG]... &)

    优势:

    • 任务放置到后台运行,不受当前 shell 终端的 HUP 信号影响。
    • 通常与 nohup 结合使用,如:
      nohup ./filename.sh > filename.log 2>&1 &
  • 使用 screen 等工具

    screen 是一个非常实用的工具,可以创建全屏虚拟会话终端。这样做的好处是,只有在手动输入 exit 才会退出会话。
    示例:

    screen -dmS {name} {script}

    优势:

    • 适合有规划地执行多个后台任务。
    • 提供对后台任务的方便管理。
    • 可以灵活切换和管理多个会话。

  • 二、已运行的进程需要放置到后台运行

    有时候我们已经启动了某个进程,但需要将它放置到后台运行。以下是一些常用的方法:

  • 使用快捷键 Ctrl + z

    • Ctrl + z 用于暂停当前正在运行的进程。
    • 之后可以通过 bg 命令将进程放到后台运行。
      示例:
    Ctrl + z  bg
  • 使用 fgdisown

    • fg {jobid} 用于将当前处于后台的进程放回前台。
    • disown 命令用于移除当前终端下的后台进程。
      示例:
    jobs  # 查看当前后台进程列表  fg 1  # 将第一个后台进程放回前台  disown -h 1  # 移除第一个后台进程
  • 使用 reptyr 命令

    reptyr 是一个可以用来将后台进程切换到当前终端的工具。
    示例:

    reptyr {pid}

    优势:

    • 适用于需要将后台进程切换到当前终端而不终止任务的情况。
    • 结合 screen 使用时,可以更灵活地管理后台任务。

  • 三、参考与引用说明

    • IBM official documentation
    • 知乎技术专栏

    转载地址:http://hskfk.baihongyu.com/

    你可能感兴趣的文章
    Linux硬盘检测工具详解
    查看>>
    Linux磁盘IO状态分析实战
    查看>>
    linux磁盘分割
    查看>>
    linux磁盘清理
    查看>>
    Linux磁盘管理--RAID原理
    查看>>
    linux禁止Root远程登陆
    查看>>
    linux移动文件命令
    查看>>
    linux程序分析工具介绍(三)——sar
    查看>>
    linux程序打印cr3寄存器,linux – 每次从内核模块读取时,为什么CR3寄存器内容会有所不同?...
    查看>>
    linux程序段错误原理,Linux 下c 程序段错误分析
    查看>>
    linux端口汇聚,linux端口聚合
    查看>>
    Linux端口状态含义
    查看>>
    linux端口监听默认ipv6,Nginx 监听 IPv6 地址的配置方法
    查看>>
    Linux笔记(usermod命令,用户密码管理,mkpasswd)
    查看>>
    linux笔记:目录处理命令ls,mkdir,cd,pwd,rmdir,cp,mv,rm
    查看>>
    linux符号大全
    查看>>
    Linux第一周学习 总结!
    查看>>
    linux第五章(迁移/home分区)
    查看>>
    linux简单的TCP与UDP的socket程序以及机器大小端的判断程序
    查看>>
    linux算性质的命令,(linux命令学习)找到相应性质的文件并删除
    查看>>