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

初识tmux编译安装tmux

tmux的简介:tmux是一个优秀的终端复用软件,即使非正常掉线,也能保证当前的任务运行;这一点对于远程SSH访问特别有用,网络不好的情况下仍然能保证工作现场不丢失;此外,tmux

tmux的简介:

          tmux是一个优秀的终端复用软件,即使非正常掉线,也能保证当前的任务运行;这一点对于远程SSH访问特别有用,网络不好的情况下仍然能保证工作现场不丢失;此外,tmux完全使用键盘控制窗口,实现窗口的切换功能。

tmux两个主要功能:

           split(切割)窗口;可以在一个terminal下打开多个终端,也可以对当前屏幕进行各种split,即可以 同时打开多个显示范围更小的终端。

           在使用SSH的环境下,避免网络不稳定,导致工作现场的丢失。想象以下场景, 你在执行一条命令的过程中,由于网络不稳定,SSH连接断开了。这个时候,你就不知道之前 的那条命令是否执行成功。如果此时你打开了很多文件,进入了较深层次的目录,由于网络 不稳定,SSH连接断开。重新连接以后,你又不得不重新打开那些文件,进入那个深层次的 目录。如果使用了tmux,重新连接以后,就可以直接回到原来的工作环境,不但提高了工作 效率,还降低了风险,增加了安全性。


以下是 tmux 超越 screen 的地方:

           screen 的项目大体上已经终止了,并且代码中有大量的问题;

           tmux 是一个活跃的项目,并且其代码库经常进行更新;

           tmux 使用的是真正的客户端/服务器模型,而 screen 只是模拟了这种模型的行为;

           tmux 同时支持 emacs 和 vim 的快捷键;

           tmux 支持自动重命名窗口;

           tmux 可以高度的脚本化;

           tmux 的窗口分割功能更加先进;

技术分享

PS:一个会话(Session)可以包含多个窗口,一个窗口(Window)可以包含多个窗格(Pane)。



一,编译安装tmux

1,首先安装依赖包libevent-2.0.21-stable.tar.gz

# wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

# tar xf libevent-2.0.21-stable.tar.gz

# cd libevent-2.0.21-stable

# ./configure 

# make && make install


2,编译安装tmux

# git clone https://github.com/tmux/tmux.git

# cd tmux

# sh autogen.sh

# ./configure --prefix=/usr/lcoal/tmux

# make && make install


3,提供头文件

# ln -sv /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

# ldconfig -v


4,将tmux 脚本路径加入到PATH

# vim /etc/profile.d/tmux.sh

export PATH=$PATH:/usr/local/tmux/bin

# source /etc/profile


5,将tmux命令man 文档路径添加到MANPATH

# vim /etc/man.config

MANPATH /usr/local/tmux/share/man

6,配置tmux

# vim ~/.tmux.conf

# 设定tmux 命令激活按键为ctrl+a
set-option -g prefix C-a
unbind-key C-b
bind-key C-a send-prefix

# 设定默认Shell
set-option -g default-shell /bin/zsh

# 设置窗口可自动调整index
set -g renumber-windows on

# 设定窗口起始
set-option -g base-index 1      ### 窗口的初始序号;默认为0,这里设置为1

set-option -g status-keys vi          ###操作状态栏时的默认键盘布局;可以设置为vi或emacs
set-option -g display-time 5000   ### 提示信息的持续时间;设置足够的时间以避免看不清提示,单位为毫秒
set-option -g repeat-time 1000    ###控制台激活后的持续时间;设置合适的时间以避免每次操作都要先激活控制台,单位为毫秒

# history
set-option -g history-limit 4096

# 设置复制模式,空格开始选,Enter结束复制
set-window-option -g mode-keys vi

# 开启status-bar uft-8支持
set-option -g status-utf8 on        ### 开启状态栏的UTF-8支持

# 设置pane前景色  
set -g pane-border-fg green  

# 设置pane背景色  
set -g pane-border-bg black

# 设置终端颜色为256色
set -g default-terminal "screen-256color"

# 设置窗口列表颜色
setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim

# 切换panes
bind h select-pane -L
bind j select-pane -D
bind K select-pane -U
bind l select-pane -R
bind-key C-l last-pane

