
私は Debian 12 を実行しており、crontab
Artifactory リポジトリから定期的にいくつかのファイルを取得する Python スクリプトを実行しようとしています。
私は、このジョブを別のユーザーアカウントで実行していますwww
。crontabを次のように編集しました。crontab -e
コマンドは次のとおりです。
# Cron
0 * * * * /path/to/py/venv/python3 /path/to/py/script.py && chown -R user:group /path/to/resource
# Command
/path/to/py/venv/python3 /path/to/py/script.py && chown -R user:group /path/to/resource
sudo journalctl -u cron
ジョブに基づいて、実行されているように見えました。0 * * * * date >> ~/clock.txt
テストとして別のジョブも作成しました。両方とも実行されているように見えました。ただし、ファイルを取得するはずの Python スクリプトは、設定したディレクトリに何も新しいものを書き込みませんでした (日付と時刻は変更されませんでした)。
コマンドをコピーして貼り付けて直接実行してみましたが、問題なく動作し、新しいファイルが書き込まれました。スクリプトを正しく実行するために、cron で何か特別なことが必要ですか?
答え1
標準的な推奨事項は、スクリプトにコマンドを追加し、ホーム環境のセットを追加することです。
#!/usr/bin/bash
source /path/to/your/home/directory/.bashrc
/path/to/py/venv/python3 /path/to/py/script.py && chown -R user:group /path/to/resource
次のようにcronを作成します:
0 * * * * /path/to/above/script
別のシェルを使用する場合はファイル名(bash
関連)を変更してください