crontabコマンドのcronジョブ

簡単な紹介

crontabファイルを定期的に提供し、実行されるコマンド
LinuxシステムのLinuxの動員は、2つのカテゴリに分類します:
  図1は、システムによって実行される作業:仕事のシステムは、キャッシュをクリアし、システムデータをバックアップするように、定期的に実行されます
  2は、人によって実行される作業:ユーザーの作業は、自分の設定し、各ユーザーによる作業の新しい文字のためのメールサーバーを、チェックするために、このような10分ごとなど、定期的に行われます
の/ etc / crtontab
  コマンド猫のcrontabビュー経由でスケジューラを実行しているシステム内に格納され、一般的には/ etc / crontabファイルに格納されたシステムタスクのスケジューリング、
  これらのタスクは自動的に呼び出すシステムで起動して実行されます
/ var /スプール/ cronの
  各ユーザーは、独自のcrontabは自動的に通常は/ var /スプール/ cronディレクトリにあるファイルを生成し、生成します
  ファイル名を指定して実行のcrontab -rは、現在のユーザーのcrontabファイルを削除します。あなただけのcrontab -eコマンドを使用してファイルを作成する場合たとえば、あなたがコマンドを実行し、次のsuifengアカウントに切り替えて、に/ var / spool / cron / suifengファイルは、削除されます。
  普通のユーザーは、一般的には/ var /スプール/ cronのにアクセスする権限を持っていないことに注意してください
ファイル/etc/crontab.allowと/etc/crontab.denyファイル
  図1は、それぞれ、ユーザがcrontabのコマンドを使用することができず、ユーザはコマンドのcrontabを使用することができ
  2は、2つのファイルがcrontab.allowファイルの優先順位を存在します
  これらのファイルが存在するの3は、どちらも、rootユーザーのみがコマンドを起動していません
 

 

 

文法

crontabの[-e [ユーザー名] | -l [ユーザー名] | -r [ユーザー名] | -v [ユーザー名] |ファイル]

各パラメータ説明

  1. -e [ユーザー名]:タイムテーブルを設定するために、テキストエディタの実装は、デフォルトのテキストエディタがviのです(あなたが他のユーザーを指定することができますが、権限を持っている必要があります)
  2. -r [ユーザー名]:現在のタイムテーブルを削除
  3. -l [ユーザー名]:現在のタイムテーブルを一覧表示します
  4. -v [ユーザー名]:ユーザーのcronジョブの状態を一覧表示します

スケジュールされたタスクを作成します。

  crontabのテキストを入力-e(VI )状態編集
   * * * * *パスコマンド  // 作業を開始するとき、最初の5つのフィールドを指定する整数値を取ることができ、6番目のフィールドは、文字列、crontabファイルを含むすなわち、コマンド・フィールドは、ありますコマンドの実行をスケジュールします。タブとフィールド間を分割するスペース。
(.Sh使用スクリプトはコマンド・ファイルに書き込むことができ、および実行権限を与えることができます)

コマンドをスケジュールルール

フィールド名 説明 レンジ
毎時間の最初の数分 0-59
時間 毎日実行の最初の数時間 0-23
日付 実行するには、月の最初の数日間 1-31
月間カレンダー 最初の数ヶ月の実行の毎年 1-12
実行の毎週日 0-6
コマンド名 コマンドとパラメータは、実行されます  

いくつかの一般的に使用される特殊記号のcrontabのコマンド

シンボル 説明
* 任意の瞬間を表します
すなわち、セグメントを示し
- このような第二段落として、セグメントを表し:1-5、それは1〜5時00であります
/ N Nは、1時間ごとにコマンドを実行することを意味し、* / 1、このような第二段落のように、各ユニットの実行時間を表します。また、1-23 / 1のように記述することができます。

定期的なタスクを見ます

crontabの-l

スケジュールされたタスクを削除するには

crontabの-r
 

使用例

例1:コマンド実行ごとに1分
  * * * * *コマンド
