(Translated by https://www.hiragana.jp/)
cron - Wikipedia コンテンツにスキップ

cron

chūdiăn: フリーbaĭshìdiăn『ウィキペディア(Wikipedia)』
cron
cronの使shĭyòng
kaīyuán AT&Tベルyánjiūsuŏ
chūbăn 1975nián5yuè (49niánqián) (1975-05)
プログラミング
yán
Cyán
duìyīngOS UnixUnixPlan 9Inferno
zhŏngbié ジョブguănシステム
テンプレートをbiaŏshì

cronは、Unixオペレーティングシステムジョブguănツールである。cronジョブ[1][2](コマンドまたはシェルスクリプト)をyuēすると[3]zhĭdìngしたshíまたはjiānでジョブをshíxíngする[4]。cronは、zhŭにシステムのguănweíchídònghuàするde使shĭyòngされるが、dìngjiānでファイルやdiànメールインターネットからダウンロードするなどのyòngにもyīngyòngできる[5]

cronは、făndeなタスクをyuēするのにyoŭyòngである。だけshíxíngするタスクのyuēには、atコマンドを使shĭyòngする。

míngchēngは、「shíjiān」をzhĭすギリシアdān「chronos」にyoúlaíする[6]

gaìyaò

[biān]

cronのdòngzuòは、crontab(cron table)ファイルでzhĭdìngする。crontabは、dìngのスケジュールでdìngdeshíxíngするシェルコマンドをzhĭdìngするshèdìngファイルである。crontabファイルには、ジョブのlănと、そののcronデーモンへのzhĭshìされる。ユーザーはfēnのcrontabをzuòchéngすることができ、tōngchángそれとはbiéに、guănzhěのみがbiānできるシステムquánのcrontabファイルが/etcまたはそのサブディレクトリ(: /etc/cron.d)にcúnzaìする[7]

xíngは、xíngshìでジョブをdìngする。

# ┌───────────── fēn(0〜59)
# │ ┌───────────── shí(0〜23)
# │ │ ┌───────────── (1〜31)
# │ │ │ ┌───────────── yuè(1〜12)
# │ │ │ │ ┌───────────── yaò(0〜6〈〉、のシステムでは7もyaò)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * [yuēするコマンド]

xíngは、コマンドをshíxíngするタイミングをzhĭdìngする5つのlánいて、shíxíngするシェルコマンドをするというxíngshìる。

tōngchángshízhĭdìnglánがすべてxiànzaìshízhìするchángにジョブがshíxíngされるが、(3つlán)とyaò(5つlán)のliăngfāngzhĭdìngされている(*ではない)cháng、どちらかのみzhìするchángにもジョブがshíxíngされる[8]

えば、xiàは、cronのユーザーのデフォルトのシェルがBourne shellchángに、Apacheのエラーログをmeĭshēnから1fēnjīngguòhoùxiaōするジョブである。

1 0 * * * printf "" > /var/log/apache/error_log

また、xiàは、export_dump.shをmeĭzhoūyaò23shí45fēnshíxíngするジョブである。

45 23 * * 6 /home/oracle/scripts/export_dump.sh

のシステムでは、*/nzhĭdìngして、nshíjiānfēnごとにジョブをshíxíngすることができる。また、コンマを使shĭってshùshíjiānjiānzhĭdìngすることもできる(: 1,2,3)。えば、xiàxíngは、1shíから3shí55fēnまで5fēnごと(1shí0fēn、1shí5fēn、1shí10fēn、…3shí55fēn)にコマンドラインに「hello world」をchūする。

*/5 1,2,3 * * * echo hello world

ユーザーは、shíshèdìngファイルがbaŏcúnされているchángsuŏによらず、crontab -echūしてfēnshèdìngファイルをbiānできる。

duōくのLinuxディストリビューションにインストールされているポール・ヴィクシーBSDbăncronshízhuāngは、ジョブをshíxíngするアカウントのユーザーmíngzhĭdìngする6fānlánzhuījiāする。これは、システムのcrontabでのみされ、ユーザーがdānshèdìngするようdāngてられたそののファイルでは使shĭyòngできない。また、WindowsのnnCronデーモンなど、6fānlánをアカウントのユーザーmíngではなくniánzhĭdìng使shĭうものもある。

Amazon EventBridgeのcronshízhuāngでは、0とせず、yaòからyaòまで17yaòzhĭdìngし、yuèzuìchūpíngyuèなどをzhĭdìngするzhuījiānéngchí[9]

feībiaōzhŭnのマクロ

[biān]

のcronshízhuāng[10]は、xiàfeībiaōzhŭnのマクロをサポートしている。

マクロ shuōmíng děngjiàbiaŏxiàn
@yearly@annually meĭnián1yuè1の0shí0fēnshíxíng 0 0 1 1 *
@monthly meĭyuè1の0shí0fēnshíxíng 0 0 1 * *
@weekly meĭzhoūyaòの0shí0fēnshíxíng 0 0 * * 0
@daily@midnight meĭ0shí0fēnshíxíng 0 0 * * *
@hourly meĭshí0fēnshíxíng 0 * * * *
@reboot dòngshíshíxíng N/A

@rebootzhĭdìngすると、デーモンdòngshíにジョブが1huíshíxíngされる。cronはtōngchángzaìdòngされることがないため、これはtōngchángマシンのdòngshízhìする。Debianbănのcronなど、zhŏngleìのcronはマシンのdòngshíにのみshíxíngするようshèされており[11]、デーモンのzaìdòngshíには@rebootのジョブがzaìshíxíngされないようになっている。

@rebootは、dìngのユーザーでサーバーやデーモンをdòngするyaòがあり、ユーザーがプログラムをdòngするようinitshèdìngするquánxiànがないchángyoŭyòngである。

cronのパーミッション

[biān]

の2つのファイルはzhòngyaòdànっている。

  • /etc/cron.allow – このファイルがcúnzaìするcháng、cronジョブを使shĭyòngするにはユーザーmíngがこのファイルにhánまれているyaòがある。
  • /etc/cron.deny – cron.arrowファイルがcúnzaìせず、cron.denyファイルがcúnzaìするcháng、cronジョブを使shĭyòngするにはユーザーmíngがcron.denyファイルにhánまれていないyaòがある。

どちらのファイルもcúnzaìしないcháng、サイトyoŭshèdìngパラメーターにより、スーパーユーザーのみがcronジョブを使shĭyòngできるか、すべてのユーザーがcronジョブを使shĭyòngできるかがjuédìngされる。

タイムゾーンのchŭ

[biān]

duōくのcronshízhuāngは、crontabのxiàngをcronデーモンがshíxíngされているシステムのタイムゾーンのshèdìngづいてjiěshìする。shùのユーザーxiàngけのguīなマシンで、ユーザーがdeshùのタイムゾーンにfēnsànしているケースで、にシステムのデフォルトのタイムゾーンがhúnluànzhaōくおそれのあるxiàshíjiāncaĭyòngしているcháng、これはwènとなるchángがある。このため、cronshízhuāngzhōngには、ユーザーのcrontabのCRON_TZ=[タイムゾーン]xíngshìxíngrènshìして、そのxíngjiàngのcrontabのxiàngzhĭdìngされたタイムゾーンにづいてjiěshìするものもある[12]

cronのshìは、shíjiānzhĭdìngするホワイトスペースでqiēられた5つまたは6つのlánwénliè[13]dìngzuòyuēする。

コメントは#shĭまる。

lán róngされるzhí róngされるshūwén beìkaŏ
fēn Yes 0〜59 * , -
shí Yes 0〜23 * , -
Yes 1〜31 * , - ? L W ? L Wshízhuāngでのみróngされる。
yuè Yes 1〜12

JAN〜DEC

* , -
yaò Yes 0〜6

SUN〜SAT

* , - ? L # ? L #shízhuāngでのみróngされる。
nián No 1970〜2099 * , - このlánbiaōzhŭn・デフォルトのshízhuāngではサポートされない。

yuèyaòshěnglWèwénxiaŏwénbiéされない。

システムのcrontabファイル(/etc/crontab)には、コマンドをzhĭdìngするlánzhíqiánにユーザーmíngzhĭdìngするláncúnzaìする。このlántōngchángrootshèdìngされる。

また、shízhuāngでは、xíngzuìchūmiaŏzhĭdìngláncúnzaìするchángもある。このchángxíngに6つまたは7つのláncúnzaìすることになる[14]

アスタリスク(*
アスタリスク(ワイルドカード)は「すべて」をbiaŏす。えば、* * * * *zhĭdìngすると、ジョブがmeĭfēnshíxíngされる。* * * * 1zhĭdìngすると、ジョブがyuèyaòにのみmeĭfēnshíxíngされる。miaŏzhĭdìngduìyīngしているcháng、アスタリスクを6zhĭdìngするとジョブがmeĭmiaŏshíxíngされる。
コンマ(,
コンマは、zhíshùzhĭdìngするのに使shĭう。えば、5fānlánMON,WED,FRIは「yuèyaòshuĭyaòjīnyaò」をzhĭす。
ハイフン(-
ハイフンはfànweíbiaŏす。えば、2000-2010は、2000niánから2010niánまでのすべてのniánzhĭす。
パーセント(%
コマンドneìのパーセント(%)は、バックスラッシュ(\)でエスケープされていないchánggaĭxíngwénbiànhuànされ、zuìchū%jiàngのデータがbiaōzhŭnとしてコマンドにされる[15]

feībiaōzhŭnwén

[biān]

xiàは、JavaのジョブguănツールQuartzなど、のcronshízhuāngにのみcúnzaìするfeībiaōzhŭnwénである。

L
Lは「zuìhoùの(last)」をweìする。yaòlánで、「zuìhoùjīnyaò」(5L)などをzhĭdìngするのに使shĭう。lánでは、yuèzuìzhōngzhĭdìngするのに使shĭう。
W
Wは、lán使shĭyòngでき、そのzuìjìnpíngyuèyaòjīnyaò)をzhĭdìngできる。えば、15Wすると、15zuìjìnpíngzhĭdìngされ、15yaòであれば、14jīnyaò)にジョブがshíxíngされる。また、15yaòであれば、16yuèyaò)にshíxíngされる。15huŏyaòであれば、そのまま15huŏyaò)にshíxíngされる。ただし、lán1Wzhĭdìngし、1yaòであったcháng、ジョブはyuèkuàがず3yuèyaò)にshíxíngされる。Wは、fànweízhĭdìnglănzhĭdìngには使shĭyòngできない。
ハッシュ(#
#は、yaòlán使shĭyòngでき、このhaòいて1〜5のshùzhĭdìngする。yuèの「2jīnyaò」などをzhĭdìngするのに使shĭ[16]えば、5#3すると、meĭyuè3jīnyaòにジョブがshíxíngされる。
クエスチョンマーク(?
shízhuāngでは、yuèyaòlánkōnglánにする*daìわりに?使shĭう。そのshízhuāngでは、?がデーモンがdòngしたshíjiānzhìhuànえられる。えば、デーモンがqián8shí25fēndòngしたchángには? ? * * * *25 8 * * * *jiěshìされ、zaìdòngされるまでmeĭこのshíjiānshíxíngされる[17]
スラッシュ(/
Vixie Cronでは、スラッシュはfànweíわせてzhízhĭdìngするのに使shĭ[18]えば、fēnlán*/5すると、meĭ5fēnzhĭdìngされる。よりrŏngchángPOSIX5,10,15,20,25,30,35,40,45,50,55,00shěnglWèbiaŏである。POSIXにはスラッシュのyòngguānするdìngがない[8]
H
HJenkinsdeインテグレーションシステムで使shĭyòngできる。えば、20 * * * *meĭshí20fēn)をzhĭdìngするdaìわりに、H * * * *zhĭdìngして、ジョブを1shíjiānに1huíweìzhĭdìng(ただしdìng)のshíjiāndeshíxíngするようzhĭdìngできる。これにより、ジョブがそれぞれbiéのタイミングでfēnsànしてshíxíngされるようになり、shùのジョブがtóngじタイミングでshíxíngされてリソースをduóうことをfángぐことができる[19]

guānliánxiàng

[biān]

jiaŏzhù

[biān]
  1. ^ Difference between cron, crontab, and cronjob?” (yīng). Stack Overflow. 2023nián8yuè31yuèlăn
  2. ^ What Is a Cron Job: Understanding Cron Syntax and How to Configure Cron Jobs”. Hostinger (2023nián4yuè14). 2023nián8yuè31yuèlăn
  3. ^ Automation with Cron job on Centos 8”. Comtronic (2020nián4yuè6). 2023nián8yuè31yuèlăn
  4. ^ Crontab – Quick Reference”. Admin's Choice (2009nián12yuè21). 2023nián8yuè31yuèlăn
  5. ^ Newbie Introduction to cron”. Unix Geeks (1999nián12yuè30). 2023nián8yuè31yuèlăn
  6. ^ Linux – cron and crontab”. Cornell University. 2019nián6yuè4shídiănオリジナルよりアーカイブ。2023nián8yuè31yuèlăn
  7. ^ ディストリビューションのzhŏngleìによる。
  8. ^ a b “crontab”. The Open Group Base Specifications. The IEEE and The Open Group. (2018). https://pubs.opengroup.org/onlinepubs/9699919799/ 2023nián8yuè31yuèlăn 
  9. ^ Cron expressions reference”. Amazon Web Services. 2023nián8yuè31yuèlăn
  10. ^ “crontab(5)”. FreeBSD File Formats Manual. The FreeBSD Project. https://man.freebsd.org/cgi/man.cgi?crontab%285%29 2023nián8yuè31yuèlăn 
  11. ^ #77563 – cron: crontab(5) lies, '@reboot' is whenever cron restarts, not the system”. Debian BTS. 2023nián8yuè31yuèlăn
  12. ^ crontab(5): tables for driving cron – Linux man page”. die.net. 2023nián8yuè31yuèlăn
  13. ^ Ubuntu Cron Howto”. Ubuntu (2016nián11yuè20). 2023nián8yuè31yuèlăn
  14. ^ CronTrigger Tutorial”. Quartz Scheduler. 2011nián10yuè25shídiănオリジナルよりアーカイブ。2023nián9yuè1yuèlăn
  15. ^ mcron crontab reference”. GNU. 2023nián8yuè31yuèlăn
  16. ^ Oracle® Role Manager Integration Guide”. Oracle. 2023nián8yuè31yuèlăn
  17. ^ Cron format”. nnCron. 2023nián8yuè31yuèlăn
  18. ^ FreeBSD File Formats Manual for CRONTAB(5)”. The FreeBSD Project. 2023nián8yuè31yuèlăn
  19. ^ Timer Trigger Syntax”. Jenkins. 2023nián8yuè31yuèlăn

waìリンク

[biān]