热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tmux命令稳妥放后台执行

概览Tmux是一个终端复用器(terminalmultiplexer),非常有用,属于常用的开发工具。安装yumins

概览

Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。


安装

yum install tmux
如无法在线安装,可手动下载包进行离线安装
https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/Packages/tmux-1.8-4.el7.x86_64.rpm
yum install ./tmux-1.8-4.el7.x86_64.rpmrpm -ql tmux

快速使用

场景假设:比如我们需要执行一条命令,清理docker缓存镜像docker system prune,这种命令执行前我们已经知道需要执行很久,可能是几个小时,也可能是几天,而且这种命令是挂在前台执行的,因此我们需要确保即使终端窗口关掉,服务也不会停止运行

在命令敲tmux进入tmux模拟终端,如下图

在这里插入图片描述

最下面有一条绿色的标志带,清楚的告诉我们当前处在tmux窗口里,如果我们在开一个窗口ps aux | grep tmux也可以看到有相关tmux进程正在执行

我们使用 tail -F /tmp/tmp.txt 来模拟一个在前台执行的并且需要很久时间的命令,如下图
在这里插入图片描述

此时我们不能去CTRL+C或者说关掉窗口,那样当前执行的程序就退出了,我们需要用tmux提供的退出tmux窗口的方法,即

Ctrl+b d

这个命令跟vim一些操作逻辑相似,输入的过程中不会有任何提示,先按CTRL+b,再按d,即可(都是小写字母),操作完成之后退出到原本的shell终端

程序还在后台执行着,可以看到这种操作用英文描述是detached,docker里有attach的操作,功能都类似,简单理解就是窗口的最小化和最大化,程序本身正常运行无影响

过了一段时间,我们想看看被我们放到后台(也就是最小化)的tmux里面的程序执行的如何了,我们可以使用

tmux a

重新进去


查看帮助

Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效

Ctrl+b ? 退出帮助是q
man tmux
tmux --help

最简操作流程

1. tmux 创建会话,会话编号是0
2. 执行需要长时间运行在前台的命令(不需要nohup、不需要在最后加&)
3. CTRL+b d 退出会话
4. tmux a 进入会话查看执行效果(进入上一个刚创建的会话)

如果我们只用一个会话(这也是最常见的需求),上面的步骤就已经完全足够了

如果我们需要用到多个会话,可以在创建会话和进入会话的时候加入名称

tmux new -s 创建会话
tmux attach -t 进入会话

演示

tmux new -s abc[root@10-222-32-122 ~]# tmux ls
0: 1 windows (created Wed Nov 18 12:02:35 2020) [204x53]
abc: 1 windows (created Wed Nov 18 16:10:49 2020) [204x53]tmux attach -t abc

会话管理

第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。

tmux ls 查看当前所有的 Tmux 会话
tmux attach -t 0 进入会0 (或者 tmux a)
exit 退出当前会话
tmux new -s 新建会话
tmux attach -t 进入会话

tmux 对比 nohup


  • nohup 和 tmux 都能实现一个需要长时间执行的命令稳妥放后台执行,不会因为窗口关闭什么的导致程序停止
  • nohup 更适合用来跑一个长期的服务,比如kafka服务放后台执行 (当然管理后台服务还可以用supervisor)
  • tmux 比较适合明确知道这条命令不需要当成服务来跑,可能是跑几个小时就停止,或者我们自己的测试服务
  • nohup 启动的服务如果想把它关掉,需要记住pid,或者关键的信息用ps命令过滤,然后kill,这点比tmux麻烦
  • nohup 想要知道程序是否执行完毕,以及是否执行成功,只能去看日志
  • tmux学习成本比nohup略微高点

nohup 一般的使用方式是 nohup linux-command &> /tmp/tmp.log &


注意事项

如果执行的程序有大量输出,不要输出到屏幕上,放到文件里


参考连接

http://www.ruanyifeng.com/blog/2019/10/tmux.html


推荐阅读
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 在 CentOS 7 中,为了扩展可用软件包的数量,通常需要配置多个第三方软件源。这些第三方源包括 EPEL、Nux Dextop 和 ELRepo 等,它们提供了大量官方源中未包含的软件包,从而增强了系统的功能性和灵活性。通过正确配置这些源,用户可以轻松安装和管理更多种类的软件,满足不同的需求。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • Docker 中创建 CentOS 容器并安装 MySQL 进行本地连接
    本文详细介绍了如何在 Docker 中创建 CentOS 容器,并在容器中安装 MySQL 以实现本地连接。文章内容包括镜像拉取、容器创建、MySQL 安装与配置等步骤。 ... [详细]
  • 如何在虚拟机中实现Linux与Windows主机之间的文件夹共享
    为了在虚拟机中实现Linux与Windows主机之间的文件夹共享,首先需要确保Linux系统已安装VMware Tools。如果尚未安装,可以通过虚拟机软件提供的“安装VMware Tools”选项进行安装。安装完成后,通过配置共享文件夹设置,即可实现主机与虚拟机之间的文件互传。此外,建议检查虚拟机网络设置,确保网络连接正常,以提高文件传输的稳定性和速度。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
author-avatar
梅花七
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有