実施例2:3との最初の15分で毎時
315 * * * *コマンド
実施例3:3から11:00 8:00の最初の15分間で行われます
315  8 - 11 * * *コマンド
実施例4:3から11:00まで毎日8:00の最初の15分を行います
315  8 - 11 * / 2 * *コマンド
例5:3と11:00まで毎週月曜日8時00分の最初の15分の実装
315  8 - 11 * 1コマンド
例6:夜21:30 SMBの再起動 
30  21 * * * /etc/init.d/smbの再起動
例7:1ヶ月、10、22、午前4時45分再起動SMB 
45  4  11022 * /etc/init.d/smb再始動
例8:毎週土曜日と日曜日の午前1時10分は、SMBを再起動します
10  1 * 60 /etc/init.d/smb再始動
一日あたりの例9時18:00-23:30分ごとに00を再起動して、SMB 
030  18 - 23 * * * /etc/init.d/smbの再起動
例10:毎週土曜日の夜、11:00再起動SMB 
0  23 * * 6 /etc/init.d/smbの再起動
例11:時間ごとに再起動し、SMB 
* * / 1 * * * /etc/init.d/smbの再起動
実施例12:11 pmの間で午前7時、毎時間の再起動SMBへ 
* 23 - 7 / 1 * * * /etc/init.d/smbの再起動
実施例13:SMBを再起動するために水曜日に月曜日から毎月第4号と11時 
0  11  4 *月-結婚/etc/init.d/smbの再起動
実施例14:4:00 SMBの再起動の1月1日 
0  4  1 1月*の/etc/init.d/smbの再起動
例15:毎時/etc/cron.hourlyディレクトリにスクリプトを実行します
01 * * * *ルートRUN-部品の/ etc / cron.hourly 
#のRUNは、このパラメータが削除された場合、この引数を-parts、その後あなたの代わりに、ディレクトリ名を、実行するスクリプトの名前を書くことができます
実施例16:
  1日、23時59 test.shバックグラウンド実行スクリプト、および標準出力に書き込まれ、log.txtという
  59  23 * * * /ホーム/ suifeng /スクリプト/テスト。SH > /home/suifeng/log.txt&
  2、同上。
  59  23 * * * /ホーム/ suifeng /スクリプト/テスト。SH  1 > /home/suifeng/log.txt&
  3、毎日23:59 test.sh背景スクリプト、本を書くために、エラー出力、log.txtという
  59  23 * * * /ホーム/ suifeng /スクリプト/テスト。SH  1 > /home/suifeng/log.txt&
  毎日23時59 test.sh背景スクリプト4;および間違った標準出力として間違った(標準出力とエラー出力は、約すべてのlog.txtに書き込まれます)
  59  23 * * * /ホーム/ suifeng /スクリプト/テスト。SH  1 > /home/suifeng/log.txt 2 >&1

説明書

  0は、キーボード入力を示し
  標準出力のための1
  図2は、エラー出力を示します
  &背景を意味します
  >>追加表し
  >表現をカバーするために書きます

注意を払います

  1ジョブがフォアグラウンドで実行されている場合、端子はジョブによって占有され、バックグラウンドでの仕事は、それは、端末を占有しません。あなたは、バックグラウンドでコマンド&作品を使用することができます。
  マシンはその上で待機する必要がありますようにそれが見えるので2は、バックグラウンドでユーザーとの対話コマンドを必要としません
  結果はあなたの通常の作業に干渉し、画面に出力されますよう3、ジョブは、バックグラウンドで実行されています。だから我々は、出力をファイルにリダイレクトします
 

crondサービス

--list chkconfigを別|サービスを開始するには、状況を表示するためにはgrepのcron cronコマンドを:
[ルート@ *****ホーム]#chkconfigを--list | grepをのcron crond 0:閉じる1:閉じる2:3を有効:4を有効にする:有効6:オフを5を有効にします
それが1-4であれば私たちは、そのシステムの開始レベルを見ることができ、cronサービスが自動的に起動し、ブートします、我々は次のコマンドでサービスエントリを設定するために起動することができます。
  / sbinに/ サービスを開始crond
   / sbinに/ サービスcrond停止
   / sbinに/ サービスの再起動crond
   / sbinに/サービスcrondのリロードを
