把執行環境包在容器中執行如何?
請問你要執行的程式是"排程定期"嗎?
若是的話要使用 crontab
而非 at
先找出你的虛擬環境位置
$ conda env list
# conda environments:
#
venv1 /home/user/anaconda3/envs/venv1
venv2 /home/user/anaconda3/envs/venv2
root * /home/user/anaconda3
然後輸入 crontab -e
進入排程中編輯定期排程
0 1 * * * /home/user/anaconda3/envs/venv2/bin/python3.6 /home/user/executeme.py
分 時 日 月 每週? 用什麼 執行什麼
上頭是直接指定虛擬環境的 python 直譯器位置來執行特定程式
直接在你的 python 程式的第一行(人稱它為shebang line
) 輸入如下
#! /home/user/anaconda3/envs/venv2/bin/python3.6
"""
程式註解區塊
"""
############### 下面都是程式碼~~
print('OK')
然後記得把該程式改為可執行 chmod a+x /home/user/executeme.py
(a+x請慎用)
最後直接使用 /home/user/executeme.py
就可直接用虛擬環境的直譯器執行該python腳本
我不確定你哪邊指令可能有問題...
我使用 echo '/home/user/executeme.py' | at now +1min
, 然後可以看看到 job 30 at Thu Dec 6 14:45:00 2018
這樣的回應, 如果OK的話, 表示 at 排程應該是沒有設錯
另外, 上面的範例有點來亂的, python腳本裏頭, print 是不會有東西的XD
設完 at
後, 可使用 atq
來看 一次性排程柱列
如果上述OK 但依然無法執行, 可能你的虛擬環境有問題
建議先直接使用虛擬環境直譯器絕對路徑來執行看看你的程式再來做後續判斷/home/user/anaconda3/envs/venv2/bin/python3.6 /home/user/executeme.py
C大您好 用虛擬環境直譯器的絕對路徑 是可以執行的
另外有私訊你喔