
特定のユーザー (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 で実行されるスケジュールされたバッチ ジョブを作成するためのオプションがいくつかあります。
で説明したようにこの答え:そのユーザー用の個人用crontabを設定する個人用 crontab 内のジョブは、常にその所有者のユーザー ID で実行されます。
管理者として別のユーザー用に個人用 crontab を設定すると、そのユーザーは cron ジョブの仕様を変更および削除できるため、作業が元に戻ることに注意してください。あるいはシステム 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 を使用する場合はユーザーに直接送信します。
私の知る限り、どちらの方法も実質的には同じ条件で仕事が行われ、仕事の仕様と電子メールの所有権に関する懸念を除けば、どちらも同等です。