私はPythonスクリプトを持っており、24時間年中無休で稼働しているWebサーバーにアップロードしています。このスクリプトを自動化して、1時間ごとに自動的に実行されるようにします。これは可能ですか?私はcronの仕事に出くわしましたが、これを達成する方法についてはよくわかりません。ヘルプや例があれば役に立ちます。
2 に答える
まず、データを静的ではなく動的にする必要があるかどうかを自問してください。動的データには、データベースまたはcgiスクリプトを介してアクセスする方がよい場合があります。
2番目:マニュアルを少し読んでください。crontabは、cronジョブを管理するために使用されるプログラムです。Web検索を使用すると、より詳細な情報を得ることができます(どの釘を打つかを知ることは、戦いの半分です)。man crontabは計画にはあまり役立ちませんが、期待どおりにファイルを編集しない場合は、プログラムに関するポインタを提供できます。
3番目:「whichpython」を実行してPythonがどこから実行されているかを判別し、ファイルの先頭に記述子を追加します。私の場合は#!/ usr / bin/pythonです
4番目:pyhtonスクリプトを適切な場所に配置します。十分に重要であり、権限がある場合は、おそらく/ usr / local /sbin/に配置します。ファイルでchmod775を使用してファイルを実行可能にします。ファイルを実行して、期待どおりに実行されることを確認します。
5番目:crontab -eを使用してcronジョブテーブルテーブルを編集します。自分で実行できない場合は、sudo(つまり、sudo crontab -e)で実行してみてください。
6番目:0として行を追加します* * * * /myPath/myfile.py
これは、分が00に変わるたびに実行されます。ウィキペディアは@hourlyが機能するはずだと言っていますが、私は試したことがありません。
フォーマットは以下の通りです
* * * * * command to be executed
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───── day of week (0 - 6) (0 is Sunday)
│ │ │ └────────── month (1 - 12)
│ │ └─────────────── day of month (1 - 31)
│ └──────────────────── hour (0 - 23)
└───────────────────────── min (0 - 59)
7番目:テストテストテスト。
crontab --lは、cronジョブの仕様を一覧表示します。
cronの実行時に存在しなければならない可能性のある$PYTHONPATHなどの環境変数があります。
crontabに6つのフィールドがある場合、最初は秒になる可能性があります。
いつかあなたはseomthingの出力をログに記録したいと思うでしょう。/ var / logsにログファイルディレクトリを作成する方法と、/ etc /logrotate.d/ファイルを使用してログファイルディレクトリを管理する方法について説明します。
でcronジョブファイルを開きます
crontab -e
この行を追加
* 0 * * * /path/to/my/script
bashスクリプトなどを使用して、プロセスがすでに実行されているかどうかを確認することをお勧めします。
if [ `ps -u USERNAME | grep -i PROCESSNAME | wc -l` -lt 1 ]
then
nohup python main.py &
fi
編集
コマンドを入力してcrontab -e
Enterキーを押します。画面が真っ暗に~
なり、横にたくさんのが表示されます。を押すi
と、挿入モードになります。と入力* 0 * * * /path/to/my/script
し、これがスクリプトへの絶対パスであることを確認します。を押しEsc
、次に:x
入力してEnterキーを押します。vi
これにより、cronファイルが保存されます。これは、またはvim
がcronファイルのデフォルトエディタであることも前提としています。
サイドノート
また、スクリプトが実行可能であることを確認してください。chmod 777 myscript.py
トリックを実行する必要がありますが、chmodと権限についてよく理解してください。
また#/python/version/to/use
、Pythonファイルの最初の行が自分のものであることを確認してください。