如何在新的tmux会话中执行代码-从当前会话中执行?

用户名

我使用Ubuntu 16.04,并且我需要以下tmux解决方案,因为我想运行一个超时过程,sleep因为在我的特殊情况下,我不满意at并遇到了nohup(合并时nohup-sleep的错误现在,它tmux似乎是最好的选择,因为它具有自己的无挂机机制,并且在手动使用中实际上运行良好(我问的问题仅在于使我已经可以手动执行的过程自动化)。

我需要的:

我需要一种方法可以一次完成以下3个操作:

  1. 附加新tmux会话。
  2. 向该会话注入一组准备好的命令,例如(sleep 30m ; rm -rf dir_name ; exit)我特别希望使用多行设置,而不要排很长。
  3. 在新tmux会话中将其完成写为stdin的那一刻执行上面的命令

换句话说,我想在另一个tmux专门为此创建的会话中执行代码集,但是要一次完成所有操作。


笔记:

  • 我的目标是在我最初的工作会议上做所有事情(我大部分时间都在工作)。通常,我无意访问新创建的会话,我只想使用自动执行的代码来创建它,仅此而已。

  • 如果可能的话,我希望有一个Heredoc解决方案。我认为这是最有效的。

马里奥·维塔利(Mario Vitale)

如果将要执行的代码放在例如/opt/my_script.sh,则很容易执行所需的操作:

tmux new-session -d -s "myTempSession" /opt/my_script.sh

这将启动一个名为“ myTempSession”的新分离会话,该会话将执行您的脚本。您可以稍后通过执行附加到它,以查看它在做什么tmux attach-session -t myTempSession

我认为是最直接,最优雅的解决方案。我不知道使用tmux从stdin(从“ fromdocs”中读取)执行命令的任何简单方法。通过黑客入侵,您甚至可以做到这一点,但它仍然(并且看起来)是黑客。

例如,这是一种黑客,它使用我上面建议的命令来模拟您想要的行为(=从Heredoc在新的tmux会话中执行代码。由于创建了临时文件/dev/shm,因此在服务器的硬盘驱动器上没有写操作发生,即一个tmpfs):

(
  cat >/dev/shm/my_script.sh &&
  chmod +x /dev/shm/my_script.sh &&
  tmux new-session -d '/dev/shm/my_script.sh; rm /dev/shm/my_script.sh'
) <<'EOF'
    echo "hacky, but works"
EOF

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在屏幕会话中执行命令

如何在Play Framework中执行基于会话的日志记录

如何在freebsd的不同会话中执行子进程

如何在Chrome中删除当前会话?

如何在tmux中重命名会话?

如何在本地访问在ssh会话中创建的tmux会话?

Tmux-启动时在会话中执行命令

测试是否从py.test会话中执行代码

使用会话变量在多个页面中执行相同的代码

如何在Selenium中结束会话并开始新的会话?

ssh-在sftp会话中执行的ForceCommand

命令无法在upstart会话作业中执行

会话超时后如何执行代码?

如何在Paramiko中的单个会话中执行多个命令?(蟒蛇)

如何在 RSA Archer 中获取当前会话令牌?

如何在 tmux 中延长会话名称的长度?

如何在tmux会话中运行python文件?

如何在cron启动的会话中设置tmux的窗口大小?

在Tmux中创建“杀死当前会话”快捷方式

如何在PuTTY中打开会话并执行命令而不使用包含命令的文件?

如何在附加时将环境变量从当前附加的客户端传递到tmux会话中

如何在PowerShell中不提示的情况下强制执行会话级执行策略?

在第一次会话中,tmux说“没有当前会话”

Sails JS中的当前会话ID

获取JavaScript中的当前会话价值?

在当前HttpContext会话中设置新的access_token

如何从终端在当前目录中执行Powershell代码?

如何从python代码中检索当前正在执行的函数?

如何在 Javascript 中执行异步代码