【CentOS 7】スケジュールタスク設定


概要


Windowsに計画タスクがあるようにcentos 7にも自然に計画タスクがあり、設定がより柔軟で使いやすい.さらにcentos 7ではcrontabを利用して計画タスクを実行することができ、crondとのシステムサービスに依存することができ、このサービスはシステムが持参したもので、直接状態を見て、起動して、停止することができます.   

crontabsサービスをインストールし、POSTを設定します。

yum install crontabs 
systemctl enable crond ( ) 
systemctl start crond( crond ) 
systemctl status crond ( ) 

ユーザーカスタムタイミングタスクの設定

vi /etc/crontabには、Example of job definition: 
.---------------- minute (0 - 59) 
| .------------- hour (0 - 23) 
| | .---------- day of month (1 - 31) 
| | | .------- month (1 - 12) OR jan,feb,mar,apr ... 
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
| | | | | 
* * * * * user-name command to be executed 
が表示されます.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

0 1 * * * root /root/crontab/dataCrawl.sh

すなわち、分(0-59)時間(0-23)日(1-31)月(11-12)曜日(0-6,0は日曜日)のユーザー名で実行するコマンド
  • */30 * * * root /usr/local/mycommand.sh(毎日、30分ごとにmycommandコマンドを実行)
  • * 3 * * * root /usr/local/mycommand.sh(毎日午前3時、コマンドスクリプトを実行します.PS:ここでは最初の分が設定されていないため、毎日午前3時の毎分に1回コマンドを実行します)
  • 0 3 * * * root /usr/local/mycommand.sh(これにより、毎日午前3時ちょうどにコマンドスクリプトが実行されます)
  • */10 11-13 * * * root /usr/local/mycommand.sh(毎日11時から13時までの間、10分ごとにコマンドスクリプトが実行され、この使い方もよく使われています)
  • .
  • 10-30 * * * * root /usr/local/mycommand.sh(1時間当たり10-30分、1分当たりコマンドスクリプトを20回実行)
  • 10,30 * * * * * root /usr/local/mycommand.sh(1時間当たり10,30分、コマンドスクリプトをそれぞれ1回、2回実行)
  • 保存有効


    タスクをロードして有効にします:crontab /etc/crontabタスクの表示:crontab -l$crontab-uユーザー名-l(ユーザーのタイミングタスクリストをリスト)
    PS:特に注意して、crondのタスク計画には、ユーザーが設定した環境変数を呼び出すことはありません.それは自分の環境変数があります.mysqldumpなどの環境変数が必要なコマンドを使用すると、スクリプトを手動で実行するのは正常ですが、crondで実行するとだめになります.この場合、完全な絶対パスを書くか、/etc/crontabに環境変数を追加します.
    計画タスクは簡単ですが、計画タスク、実行文が複数ある場合は、shellスクリプトを使用して、自分でshellスクリプトを書いてから、計画タスクでこのスクリプトを実行すればいいです.shellスクリプトの書き方については、ここでは後述しません.
     

    最初のshellスクリプト


    vi/vimコマンドを使用してファイルを作成できるテキストエディタを開き、ファイルtestを新規作成します.sh、拡張子はsh(shはshellを表す)で、拡張子はスクリプトの実行に影響しません.名前を見て知意すればいいです.phpでshellスクリプトを書くと、拡張子はphpを使います.
    いくつかのコードを入力します.最初の行は一般的に次のようになります.

    ≪インスタンス|Instance|emdw≫

    #!/bin/bash
    echo "Hello World !"

    #!このスクリプトを実行するためにどのような解釈器が必要なのか、つまりどのシェルを使用するのかを示す約束のタグです.
    echoコマンドは、ウィンドウにテキストを出力するために使用されます.

    Shellスクリプトを実行するには、次の2つの方法があります。


    1、実行可能プログラムとして
    上のコードをtestとして保存します.sh,cdを対応するディレクトリに:
    chmod +x ./test.sh  # 
    ./test.sh  # 

    注意、必ず./test.testではなくshsh,他のバイナリを実行するプログラムも同様にtestを直接書く.sh、linuxシステムはPATHに行ってtestと呼ばれているかどうかを探します.shの、/bin,/sbin,/usr/bin,/usr/sbinだけがPATHにあり、あなたの現在のディレクトリは通常PATHにないのでtestと書きます.shはコマンドが見つからないので、./test.shはシステムに、現在のディレクトリで探していると伝えた.
    栗:
    #!/bin/bash
    cd /root/crontabs/FeiFengDataToMySql/
    echo pwd
    dotnet FeiFengDataToMySql.dll