以下を使用して別のスクリプトを呼び出すPythonスクリプトがあります。subprocess.Popen
subprocess.Popen("python sample.py", shell=True)
手動で実行するとうまく実行されますが、sample.py
cronでスケジュールすると実行されませsample.py
ん。助けてください
ベストアンサー1
ジョブがによって実行されているcron
か、systemd
起動スクリプトがデスクトップで実行されているのと同じランタイム環境で実行されていません。systemd
でスクリプトを起動しますroot
。変更やその他の環境変数の設定は、ジョブに自動的に伝播されPATH
ません。たとえば、noなので、GUIプログラムには特別な処理(読み取り)が必要です。~/.bashrc
cron
$DISPLAY
man xhost
cron
環境変数は、すべてのジョブの読み取りファイルで設定できます。crontab
man 5 crontab
echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
各環境の結果を確認してください。
その行はデフォルトで解釈されるため、構文はcommand
それよりも単純なので、環境を設定した後に必要なプログラムを呼び出すスクリプト(実行可能、インストール、開始)を呼び出すことをお勧めします。crontab
/bin/sh
/bin/bash
command
bash
#!/bin/bash