@levelsio: 这是我最近的设置。每个网站我都在Termius中设置了一个配置文件,比如 > hoodmaps.com,点击后立即进入…

X AI KOLs Timeline 工具

摘要

Pieter Levels分享了他的服务器工作流程:使用Termius配置文件和一个自定义的tmux函数,自动连接到每个网站的会话,实现设备间无缝切换和一致的工作会话。

这是我最近的设置 每个网站我都在Termius中设置了一个配置文件,比如 > hoodmaps.com 点击后立即进入服务器,并自动进入与该网站绑定的tmux会话。 为了实现这一点,我在每个网站的Termius配置中添加了启动代码: > cd /srv/http/hoodmaps.com && tm (/srv/http 是我的网站目录,hoodmaps.com 是示例网站,而 `&& tm` 是关键部分) 然后在 ~/.bashrc 文件中我添加了以下内容(由Claude Code编写),定义了 `tm` 函数。这个函数的作用就是根据当前文件夹进入对应的tmux会话。 这样我就可以在笔记本电脑和手机上的Termius之间无缝切换,会话会自动重连,通常我每个会话都开着Claude Code进行工作。 以前我要面对以下问题:1) 从笔记本切换到手机不够顺畅,得用Claude Code的 /resume 功能,很麻烦;2) 同一个网站会有多个会话,又乱又容易混。现在它强制我每个网站只有一个会话,效果非常好,效率极高,每个网站就是Termius中的一个标签页,我从未如此结构化和整洁地工作过! 下面是代码,也许对你有帮助: # tmux session per folder. `tm` (no args) attaches to / creates a session # named after the current dir's basename. `tm name` overrides the name. # Works whether already inside tmux (uses switch-client) or outside it. tm() { command -v tmux >/dev/null 2>&1 || { echo "tmux not installed"; return 1; } local name="${1:-$(basename "$PWD")}" # tmux session names can't contain '.' or ':' — replace with '-' name="${name//./-}" name="${name//:/-}" if [ -n "$TMUX" ]; then tmux has-session -t "$name" 2>/dev/null || tmux new-session -d -s "$name" -c "$PWD" tmux switch-client -t "$name" else tmux attach -t "$name" 2>/dev/null || tmux new -s "$name" -c "$PWD" fi } # Auto-attach on interactive login: picks a session named after wherever # you land. Plain `ssh server` lands in $HOME → session "root". Use # `ssh server -t "cd /srv/sm.levels.io && bash -l"` to land in a site # folder → session "sm-levels-io". Skips inside tmux and non-interactive # shells so scp/rsync/scripted ssh keep working. if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [[ $- == *i* ]]; then tm fi
查看原文
查看缓存全文

缓存时间: 2026/05/23 18:15

这是我最新的设置

我管理的每个站点在 Termius 里都是一个配置文件,就像这样:

hoodmaps .com

点击它,我会立刻进入服务器,并被丢进一个始终与对应站点绑定的 tmux 会话中。

为了实现这个功能,我在每个站点的 Termius 配置里添加了以下启动片段:

cd /srv/http/hoodmaps.com && tm

(/srv/http 是我存放站点目录的位置,这里 hoodmaps .com 是示例站点;&& tm 是关键部分)

然后,我在 ~/.bashrc 文件中添加了以下内容(由 Claude Code 编写),它定义了 tm 函数——这个函数的作用就是根据当前所在目录,将我放入正确的 tmux 会话中。

最终效果是,我可以在笔记本和手机上的 Termius 之间无缝切换,会话会自动重连,而且通常我每个会话里都开着 Claude Code 来工作。

在此之前,我不得不面对两个问题:1)从笔记本切换到手机不够流畅,必须使用 Claude Code 的 /resume 命令,很烦人;2)同一站点有多个会话,很快就会变得混乱且难以管理。现在,这个方案强制每个站点只有一个会话,效果非常好,我操作起来速度飞快。每个站点在 Termius 里就是一个打开的标签页,我从没体验过如此结构清晰、干净利落的工作方式!

以下是代码,可能对某些人有帮助:

# tmux session per folder. `tm` (no args) attaches to / creates a session   
# named after the current dir's basename. `tm name` overrides the name.
# Works whether already inside tmux (uses switch-client) or outside it.
tm() {
    command -v tmux >/dev/null 2>&1 || { echo "tmux not installed"; return 1; }
    local name="${1:-$(basename "$PWD")}"
    # tmux session names can't contain '.' or ':' — replace with '-'
    name="${name//./-}"
    name="${name//:/-}"
    if [ -n "$TMUX" ]; then
        tmux has-session -t "$name" 2>/dev/null || tmux new-session -d -s "$name" -c "$PWD"
        tmux switch-client -t "$name"
    else
        tmux attach -t "$name" 2>/dev/null || tmux new -s "$name" -c "$PWD"
    fi
}

# Auto-attach on interactive login: picks a session named after wherever
# you land. Plain `ssh server` lands in $HOME → session "root". Use
# `ssh server -t "cd /srv/sm.levels.io && bash -l"` to land in a site
# folder → session "sm-levels-io". Skips inside tmux and non-interactive
# shells so scp/rsync/scripted ssh keep working.
if command -v tmux >/dev/null 2>&1 && [ -z "$TMUX" ] && [[ $- == *i* ]]; then
    tm
fi

谢谢老兄,我们每个人都有自己的观点,性格也不同,但我们可以交流、共存!

工作量更少了,我现在只操作实时代码了

我觉得我付费是值得的

相似文章