配置tmux在机器重启后自动恢复tmux工作现场,告别重启恐惧症

配置tmux在机器重启后自动恢复tmux工作现场,告别重启恐惧症

1. 问题出现的背景

通过ssh远程登录服务器在上面工作,有时候很有可能由于网络断开而导致ssh链接断开,或者下班后想继续在家登录到服务器继续工作。这些情况都需要服务器保持我们的工作环境,比如,vim打开的代码,正在运行的程序等等。

为了保持远程服务器上的工作现场,我们可以选用screen、tmux来满足这个需求。但是一旦远程服务器由于断电、操作系统异常等原因重启,原先的screen、tmux会话也就没有了。其中运行的一些程序也就不再继续跑了。

当然,可以把需要跑的程序配置成开机自动运行。但程序print出来的一些状态不能很容易的观察到(当然可以把print信息写入log文件,或者把print信息重定向到文件,这就需要更改程序,也不利于实时观察测试程序)。而其它工作现场比如正在编辑的某个代码文件就不存在了。

总而言之,自动恢复重启之前的工作现场还是很有必要的。

2. 配置tmux使其自动保存会话状态

需要满足的条件:

  • 1 tmux >= 1.9
  • 2 tmux插件管理器: TMP
  • 2 插件: tmux-resurrent

3 插件:tmux-continuum

2.1 安装tmux

sudo apt-get install tmux

2.2 安装tmux插件管理器和插件

该部分安装参照其官方网址的说明即可。

以下是安装好tmux后的配置文件.tmux.conf共参考:

# set shellset -g default-shell /bin/bash# ------ general ------------------------------------set -g prefix2 C-abind C-a send-prefix -2set -g escape-time 0# set -g base-index 0set -g renumber-windows on# set -g mouse on# set -wg pane-base-index 1# rename-windowset -wg allow-rename offset -wg automatic-rename off# last-windowbind a last# retain current pathbind c new-window -c "#{pane_current_path}"bind % split-window -h -c "#{pane_current_path}"bind " split-window -c "#{pane_current_path}"# restart and editbind r source ~/.tmux.conf; display "tmux config sourced"bind e neww -n tmux-config "${EDITOR:-vim} ~/.tmux.conf"# ------ move around --------------------------------bind -r h select-pane -L bind -r l select-pane -Rbind -r j select-pane -Dbind -r k select-pane -U# ------ vi -----------------------------------------bind -t vi-copy v begin-selectionbind -t vi-copy y copy-selection# ------ status theme -------------------------------set -g message-style "bg=#00346e, fg=#ffffd7"        # tomorrow night blue, base3set -g status-style "bg=#00346e, fg=#ffffd7"   # tomorrow night blue, base3set -g status-left "#[bg=#0087ff] ? #S "       # blueset -g status-left-length 400set -g status-right "#{?client_prefix, ? , } #[bg=#0087ff] #(whoami)@#h #[bg=red] %Y-%m-%d %H:%M "set -g status-right-length 600set -wg window-status-format " #I #W "set -wg window-status-current-format " #I #W "set -wg window-status-separator ""set -wg window-status-current-style "bg=red" # redset -wg window-status-last-style "fg=red"set -wg pane-active-border-style "fg=blue"set -wg pane-border-style "fg=#585858"       # base01# automatic restoreset -g @continuum-restore on# List of pluginsset -g @plugin tmux-plugins/tpmset -g @plugin tmux-plugins/tmux-sensibleset -g @plugin tmux-plugins/tmux-resurrectset -g @plugin tmux-plugins/tmux-continuum# Other examples:# set -g @plugin ‘github_username/plugin_name‘# set -g @plugin ‘[email protected]/user/plugin‘# set -g @plugin ‘[email protected]/user/plugin‘run ~/.tmux/plugins/tpm/tpm

3. 配置开机恢复保存的tmux会话

3.1 编写回复tmux的脚本,参考如下例子:

#!/bin/bash# description "Start Tmux"# Sleep for 5 seconds. If you are starting more than one tmux session#   "at the same time", then make sure they all sleep for different periods#   or you can experience problems/bin/sleep 5# Ensure the environment is availablesource /home/ebu/.bashrc# Create a new tmux session named newscrawler../usr/bin/tmux new-session -d -s newscrawler# ...and control the tmux session (initially ensure the environment#   is available, then run commands)# /usr/bin/tmux send-keys -t newscrawler:0 "source /home/ebu/.bashrc" C-m/bin/sleep 3/usr/bin/tmux send-keys -t newscrawler:0 "python ant_client.py" C-m/bin/sleep 3/usr/bin/tmux send-keys -t newscrawler:1 "python ant_client.py" C-m/bin/sleep 3/usr/bin/tmux send-keys -t newscrawler:3 "top" C-m

以上脚本需要注意的几点:

  • 1 创建的新tmux会话newscrawler的相关信息已经被tmux-resurrect保存在了~/.tmux/resurrect/last文件里面
  • 2 在新session的不同窗口里面分别运行程序之前,最好要先sleep几秒钟,不然你的程序很可能运行失败。

3.2 配置开机运行上述脚本

3.2.1 可以写入/etc/rc.local文件里面:

# By default this script does nothing./home/veelion/reboot-tmux-ant_client.shexit 0

3.2.2 也可以配置到crontab里面:

# start crawler at reboot@reboot /home/ebu/reboot-tmux-ant_client.sh

推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    无线路由器网络如何自动断开线路

    无线路由器网络如何自动断开线路,,如何解决无线路由器网络自动断线?大家应该知道无线网络是很方便的,但是就是网络方面相对来说没那么稳定,对