0

好吧,我是 linux 新手,所以这可能是一个非常新手的事情,这里是:

我有一个脚本,我在其中尝试将一些不同的作业发送到远程计算机(实际上是亚马逊的 EC2 实例),这些作业实际上是我使用不同参数运行的相同功能。

最终在脚本代码中我有这一行:

nohup ssh -fqi key.pem ubuntu@${Instance_Id[idx]} $tmp

如果我做:

echo nohup ssh -fqi key.pem ubuntu@${Instance_Id[idx]} $tmp

我得到:

nohup ssh -fqi key.pem ubuntu@ec2-72-44-41-228.compute-1.amazonaws.com '(nohup ./Script.sh 11 1&)'

现在奇怪的事情。如果我在脚本中运行没有回声的代码,它就不起作用!它在 nohup.out 中说(在我的笔记本电脑中,nohup.out 在远程实例中创建)bash: (nohup ./Script.sh 10 1&): No such file or directory

该文件确实存在于本地和远程,并且是 chmod +x。如果我只是在有问题的行前面运行带有 echo 的相同脚本并复制其输出并粘贴到终端中,它就可以工作!

欢迎任何线索,谢谢!

4

2 回答 2

1

尝试从 $tmp 中删除单引号。看起来 bash 被(nohup ./Script.sh 10 1&)视为没有参数的命令,但从技术上讲,nohup它是带有参数的命令./Script.sh 10 1

于 2011-11-03T21:15:20.020 回答
0

问题是$tmp变量中 nohup 命令周围的单引号。这些不会在本地 shell 上使用,因此 SSH 会逐字传递它们。这意味着远程 ssh 服务器尝试将其解释(nohup ./Script.sh 10 1&)为显然没有的命令(查找名为 that 的文件)。确保删除$tmp.

于 2011-11-03T21:15:02.007 回答