我想要一个 shell 脚本,它通过 ssh 连接到服务器,开始查看日志,然后触摸文件。按此顺序执行这些操作很重要,因为我想在日志中看到第二个命令的效果。我该如何编写这个脚本?如果我尝试类似以下内容:
ssh myserver tail -f /some/path/logfile &
ssh myserver touch /some/path/another-file
fg # hoping to see the output of first command
我收到关于“此 shell 中没有作业控制”的错误。
答案1
@aviv-lo 提供的答案应该有效。
但有些事情可能会改变你目前的方法
- 添加
set -m
作业控制 - 你可能还会看到
ssh
客户端会话存在问题,因为它尝试使用 stdin,因此失败。
添加-n
到后台tail
命令。为了更好的措施,也许还可以添加-T
#!/usr/bin/env bash
set -m
ssh -Tn myserver tail -f /var/log/messages &
ssh mysrever logger blah blah
fg
答案2
你可以做的是,像在服务器上一样在本地创建 shell 脚本,然后将其传输到 ssh 客户端
cat shell_script.sh | ssh syntax_to_connect_to_the_server