好吧,我是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。 如果我只是在有问题的行前面使用回显运行相同的脚本并复制其输出并粘贴到终端中,它就可以工作!。
欢迎任何线索,谢谢!
答案 0 :(得分:1)
尝试从$ tmp中删除单引号。看起来bash将(nohup ./Script.sh 10 1&)
视为没有参数的命令,但技术上nohup
是带参数./Script.sh 10 1
的命令。
答案 1 :(得分:0)
问题是$tmp
变量中nohup命令的单引号。这些不会在本地shell上使用,因此SSH会逐字传递它们。这意味着远程ssh服务器尝试将(nohup ./Script.sh 10 1&)
解释为命令(查找名为that的文件),但显然没有。请务必删除$tmp
中的单引号。