跳过正文

在 tmux 中进行 Arch Linux 的滚动更新

·415 字·
技术分享 Linux
目录

在 tmux 中进行 Arch Linux 的滚动更新

前言
#

在 tmux 中进行滚动更新,比直接在终端中直接滚动有着更多好处:

  • 防止更新过程中误关闭终端
  • 更新后关闭终端也能重新连接回去查看更新日志

但是如果不是重度 tmux 用户,更新前手动进入 tmux 再更新显得有些繁琐

因此本文提出一个在普通终端下直接唤起 tmux 并运行更新命令的脚本,此脚本有以下特点:

  • 在终端内运行脚本,如果对应的 Session 不存在,则新建一个 tmux Session 并运行命令
  • 如果对应的 Session 已经存在,则直接运行命令,并连接回此 Session
  • 如果已经在 tmux 内,直接运行命令
graph LR A[运行脚本] B[Attach tmux Session] BN[New tmux Session] C[Command] A -- Session 不存在 --- BN A -- Session 存在 --- B A -- 已经在Session中 --- C B --> C BN --> C

使用
#

其中的 zsh 是为了在命令运行完毕后不退出,根据自己使用的替换成 bash 等 Shell

#!/usr/bin/env bash

session_name="paru"
cmd="paru -Syu"

# 检查是否存在的tmux session
if tmux has-session -t $session_name 2>/dev/null; then
  # 检查是否在tmux内
  if [ -n "$TMUX" ]; then
    # 在 tmux 内
    bash -c "$cmd"
  else
    # 不在 tmux 内,则连接到此session并运行命令
    tmux send-keys -t $session_name "$cmd" Enter
    tmux attach-session -t $session_name
  fi
else
  # 如果不存在,则新建session并运行命令
  tmux new-session -s $session_name "${cmd}; zsh"
fi
Sakari
作者
Sakari
A little bit about you

相关文章

安全便利地访问家里的 NAS
·1584 字
技术分享 Linux Network
将 CapsLock 重映射到 Esc 和 Ctrl
·849 字
技术分享 Linux
在 Linux 上使用 Caddy 反代 Steam 社区
·676 字
技术分享 Linux Network