子 shell 中的清空 whoami

子 shell 中的清空 whoami

我有一个 webapp(nginx、gunicorn、python),它接收 git post hooks 并触发命令行工具(ruby、capistrano)。一切都通过名为 的用户运行deployer。命令行工具运行良好,可以通过 ssh 连接到远程服务器。

当 webapp 触发它时,它无法通过 ssh 连接。需要密码。我想我知道如何规避它(我在这里遇到了与 cronjobs 类似的问题:由于 ssh-agent 进程数量增加,服务器被终止) 但不知何故,webabb 中的用户是空的。

鉴于此脚本:

#!/bin/bash
echo "$(whoami)"

当我运行时deployer@tools:/srv/deployment$ ./test > test.txt,test.txt 包含“deployer”,并且该文件test.txt归 deployer:deployer 所有。

当我从我的 webapp 中运行相同的命令时,test.txt 为空(仅包含一个换行符)但归 deployer:www-data 所有(如预期并在 gunicorn 中配置)。

这怎么可能呢?我该怎么办?

答案1

所以问题原来是路径设置不同。

Gunicorn 使用 python virtualenv 作为 PATH,因此根本不知道 whoami。推入绝对路径有效!

相关内容