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

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

文章目录

  • Linux上后台运行进程(nohub、screen和tmux )
    • nohup
    • screen虚拟终端
      • 安装screen
      • 使用
    • tmux终端复用器[个人推荐]
      • 安装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 &

这条命令表示执行后退出交互命令行也不挂起,通过最后一个 &,表示后台运行,不霸占交互命令行,同时将标准输出和标准错误输出合并到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

使用

screen -R #虚拟终端名字

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

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

screen -ls

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

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

tmux终端复用器[个人推荐]

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

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

安装tmux

# centos
sudo yum install tmux
# ubuntu
sudo apt-get install tmux

使用

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

按下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 farmingMove process to background by detaching
Ctrl+b d OR ⌘+b d (Mac)To re-attach
$ tmux -S farming attachAlternatively, 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 farmingTo delete farming session
$ tmux kill-session -t farming
http://www.lryc.cn/news/219221.html

相关文章:

  • javaee实验:搭建maven+spring boot开发环境,开发“Hello,Spring Boot”应用
  • 重新思考边缘负载均衡
  • 构建一个CAN报文周期任务类
  • 深入理解计算机系统CS213 - Lecture 02
  • 【KVM】KVM介绍及功能概述
  • centos7安装MySQL
  • leetcode做题笔记215. 数组中的第K个最大元素
  • Linux Vim撤销和恢复撤销快捷键
  • 【BUG】记一次Maven install 报错 Could not find artifact ...:pom:0.0.1-SNAPSHOT
  • 逆向学习记录(4)adb
  • Windows Server 2016使用MBR2GPT.EXE教程!
  • SpringBoot项目多环境开发
  • godot4实现一个单例类,作为公共数据共享类
  • AcWing - 5287. 数量 - 组合数求解+思维
  • 《实战:如何搭建一个完整的 Vue2.0 项目》- 7、Vue2.x 项目 webpack 4 升级 5(半自动升级)
  • Python教程---Python基础语法2
  • Conda创建软件安装环境
  • MySQL | MySQL 为什么不推荐使用JOIN
  • [LeetCode] 1.两数之和
  • ruby语言怎么写个通用爬虫程序?
  • 7 交换机与VLAN
  • C++指针笔记
  • vue中app.use()做了什么
  • 【网安AIGC专题11.1】论文12:理解和解释代码,GPT-3大型语言模型学生创建的代码解释比较+错误代码的解释(是否可以发现并改正)
  • 【GEE】4、 Google 地球引擎中的数据导入和导出
  • 【C++】特殊类设计+类型转换+IO流
  • JAVA整理学习实例(一)面向对象
  • QT 实现解密m3u8文件
  • 论文阅读—— BiFormer(cvpr2023)
  • 理解 fopen的 rwa r+w+a+ 参数含义