【问题标题】:Execute bash script on a remote-linux在远程 Linux 上执行 bash 脚本
【发布时间】:2021-06-15 22:05:30
【问题描述】:

我有一个 bash 脚本,可以说是 test.sh。该脚本包含以下内容:

#!/bin/bash
echo "khaled"
ads2 svcd& 

此脚本仅打印我的姓名(仅用于测试目的)并在后台执行广告服务应用程序。当我在我的 ubuntu 上运行脚本时,它可以正常工作。作为测试,我检查了内核上运行的程序

如你所见。 ads2 运行并具有 12319 进程 ID。

现在我要做的是在 ubuntu 上运行脚本,但是从 Windows pc 远程运行。

因此我在 windows 上打开命令行并执行以下命令:

ssh nvidia@ubuntu ip-address ~/test.sh

我得到以下信息

正如您看到的脚本运行并打印 khaled,但是在 windows 命令行上,我想要的是脚本在 ubuntu 上执行。这证明了为什么 lineads2 svcd& 不做任何事情,无论是在 Windows 上(这是有道理的,因为 ads2 安装在 ubuntu 上)还是在 linux 上。

那么如何在 ubuntu 上执行脚本呢?

提前致谢

【问题讨论】:

  • 它应该可以正常工作。
  • 尝试将完整路径添加到 ads2 可执行文件
  • 它正在在远程 Linux 上运行。输出通过您的 SSH 连接返回,显示在您的终端上。例如,尝试添加echo $HOSTNAME 或ls,以证明它正在远程运行。
  • @NVRM thatnks 的评论。我的问题是:test.sh 是在 ubuntu 上执行还是在 windows 上执行?
  • @slim 感谢您的评论。我在打印我的名字后添加了 ls。它没有打印除“khaled”之外的任何内容!

标签: linux bash shell ssh


【解决方案1】:

使用完整路径启动 ads2。使用远程 SSH 时,您的环境变量可能与本地 shell 不同。

#!/bin/bash
echo "khaled"
/home/nvidia/ads2 svcd& 

不确定 ads2 的位置。 尝试以下方法在您的 Ubuntu 本地 shell 上找到它。

command -v ads2

您可能还需要 nohup 来在 SSH 会话的生命周期之后保持该过程。

【讨论】:

  • 谢谢你,它有效。是的,因为变量。但是我应该在 nohup /home/nvidia/ads2 svcd& 这样的命令之前使用 nohup 吗?
  • 我可以执行以下操作吗:ssh nvidia@ip-adress /home/nvidia/ads2 svcd&
【解决方案2】:

如果您在远程服务器上有脚本并且想要运行它,您可以添加反引号,

ssh user@server './test/file.sh'

脚本的输出将被发送到您的本地计算机,就像您从本地计算机运行命令一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-03
    • 2018-09-15
    • 1970-01-01
    • 2018-07-07
    • 2022-01-21
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    相关资源
    最近更新 更多