##Status bar
#colors
set -g status-bg black
set -g status-fg white

#开启status-bar uft-8支持
set -g status-utf8 on

## slignment
set-option -g status-justify centre

## spot at left
set-option -g status-left ‘#[bg=black,fg=green][#[fg=cyan]#S#[fg=green]]‘
set-option -g status-left-length 20

## window
setw -g automatic-rename on
set-window-option -g window-status-format ‘#[dim]#I:#[default]#W#[fg=grey,dim]‘

## spot at right
set -g status-right ‘#[fg=green][#[fg=cyan]%Y-%m-%d#[fg=green]]‘
set-option -g status-right-length 50

## resize pane
bind -r ^k resizep -U 10
bind -r ^j resizep -D 10
bind -r ^h resizep -L 10
bind -r ^l resizep -R 10

# 设置 r 键为加载配置文件,并提示信息
bind r source-file ~/.tmux.conf \; display "配置文件已重新加载!"

# 设置窗口名字不能修改
set-option -g allow-rename off

# 设置启动窗口时默认名字
bind-key c new-window -n ‘zsh‘

# 开启window事件提示
setw -g monitor-activity on
set -g visual-activity on

set-window-option -g mode-keys vi    ### 复制模式中的默认键盘布局;可以设置为vi或emacs
set-window-option -g utf8 on              ### 开启窗口的UTF-8支持

# 复制和粘贴模式的快捷键
bind y copy-mode
bind c-y copy-mode
bind p paste-buffer
bind c-p paste-buffer

按下 Ctrl-a 后的快捷键如下:

基础
           ?     获取帮助信息

会话管理
           s     列出所有会话
           $     重命名当前的会话
           d     断开当前的会话
           
窗口管理
           c     创建一个新窗口
           ,     重命名当前窗口
           w     列出所有窗口
           %     水平分割窗口
           "      竖直分割窗口
           n     选择下一个窗口
           p     选择上一个窗口
           0~9 选择0~9对应的窗口
           
