我使用Ubuntu 16.04,并且我需要以下tmux
解决方案,因为我想运行一个超时过程,sleep
因为在我的特殊情况下,我不满意at
并遇到了nohup
(合并时nohup-sleep
)的错误。现在,它tmux
似乎是最好的选择,因为它具有自己的无挂机机制,并且在手动使用中实际上运行良好(我问的问题仅在于使我已经可以手动执行的过程自动化)。
我需要一种方法可以一次完成以下3个操作:
tmux
会话。(sleep 30m ; rm -rf dir_name ; exit)
。我特别希望使用多行设置,而不要排很长。tmux
会话中将其完成写为stdin的那一刻执行上面的命令。换句话说,我想在另一个tmux
专门为此创建的会话中执行代码集,但是要一次完成所有操作。
我的目标是在我最初的工作会议上做所有事情(我大部分时间都在工作)。通常,我无意访问新创建的会话,我只想使用自动执行的代码来创建它,仅此而已。
如果可能的话,我希望有一个Heredoc解决方案。我认为这是最有效的。
如果将要执行的代码放在例如/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] 删除。
我来说两句