• Linux上后台运行进程(nohub、screen和tmux )


    Linux上后台运行进程(nohub、screen和tmux )

    命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session) 。

    会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。

    一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。

    为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。

    Linux上后台运行进程有一下三种方法:

    • nohup
    • screen虚拟终端【推荐】
    • tmux终端复用器【推荐】

    nohup

    nohup 全称:no hang up(不挂起)。也就是说,当前交互命令行退出的时候,程序还在运行。

    nohup command > myout.file 2>&1 &
    
    • 1

    这条命令表示执行后退出交互命令行也不挂起,通过最后一个 &,表示后台运行,不霸占交互命令行,同时将标准输出和标准错误输出合并到myout.file文件中。

    • &:让命令在后台执行,终端退出后命令仍旧执行。
    • 2>&1 解释:
      将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 myout.file 文件中。
      0 – stdin (standard input,标准输入)
      1 – stdout (standard output,标准输出)
      2 – stderr (standard error,标准错误输出)

    screen虚拟终端

    官方:https://www.gnu.org/software/screen/

    安装screen

    # Debian
    apt-get install screen
    # CentOS 8以前
    yum install screen
    # CentOS 8以后
    yum install epel-release
    yum install screen
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    使用

    screen -R #虚拟终端名字
    
    • 1

    在这个界面,运行程序即可:

    查看已经存在的screen
    查看已经存在的screen很简单,输入:

    screen -ls
    
    • 1

    重新进入screen
    刚刚我们查看了已经存在的screen,接下来我们重新进入,有两种方式:

    PID进入:使用screen -r #PID即可进入
    screen名:使用screen -R #screen名即可进入
    
    • 1
    • 2

    tmux终端复用器[个人推荐,与nohup相比,更加灵活]

    官方:https://github.com/tmux/tmux/wiki

    tmux是一个 terminal multiplexer(终端复用器),它可以启动一系列终端会话。可以用其查看代码运行状态,可以在关闭terminal下仍然运行程序。与nohup相比,更加灵活。

    它使您可以轻松地在一个终端中的几个程序之间切换,将它们分离(它们在后台运行),然后将它们重新安装到另一个终端。

    安装tmux

    # centos
    sudo yum install tmux
    # ubuntu
    sudo apt-get install tmux
    
    • 1
    • 2
    • 3
    • 4

    使用

    1. 创建tmux终端
      创建tmux终端很简单,也是一条命令,例如:
      使用名为farming的套接字文件创建新的TMUX会话
     tmux -S farming
    
    • 1

    按下Ctrl+d或者显式输入exit命令,就可以退出 Tmux 窗口。

    Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。
    帮助命令的快捷键是Ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下Ctrl+b,再按下?,就会显示帮助信息

    实战demo:

    Create a new tmux session using a socket file named farming
    $ tmux -S farming
    
    Move process to background by detaching
    Ctrl+b d OR ⌘+b d (Mac)
    
    To re-attach
    $ tmux -S farming attach
    
    Alternatively, you can use the following single command to both create (if not exists already) and attach to a session:
    $ tmux new-session -A -D -s farming
    
    To delete farming session
    $ tmux kill-session -t farming
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    flutter学习之widget的显示和隐藏
    霸占GitHub热榜的《Spring Cloud Alibaba源码笔记》果然“威力极大”
    肠道微生物群与过敏性鼻炎
    阿里数学竞赛最年轻金奖得主:15岁读少年班,21岁UC伯克利读博,想毕业就回国...
    第六章:函数
    PHP转Go系列 | 变量常量的使用姿势
    使用kubeadm快速部署一个k8s集群
    ajax请求
    【Python numpy】创建Ndarray数组对象
    npm下载的包分类
  • 原文地址:https://blog.csdn.net/inthat/article/details/134221744