如何在没有root访问权限的情况下在启动时运行bash脚本?

时间:2018-03-07 16:50:58

标签: python bash centos virtualenv

我有一个bash文件,从终端执行时效果很好。

#!/bin/bash
source activate tensorflow_p36
python /home/ec2-user/abc/wsgi.py

注意:tensorflow_p36是一个内置的conda环境,不需要从特定的/env/bin目录中调用。它可以从任何目录激活。我认为它是Amazon Deep Learning AMIs的一项功能。

如果我使用sudo运行此bash脚本,它不会激活虚拟环境并在默认的python环境中运行。 python文件只能在该虚拟环境中运行。

我在这里尝试了all 3 alternatives(rc.local,.conf文件,init.d config),也尝试将crontab用作suggested here。我也尝试使用supervisord将这个bash脚本添加为程序。

当程序从这些方法运行时,我总是得到相同的导入错误,因为它使用的默认python 3环境没有所需的依赖项。

我正在开发Amazon CentOS(深度学习AMI)。有人可以建议每次系统重启时运行此脚本的方法吗?

3 个答案:

答案 0 :(得分:1)

在rc.local中,指示root运行它:

su --command /path/to/bash/file --login grimlock

答案 1 :(得分:0)

尝试改变来源。

. activate tensorflow_p36
python /home/ec2-user/abc/wsgi.py

还要检查chmod +x您的路径文件。

答案 2 :(得分:0)

您可以从个人Crontab运行它。

( crontab -l; printf '@reboot /path/to/bash/file\n' ) | crontab -

如果您没有crontab,则crontab -l会出现错误消息,但该消息无害。

crontab: no crontab for ec2-user

您只需要执行一次,系统启动后,作业将自行执行。

相关问题