0% found this document useful (0 votes)
54 views13 pages

Linux Regex and Bash Scripting Guide

LPIC1

Uploaded by

behzad.abyari.19
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views13 pages

Linux Regex and Bash Scripting Guide

LPIC1

Uploaded by

behzad.abyari.19
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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