我可以使用 screen 或 tmux 连接到其他终端会话,或共享它们。但是只有当我们第一次知道我们会使用它们时,这项工作才有效。
由于 root 可以访问所有内容,有没有办法在不运行 screen 的情况下做同样的事情?一些管道通过三通左右。
例如,远程接管某人打开的控制台或 ssh 会话。允许看到正在发生的事情并正确关闭事物。
我创建了一个在 Ubuntu 实例重新启动时运行的脚本。
crontab -e
Run Code Online (Sandbox Code Playgroud)
然后将其添加到脚本中:
@reboot /home/ubuntu/startup.sh
Run Code Online (Sandbox Code Playgroud)
脚本如下所示:
#!/bin/bash
tmux new-session -d -s my_server
tmux send-keys -t my_server:0 ". /home/ubuntu/venv/bin/activate" C-m
tmux send-keys -t my_server:0 "cd ~/canonicaliser_api" C-m
tmux send-keys -t my_server:0 "git checkout new-schema" C-m
tmux send-keys -t my_server:0 "git pull" C-m
tmux send-keys -t my_server:0 "cd ~/canonicaliser_api/canonicaliser/workers" C-m
tmux send-keys -t my_server:0 "python person_worker.py" C-m
Run Code Online (Sandbox Code Playgroud)
重新启动后,我执行 atmux attach以查看结果。
$ . /home/ubuntu/venv/bin/activate
cd ~/canonicaliser_api
(venv)$ (venv)$ git checkout new-schema
git pull
cd ~/canonicaliser_api/canonicaliser/workers
python person_worker.py
Already …Run Code Online (Sandbox Code Playgroud) 我正在运行带有加密主目录 (encryptfs) 的 Ubuntu 13.04 服务器。我保持一个 tmux 会话处于打开状态,其中包含我的开发环境(vim 等)。当我断开连接时,我将断开 tmux 会话,然后断开 ssh 连接。稍后,当我重新连接并重新附加 tmux 会话时,我会收到如下错误:
fatal: Could not change back to '(unreachable)/*****': No such file or directory
Run Code Online (Sandbox Code Playgroud)
这通常意味着 vim(在分离时仍然打开)保存到错误的位置,并且实际上不会将文件写入磁盘,只会写入“无法访问”目录,这似乎是临时的。
如果我从 bash运行 ' pwd '(重新连接后没有做任何其他事情),我会得到正确的目录/home/***/***。如果我运行 'git status',我会得到上面的消息(没有这样的文件),如果我在 vim 中运行' :pwd ',我会得到“ (unreachable)/*** ”。
对此的临时解决方法是运行 ' cd 。' 在运行任何其他命令之前,它允许 git/vim/etc 实际查看目录。这很不方便,因为我经常在 tmux 中打开许多面板/屏幕,我必须运行 ' cd 。' 每次我重新连接时。最重要的是,我必须确保在断开连接之前关闭 vim 或其他任何东西,否则如果我不小心,我可能会丢失数据。
我在某处看到另一个线程,将此归因于 encryptfs在注销时卸载$HOME,但没有回复。这似乎是一个可能的原因,但我不知道从哪里开始。有什么帮助吗?
目标是从远程服务器向本地运行的 tmux 发送 tmux 命令。不要运行到不同的 tmux 实例。
在 tmux 中,我们通过 ssh 连接到不运行 tmux 的服务器
local>tmux send-key C-p # works
local>ssh user@remote
user@remote> tmux send-key C-p # this will try to find tmux instance on remote. but we want to send it the local instead.
Run Code Online (Sandbox Code Playgroud)
我不能使用键绑定,因为这将从内部脚本运行。
我正在寻找一个 ssh/tmux 解决方案,它会像这样:
主要是我希望能够为同一台服务器创建新会话,显然如果有多个会话没有人连接到它,它应该选择第一个。
这应该使我能够将此作为 ssh 连接的默认命令。
我当前的解决方案ssh -t 'tmux a || tmux || /bin/bash'没有按预期工作,因为当您再次尝试连接时,它将连接到现有会话,在这种情况下,我想要一个新的。
我在Vagrant开发机器上使用Byobu在一个屏幕上运行多个东西,并且能够暂停/恢复机器并继续我前几天离开的地方。
有时我必须重新创建机器并设置 8 个以上的 Byobu 窗口并更改它们的名称,更改为每个窗口中的特定目录;更不用说设置后在其中运行命令了。
有没有一种方法可以创建一个配置文件或输入一堆执行初始设置的命令,这样我就不必花 5 分钟的时间?
Commandlinefu上有一个当前不起作用的示例,所以我相信它可以完成。任何人都有一些最新的信息如何实现这一目标?
byobu version 5.74 (and possibly 5.60 too)
tmux 1.8
Run Code Online (Sandbox Code Playgroud) 我想在生产 CentOS 机器上安装一些软件,这些软件在存储库中不可用(如 tmux 等)。我可以下载源代码并在本地编译,但为此我需要在生产设备上安装开发工具(gcc 等)。在生产盒上安装开发工具是个好主意吗?
tmux ×7
bash ×2
linux ×2
ssh ×2
automation ×1
byobu ×1
centos ×1
console ×1
gnu-screen ×1
ubuntu ×1
ubuntu-14.04 ×1
virtualenv ×1