【问题标题】:Bash script how to run a command remotely and then exit the remote terminalBash脚本如何远程运行命令然后退出远程终端
【发布时间】:2021-03-19 11:19:56
【问题描述】:

我正在尝试执行命令:

ssh nvidia@ubuntu-ip-address "/opt/ads2/arm-linux64/bin/ads2 svcd&"

到目前为止,除了在执行"/opt/ads2/arm-linux64/bin/ads2 svcd&" 时它会挂在远程终端中之外,这仍然有效,除非我输入 ctrl+c。所以我在找一个命令,执行完命令后,从远程终端退出,继续执行本地bash脚本。

提前致谢

【问题讨论】:

  • 最后而不是&& disown "$!"
  • @Jetchisel。谢谢你的命令。这行得通,但是它不仅会杀死远程终端,还会不再执行"/opt/ads2/arm-linux64/bin/ads2 svcd&" 或杀死它
  • @Jetchisel。我是这样输入的。 "/opt/ads2/arm-linux64/bin/ads2 svcd&" & disown "$!"
  • 就像我说的那样,而不是只写&& disown "$! 其中& 由两边的空格隔开。总之只写了一个&
  • @Jetchisel "/opt/ads2/arm-linux64/bin/ads2 svcd & disown "$! 如果这是你的意思,它仍然不起作用

标签: linux bash shell kernel remote-access


【解决方案1】:

当您在终端的后台运行命令时,无论天气如何,它是本地的还是远程的,如果您尝试注销,大多数系统都会警告您有正在运行的作业。再次尝试注销,您的工作会在您退出时被杀死。 为了避免这种情况,您需要将正在运行的作业与终端分离。 如果作业已经在运行,您可以

disown -h <jobspec ar reported by jobs>

如果你想在后台运行一些东西,然后退出让它继续运行,你可以使用 nohup

nohup command &

这在 init 系统上肯定没问题...不确定它是否在使用 systemd 的系统上完全像这样工作。

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 2018-07-14
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多