我有一个 shell 脚本,它通过 cronjob 执行 python 脚本。
如果我运行 shell 脚本或 python 脚本,它执行时不会出现任何问题。
只有当我从 cronjob 执行它时才会出现问题。
Shell 脚本
!/bin/bash
# Set environment variables
export XDG_RUNTIME_DIR=/run/user/$(id -u)
export PATH=$PATH:/snap/bin
export DISPLAY=:0
#export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#echo "Current Date and time: $(date)"
#echo "current directory: $(pwd)"
#Xvfb :99 -screen 0 1024x768x24 &
#export PATH=$PATH:/usr/local/bin
#export DISPLAY=:0 #:99
LOGFILE=/opt/runscript.log
echo "Script Started at $(date)" >> $LOGFILE
cd /home/carson/Documents/code/python/speech2txt
source /home/carson/Documents/code/python/speech2txt/venv/bin/activate
#source ./venv/bin/activate
#/usr/bin/python3 /home/carson/Documents/code/python/speech2txt/createAudio.py >> /opt>
#/usr/bin/python3 /home/carson/Documents/code/python/speech2txt/cronBrowser.py >> $LOG>
su - carson -c "/usr/bin/python3 /home/carson/Documents/code/python/speech2txt/cronBro>
#echo "exit status $?"
deactivate
if [ $? -eq 0 ]; then
echo "Script Success - $(date)" >> $LOGFILE
else
echo "Script Failure - $(date)" >> $LOGFILE
fi
强盗
12 16 * * * carson /opt/run.sh
#08 22 * * * PATH=$PATH:/usr/local/bin/:/usr/bin/:/usr/sbin:/bin && DISPLAY=:0 && /opt/run.sh
##47 21 * * * export XDG_RUNTIME_DIR=/run/user/$(id -u) && export PATH=$PATH:/snap/bin && /opt/run.sh >> /opt/runscript.log 2>&1
这是我的问题的答案
0 8-16 * * 1-5 XDG_RUNTIME_DIR=/run/user/$(id -u) /usr/bin/python3 /home/code.script.py
我能够剪切 Shell 脚本并直接使用 python3 运行它。
我必须为
XDG_RUNTIME_DIR
使用 pulseaudio
环境变量,以便我的 cronjob 可以使用该服务。
我也在使用
Selenium
headless,因为 cronjob 无权访问显示。
我遇到的唯一问题应该非常简单,当我从 cronjob 运行它时,我的代码无法将其输出写入文件。当我用 python 正常运行它时,它没有问题。 无论如何,这是另一天的问题!
谢谢弗拉斯