新しい情報を収集してデータベースを更新するために、一連のコマンドライン命令を必要とするプログラムを作成しました。
このプロセスを自動化して、毎回ターミナルにこのすべての情報を入力しなくても済むようにする方法はありますか? 最初の 3 つのステップは 1 時間ごとに実行し、ステップ 4 は完了までに長い時間がかかる可能性があるため、午前 2 時に実行するように設定できます。
ステップ1:ターミナルで:
...Documents/dota2/dotaapi2/ python match_scraper.py
ステップ2:ターミナル内
psql dota2apidb
update games set online=1 where online is null;
ステップ3:ターミナルで:
...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
ステップ4:ターミナルで: (午前 2 時に 1 回だけ実行)
...Documents/dota2/dotaapi2/ python gosu_merge.py
...Documents/dota2/dotaapi2/ python unticketed.py
答え1
1 つの解決策としては、ゲーム ディレクトリをロック/ロック解除する cronjobs を設定することが考えられます。これを行うには、以下の手順に従ってください。
cronデーモンがインストールされていることを確認してください
sudo apt-get install cron
ルートで実行するためのcronジョブの設定
次のコマンドを発行して、cronjob の編集を開始します。
sudo crontab -e
次の行をエディターに追加します。
00 */1 * * * ...Documents/dota2/dotaapi2/ python match_scraper.py
01 */1 * * * psql dota2apidb
02 */1 * * * update games set online=1 where online is null;
03 */1 * * * ...Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
04 02 * * * ...Documents/dota2/dotaapi2/ python gosu_merge.py
05 02 * * * ...Documents/dota2/dotaapi2/ python unticketed.py
(念のため、適切なコマンドとパスを使用する必要があります。準備した bash スクリプトにその一部を入れて、実行される cron の数を減らすこともできます)
答え2
ステップ1、2、3をscript1.shに入力し、ステップ4をscript2.shに入力します。
次にセットアップクローン適切なユーザーがスケジュールに従ってスクリプトを実行できるようにするには:
minute (0-59), hour (0-23, 0 = midnight), day (1-31), month (1-12), weekday (0-6, 0 = Sunday), command
01 * * * * /usr/bin/directory/script1.sh
30 2 * * * /usr/bin/directory/script2.sh
script1.sh は毎日毎時 01 分に実行され、script2.sh は毎日 0200 時 30 分に実行されます。