詳細なタイミングタスクツール、Linuxのcrontabコマンド

crontabファイル:最も近い分にデーモン定期的なタスクは、我々は一般的にスクリプトを書く秒を設計- >にアラーム同等の
        ログファイル:LLは/ var / log / cronの *
        編集ファイル:VIMの/ etc / crontabのを        
        プロセスします。ps -ef |グレップのcrond ==> /etc/init.d/crond再開の
        役割:定期的なバックアップ、リアルタイムのバックアップ

共通のコマンド・パラメータ

1
2
3
4
5
6
7
8
usage:  crontab  [-u user] file
         crontab  [-u user] [ -e | -l | -r ]
                 (default operation is replace, per 1003.2)
         -e      (edit user's crontab )
         -l      (list user's crontab )
         -r      (delete user's crontab )
         -i      (prompt before deleting user's crontab )
         -s      (selinux context)

 

cronジョブの分類


2つのカテゴリに分類されのLinuxのタスクスケジューリング、タスクスケジューリングシステムとユーザタスクのスケジューリング。
    タスクのスケジューリングシステム:システム作業は、ハード・ディスク・キャッシュへの書き込みデータとして、定期的に実行するために、クリーンアップをログに記録します。 
        の/ etc / crontabファイルでは、これは、タスクのスケジューリングシステムの設定ファイルです。
    ユーザーのタスクスケジューリング:ユーザは、ユーザデータのバックアップとして、定期的に実行する通常の電子メールのリマインダを働きます。
        ユーザーは、自分のcrontabスケジュールされたタスクをカスタマイズするためのツールを使用することができます。
        crontabファイルには/ var /スプール/ cronディレクトリに格納されています。そのファイル名とユーザー名と一致して

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1.系统定时任务:例如清理系统日志,清理系统缓存   -->不过多的关注
     查询系统定时处理任务的路径:
         路径1:
             cd  /etc/logrotate .d/        -->可以写定时任务
             less  syslog
         路径2:
             cat  /etc/crontab    -->不推荐使用,但是可以看格式
         路径3:
              ls  /etc/  | grep  cron *
                  anacrontab
                  cron .d                 -->同路径2 ,可以写定时任务 
                  cron .daily
                  cron .deny              -->控制普通用户使用定时任务 crontab
                  cron .hourly
                  cron .monthly
                  crontab
                  cron .weekly
2.用户的定时任务      -->关注重点

crontabファイルの内容分析

猫の/ etc / crontabの

画像

最初の4行はcrondタスクを実行するために環境変数を設定するために使用されています

SHELL変数は、ここで、シェルが使用するようにシステムを指定する最初の行は、bashのです

2行目は、実行するためにPATH変数コマンド体系へのパスを指定します

三行目MAILTO変数はcrondタスク実行情報は、rootユーザーに電子メールを経由して送信されます指定します

MAILTO変数が空の場合、それはユーザーのタスクの実行に情報を送信しないことを意味します

HOME変数4行目はコマンドやスクリプトを実行するときに使用するホームディレクトリを指定します。

アスタリスク(*):、月のフィールドなど、すべての可能な値に代わって、それはコマンドが他のフィールドを満たすために、月の制約後の動作を実行していることを示し、アスタリスクです。

カンマ(、):カンマ区切り値は、例えば、「1,2,5,7,8,9」、範囲のリストを指定するために使用することができます

バーは、( - ):整数の間バールの範囲の整数を表すことができ、例えば、「2-6」、「2,3,4,5,6」を示します

スラッシュ(/):N個の周波数間隔は「0-23 / 2」は、例えば、時間を指定することができるスラッシュ回2時間ごとに実行されます。

概要:
    数2の表現アラビア数字の表示に使用するのが最善
    の週と日が使用するのが最善ではありません
    注釈を追加するためにスケジュールされたタスクを
    ログファイルや空のファイルを対象とすることができる
    定期的なタスク絶対パスでなければなりませんし、ディレクトリは、結果の前に存在している必要があり
    crontabのサービス実行を開くようにしてください

crontabのログ・パス

1
2
3
# 【日志是按照天排列的】
ll /var/log/cron *
     /var/log/cron 只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息则linux会每次都发邮件到该用户下。

 

1
less  /var/spool/mail/root

 

頻繁に使用するコマンドを示し、

インストールのcrontab:

1
yum install  crontabs

crontabの取扱い説明書:

1
2
3
4
5
6
7
/sbin/service  crond start // 启动服务
 
/sbin/service  crond stop // 关闭服务
 
/sbin/service  crond restart // 重启服务
 
/sbin/service  crond reload // 重新载入配置

crontabのサービスのステータスを表示します。

1
service crond status

crontabファイルは、手動でサービスを開始します。

1
service crond status

crontabのサービスが起動するように設定されているかどうかを確認し、コマンドを実行します。

1
2
方法一: 界面启动      ntsysv
方法二: 加入开机自动启动:   chkconfig –level 35 crond on

スケジュールされたタスクの一覧を表示するのcrontab -l

スケジュールされたタスクを編集します

1
crontab  –e
1
==》vim /var/spool/cron/root

ファイルへの出力時間2分ごと

1
* /2  * * * * echo  ` date ` >> $HOME> test .txt

スケジュールされたタスクをcrontabの-r削除

1
2
3
==> 从 /var/spool/cron 目录中删除用户的 crontab 文件
==> 如果不指定用户,则默认删除当前用户的 crontab 文件
  crontab  –i  在删除用户的 crontab 文件时给确认提示

crontabファイルのバックアップ

1
crontab  -l > $HOME /mycron


失われたcrontabファイルを復元

1
2
3
如果不小心误删了 crontab 文件,假设你在自己的$ H O M E目录下还有一个备份,那么可以将其拷贝到 /var/spool/cron/ <username>,其中<username>是用户名。如果由于权限问题无法完成拷贝,可以用:
crontab  <filename> 其中,<filename>是你在$ H O M E目录中副本的文件名。
有些 crontab 的变体有些怪异,所以在使用 crontab 命令时要格外小心。如果遗漏了任何选项, crontab 可能会打开一个空文件,或者看起来像是个空文件。这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失 crontab 文件。

毎時/etc/cron.hourlyディレクトリにスクリプトを実行します

1
0 * * * * root run-parts /etc/cron .hourly

インターネット時刻同期の2分ごとに一度

1
echo  "*/2 * * * * /usr/bin/ntpstat time.windows.com >/dev/null 2>&1"  >> /var/spool/cron/root


3-5,17-20 30分ごとにスクリプトを実行する日

1
echo  "*/30 [3-5],[17-20] * * * /bin/sh /home/omc/h.sh >/dev/null 2>&1"  >> /var/spool/cron/root


23:00同じ日、翌日0:00 7:00までのすべての1分はスクリプトを実行します

1
* 23,00-07 /1  * * * /bin/sh  /home/omc .h.sh


月曜日から水曜日午前11時まで毎年4月に週には、スクリプトを実行します   

1
00 11 *  4 1-3 /bin/sh  /home/omc/h .sh

crontabの注意事項

1.なお、環境変数

複数のスケジュールされたタスクのcrontabファイルの定義、あなたがに特別な注意を払う必要がある問題は、環境変数の設定です

1
2
3
4
5
6
7
8
9
10
# 脚本中涉及文件路径时写全局路径;
# 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:
cat  start_cbp.sh
#!/bin/sh
source  /etc/profile
export  RUN_CONF= /home/d139/conf/platform/cbp/cbp_jboss .conf
/usr/local/jboss-4 .0.5 /bin/run .sh -c mev &
 
# 当手动执行脚本OK,但是crontab死活不执行时。可以尝试在crontab中直接引入环境变量解决问题。
0 * * * * . /etc/profile ; /bin/sh  /var/www/java/audit_no_count/bin/restart_audit .sh

2.システム・レベル及びユーザレベルのタスクのスケジューリングタスクのスケジューリング

1
root用户的任务调度操作可以通过“ crontab  –uroot –e”来设置,也可以将调度任务直接写入 /etc/crontab 文件,需要注意的是,如果要定义一个定时重启系统的任务,就必须将任务放到 /etc/crontab 文件,即使在root用户下创建一个定时重启系统的任务也是无效的。

3.その他の注意事項

1
2
3
crontab 突然失效时,可以尝试 /etc/init .d /crond  restart解决问题。或者查看日志看某个job有没有执行/报错 tail  -f /var/log/cron
千万别乱运行 crontab  -r。它从Crontab目录( /var/spool/cron )中删除用户的Crontab文件。删除了该用户的所有 crontab 都没了。
crontab 中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的 date  ‘+%Y%m%d’在 crontab 里是不会执行的,应该换成 date ‘+\%Y\%m\%d’

4.タイミングタスク試運転

1
2
3
4
1.增加执行任务的频率调试
2.调整系统时间调试任务,提前5分钟   -->不用于生产环境
3.通过脚本日志输出调试定时 任务
4.注意一些任务命令带来的问题        -->确保命令的正确性

5.crontab箴言

1
2
3
4
5
6
7
8
9
10
11
1.环境变量问题,例如 crontab 不能识别Java的环境变量
     crontab 执行shell时,只能识别为数不多的环境变量,普通的环境变量是无法识别的,所以在编写shell时,最好使用 export 重新声明变量,确保脚本执行。
2.命令的执行最好用脚本
3.脚本权限加 /bin/sh ,规范路径 /server/scripts
4.时间变量用反斜线转义,最好用脚本
5.定时任务添加注释
6.> /dev/null  2>&1   ==>&> /dev/null ,别随意打印日志文件
7.定时任务里面的程序脚本尽量用全路径
8.避免不必要的程序以及命令输出
9.定时任务之前添加注释
10.打包到文件目录的上一级

おすすめ

転載: www.cnblogs.com/ct20150811/p/11277312.html