我需要使用 bash 启动一个 python 脚本,使用 nohup 传递一个 arg,该 arg 有助于在我导入的脚本中定义一个常量。关于传递参数有很多问题,但我还没有找到使用 nohup 的成功方法。
我的 bash 脚本的简化版本:
#!/bin/bash
BUCKET=$1
echo $BUCKET
script='/home/path/to/script/script.py'
echo "starting $script with nohup"
nohup /usr/bin/python $script $BUCKET &
我正在导入的配置脚本的相关部分:
FLAG = sys.argv[0]
if FLAG == "b1":
AWS_ACCESS_KEY_ID = "key"
BUCKET = "bucket1"
AWS_SECRET_ACCESS_KEY = "secret"
elif FLAG == "b2":
AWS_ACCESS_KEY_ID = "key"
BUCKET = "bucket2"
AWS_SECRET_ACCESS_KEY = "secret"
else:
AWS_ACCESS_KEY_ID = "key"
BUCKET = "bucket3"
AWS_SECRET_ACCESS_KEY = "secret"
使用它的脚本:
from config import BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
#do stuff with the values.
坦率地说,由于我将 args 传递给 script.py,我不确定它们是否会在导入脚本的范围内。也就是说,当我在不使用 nohup 的情况下采用类似的方法时,它可以工作。