簡體   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