如何在 debian linux 中通过 cronjob 为我的用户设置环境变量?
How to set environment variable for my user from cronjob in debian linux?
我试图从我的 cronjob 设置环境变量。显然,当我 运行 我的用户使用 运行 时,crontab 运行 与普通脚本不同 shell。
这是我的 crontab:
* * * * * /home/jan_necinski_binance/miniconda3/bin/python gethistoricals.py >> output.txt
这是我在 crontab 中 运行ning 的文件:
import pandas as pd
from binance.client import Client
import os
client = Client(os.getenv('API_KEY'), os.getenv('API_SECRET'))
def GetHistoricalData(symbol: str, ST: int, LT: int, interval: str, to: str):
df = pd.DataFrame(client.get_historical_klines(symbol, interval, str(LT) + ' days ago UTC', to))
closes = pd.DataFrame(df[4])
closes.columns = ['Close']
closes['ST'] = closes.Close.rolling(ST - 1).sum()
closes['LT'] = closes.Close.rolling(LT - 1).sum()
closes.dropna(inplace=True)
return closes
def HistST(hist):
histST = str(hist['ST'].values[0])
return histST
def HistLT(hist):
histLT = str(hist['LT'].values[0])
return histLT
os.environ['ST'] = HistST(GetHistoricalData('ATOMUSDT', 7, 25, '1d', '1 day ago UTC'))
os.environ['LT'] = HistLT(GetHistoricalData('ATOMUSDT', 7, 25, '1d', '1 day ago UTC'))
print(os.getenv('ST'))
print('cronjob works correctly')
所以总结一下我的问题是 crontab 在不同的环境中设置了环境变量,所以我的脚本无法访问它们。请帮忙!!!
cron 子系统没有设置环境变量。我敢打赌你会在 ~/.bashrc 中设置这些环境变量。该启动脚本不会被非交互式 shell 读取,例如那些由 cron 启动的 shell。处理这个问题的最简单方法是将您的环境变量放在一个单独的脚本中(我喜欢将其命名为 ~/.environ),然后在您的 ~ 中获取该文件/.bashrc 和你的 cron 作业。例如:
* * * * * source ~/.environ; /home/jan_necinski_binance/miniconda3/bin/python gethistoricals.py >> output.txt
我试图从我的 cronjob 设置环境变量。显然,当我 运行 我的用户使用 运行 时,crontab 运行 与普通脚本不同 shell。
这是我的 crontab:
* * * * * /home/jan_necinski_binance/miniconda3/bin/python gethistoricals.py >> output.txt
这是我在 crontab 中 运行ning 的文件:
import pandas as pd
from binance.client import Client
import os
client = Client(os.getenv('API_KEY'), os.getenv('API_SECRET'))
def GetHistoricalData(symbol: str, ST: int, LT: int, interval: str, to: str):
df = pd.DataFrame(client.get_historical_klines(symbol, interval, str(LT) + ' days ago UTC', to))
closes = pd.DataFrame(df[4])
closes.columns = ['Close']
closes['ST'] = closes.Close.rolling(ST - 1).sum()
closes['LT'] = closes.Close.rolling(LT - 1).sum()
closes.dropna(inplace=True)
return closes
def HistST(hist):
histST = str(hist['ST'].values[0])
return histST
def HistLT(hist):
histLT = str(hist['LT'].values[0])
return histLT
os.environ['ST'] = HistST(GetHistoricalData('ATOMUSDT', 7, 25, '1d', '1 day ago UTC'))
os.environ['LT'] = HistLT(GetHistoricalData('ATOMUSDT', 7, 25, '1d', '1 day ago UTC'))
print(os.getenv('ST'))
print('cronjob works correctly')
所以总结一下我的问题是 crontab 在不同的环境中设置了环境变量,所以我的脚本无法访问它们。请帮忙!!!
cron 子系统没有设置环境变量。我敢打赌你会在 ~/.bashrc 中设置这些环境变量。该启动脚本不会被非交互式 shell 读取,例如那些由 cron 启动的 shell。处理这个问题的最简单方法是将您的环境变量放在一个单独的脚本中(我喜欢将其命名为 ~/.environ),然后在您的 ~ 中获取该文件/.bashrc 和你的 cron 作业。例如:
* * * * * source ~/.environ; /home/jan_necinski_binance/miniconda3/bin/python gethistoricals.py >> output.txt