Crontabが良い選択だと聞いたことがありますが、どのように行を書き、サーバーのどこに置くのですか?
これは良いチュートリアルです crontabとは何か、Ubuntuでのcrontabの使用方法について。 crontab行は次のようになります。
00 00 * * * Ruby path/to/your/script.rb
(00 00
は深夜0分0時間を示し、*
sは毎月の毎日を意味します。)
構文: mm hh dd mt wdコマンド mm分0-59 hh時間0-23 dd日月1-31 mt月1-12 wd曜日0-7(日曜日= 0または7) コマンド:実行するもの すべての数値を*に置き換えることができます。これは、all を意味します。
マニュアルページから
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
使用できる特別な「ニックネーム」(マニュアルページに記載)、特に日時の代替がない「@reboot」に注意してください。
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
このトリックを使用して、cronジョブを毎分複数回実行することもできます。
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
Cronジョブを追加するには、次の3つのいずれかを実行できます。
上記のように(およびcrontabのセクション5、manページから)、ユーザーのcrontabにコマンドを追加します。
crontab -e -u <username>
を使用して、rootとしてユーザーのcrontabを編集しますcrontab -e
だけで編集しますEDITOR
を使用してエディターを設定できますenv EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
でスクリプトを実行可能にするcronジョブとしてスクリプト/プログラムを作成し、システムのanacron /etc/cron.*ly
ディレクトリに追加
chmod a+x /etc/cron.daily/script_runs_daily.sh
-実行可能にするman anacron
chmod a+x <file>
でスクリプトを実行可能にする/etc/crontab
または/etc/anacrontab
で設定された時間に実行されるように構成されます/etc/anacrontab
でのみ定義し、cron.hourlyを/etc/cron.d/0hourly
で定義しますまたは、/etc/cron.d
でシステムcrontableを作成できます。
/etc/cron.d
に追加されるファイルは、実行可能である必要はありません。someuser
として実行されるジョブの例を示します。シェルとして/bin/bash
を強制的に使用します。 File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
Shell=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
場合によっては、crontabとrvmを使用してPATHとGEM_PATHを指定する必要があります。
このような:
# top of crontab file
PATH=/home/user_name/.rvm/gems/Ruby-2.2.0/bin:/home/user_name/.rvm/gems/Ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/Ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/Ruby-2.2.0:/home/user_name/.rvm/gems/Ruby-2.2.0@global
# jobs
00 00 * * * Ruby path/to/your/script.rb
00 */4 * * * Ruby path/to/your/script2.rb
00 8,12,22 * * * Ruby path/to/your/script3.rb
cronジョブを設定するためのクイックガイド
新しいテキストファイルを作成します。例:mycronjobs.txt
毎日のジョブ(00:00、03:45)ごとに、スケジュール行をmycronjobs.txtに保存します
00 00 * * * Ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
ジョブをcronに送信します(これを実行するたびに、cronは保存されたものを削除し、mycronjobs.txtの新しい情報で更新します)
crontab mycronjobs.txt
追加の有用な情報
現在のcronジョブを見る
crontab -l
すべてのcronジョブを削除します
crontab -r
Cronジョブを使用するか、シェルスクリプトを作成するかの2つの方法でシェルスクリプトを実行できます
スクリプト名が「yourscript.sh」であると仮定しましょう
最初に、スクリプトのユーザー権限を確認します。以下のコマンドを使用して、スクリプトのユーザー権限を確認します
ll script.sh
スクリプトがルートにある場合、以下のコマンドを使用します
Sudo crontab -e
次に、スクリプトがユーザー「ubuntu」を保持している場合、以下のコマンドを使用します
crontab -e
Crontabに次の行を追加します。
55 23 * * * /path/to/yourscript.sh
これを行う別の方法は、スクリプトを記述し、バックグラウンドで実行することです
これは、毎日23:55 pmに実行するスクリプト名(例:-youscript.sh)を入力する必要があるスクリプトです。
#!/bin/bash while true do /home/modassir/yourscript.sh sleep 1d done
ファイルに保存します(「every-day.sh」という名前を付けます)
sleep 1d-1日待ってから再び実行することを意味します。
今、あなたのscript.use以下のコマンドに許可を与えます:
chmod + x every-day.sh
ここで、「Nohup」を使用してバックグラウンドでこのシェルスクリプトを実行します。これにより、セッションからログアウトした後でもスクリプトが実行され続けます。
以下のコマンドを使用してスクリプトを実行します。
Nohup ./every-day.sh&
注:-毎日23:55に「yourscript.sh」を実行するには、正確に23:55に「every-day.sh」スクリプトを実行する必要があります。
この文をcrontabファイルに入れます:0 0 * * */usr/local/bin/python /opt/ByAccount.py> /var/log/cron.log 2>&1