0% found this document useful (0 votes)
25 views

11-Regex, Bash Scripting, Cron

LPIC1

Uploaded by

behzad.abyari.19
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views

11-Regex, Bash Scripting, Cron

LPIC1

Uploaded by

behzad.abyari.19
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

BehzadAbyar

LPI
Li
C1
nuxAdmi
nist
rat
or
Regex,Cr
on
BashScri
pti
ng

t
.me/
Behzad_
Abyar
i
‫ﺑﻪ ﻧﺎم ﺧﺪا‬
‫)‪Regex(Regular Experssion‬‬
‫در اﺻﻞ ﯾﮏ ﺳﺮي ﮐﺎراﮐﺘﺮ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺎ ﻣﺤﺘﻮﯾﺎت ﻓﺎﯾﻞﻫﺎ ﮐﺎر ﻣﯽﮐﻨﻨﺪ‪ .‬ﺑﺮ ﺧﻼف ‪ Wildcards‬ﮐﻪ ﺑﺎ اﺳﺎﻣﯽ ﻓﺎﯾﻞﻫﺎ ﮐﺎر ﻣﯽﮐﻨﻨﺪ‪.‬‬
‫^)‪ :(Caret‬ﻫﺮ زﻣﺎن ﻣﺪ ﻧﻈﺮ ﻣﺎ اﯾﻦ ﺑﺎﺷﺪ ﮐﻪ ﻣﺤﺘﻮﯾﺎت ﯾﮏ ﻓﺎﯾﻞ ﺑﺎ ﭼﻪ ﭼﯿﺰي ﺷﺮوع ﻣﯽﺷﻮد از اﯾﻦ ﮐﺎراﮐﺘﺮ اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ‪.‬‬

‫‪ :(Dollar Sign)$‬ﻫﺮ زﻣﺎن ﻣﺪ ﻧﻈﺮ ﻣﺎ اﯾﻦ ﺑﺎﺷﺪ ﮐﻪ ﻣﺤﺘﻮﯾﺎت ﯾﮏ ﻓﺎﯾﻞ ﺑﻪ ﭼﻪ ﭼﯿﺰي ﺧﺘﻢ ﻣﯽﺷﻮد از اﯾﻦ ﮐﺎراﮐﺘﺮ اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ‪.‬‬

‫ﺗﺮﮐﯿﺐ ﻫﻤﺰﻣﺎن دو ﻓﺮﻣﺎن ﻫﻢ اﻣﮑﺎن ﭘﺬﯾﺮ اﺳﺖ‪:‬‬

‫اﺳﺘﻔﺎده از دو ﮐﺎراﮐﺘﺮ ﻫﻤﺰﻣﺎن در ﯾﮏ ﺧﻂ ﻓﺮﻣﺎن ﻫﻢ ﺧﻄﻮط ﺧﺎﻟﯽ را ﻧﺸﺎن ﻣﯽدﻫﺪ‪.‬‬

‫‪Page 1 of 12‬‬
‫>\<\)‪ :(Word Boundaries‬اﯾﻦ ﮐﺎراﮐﺘﺮ ﻗﺴﻤﺘﯽ از ﻣﺤﺘﻮﯾﺎت ﯾﮏ ﻓﺎﯾﻞ ﮐﻪ دﻗﯿﻘ ًﺎ ﻣﺪ ﻧﻈﺮ ﻣﺎ اﺳﺖ را ﭘﯿﺪا ﻣﯽﮐﻨﺪ و ﻧﺸﺎن ﻣﯽدﻫﺪ‪ .‬اﯾﻨﮑﻪ از اﺑﺘﺪا‬
‫ﺗﺎ اﻧﺘﻬﺎي ﻓﺎﯾﻞ ﺑﻪ دﻧﺒﺎل ﮐﻠﻤﻪ ﺟﺴﺘﺠﻮ ﮐﺮده و ﻧﺸﺎن ﻣﯽدﻫﺪ‪ .‬اﻟﺒﺘﻪ ﻓﻘﻂ و ﻓﻘﻂ اﮔﺮ ﻫﻤﺎن ﮐﻠﻤﻪ ﺑﺎﺷﺪ را ﻧﺸﺎن ﻣﯽدﻫﺪ ﻧﻪ اﯾﻨﮑﻪ ﻗﺴﻤﺘﯽ از ﯾﮏ ﮐﻠﻤﻪ‬
‫دﯾﮕﺮ ﺑﺎﺷﺪ‪.‬‬

‫‪ :(Dot).‬اﯾﻦ ﮐﺎراﮐﺘﺮ ﺧﻄﻮﻃﯽ را ﻧﺸﺎن ﻣﯽدﻫﺪ ﮐﻪ ﺣﺪاﻗﻞ ﯾﮏ ﮐﺎراﮐﺘﺮ در آن ﻣﻮﺟﻮد ﺑﺎﺷﺪ‪.‬‬

‫اﻣﺎ اﮔﺮ ﺑﺨﻮاﻫﯿﻢ ﺧﻄﻮﻃﯽ را ﺑﻪ ﻣﺎ ﻧﺸﺎن دﻫﺪ ﮐﻪ ﺑﺎ "‪ ".‬ﺷﺮوع ﺷﺪه ﺑﺎﺷﺪ ﺑﺎﯾﺪ ﻗﺒﻞ آن \ ﺑﯿﺎورﯾﻢ و ﺑﻪ ﺻﻮرت زﯾﺮ ﻋﻤﻞ ﮐﻨﯿﻢ‪.‬‬

‫‪Page 2 of 12‬‬
‫] [ )‪ :(Bracket‬درون ﺑﺮاﮐﺖ ﺑﺎزه ﺣﺮف را ﻣﺸﺨﺺ ﮐﺮده و ﺑﺎ ﺗﻌﺪاد ﺑﺮاﮐﺖ ﺣﺪاﻗﻞ را ﻣﺸﺨﺺ ﻣﯽﮐﻨﯿﻢ‪ .‬در ﻣﺜﺎل زﯾﺮ ﺣﺪاﻗﻞ ﺳﻪ ﺣﺮف ﺑﺎ ﻣﺸﺨﺼﺎت‬
‫ﻣﻮرد ﻧﻈﺮ ﻣﺎ در ﻫﺮ ﮐﻠﻤﻪ وﺟﻮد دارد‪.‬‬

‫اﺳﺘﻔﺎده از"^" در ﺑﺮاﮐﺖ ﺟﺴﺘﺠﻮ را ﻣﻌﮑﻮس ﻣﯽﮐﻨﺪ‪.‬‬

‫‪Page 3 of 12‬‬
‫‪Shell(Bash) Scripting‬‬
‫اﯾﻦ ﻣﺒﺤﺚ ﺑﻪ ﺗﻨﻬﺎﯾﯽ ﯾﮏ واﺣﺪ ﮐﺎﻣﻞ درﺳﯽ اﺳﺖ و در اﯾﻨﺠﺎ ﺗﻨﻬﺎ ﺑﻪ ﻣﻮارد ﭘﺎﯾﻪ و اوﻟﯿﻪ اﺷﺎره ﻣﯽﮐﻨﯿﻢ‪ .‬در اﯾﻦ ﻣﺒﺤﺚ ﺗﻤﺎﻣﯽ ‪ Script‬ﻫﺎﯾﯽ ﮐﻪ ﻗﺮار‬
‫اﺳﺖ ﮐﺎر ﮐﻨﯿﻢ ﺑﺎ ‪ Bash‬اﺟﺮا ﻣﯽﺷﻮد و ﺑﻪ ﻫﻤﯿﻦ ﺟﻬﺖ در اﺑﺘﺪاي ‪ Script‬ﻋﺒﺎرت ‪ #! /bin/bash‬را وارد ﻣﯽﮐﻨﯿﻢ ﮐﻪ در اﺻﻞ ﻧﺸﺎﻧﻪ اﯾﻦ اﺳﺖ ﮐﻪ‬
‫‪ Script Compiler‬ﻣﺎ ‪ Bash‬اﺳﺖ‪ .‬اﻟﺒﺘﻪ اﮔﺮ ﻻزم ﺑﺎﺷﺪ در آﯾﻨﺪه در ﺣﻮﺿﻪ ‪ … ,DevOps, Administration‬ﮐﺎر ﮐﻨﯿﻢ ﮐﻢ و ﺑﯿﺶ ﺑﺮاي رﻓﻊ‬
‫ﯾﮏ ﺳﺮي از ﻣﻮاردي ﮐﻪ در ﻟﯿﻨﻮﮐﺲ ﻻزم دارﯾﻢ ﻧﯿﺎزﻣﻨﺪ ‪ Script‬ﻧﻮﯾﺴﯽ و ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻫﺴﺘﯿﻢ و ﺑﺴﺘﻪ ﺑﻪ ﺗﺠﺮﺑﻪ و داﻧﺶ ﺧﻮد ﻣﯽﺗﻮاﻧﯿﻢ از زﺑﺎنﻫﺎي‬
‫ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﻧﻈﯿﺮ ‪ Phyton,JAVA,C#‬و‪ ...‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪.‬‬
‫* ﻋﺒﺎرت !‪ #‬ﺑﺎ ﻧﺎمﻫﺎي ‪ shebang, hashbang, hashpling, pound bang‬در ﮐﺘﺐ و ﻣﺤﯿﻂﻫﺎي ﮐﺎري اﺳﺘﻔﺎده ﻣﯽﺷﻮد‪.‬‬
‫در ﮔﺎم اول ﻣﯽﺧﻮاﻫﯿﻢ ﺑﺎ ‪ if‬آﺷﻨﺎ ﺷﻮﯾﻢ ﮐﻪ در ‪ Script‬ﻧﻮﯾﺴﯽ ﯾﮏ ﺷﺮط را ﺑﺮرﺳﯽ ﮐﺮده و در ﺻﻮرت اﺟﺮا ﺷﺪن و اﺟﺮا ﻧﺸﺪن آن ﻧﺘﺎﯾﺞ ﻣﺘﻔﺎوﺗﯽ را‬
‫ﺑﺮاي ﻣﺎ در ﺧﺮوﺟﯽ ﻧﺸﺎن ﻣﯽدﻫﺪ‪ .‬ﺑﺪﯾﻦ ﻣﻨﻈﻮر ﯾﮏ ﻓﺎﯾﻞ اﯾﺠﺎد ﻣﯽﮐﻨﯿﻢ و ﭘﺴﻮﻧﺪ آن را ‪ sh‬ﻣﯽﮔﺬارﯾﻢ ﮐﻪ ﺑﻌﺪاً ﺑﺪاﻧﯿﻢ ﮐﻪ ﻓﺎﯾﻞ ‪ Script‬اﺳﺖ و داﺧﻞ‬
‫آن ﺑﺎ ‪ if‬ﯾﮏ ‪ Script‬ﻣﯽﻧﻮﯾﺴﯿﻢ‪.‬‬

‫ﺧﻂ اول ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﺗﻮﺿﯿﺢ دادﯾﻢ ‪ Compiler‬را ﺗﻌﯿﯿﻦ ﻣﯽﮐﻨﺪ‪ .‬در اداﻣﻪ ﺑﺎ ﻧﻮﺷﺘﻦ ‪ if‬ﺷﺮوع ﮐﺮده و ﻣﯽﮔﻮﯾﯿﻢ ﻫﻨﮕﺎﻣﯽ ﮐﻪ ﻋﺒﺎرت ‪ Linux‬ﺑﺎ ﻋﺒﺎرت‬
‫‪ Linux‬ﺑﺮاﺑﺮ ﺑﻮد ‪ true‬را ﻧﺸﺎن ﺑﺪه و در ﻏﯿﺮ اﯾﻨﺼﻮرت ‪ false‬را ﻧﻤﺎﯾﺶ ﺑﺪه و در آﺧﺮ ﺑﺎ ‪ fi‬ﺷﺮط را ﭘﺎﯾﺎن ﻣﯽدﻫﯿﻢ‪.‬‬

‫ﺣﺎل اﮔﺮ ‪ Script‬را اﺟﺮا ﮐﻨﯿﻢ ﻣﯽﺑﯿﻨﯿﻢ ﮐﻪ ﻋﺒﺎرت ‪ true‬ﻧﻤﺎﯾﺶ داده ﻣﯽﺷﻮد‪ .‬اﻣﺎ اﮔﺮ ﻋﺒﺎرت ‪ Linux=Linux‬را در ‪ Script‬ﺗﻐﯿﯿﺮ دﻫﯿﻢ ﻧﺘﯿﺠﻪ‬
‫ﺧﺮوﺟﯽ ‪ false‬ﻣﯽﺷﻮد‪.‬‬

‫‪Page 4 of 12‬‬
‫در ﮔﺎم ﺑﻌﺪي ﻣﯽﺧﻮاﻫﯿﻢ ﯾﮏ ‪ Script‬ﺑﻨﻮﯾﺴﯿﻢ ﮐﻪ از ﻣﺎ ﯾﮏ ورودي ﻋﺪد درﯾﺎﻓﺖ ﮐﺮده و اﮔﺮ اﯾﻦ ﻋﺪد ‪17‬و ﺑﺰرﮔﺘﺮ از آن ﺑﻮد ﻋﺒﺎرت ‪VeryGood‬‬
‫اﮔﺮ ﺑﯿﻦ ‪10‬ﺗﺎ ‪ 16‬ﺑﻮد ﻋﺒﺎرت ‪ Good‬و اﮔﺮ ﮐﻤﺘﺮ از ‪ 10‬ﺑﻮد ﻋﺒﺎرت ‪ Bad‬را ﻧﺸﺎن دﻫﺪ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر ﺑﺎﯾﺪ از ‪ if‬ﺑﻪ ﺻﻮرت ﺗﻮ در ﺗﻮ اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪.‬‬

‫در ﺑﺎﻻ اﺑﺘﺪا ﯾﮏ ﻣﺘﻐﯿﯿﺮ ﺗﻌﺮﯾﻒ ﮐﺮده و اﺳﻢ آن را ‪ num‬ﻣﯽﮔﺬارﯾﻢ‪ ،‬ﺳﭙﺲ ﻣﺤﺘﻮﯾﺎت اﯾﻦ ﻣﺘﻐﯿﯿﺮ اﮔﺮ از ‪ 16‬ﺑﺰرﮔﺘﺮ ﺑﺎﺷﺪ ﯾﻌﻨﯽ ‪17‬و ﺑﺰرﮔﺘﺮ از ‪17‬‬
‫ﺑﺎﺷﺪ اوﻟﯿﻦ ﺷﺮط اﺗﻔﺎق ﻣﯽاﻓﺘﺪ‪ .‬اﮔﺮ در اﯾﻦ ﺑﺎزه ﻧﺒﻮد ﺑﻪ ﺳﺮاغ ﺷﺮط ﺑﻌﺪي ﻣﯽرود ﮐﻪ در آﻧﺠﺎ ﮔﻔﺘﻪ اﺳﺖ ﮐﻪ اﮔﺮ ﻋﺪد ﺑﯿﻦ ‪ 10‬ﺗﺎ ‪ 16‬ﺑﺎﺷﺪ ﯾﻌﻨﯽ ﺧﻮد‬
‫‪ 10‬را ﻧﯿﺰ ﺷﺎﻣﻞ ﺷﻮد ﻟﺬا در ﺷﺮط ﺑﺰرﮔﺘﺮ از ‪ 9‬را ﻟﺤﺎظ ﻣﯽﮐﻨﯿﻢ‪ .‬و در ﻧﻬﺎﯾﺖ اﮔﺮ دو ﻣﻮرد ﻗﺒﻞ ﻧﺒﺎﺷﺪ ﺑﻪ ﺳﺮاغ ﺷﺮط ﺳﻮم رﻓﺘﻪ و ﻋﺪد در ﺑﺎزه ﮐﻤﺘﺮ از‬
‫‪ 10‬ﮐﻪ در اﺻﻞ ﺧﻮد ‪ 10‬را ﺷﺎﻣﻞ ﻧﻤﯽﺷﻮد ﻗﺮار ﻣﯽﮔﯿﺮد‪ .‬ﺑﺮاي ﻫﺮ ﮐﺪام از ﺑﺎزهﻫﺎ در ﺻﻮرت ﺑﺮﻗﺮاري ﺷﺮط ﯾﮏ ﭘﯿﻐﺎم ﺑﺮ روي ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﻧﺸﺎن داده‬
‫ﻣﯽﺷﻮد‪ .‬ﻧﮑﺘﻪ دﯾﮕﺮ اﯾﻨﮑﻪ از ‪ $‬ﺑﻪ ﻋﻨﻮان ﻣﺤﺘﻮﯾﺎت‪ ،‬از ‪ -gt‬ﻣﺨﻔﻒ ‪ Greater Than‬ﺑﻪ ﻋﻨﻮان ﺑﺰرﮔﺘﺮ اﺳﺖ از ﻋﺪد ﻣﻮرد ﻧﻈﺮ‪ ،‬از ‪ -lt‬ﻣﺨﻔﻒ ‪Lower‬‬
‫‪ Than‬ﺑﻪ ﻋﻨﻮان ﮐﻮﭼﮑﺘﺮ اﺳﺖ از ﻋﺪد ﻣﻮرد ﻧﻈﺮ و از ‪ fi‬ﺑﺮاي ﭘﺎﯾﺎن ﻫﺮ ﺳﻪ ﺷﺮط در ‪ Script‬ﻣﻮرد ﻧﻈﺮﻣﺎن اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ‪ .‬ﻧﺘﯿﺠﻪ در ﻫﺮ ﺳﻪ ﺑﺎزه ﺑﺎ‬
‫اﻋﺪاد ﻣﺨﺘﻠﻒ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪:‬‬

‫ﻣﯽﺧﻮاﻫﯿﻢ ﯾﮏ ‪ Script‬ﺑﻨﻮﯾﺴﯿﻢ ﮐﻪ وﻗﺘﯽ آن را اﺟﺮا ﻣﯽﮐﻨﯿﻢ اﻋﺪاد ‪ 1‬ﺗﺎ ‪ 10‬را ﺑﺮاي ﻣﺎ ﻧﻤﺎﯾﺶ دﻫﺪ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر از ‪ for‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ‪.‬‬

‫در ﺧﻂ اول ﺑﺎ ﻧﻮﺷﺘﻦ ‪ for‬ﻣﯽﮔﻮﺋﯿﻢ ﮐﻪ ﺑﺮاي ﻣﺘﻐﯿﯿﺮ ‪ i‬ﻣﻮارد ورودي را ﺑﻪ ﺻﻮرت ﺗﮏ ﺗﮏ ﻣﻘﺎدﯾﺮ ‪ 1 2 3 4 5 6 7 8 9 10‬ﻗﺮار ﺑﺪه و ﺑﻌﺪ از اﯾﻦ ﻗﺮار‬
‫دادن ﻣﻘﺎدﯾﺮ‪ ،‬ﻫﺮ ﺑﺎر ﮐﻪ ﻣﻘﺪاري را درون ‪ i‬ﻗﺮار دادي‪ ،‬ﻣﺤﺘﻮﯾﺎت ‪ i‬را ﻧﺸﺎن ﺑﺪه و اﯾﻦ اﻣﺮ را ﺗﺎ زﻣﺎﻧﯽ اداﻣﻪ ﺑﺪه ﮐﻪ ﺑﺎزه اﻋﺪاد ﺑﻪ اﺗﻤﺎم ﺑﺮﺳﺪ‪ .‬ﺗﻮﺟﻪ ﮐﻨﯿﺪ‬
‫ﮐﻪ اﻧﺘﻬﺎي ‪ for‬را ﺑﺎ ‪ done‬ﺑﺴﺘﻪ و ‪ do‬ﻣﺸﺎﺑﻪ ‪ else‬در دﺳﺘﻮر ‪ if‬ﻋﻤﻞ ﻣﯽﮐﻨﺪ‪ .‬ﻧﺘﯿﺠﻪ اﺟﺮاي اﯾﻦ ‪ Script‬ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪:‬‬

‫‪Page 5 of 12‬‬
‫در ﺑﺎﻻ ﻣﻘﺎدﯾﺮ را ﺑﻪ ازاي ﻫﺮ ورودي ﺗﺎﯾﭗ ﮐﺮدﯾﻢ و ﺗﻤﺎﻣﯽ اﻋﺪاد ‪ 1‬ﺗﺎ ‪ 10‬را ﻧﻮﺷﺘﯿﻢ‪ .‬اﻣﺎ اﮔﺮ ﺑﺎزه اﻋﺪاد ﻣﺎ ﻃﻮﻻﻧﯽ ﺑﺎﺷﺪ و ﻧﻮﺷﺘﻦ آن زﻣﺎﻧﺒﺮ ﺑﺎﺷﺪ‬
‫ﻣﯽﺑﺎﯾﺴﺖ از ‪ Sequence‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪ .‬اﺳﺘﻔﺎده از ‪ Sequence‬ﺑﻪ ﻣﺎ اﯾﻦ اﻣﮑﺎن را ﻣﯽدﻫﺪ ﮐﻪ ﺗﻨﻬﺎ ﺑﺎ ﻣﺸﺨﺺﮐﺮدن ﺷﺮوع و ﺳﭙﺲ ﮔﺎم ﺗﻮاﻟﯽ ﯾﺎ‬
‫ﻣﻘﺪار ﺷﻤﺎرﻧﺪه و در ﻧﻬﺎﯾﺖ اﻧﺘﻬﺎي ﺑﺎزه ﺑﻪ ﻧﺘﯿﺠﻪ ﻣﻮرد ﻧﻈﺮ دﺳﺖ ﭘﯿﺪا ﮐﻨﯿﻢ‪ .‬ﺑﺮاي ﻣﺜﺎل ﻗﺒﻞ ﺑﺎ اﺳﺘﻔﺎده از ‪ Sequence‬ﻣﻮارد ﺑﻪ ﺻﻮرت زﯾﺮ ﺧﻮاﻫﺪ‬
‫ﺑﻮد‪:‬‬

‫ﻣﺜﺎل دﯾﮕﺮ ﺑﺮاي اﯾﻨﮑﻪ ﺑﺨﻮاﻫﯿﻢ اﻋﺪاد ‪1000 900 800 700 600 500 400 300 200 100‬را از ﻋﺪد ‪ 1000‬ﺑﻪ ﺻﻮرت ﻣﻌﮑﻮس ﻧﺸﺎن دﻫﯿﻢ‪،‬‬
‫از ‪ Sequence‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ و ﭼﻮن ﺷﺮوع از ‪ 1000‬اﺳﺖ ﮔﺎم ﺗﻮاﻟﯽ را ﻣﻨﻔﯽ وارد ﻣﯽﮐﻨﯿﻢ‪.‬‬

‫ﺗﺎ اﻻن ﺑﺎ دو ﺗﮑﻨﯿﮏ ‪ if‬و ‪ for‬آﺷﻨﺎﯾﯽ ﭘﯿﺪا ﮐﺮدﯾﻢ ﺣﺎل ﻣﯿﺨﻮاﻫﯿﻢ ﯾﮏ ‪ Script‬ﺑﻨﻮﯾﺴﯿﻢ ﮐﻪ ﻋﺪد از ورودي درﯾﺎﻓﺖ ﮐﺮده و ﻣﻘﺴﻮم ﻋﻠﯿﻪﻫﺎي آن ﻋﺪد‬
‫را در ﺧﺮوﺟﯽ ﻧﻤﺎﯾﺶ دﻫﺪ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر ﺑﺎﯾﺪ اﺑﺘﺪا ﺑﺪاﻧﯿﻢ ﮐﻪ ﻟﯿﻨﻮﮐﺲ ﻋﻤﻠﯿﺎت ﺗﻘﺴﯿﻢ اﻋﺪاد ﺻﺤﯿﺢ را ﺑﻪ ﭼﻪ ﺻﻮرت اﻧﺠﺎم ﻣﯽدﻫﺪ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر‬
‫ﭼﻨﺪ ﻣﺜﺎل زﯾﺮ را در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪:‬‬

‫‪Page 6 of 12‬‬
‫در ﻫﺮ ﮐﺪام از ﻣﻮارد ﺑﺎﻻ ﻟﯿﻨﻮﮐﺲ ﻋﺒﺎرت داﺧﻞ دو ﭘﺮاﻧﺘﺰ را ﻣﺤﺎﺳﺒﻪ ﮐﺮده و ﺑﺎﻗﯿﻤﺎﻧﺪه ﺗﻘﺴﯿﻢ را در ﺧﺮوﺟﯽ ﻧﺸﺎن داده اﺳﺖ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ اﻋﺪادي ﮐﻪ‬
‫ﺑﺎﻗﯿﻤﺎﻧﺪه ﺗﻘﺴﯿﻢ آﻧﻬﺎ ﺑﺮ ﻋﺪد ورودي ﻣﺎ ﺻﻔﺮ ﺑﺎﺷﺪ ﺟﺰء ﻣﻘﺴﻮم ﻋﻠﯿﻪﻫﺎي آن ﻋﺪد ﻫﺴﺘﻨﺪ‪ .‬ﺣﺎل ﻣﺤﺘﻮﯾﺎت ‪ Script‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﭼﯿﺰﻫﺎﯾﯽ ﮐﻪ ﮔﻔﺘﯿﻢ ﺑﻪ‬
‫ﺻﻮرت زﯾﺮ ﺧﻮاﻫﺪ ﺑﻮد‪:‬‬

‫* ﻧﮑﺘﻪ اول اﯾﻨﮑﻪ ﻋﺒﺎرت ”=======“ ‪ echo‬را در ﺧﻂ دوم ﺑﻪ اﯾﻦ دﻟﯿﻞ آوردهاﯾﻢ ﮐﻪ در اﺟﺮاي ‪ Script‬ﻋﺪد ورودي را از ﻟﯿﺴﺖ ﻣﻘﺴﻮم ﻋﻠﯿﻪﻫﺎ‬
‫ﻣﺠﺰا ﮐﻨﯿﻢ و ﻧﮑﺘﻪ دوم اﯾﻨﮑﻪ در ﻧﻮﺷﺘﻦ ‪ Sequence‬اﮔﺮ ﺷﻤﺎرﻧﺪه را ﻣﺸﺨﺺ ﻧﮑﻨﯿﻢ ﺑﻪ ﺻﻮرت ﭘﯿﺶ ﻓﺮض ‪ 1‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﯽﺷﻮد‪.‬‬

‫ﻣﯽﺧﻮاﻫﯿﻢ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﯾﺴﯿﻢ ﮐﻪ ﺑﻪ ازاي ﻋﺪد ورودي ﮐﻪ ﺑﻪ آن ﻣﯽدﻫﯿﻢ ﻣﻘﺪار ﻓﺎﮐﺘﻮرﯾﻞ آن را ﻣﺤﺎﺳﺒﻪ ﮐﺮده و ﻧﻤﺎﯾﺶ دﻫﺪ‪ .‬ﻓﺎﮐﺘﻮرﯾﻞ ﺑﻪ اﯾﻦ ﺻﻮرت‬
‫ﻣﺤﺎﺳﺒﻪ ﻣﯽﺷﻮد‪ .A!=(A)(A-1)(A-2)…(1):‬در اﯾﻦ ‪ Script‬ﻣﯽﺑﺎﯾﺴﺖ از ‪ Let‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪ ،‬ﮐﻪ اﯾﻦ اﻣﮑﺎن را داﺷﺘﻪ ﺑﺎﺷﯿﻢ ﺗﺎ ﻧﺘﯿﺠﻪ ﻫﺮ ﺿﺮب را‬
‫ﺑﻪ ﻋﻨﻮان ﻋﺎﻣﻞ ورودي ﺑﺮاي ﺿﺮب ﺑﻌﺪي در ﻧﻈﺮ ﺑﮕﯿﺮد‪ .‬در ﻧﺘﯿﺠﻪ ﺑﺮاي ﻣﺜﺎل در !‪ 4‬وﻗﺘﯽ ‪ 6=3*2‬ﺷﺪ در ﻣﺤﺎﺳﺒﻪ ﺑﻌﺪي ‪ 6‬را ورودي در ﻧﻈﺮ ﮔﺮﻓﺘﻪ و‬
‫در ﻧﺘﯿﺠﻪ ‪ 24=4*6‬ﺷﺪه و ﻧﺘﯿﺠﻪ ﻧﻬﺎﯾﯽ ﺧﻮاﻫﺪ ﺑﻮد‪ .‬دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ ﺑﻪ دو ﺻﻮرت ﻣﯽﺗﻮاﻧﯿﻢ ﮔﺎم ﺷﻤﺎرش را ﺗﻨﻈﯿﻢ ﮐﻨﯿﻢ‪ .‬ﯾﺎ از ﻋﺪد ﺷﺮوع ﮐﺮده ﯾﮑﯽ‬
‫ﯾﮑﯽ ﮐﻢ ﮐﻨﯿﻢ ﺗﺎ ﺑﻪ ﯾﮏ ﺑﺮﺳﯿﻢ و ﯾﺎ اﯾﻨﮑﻪ از ﯾﮏ ﺷﺮوع ﮐﺮده و ﯾﮑﯽ ﯾﮑﯽ اﺿﺎﻓﻪ ﮐﺮده ﺗﺎ ﺑﻪ ﻋﺪد ﺑﺮﺳﯿﻢ‪ .‬در اﯾﻦ ‪ Script‬ﺗﻨﻬﺎ ﻧﺤﻮه ﺗﻨﻈﯿﻢ ﻋﻤﻠﮑﺮد ‪Let‬‬
‫اﺳﺖ ﮐﻪ ﺑﺴﯿﺎر اﻫﻤﯿﺖ دارد‪ .‬ﻧﺘﯿﺠﻪ ﺑﻪ ﺻﻮرت زﯾﺮ ﺧﻮاﻫﺪ ﺑﻮد‪:‬‬

‫‪Page 7 of 12‬‬
‫)‪Cron(Linux Job Scheduler‬‬
‫ﻣﻌﻤﻮﻻً در ﻫﺮ ﺳﯿﺴﺘﻢ ﻋﺎﻣﻠﯽ ﺻﺮف ﻧﻈﺮ از ﻧﻮع ﺳﯿﺴﺘﻢ ﻋﺎﻣﻞ ﻧﯿﺎزﻣﻨﺪ اﯾﻦ ﻫﺴﺘﯿﻢ ﮐﻪ در ﺳﻄﻮح ﻣﺪﯾﺮﯾﺘﯽ ﯾﮏ ‪ Job‬ﯾﺎ ‪ Script‬در زﻣﺎن ﻣﺸﺨﺺ ﯾﺎ در‬
‫ﺷﺮاﯾﻄﯽ ﺧﺎص اﺟﺮا ﺷﻮد‪ .‬ﺑﺮاي ﻣﺜﺎل در وﯾﻨﺪوز ﺑﺎ اﺳﺘﻔﺎده از ‪ Task Scheduler‬ﻣﯽﺗﻮاﻧﯿﻢ ﺗﻌﯿﯿﻦ ﮐﻨﯿﻢ ﮐﻪ ﺑﻪ ﻣﺤﺾ ورود ﺑﻪ ﺳﯿﺴﺘﻢ و ﯾﺎ ﭘﺲ از ﻫﺮ‬
‫ﺑﺎر راهاﻧﺪازي ﻣﺠﺪد ﺳﯿﺴﺘﻢ ﻓﺮآﯾﻨﺪي ﺧﺎص اﺟﺮا ﺷﻮد‪ .‬ﻫﻤﯿﻦ اﻣﺮ در ﻟﯿﻨﻮﮐﺲ ﻫﻢ وﺟﻮد دارد و ﺑﻪ آن ‪ Cron‬ﻣﯽﮔﻮﺋﯿﻢ‪ .‬ﭘﯿﺶ از آﻧﮑﻪ ﮐﺎر ﺑﺎ ‪ Cron‬را‬
‫آﻏﺎز ﮐﻨﯿﻢ اﺑﺘﺪا ﻣﯽﺑﺎﯾﺴﺖ ﺳﺮوﯾﺲ آن را ﺑﺮرﺳﯽ ﮐﻨﯿﻢ‪.‬‬

‫‪Page 8 of 12‬‬
‫ﭘﺲ از اﯾﻨﮑﻪ ﻣﺸﺎﻫﺪه ﮐﺮدﯾﻢ ﮐﻪ ﺳﺮوﯾﺲ ‪ Cron‬در ﺣﺎﻟﺖ ‪ Active‬ﻗﺮار دارد ﺣﺎل ﻣﯽﺑﺎﯾﺴﺖ ﺑﺎ ﻧﺤﻮه ﺗﻨﻈﯿﻢ ﮐﺮدن زﻣﺎن اﺟﺮاي ‪ Job‬ﯾﺎ ‪ Script‬آﺷﻨﺎ‬
‫ﺷﻮﯾﻢ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر ﺑﺎﯾﺪ ﺑﺪاﻧﯿﻢ ﮐﻪ ﻗﺎﻟﺐ ﺗﻨﻈﯿﻢ زﻣﺎن ﺑﻪ ﺻﻮرت ‪ A B C D E‬ﺻﻮرت ﻣﯽﮔﯿﺮد ﮐﻪ ﺗﻮﺿﯿﺢ و ﻣﺜﺎل آن ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪:‬‬
‫‪ :A‬دﻗﯿﻘﻪ را ﻧﺸﺎن ﻣﯽدﻫﺪ ﺑﯿﻦ ﺻﻔﺮ ﺗﺎ ‪59‬‬
‫‪ :B‬ﺳﺎﻋﺖ را ﻧﺸﺎن ﻣﯽدﻫﺪ ﺑﯿﻦ ﺻﻔﺮ ﺗﺎ ‪23‬‬
‫‪ :C‬روز را ﻧﺸﺎن ﻣﯽدﻫﺪ ﺑﯿﻦ ‪ 1‬ﺗﺎ ‪31‬‬
‫‪ :D‬ﻣﺎه را ﻧﺸﺎن ﻣﯽدﻫﺪ ﺑﯿﻦ ‪1‬ﺗﺎ ‪12‬‬
‫‪ :E‬روز ﻫﻔﺘﻪ را ﻧﺸﺎن ﻣﯽدﻫﺪ ﺑﯿﻦ ﺻﻔﺮ ﺗﺎ ‪7‬‬
‫ﻧﮑﺘﻪاي ﮐﻪ در ﺧﺼﻮص روز ﻫﻔﺘﻪ وﺟﻮد دارد اﯾﻦ اﺳﺖ ﮐﻪ ﻫﺮ دو ﻋﺪد ﺻﻔﺮ و ﻫﻔﺖ ﺑﻪ ﻣﻌﻨﺎي روز ﯾﮑﺸﻨﺒﻪ اﺳﺖ و ﺑﺮ ﻣﺒﻨﺎي آن ﺑﻘﯿﻪ روزﻫﺎي ﻫﻔﺘﻪ را‬
‫ﻣﺤﺎﺳﺒﻪ ﻣﯽﮐﻨﯿﻢ‪ .‬اﻟﺒﺘﻪ اﺳﺘﻔﺎده از ﺳﻪ ﺣﺮف اول ﻧﺎم روز ﻫﻢ راه دﯾﮕﺮي اﺳﺖ ﮐﻪ ﻣﯽﺗﻮان از آن اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺑﻪ ﻣﺜﺎلﻫﺎي زﯾﺮ ﺗﻮﺟﻪ ﮐﻨﯿﺪ‪:‬‬
‫* * * ‪ 5 0‬ﻫﺮ روز ‪ 5‬دﻗﯿﻘﻪ ﺑﺎﻣﺪاد‪ -‬ﭼﻮن ﺗﻨﻬﺎ ﻋﺪد ‪ 5‬ﮐﻪ ﻧﺸﺎن دﻗﯿﻘﻪ ﺑﻮده و ﻋﺪد ﺻﻔﺮ ﮐﻪ ﻧﺸﺎن ﺳﺎﻋﺖ ‪ 12‬ﺷﺐ ﺑﻪ ﺑﻌﺪ اﺳﺖ آﻣﺪه و ﺳﺎﯾﺮ ﭘﺎراﻣﺘﺮﻫﺎ‬
‫ﮐﻪ ﺑﻪ ﺻﻮرت ﺳﺘﺎره آﻣﺪه اﺳﺖ ﻧﺸﺎن دﻫﻨﺪه ﺗﻤﺎﻣﯽ روزﻫﺎ و ﻣﺎهﻫﺎ و ﺑﺎزه ﺗﻤﺎﻣﯽ روزﻫﺎي ﻫﻔﺘﻪ را ﺷﺎﻣﻞ ﻣﯽﺷﻮد‪.‬‬
‫* * ‪ 15 14 1‬ﺳﺎﻋﺖ ‪ 14:15‬دﻗﯿﻘﻪ اوﻟﯿﻦ روز از ﻫﺮ ﻣﺎه در ﻫﺮ روز ﻫﻔﺘﻪ ﮐﻪ ﺑﺎﺷﺪ‪).‬ﺳﺎﻋﺖ ‪ 14:15‬اوﻟﯿﻦ روز ﻫﺮ ﻣﺎه(‬
‫‪ 0 10 * * 2-6‬ﺳﺎﻋﺖ ‪ 10‬ﻫﺮ دوﺷﻨﺒﻪ ﺗﺎ ﺟﻤﻌﻪ ﻫﺮ روز ﻣﺎه از ﻫﺮ ﻣﺎه ﺳﺎل ﮐﻪ ﺑﺎﺷﺪ‪).‬دوﺷﻨﺒﻪﻫﺎ ﺗﺎ ﺟﻤﻌﻪﻫﺎ ﺳﺎﻋﺖ ‪(10‬‬
‫* * * * ‪ */5‬ﻫﺮ ‪ 5‬دﻗﯿﻘﻪ ﯾﮑﺒﺎر در ﻫﺮ ﺳﺎﻋﺖ از ﻫﺮ روز ﻣﺎه از ﻫﺮ ﻣﺎه ﺳﺎل در ﻫﺮ روز ﻫﻔﺘﻪ ﮐﻪ ﺑﺎﺷﺪ‪).‬ﻫﺮ ‪ 5‬دﻗﯿﻘﻪ ﯾﮑﺒﺎر(‬
‫* * * ‪ 42 8,18‬ﻫﺮ ‪ 8:42‬و ‪ 18:42‬از ﻫﺮ روز ﻣﺎه ﻫﺮ ﻣﺎه ﺳﺎل در ﻫﺮ روز ﻫﻔﺘﻪ ﮐﻪ ﺑﺎﺷﺪ‪).‬ﻫﺮ روز ﺳﺎﻋﺖ ‪ 8:42‬و ‪(18:42‬‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﻓﺮﻣﺎن ‪ crontab‬ﺑﺎ ﺳﻮﺋﯿﭻ ‪ -l‬ﻣﯽﺗﻮاﻧﯿﻢ ‪ Job Schedule‬ﻫﺎي اﯾﺠﺎد ﺷﺪه ﺗﻮﺳﻂ ﮐﺎرﺑﺮ ﺟﺎري را ﻣﺸﺎﻫﺪه ﮐﻨﯿﻢ ﮐﻪ در ﻟﯿﻨﻮﮐﺲ ﺑﻪ آﻧﻬﺎ‬
‫‪ Crontab‬ﻫﻢ ﻣﯽﮔﻮﺋﯿﻢ‪ .‬اﮔﺮ در ﺣﺎل ﺣﺎﺿﺮ ‪ Crontab‬ﺗﻌﺮﯾﻒ ﻧﮑﺮده ﺑﺎﺷﯿﻢ ﺑﺎ ﭘﯿﻐﺎم ‪ no crontab‬ﻣﻮاﺟﻪ ﻣﯽﺷﻮﯾﻢ‪.‬‬

‫در اداﻣﻪ ﺑﺮاي اﯾﺠﺎد ﯾﮏ ‪ Crontab‬دﺳﺘﻮر ‪ crontab -e‬را وارد ﻣﯽﮐﻨﯿﻢ‪ .‬ﺳﯿﺴﺘﻢ از ﻣﺎ ﺳﻮاﻟﯽ ﻣﺒﺘﻨﯽ ﺑﺮ اﯾﻨﮑﻪ از ﮐﺪام ‪ Editor‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ را از‬
‫ﻣﺎ ﻣﯽﭘﺮﺳﺪ ﮐﻪ ﺑﺎ اﻧﺘﺨﺎب ﯾﮑﯽ از آﻧﻬﺎ ﻣﯽﺗﻮاﻧﯿﻢ ‪ Crontab‬ﺧﻮد را اﯾﺠﺎد ﮐﻨﯿﻢ‪.‬‬

‫در اﯾﻨﺠﺎ ﻣﺎ از ادﯾﺘﻮر ‪ Nano‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ و ﺑﺎ وارد ﮐﺮدن ﻋﺪد ‪ 1‬وارد ﻓﺎﯾﻠﯽ ﻣﯽﺷﻮﯾﻢ ﮐﻪ در اﻧﺘﻬﺎي آن ﻣﯽﺗﻮاﻧﯿﻢ ‪ Crontab‬ﻣﻮرد ﻧﯿﺎز ﺧﻮد را‬
‫وارد ﮐﺮده و ﺗﻨﻈﯿﻤﺎت ﻣﺮﺑﻮﻃﻪ را اﻧﺠﺎم دﻫﯿﻢ‪ .‬ﺑﺎ ﺑﺎزﮐﺮدن اﯾﻦ ﻓﺎﯾﻞ ﺗﻮﺿﯿﺤﺎﺗﯽ را ﮐﻪ ﭘﯿﺶ از اﯾﻦ درﺑﺎره ‪ Crontab‬دادﯾﻢ ﺑﻪ ﺻﻮرت ‪ Comment‬در‬
‫ﻓﺎﯾﻞ آورده ﺷﺪه اﺳﺖ و ﻣﯽﺗﻮاﻧﯿﻢ از ﻣﺜﺎﻟﯽ ﮐﻪ در ﺧﻮد ﻓﺎﯾﻞ ﻫﻢ ﻣﻮﺟﻮد اﺳﺖ ﺑﻪ ﻋﻨﻮان راﻫﻨﻤﺎﯾﯽ ﺑﺮاي ﺗﻨﻈﯿﻢ ‪ Crontab‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪.‬‬
‫ﺣﺎل در اﻧﺘﻬﺎي ﻓﺎﯾﻠﯽ ﮐﻪ ﺑﺎز ﮐﺮدﯾﻢ ﯾﮏ ‪ Crontab‬ﺗﻌﺮﯾﻒ ﻣﯽﮐﻨﯿﻢ ﺑﻪ ﻣﻌﻨﺎي اﯾﻨﮑﻪ ﺳﯿﺴﺘﻢ ﻫﺮ دﻗﯿﻘﻪ ﻓﺮﻣﺎن ‪ ) date‬ﺗﺎرﯾﺦ و زﻣﺎن ﺟﺎري ﺳﯿﺴﺘﻢ را‬
‫ﻧﻤﺎﯾﺶ ﻣﯽدﻫﺪ( را اﺟﺮا ﮐﺮده و ﻧﺘﯿﺠﻪ را درون ﻓﺎﯾﻠﯽ در ﻣﺴﯿﺮ ‪ /root‬ﺑﺎ ﻧﺎم ‪ dates.txt‬وارد ﮐﻨﺪ‪ .‬ﺗﻨﻈﯿﻤﺎت را ذﺧﯿﺮه ﮐﺮده و ﺧﺎرج ﻣﯽﺷﻮﯾﻢ و اﯾﻦ‬
‫ﺑﺎر ﺑﺎ اﺟﺮا ﮐﺮدن ﻓﺮﻣﺎن ‪ crontab -l‬ﺑﻪ ﻣﺎ ‪ Crontab‬اي را ﮐﻪ ﺗﻌﺮﯾﻒ ﮐﺮدﯾﻢ ﻧﺸﺎن ﻣﯽدﻫﺪ‪ .‬ﺑﺎ ﮔﺬﺷﺖ زﻣﺎن ‪ 3‬دﻗﯿﻘﻪ اﻧﺘﻈﺎر دارﯾﻢ ﮐﻪ ﺳﻪ ﺑﺎر دﺳﺘﻮر‬
‫‪ date‬اﻧﺠﺎم ﺷﺪه و ﻧﺘﺎﯾﺞ در ﻓﺎﯾﻞ اﯾﺠﺎد ﺷﻮد ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر ﻣﺤﺘﻮﯾﺎت ‪ /root‬و ﻓﺎﯾﻞ ‪ dates.txt‬را ﻣﺸﺎﻫﺪه ﻣﯽﮐﻨﯿﻢ‪.‬‬

‫‪Page 9 of 12‬‬
Page 10 of 12
‫در ﺣﺎﻟﺘﯽ ﮐﻪ ﺗﺎ اﻻن ﺗﻮﺿﯿﺢ دادﯾﻢ ﺑﻪ واﺳﻄﻪ ﻓﺮﻣﺎن ‪ crontab -e‬ﯾﮏ ‪ Crontab‬اﯾﺠﺎد ﻣﯽﮐﺮدﯾﻢ‪ ،‬اﯾﻦ اﻣﺮ ﺗﻨﻬﺎ ﺑﺮاي ﮐﺎرﺑﺮي ﮐﻪ اﯾﻦ ﻓﺮﻣﺎن را وارد‬
‫ﮐﺮده اﺳﺖ ‪ Crontab‬اﯾﺠﺎد ﻣﯽﮐﻨﺪ‪ .‬در ﻣﻮاردي ﮐﻪ در دﻧﯿﺎي واﻗﻌﯽ ﻧﯿﺎز اﺳﺖ ﺗﺎ ﺑﺮاي ﺳﺎﯾﺮ ‪ User‬ﻫﺎ در ﺷﺒﮑﻪ ﯾﺎ ﺣﺘﯽ درون ﯾﮏ ﺳﯿﺴﺘﻢ ‪Crontab‬‬
‫ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ ﻣﯽﺑﺎﯾﺴﺖ ﺑﻪ ﻓﺎﯾﻞ ‪ crontab‬در ﻣﺴﯿﺮ ‪ /etc‬ﺑﺮوﯾﻢ ﮐﻪ در آﻧﺠﺎ ﻫﻤﺎن ﻗﺎﻟﺐ ﺗﻌﺮﯾﻒ ﺑﻪ اﺿﺎﻓﻪ ﯾﮏ ﺳﺘﻮن اﺿﺎﻓﻪ ﮐﻪ ﻣﺨﺼﻮص ﮐﺎرﺑﺮي اﺳﺖ‬
‫ﮐﻪ ﻣﯽﺧﻮاﻫﯿﻢ ﺑﺮاي آن ‪ Crontab‬ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ وﺟﻮد دارد ﮐﻪ ﻣﯽﺗﻮاﻧﯿﻢ ﺑﺮاي ﺗﻤﺎﻣﯽ ﮐﺎرﺑﺮان ‪ Crontab‬ﺗﻌﺮﯾﻒ ﮐﻨﯿﻢ‪.‬‬

‫ﺑﺎ اﺟﺮاي *‪ ls /etc/cron‬ﻧﻤﻮﻧﻪﻫﺎي داﯾﺮﮐﺘﻮريﻫﺎﯾﯽ از ‪ Cron‬را ﻣﯽﺑﯿﻨﯿﻢ ﮐﻪ ﻫﺮ ﮐﺪام ﻣﺨﺼﻮص ﺳﺎﻋﺖ‪ ،‬روز‪ ،‬ﻣﺎه و ﻫﻔﺘﻪ ﻫﺴﺘﻨﺪ ﺑﺪﯾﻦ ﻣﻌﻨﺎ ﮐﻪ اﮔﺮ‬
‫ﯾﮏ ‪ Crontab‬در آﻧﻬﺎ ﺗﻨﻈﯿﻢ ﮐﻨﯿﻢ‪ ،‬ﺻﺮف ﻧﻈﺮ از اﯾﻨﮑﻪ ﻣﻬﻢ ﻧﺒﺎﺷﺪ ﺗﺎ در ﭼﻪ ﺳﺎﻋﺖ و دﻗﯿﻘﻪاي اﻧﺠﺎم ﺷﻮﻧﺪ در ﻣﺪت زﻣﺎﻧﯽ ﮐﻪ ﻣﺮﺑﻮط ﺑﻪ آن داﯾﺮﮐﺘﻮري‬
‫اﺳﺖ ﺣﺘﻤﺎً ﯾﮑﺒﺎر اﻧﺠﺎم ﻣﯽﺷﻮﻧﺪ‪ .‬ﻣﺜﻼً اﮔﺮ در داﯾﺮﮐﺘﻮري ‪ cron.daily‬ﯾﮏ ‪ Crontab‬اﯾﺠﺎد ﮐﻨﯿﻢ در ﻃﻮل ﻣﺪت ﯾﮏ روز ﯾﮏ ﺑﺎر اﻧﺠﺎم ﻣﯽﺷﻮد‪.‬‬

‫‪Page 11 of 12‬‬
‫اﮔﺮ ﺑﺨﻮاﻫﯿﻢ ﺗﻨﻬﺎ ﺑﺮاي ﯾﮏ ﺑﺎر ﯾﮏ ﻋﻤﻠﯿﺎت در ﺗﺎرﯾﺦ ﺧﺎﺻﯽ ﯾﺎ زﻣﺎن ﺧﺎﺻﯽ اﺗﻔﺎق ﺑﯿﻮﻓﺘﺪ از ﻓﺮﻣﺎن ‪ at‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﻢ‪ .‬ﺑﺪﯾﻦ ﺻﻮرت ﮐﻪ ﺑﺎ وارد ﮐﺮدن‬
‫‪ at‬و ﺳﭙﺲ زﻣﺎن ﺑﻪ ﺻﻮرت ‪ now + number min/hour/day‬زﻣﺎن وﻗﻮع آن را ﻣﺸﺨﺺ ﻣﯽﮐﻨﯿﻢ‪.‬‬

‫* اﮔﺮ ﺑﺨﻮاﻫﯿﻢ ﻫﺮ ﺑﺎر ﮐﻪ ﺳﯿﺴﺘﻢ راهاﻧﺪازي ﺷﺪ ﯾﮑﺒﺎر ﯾﮏ ﻓﺮآﯾﻨﺪي اﻧﺠﺎم ﺷﻮد ﺑﻪ ﺟﺎي وارد ﮐﺮدن ‪ 5‬آﯾﺘﻢ در ﺗﻨﻈﯿﻤﺎت از ‪ @reboot‬اﺳﺘﻔﺎده‬
‫ﻣﯽﮐﻨﯿﻢ‪ .‬اﻟﺒﺘﻪ ﻣﺸﺎﺑﻪ اﯾﻦ اﻣﺮ ﺑﺮاي ‪ @daily‬ﻫﻢ ﺻﺎدق اﺳﺖ‪.‬‬

‫‪Page 12 of 12‬‬

You might also like