それぞれ複数の行1-4、起動、停止、サービスを再起動し、設定をリロードします。
cronはブート時に自動的に設定する開始する必要があり、/ sbinに/サービスを追加するに/etc/rc.d/rc.localスクリプトに起動crond。
crontabのサービスのステータスを表示します。
サービスcrondの状態
 

動作例

1.まず、スクリプトをシェルに新しいニーズの実装のタイミング、および以下のように、ここで私は、現在の時間date.shを出力するスクリプトを作成し、容易にするために、問題を説明する、非常に単純に、読み込みは、コマンドラインとデートして、日付に出力をリダイレクトすることです.TXTのテキスト:

2.次に、date.shタイミングタスクにスクリプトを追加する直接、通常のスケジュールされたタスクの実行かどうかを確認するために、例えば、毎分スクリプトを実行する場所を最初、次のように、行に追加するには、コマンド「-eをのcrontab」を実行、編集 "することです* / 1 * * * * /root/date.sh次のように「、ライン上に保存します。

これらの6つのフィールドの意味に関しては、公式文書は、コマンド分、時間、日、月、週、および実行を表す、以下に詳細に記載されている、オンラインプレゼンテーション資料にも興味を持って、非常に豊富で、あなたが検索できます。

3.最后,我们再查看一下输出文件date.txt和crontab日志,如下,说明添加的定时任务已经正常运行,这里再替换成你每天定时执行的时间,只需要修改第一、二个字段就行,例如,每天10:30执行,则编辑“30 10 * * * /root/date.sh”保存就行:

至此,我们就完成了每天定时执行shell脚本。总的来说,整个过程非常简单,只要你有一定的Linux基础,熟悉一下crontab命令,很快就能掌握的,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

 

个人经验总结

  我们使用这个命令大多都是运行相关的脚本文件,最常见的就是定时调用http请求进行数据采集或者数据库的备份等等。因此当我们自己所写的脚本文件中含有文件引入时,最好采用绝对路径,否则将会引入失败从而导致定时任务失败。
 
 
 

简介

crontab用于设置周期性被执行的命令
Linux系统中Linux调动工作分为两大类:
  1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
  2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
/etc/crtontab
  系统调度的任务一般存放在/etc/crontab这个文件下,里面存放了一些系统运行的调度程序,通过命令cat crontab查看
  这些任务会在系统运行起来自动调用
/var/spool/cron
  每个用户都会生成自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下
  执行命令crontab -r 就会删除当前用户的crontab文件。例如你切换到suifeng账号下,执行了该命令,那么/var/spool/cron/suifeng文件就会删除,如果要创建该文件只需要用crontab -e命令即可。
  注意,普通用户一般没有权限访问/var/spool/cron
/etc/crontab.deny文件与/etc/crontab.allow文件
  1、分别表示不能使用crontab命令的用户、以及能够使用crontab命令的用户
  2、两个文件同时存在crontab.allow文件优先
  3、两个文件都不存在则只有root用户才拥有调用该命令
 

 

 

语法

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]

各个参数说明

  1. -e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 vi(可以指定别的用户,但是必须拥有权限)
  2. -r [UserName]: 删除目前的时程表
  3. -l [UserName]: 列出目前的时程表
  4. -v [UserName]:列出用户cron作业的状态

创建定时任务

  crontab -e进入文本(vi)编辑状态
  * * * * * command path  // 前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。
(可将命令写入.sh脚本文件中,并赋予可执行的权限即可)

调度命令的规则

字段名称 说明 取值范围
分钟 每小时的第几分钟执行 0-59
小时 每日的第几个小时执行 0-23
日期 每月的第几天执行 1-31
月历 每年的第几月执行 1-12
星期 每周的第几天执行 0-6
命令名称 欲执行的命令及参数  

crontab命令中的一些常用特殊符号

