特定のユーザーと Python 仮想環境としての Cron タブ

特定のユーザーと Python 仮想環境としての Cron タブ

特定のユーザー (xfeautomation) および Python 仮想環境として、1 時間ごとの cron ジョブを実行したいと考えています。特定のユーザーとして実行する場合、スクリプトの場所を PATH に追加する必要がありますか? 現在の cron ジョブは次のようになります。

0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

これは正しい、あるいは最適な方法でしょうか? TIA

答え1

そのユーザーに切り替えます。

sudo su - xfeautomation

走る

crontab -e

空のファイルを含むファイル エディターが表示されます。そこにユーザー名なしでジョブを追加し、保存します。

0 * * * * /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

検証:

sudo su - xfeautomation crontab -l

または

sudo crontab -u xfeautomation

答え2

特定のユーザーとして実行する場合、スクリプトの場所を PATH に追加する必要がありますか?

通常、絶対パスを使用している場合は、PATH環境変数を変更する必要はありません。/opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

システム管理者には、別のユーザー ID で実行されるスケジュールされたバッチ ジョブを作成するためのオプションがいくつかあります。

  1. で説明したようにこの答え:そのユーザー用の個人用crontabを設定する個人用 crontab 内のジョブは、常にその所有者のユーザー ID で実行されます。
    管理者として別のユーザー用に個人用 crontab を設定すると、そのユーザーは cron ジョブの仕様を変更および削除できるため、作業が元に戻ることに注意してください。

  2. あるいはシステム crontab からシステムジョブをスケジュールする。システム crontab (通常は/etc/crontabおよび/または のドロップイン ファイル/etc/cron.d/) は root が所有しており、権限のないユーザーは変更できません。システム crontab のジョブ仕様は、個人用 crontab ファイルに存在しない追加フィールドをサポートしています。フィールド #6 には、xfeautomationジョブの実行に使用されるユーザー ID などのユーザー名が必要です。
    投稿した構文は、 のエントリ/etc/crontabまたは次のようなドロップイン ファイルには正しいです。/etc/cron.d/wf_api_linux

    0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
    

すべての出力とエラーをログに記録しているので問題はありませんが、通常、システム crontab を設定すると cron は標準出力とエラーを root に電子メールで送信し、個人用 crontab を使用する場合はユーザーに直接送信します。

私の知る限り、どちらの方法も実質的には同じ条件で仕事が行われ、仕事の仕様と電子メールの所有権に関する懸念を除けば、どちらも同等です。

関連情報