窗格管理
           %      创建一个水平窗格
           "       创建一个竖直窗格
           h       将光标移入左侧的窗格
           j        将光标移入下方的窗格
           l        将光标移入右侧的窗格
           k       将光标移入上方的窗格
           q       显示窗格的编号
           o       在窗格间切换
           }        与下一个窗格交换位置
           {        与上一个窗格交换位置
           !        在新窗口中显示当前窗格
           x       关闭当前窗格
           
其他
           t        在当前窗格显示时间
           




本文出自 “珞辰的博客” 博客,请务必保留此出处http://luochen2015.blog.51cto.com/9772274/1770894

初识tmux---编译安装tmux


推荐阅读
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • 本文深入探讨了 iOS 开发中 `int`、`NSInteger`、`NSUInteger` 和 `NSNumber` 的应用与区别。首先,我们将详细介绍 `NSNumber` 类型,该类用于封装基本数据类型,如整数、浮点数等,使其能够在 Objective-C 的集合类中使用。通过分析这些类型的特性和应用场景,帮助开发者更好地理解和选择合适的数据类型,提高代码的健壮性和可维护性。苹果官方文档提供了更多详细信息,可供进一步参考。 ... [详细]
  • Jenkins学习精华:自动化构建与持续集成入门指南
    本文综合了网络资源及同事分享的PPT内容,详细介绍了Jenkins在自动化构建与持续集成中的应用。首先涵盖了Jenkins的安装与配置流程,接着阐述了如何根据项目需求设定自动化编译任务,包括确定开发环境、选择合适的编译工具以及实现代码的自动更新等关键步骤。特别强调了在SVN环境中通过命令行实现代码自动拉取的最佳实践。 ... [详细]
  • Git基础操作指南:掌握必备技能
    掌握 Git 基础操作是每个开发者必备的技能。本文详细介绍了 Git 的基本命令和使用方法,包括初始化仓库、配置用户信息、添加文件、提交更改以及查看版本历史等关键步骤。通过这些操作,读者可以快速上手并高效管理代码版本。例如,使用 `git config --global user.name` 和 `git config --global user.email` 来设置全局用户名和邮箱,确保每次提交时都能正确标识提交者信息。 ... [详细]
  • 优化后的标题:数据网格视图(DataGridView)在应用程序中的高效应用与优化策略
    在应用程序中,数据网格视图(DataGridView)的高效应用与优化策略至关重要。本文探讨了多种优化方法,包括但不限于:1)通过合理的数据绑定提升性能;2)利用虚拟模式处理大量数据,减少内存占用;3)在格式化单元格内容时,推荐使用CellParsing事件,以确保数据的准确性和一致性。此外,还介绍了如何通过自定义列类型和优化渲染过程,进一步提升用户体验和系统响应速度。 ... [详细]
  • 为了在Fragment中直接调用Activity的方法,可以通过定义一个接口并让Activity实现该接口来实现。具体步骤包括:首先在Fragment中声明一个接口,并在Activity中实现该接口。接着,在Fragment中通过类型转换检查Activity是否实现了该接口,如果实现了则调用相应的方法。这种方法不仅提高了代码的解耦性,还增强了模块间的通信效率。此外,还可以通过ViewModel或LiveData等现代Android架构组件进一步优化这一过程,以实现更加高效和可靠的通信机制。 ... [详细]
  • 深入解析 OpenCV 2 中 Mat 对象的类型、深度与步长属性
    在OpenCV 2中,`Mat`类作为核心组件,对于图像处理至关重要。本文将深入探讨`Mat`对象的类型、深度与步长属性,这些属性是理解和优化图像操作的基础。通过具体示例,我们将展示如何利用这些属性实现高效的图像缩小功能。此外,还将讨论这些属性在实际应用中的重要性和常见误区,帮助读者更好地掌握`Mat`类的使用方法。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • 在ASP.NET MVC项目中,通过实战解决了Ajax请求500错误及多表数据查询的问题。具体而言,将页面分为两个部分,用户点击右侧导航栏时,通过Ajax请求动态加载数据,并在右侧显示相应的页面内容。最初尝试使用Partial Action方法,但遇到了500错误。通过详细排查和调试,最终成功解决了这一问题,并实现了预期功能。此外,还优化了多表数据查询的性能,确保系统的高效运行。 ... [详细]
  • 通过自定义 `TextView`,实现了在用户点击或焦点变化时动态调整字体颜色的效果。该方法利用了 `ColorStateList` 和 `Selector` 资源文件,确保了界面交互的流畅性和视觉效果的提升。具体实现中,通过重写 `onTouchEvent` 和 `onFocusChanged` 方法,精确控制了颜色变化的时机和状态。此外,还对性能进行了优化,确保在高频率操作下依然保持高效响应。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 深入探讨Photoshop的高级应用与技巧
    本文深入探讨了Photoshop的高级应用与技巧,不仅涵盖了常用的快捷键,如矩形选框工具(M)、移动工具(V)、套索工具(L)、魔棒工具(W)、裁剪工具(C)等,还介绍了更多专业功能,如图层蒙版、混合模式和智能对象的使用方法,帮助用户提升图像处理的效率和质量。 ... [详细]
  • IDEA中高效利用代码变量名替换功能提升编程效率
    在使用 IntelliJ IDEA 进行公司项目代码审查时,我发现许多变量的命名不符合驼峰式命名规范。起初,我尝试手动逐个修改这些变量名,但效率低下。后来,我偶然发现了 IDEA 中的代码变量名替换功能,这极大地提高了我的工作效率。通过该功能,我可以快速批量地将不规范的变量名修改为符合命名规则的形式,不仅节省了时间,还减少了出错的可能性。此外,我还利用这一功能对整个项目的代码进行了全面的优化,确保所有变量命名一致且易于理解。 ... [详细]
  • Django框架下的对象关系映射(ORM)详解
    在Django框架中,对象关系映射(ORM)技术是解决面向对象编程与关系型数据库之间不兼容问题的关键工具。通过将数据库表结构映射到Python类,ORM使得开发者能够以面向对象的方式操作数据库,从而简化了数据访问和管理的复杂性。这种技术不仅提高了代码的可读性和可维护性,还增强了应用程序的灵活性和扩展性。 ... [详细]
author-avatar
大耍酷的微博Katharine
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有