繁体   English   中英

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

[英]How to run bash script at startup without root access?

我有一个 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 文件只能在该虚拟环境中运行。

我在这里尝试了所有 3 个替代方案(rc.local、.conf 文件、init.d 配置),还尝试按照此处的建议使用 crontab。 我还尝试使用 supervisord 将此 bash 脚本添加为程序。

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

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

在 rc.local 中,指示 root 像您一样运行它:

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

尝试通过 .

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

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

您可以从您的个人 Crontab 运行它。

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

如果您没有crontab ,则会有来自crontab -l的错误消息,但它是无害的。

crontab: no crontab for ec2-user

您只需要执行一次此操作,一旦系统启动,该作业就会像您自己一样执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM