代码之家  ›  专栏  ›  技术社区  ›  Grimlock

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

  •  2
  • Grimlock  · 技术社区  · 6 年前

    我有一个bash文件,当从终端执行时,它运行良好。

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

    注: tensorflow_p36 作为内置conda环境,不需要从特定 /env/bin 目录它可以从任何目录激活。我认为这是 Amazon Deep Learning AMIs

    如果我用 sudo 它不激活虚拟环境,在默认python环境中工作。python文件只能在该虚拟环境中运行。

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

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

    我正在亚马逊CentOS(深度学习AMI)上工作。是否有人可以建议在每次系统重新启动时运行此脚本的方法?

    3 回复  |  直到 6 年前
        1
  •  1
  •   glenn jackman    6 年前

    在rc中。本地,指示root以您的身份运行它:

    su --command /path/to/bash/file --login grimlock
    
        2
  •  0
  •   tripleee    6 年前

    尝试通过更改源。

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

    同时检查 chmod +x 您的路径文件。

        3
  •  0
  •   tripleee    6 年前

    您可以从个人Crontab运行它。

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

    如果你没有 crontab 将出现来自的错误消息 crontab -l 但它是无害的。

    crontab: no crontab for ec2-user
    

    你只需要做一次,一旦系统启动,工作就会像你自己一样执行。