当前位置: 首页 > 知识库问答 >
问题:

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

沃侯林
2023-03-14

我有一个bash文件,从终端执行时可以正常工作。

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

注意:tensorflow\u p36是一个内置的conda环境,不需要从特定的目录调用。它可以从任何目录激活。我认为这是亚马逊深度学习AMIs的一个特点。

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

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

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

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

共有3个答案

祖利
2023-03-14

您可以从个人Crontab运行它。

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

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

crontab: no crontab for ec2-user

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

斜宁
2023-03-14

尝试通过更改源。

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

还要检查路径文件

曾云
2023-03-14

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

su --command /path/to/bash/file --login grimlock
 类似资料:
  • 问题内容: 我正在学习使用Selenium(v2.20)来领先一些 即将使用它创建浏览器测试的程序员。我想在 陷阱到达之前发现它们,而我却跌入了一个陷阱。 当我创建ChromeDriver时,它始终会弹出“ Google Chrome EULA”并 显示两个按钮:“接受并运行”和“取消”。因为我希望这是一个 自动化测试,所以让用户单击按钮是不可能的。 我查看了Chromium CommandSwi

  • 问题内容: 是否可以不执行而检查bash脚本语法? 使用Perl,我可以运行。bash脚本有任何等效命令吗? 问题答案: 也许是一个明显的警告:这可以验证语法,但不会检查您的bash脚本是否尝试执行不在您的路径中的命令,例如而不是。

  • 我在用 Linux 编写的 CUDA 代码中使用了一个库(该库称为 cublas),我可以使用 nvcc 成功编译我的代码,但是当我运行代码时出现此错误: 加载共享库时出错:libcublas.so.7.5:无法打开共享对象文件:没有这样的文件或目录 我发现此链接是一种解决方案,建议运行一些命令以解决问题。基于此链接的一种解决方案是运行以下命令: export LD_LIBRARY_PATH=$L

  • 文档说这个库运行在GPU上。如果我功能强大的笔记本电脑没有GPU,我还能运行Deeplearning4J吗?

  • 我们需要从专用 exchange/outlook 邮箱 (O365) 的联系人文件夹中读出通讯组列表。该进程必须作为服务运行,没有用户交互。 不幸的是,图形应用编程接口不支持分发列表(甚至图形测试版也不支持)。因此,我们必须使用另一个应用编程接口——我尝试使用EWS。 我成功地向我们的服务授予了full_access_as_app权限。然而,这允许读取和修改任何邮箱中的任何数据,这是一个安全风险。

  • 问题内容: 我试图将配置(例如URLs / etc)放入资源文件夹中,以供实用程序类使用。但是,我不想从任何地方的活动中传递上下文。我希望能够通过路径名(似乎使用assess /是为此用途设计的)来访问资源,而无需使用上下文来访问资源。 在这种特殊情况下,我希望单例实例化时在配置中使用某些东西。除了实例化期间的那一次之外,它不需要任何资源。因此,每次调用getInstance()时都必须传递Con