1

我有一个非常奇怪的问题,我似乎无法弄清楚。

当我在 SSH 终端(putty)中执行包含以下行的 python 脚本时,它可以正常工作。但是当我通过 crontab 运行脚本时,甚至nohup python myscript >/dev/null 2>&1&它似乎都没有执行这些命令。

subprocess.call('rsync -avr /path/to/folder/. --include "delta.*" --exclude "*" -e "ssh -o StrictHostKeyChecking=no -i /path/to/key.pem" ec2-user@'+server+':/path/to/folder/', shell=True)
local('ssh -t -o StrictHostKeyChecking=no -i /path/to/key.pem ec2-user@'+server+' "sudo /usr/bin/indexer -c /path/to/sphinx.conf --merge main delta --rotate"')

基本上,以上所有操作都是将带有新 sphinx 搜索引擎更新的文件夹同步到远程服务器,然后第二行运行远程 ssh 命令以强制搜索引擎将更新轮换到生产环境中。

我确实安装了结构(因此是本地命令),但为了避免制造第二个文件,我希望一行代码可以让我在远程服务器上执行 sudo 命令。

有人可以帮我吗?

4

1 回答 1

1

我找到了答案,对于在后台运行的脚本中的 ssh 命令,您需要-t -t强制使用伪终端。

参考:

不会分配伪终端,因为 stdin 不是终端

于 2013-03-24T00:04:58.947 回答