我正在尝试执行一个shell脚本,该脚本通过在启动时将shell脚本作为UserData传递给ec2实例(python SDK)来启动python脚本。
我正在尝试运行的目标python脚本需要作为具有所有用户环境变量的用户(而不是root)运行。运行此目标python脚本的bash脚本如下所示:
#!/usr/bin/env bash
source /home/ubuntu/.bashrc
source /opt/ros/kinetic/setup.bash
source /home/ubuntu/kartographer/install_isolated/setup.bash
source /home/ubuntu/catkin_ws/devel/setup.bash
/home/ubuntu/takecontrolofEC2.py $1 $2
我与ec2创建一起传递的bash脚本如下:
#!/usr/bin/env bash
echo "Start processing the data" > /home/ubuntu/process.log
whoami >> /home/ubuntu/process.log
sudo -H -u ubuntu bash -c "/home/ubuntu/runpostprocessingscript.sh s3://mapping/unprocessed_data/tax/2016-02-11/ s3://processed-data/test/tax/ >> /home/ubuntu/process.log"
process.log的o / p是
Start processing the data
root
我不明白为什么我的最后一个命令没有被执行。当我从终端以root身份运行它时,同样的命令也可以工作。即。
sudo su
<last command>
我不确定我哪里出错了。一切都有帮助。
由于
FYI: python脚本需要很长时间(2-3小时)才能完成数据处理。
注意:这在我使用SSH / paramiko时有效。但我的目的是让ec2实例完全封闭(没有ssh接口),因为所需的数据是在s3上。