符号 说明
* 表示任何时刻
, 表示分割
表示一个段,如第二段里: 1-5,就表示1到5点
/n 表示每个n的单位执行一次,如第二段里,*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1.

查看定时任务

crontab -l

删除定时任务

crontab -r
 

使用示例

实例1:每1分钟执行一次command
  * * * * * command
实例2:每小时的第3和第15分钟执行
3,15 * * * * command
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * command
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
实例5:每个星期一的上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 command
实例6:每晚的21:30重启smb 
30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb 
45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 
0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb 
0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb 
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb 
* 23-7/1 * * * /etc/init.d/smb restart
实例13:每月的4号与每周一到周三的11点重启smb 
0 11 4 * mon-wed /etc/init.d/smb restart
实例14:一月一号的4点重启smb 
0 4 1 jan * /etc/init.d/smb restart
实例15:每小时执行/etc/cron.hourly目录内的脚本
01 * * * * root run-parts /etc/cron.hourly
# run-parts这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名
实例16:
  1、每天23点59分后台执行test.sh脚本;并将标准输出写入log.txt中
  59 23 * * * /home/suifeng/scripts/test.sh >/home/suifeng/log.txt &
  2、同上
  59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt &
  3、每天23点59分后台执行test.sh脚本;并将错误输出写书log.txt中
  59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt &
  4、每天23点59分后台执行test.sh脚本;并将错误输错当做标准输出(即将错误输出和标准输出全部写入log.txt中)
  59 23 * * * /home/suifeng/scripts/test.sh 1>/home/suifeng/log.txt 2>&1 &

相关说明

  0表示键盘输入
  1表示标准输出
  2表示错误输出
  &表示后台执行
  >>表示追加
  >表示覆盖写

注意

  1、当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。
  2、需要用户交互的命令不要放在后台执行,因为那样子机器将会在那一直等待
  3、作业在后台运行时,一样会将结果输出在屏幕上,干扰你的正常工作。因此我们最好将输出重定向到某个文件中
 

crond服务

通过 chkconfig --list | grep cron 命令来查看cron服务的启动情况:
[root@***** home]# chkconfig --list | grep cron crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
我们可以看到,系统启动级别如果是1-4,cron服务都会开机自动启动的,我们可以通过如下命令来设置该服务的启动项:
  /sbin/service crond start
  /sbin/service crond stop
  /sbin/service crond restart
  /sbin/service crond reload
以上1-4行分别为启动、停止、重启服务和重新加载配置。
要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可。
查看crontab服务状态:
service crond status
 

操作实例

1.首先,新建需要定时执行的shell脚本,这里我为了方便说明问题,新建了一个打印当前时间的脚本date.sh,内容如下,非常简单,就是一行date命令,然后将输出重定向到一个date.txt文本中:

2.接着就是将这个date.sh脚本添加到定时任务中,直接运行“crontab -e”命令添加就行,如下,这里先以每分钟执行一次脚本为例,看定时任务能否正常执行,编辑“*/1 * * * * /root/date.sh”保存就行,如下:

至于这6个字段的含义,官方文档有详细说明,如下,分别代表分、时、天、月、星期和执行的命令,网上介绍资料也非常丰富,感兴趣的话,可以搜索一下:

3.最后,我们再查看一下输出文件date.txt和crontab日志,如下,说明添加的定时任务已经正常运行,这里再替换成你每天定时执行的时间,只需要修改第一、二个字段就行,例如,每天10:30执行,则编辑“30 10 * * * /root/date.sh”保存就行:

至此,我们就完成了每天定时执行shell脚本。总的来说,整个过程非常简单,只要你有一定的Linux基础,熟悉一下crontab命令,很快就能掌握的,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

 

个人经验总结

  我们使用这个命令大多都是运行相关的脚本文件,最常见的就是定时调用http请求进行数据采集或者数据库的备份等等。因此当我们自己所写的脚本文件中含有文件引入时,最好采用绝对路径,否则将会引入失败从而导致定时任务失败。
 
 
 

おすすめ

転載: www.cnblogs.com/diandianquanquan/p/11518977.html