server server .

server

نحوه استفاده از Cron براي خودكارسازي كارها در اوبونتو 18.04

Cron يك برنامه زمانبندي شغلي مبتني بر زمان است كه در سيستم عاملهاي مشابه يونيكس، از جمله توزيع هاي لينوكس يافت مي شود. Cron در پس زمينه اجرا مي شود و وظايف برنامه ريزي شده با Cron ، به عنوان “cron jobs” ، به صورت خودكار انجام مي شوند ، و باعث مي شود cron براي اتوماسيون كارهاي مربوط به تعمير و نگهداري مفيد باشد.
اين راهنما مروري بر نحوه برنامه ريزي كارها با استفاده از دستور ويژه cron ارائه مي دهد. همچنين به چندين ميانبر مي رود كه مي توان براي نوشتن و فهم برنامه هاي شغلي از آنها استفاده كرد.
پيش نيازها
براي تكميل اين راهنما ، به رايانه اي نياز داريد كه اوبونتو 18.04 در آن در حال اجرا باشد. اين كامپيوتر مي تواند دستگاه محلي شما ، يك ماشين مجازي يا يك سرور خصوصي مجازي باشد.
صرف نظر از اين كه از چه نوع رايانه اي براي دنبال كردن اين راهنما استفاده مي كنيد ، بايد يك كاربر غير ريشه با امتيازات ادمين و پيكربندي شده داشته باشد. براي انجام اين كار ، راهنماي راه اندازي سرور مجازي اوليه ما را براي اوبونتو 18.04 دنبال كنيد.
نصب Cron
تقريباً هر توزيع لينوكس به صورت پيش فرض شكلي از cron را نصب شده دارد. اما ، اگر از دستگاه اوبونتو استفاده مي كنيد كه cron در آن نصب نشده است ، مي توانيد آن را با استفاده از APT نصب كنيد.
قبل از نصب cron در دستگاه اوبونتو ، ايندكس پكيج محلي كامپيوتر را به روز كنيد:
$ sudo apt update

سپس cron را با دستور زير نصب كنيد:
$ sudo apt install cron

بايد مطمئن شويد كه در پس زمينه نيز تنظيم شده است:
$ sudo systemctl enable cron
Output
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron

پس از آن ، cron بر روي سيستم شما نصب مي شود و براي شروع برنامه ريزي كارها براي شما آماده است.
درك نحوه كار Cron
وظايف cron در يك فايل ويژه به اسم crontab ثبت و مديريت مي شوند. هر پروفايل كاربر در سيستم مي تواند crontab مخصوص به خود را داشته باشد تا بتواند كارهايي را ترتيب دهد ، كه تحت / var / spool / cron / crontabs ذخيره مي شود.
براي برنامه ريزي يك كار ، فقط كافي است crontab خود را براي ويرايش باز كنيد و يك كار نوشته شده در قالب يك عبارت cron را اضافه كنيد. تركيب عبارات cron را مي توان به دو عنصر تقسيم كرد: برنامه ريزي و دستور اجرا.
اين دستور مي تواند تقريباً هر دستوري باشد كه معمولاً در خط فرمان اجرا مي كنيد. مولفه برنامه ريزي دستور به 5 قسمت مختلف تقسيم مي شود كه به ترتيب زير نوشته مي شوند:
زمان مقادير مجاز
دقيقه 0-59
ساعت 0-23
روزي از ماه 1-31
ماه 1-12 or JAN-DEC
روز هفته 0-6 or SUN-SAT

وظايفي كه با هم در يك crontab برنامه ريزي شده اند به صورت زير ساختار يافته اند:
minute hour day_of_month month day_of_week command_to_run

در اينجا يك مثال كاربردي از يك عبارت cron آورده شده است. اين عبارت هر سه شنبه ساعت 5:30 دقيقه بعد از ظهر فرمان http://www.google.com را اجرا مي كند:
30 17 * * 2 curl http://www.google.com
همچنين چند كاراكتر ويژه وجود دارد كه مي توانيد در جزء برنامه يك عبارت Cron درج كنيد تا برنامه ريزي ساده تر شود:
*: در اصطلاحات Cron ، ستاره يك متغير عام است كه “all” را نشان مي دهد. بنابراين ، يك كار كه با * * * * * … برنامه ريزي شده هر دقيقه از هر ساعت از هر روز از هر ماه است.
،: كاما مقادير برنامه ريزي را براي تشكيل ليست مي شكنند. اگر مي خواهيد يك كار در ابتدا و اواسط هر ساعت انجام شود، به جاي نوشتن دو وظيفه جداگانه (به عنوان مثال ، 0 * * * * … و 30 * * * * …) ، مي توانيد همان عملكرد مشابه را با يك كار يعني (0,30 * * * * …) به دست آوريد.
-: يك خط فاصله طيف وسيعي از مقادير را در قسمت برنامه نمايش مي دهد. به جاي داشتن 30 كار برنامه ريزي شده جداگانه براي يك فرمان ،كه مي خواهيد 30 دقيقه اول هر ساعت اجرا شود (مانند 0 * * * * …، 1 * * * * … ، 2 * * * * … ، و غيره) ، مي توانيد فقط آن را به عنوان 0-29 * * * * … برنامه ريزي كنيد …
/: براي بيان يك مقدار مرحله مي توانيد از فوروارد اسلش با ستاره استفاده كنيد. به عنوان مثال ، به جاي نوشتن 8 وظيفه جداگانه براي اجراي يك فرمان هر سه ساعت يك بار (مانند 0 ، 0 * * * * … ، 0 3 * * * … ، 0 6 * * * * … ، و غيره) ، مي توانيد آن را به صورت برنامه ريزي 0 */3 * * * …. كنيد .
توجه: شما نمي توانيد مقادير گام را به صورت اختياري بيان كنيد. فقط مي توانيد از اعداد صحيح استفاده كنيد كه به طور مساوي در محدوده مجاز از قسمت مورد نظر تقسيم شوند. به عنوان مثال ، در قسمت “ساعت” فقط مي توانيد يك فوروارد اسلش را با 1 ، 2 ، 3 ، 4 ، 6 ، 8 يا 12 دنبال كنيد.
در اينجا چند نمونه ديگر از نحوه استفاده از مؤلفه برنامه ريزي cron آورده شده است:
* * * * – فرمان را هر دقيقه اجرا كنيد.
12 * * * * – دستور را 12 دقيقه بعد از هر ساعت اجرا كنيد.
0,15,30,45 * * * * – فرمان را هر 15 دقيقه يك بار اجرا كنيد.
/ 15 * * * * – دستور را هر 15 دقيقه يك بار اجرا كنيد.
0 4 * * * – دستور را هر روز در ساعت 4 صبح اجرا كنيد.
0 4 * * 2-4 – فرمان را هر سه شنبه ، چهارشنبه و پنجشنبه ساعت 4:00 صبح اجرا كنيد.
20,40 */8 * 7-12 * – فرمان را در 20 و 40 دقيقه هر ساعت 8 هر روز از 6 ماه گذشته سال اجرا كنيد.
اگر هر يك از اين موارد براي شما گيج كننده ها بود يا براي برنامه ريزي براي كارهاي مهم خود كمك ميخواهيد ، Cronitor يك ويرايشگر برنامه مفيد Cron به نام “Crontab Guru” را ارائه مي دهد كه مي توانيد براي بررسي صحت برنامه هاي cron خود استفاده كنيد.
مديريت Crontabs
وقتي برنامه خود را تنظيم كرديد و كاري را كه مي خواهيد اجرا كنيد، تعيين نموديد، بايد آن را در جايي قرار دهيد كه Daemon شما قادر به خواندن آن باشد.
همانطور كه قبلاً ذكر شد ، crontab يك فايل ويژه است كه زمان بندي كارها را اجرا مي كند. اما ، اين كارها به طور مستقيم ويرايش نميشوند. بلكه ، توصيه مي شود از دستور crontab استفاده كنيد. اين كار به شما امكان مي دهد crontab پروفايل كاربر خود را بدون تغيير امتيازات خود با sudo ، ويرايش كنيد. دستور crontab همچنين در مورد خطاهاي دستوري كه در crontab داريد به شما اطلاع مي دهد ، در حالي كه ويرايش مستقيم آن اين كار را نميكند.
شما مي توانيد crontab خود را با دستور زير ويرايش كنيد:
$ crontab -e
اگر اين اولين بار است كه دستور crontab را در زير اين پروفايل كاربر اجرا مي كنيد ، از شما خواسته مي شود ويرايشگر متن پيش فرض را براي استفاده هنگام ويرايش crontab خود انتخاب كنيد:
Output
no crontab for sammy – using an empty one

Select an editor. To change later, run ‘select-editor’.
1. /bin/nano <—- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed

Choose 1-4 [1]:

شماره مربوط به ويرايشگر مورد نظر خود را وارد كنيد. از طرف ديگر ، فقط مي توانيد ENTER را فشار دهيد تا گزينه پيش فرض ، يعني nano را بپذيريد.
پس از انتخاب خود ، به يك قسمت جديد منتقل مي شويد كه حاوي برخي از دستورالعمل هاي اعلام شده در مورد نحوه استفاده از آن است:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use ‘*’ in these fields (for ‘any’).#
# Notice that tasks will be started based on the cron’s system
# daemon’s notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command

هنگامي كه crontab -e را در آينده اجرا كرديد ، crontab شما را در اين ويرايشگر متن بطور خودكار نشان مي دهد. هنگامي كه در ويرايشگر هستيد ، مي توانيد برنامه خود را با هر كار در يك خط جديد وارد كنيد. يا اينكه مي توانيد فعلا crontab را ذخيره كرده و آن را ببنديد (اگر nano را انتخاب كرديد ، CTRL + X، Y ، سپس enter بزنيد).
توجه: در سيستم هاي لينوكس ، crontab ديگري وجود دارد كه تحت دايركتوري / etc / ذخيره شده است. اين crontab يك نوع سيستم گسترده است كه داراي يك فيلد اضافي است كه براي آن بايد مشخصات كاربري هر كار cron تحت آن اجرا شود. اين آموزش بر روي crontab هاي اختصاصي كاربر تمركز دارد ، اما اگر مي خواهيد crontab سيستم گسترده را ويرايش كنيد ، مي توانيد با دستور زير اين كار را انجام دهيد:
$ sudo nano /etc/crontab
اگر مي خواهيد محتواي crontab خود را مشاهده كنيد ، اما آن را ويرايش نكنيد ، مي توانيد از دستور زير استفاده كنيد:
$ crontab -l
مي توانيد crontab خود را با دستور زير پاك كنيد:
هشدار: دستور زير از شما نمي خواهد تأييد كنيد كه مي خواهيد crontab خود را پاك كنيد يا خير. فقط در صورتي آن را اجرا كنيد كه مطمئن هستيد مي خواهيد آن را پاك كنيد .
$ crontab -r
اين دستور بلافاصله crontab كاربر را حذف مي كند. با اين وجود، مي توانيد از فلگ -i استفاده كنيد تا اين فرمان از شما تأييد بخواهد كه آيا واقعاً مي خواهيد crontab كاربر را حذف كنيد:
$ crontab -r -i
Output
crontab: really delete sammy’s crontab? (y/n)

هنگامي كه از شما اين تاييد خواسته شد ، بايد y را وارد كنيد تا crontab حذف شود يا n را وارد كنيد تا كنسل شود.
مديريت خروجي كار Cron
از آنجا كه كارهاي Cron در پس زمينه اجرا مي شوند ، هميشه مشخص نيست كه آيا با موفقيت اجرا ميشوند يا خير. اكنون كه مي دانيد چگونه از دستور crontab استفاده كنيد و چگونه يك كار cron را برنامه ريزي نماييد، مي توانيد با روش هاي مختلف هدايت مجدد خروجي كارهاي cron شروع به آزمايش كنيد تا به شما در رديابي موفقيت آميز بودن آنها كمك كند.
اگر يك  mail transfer agent – مانند Sendmail – در سرور مجازي خود نصب و به درستي پيكربندي كرده ايد ، مي توانيد خروجي كارهاي cron را به آدرس ايميل مرتبط با پروفايل كاربر لينوكس خود ارسال كنيد. همچنين مي توانيد با ارائه تنظيمات MAILTO در بالاي crontab ، آدرس ايميل را به صورت دستي مشخص كنيد.
به عنوان مثال ، مي توانيد خطوط زير را به crontab اضافه كنيد. اين خطوط شامل عبارت MAILTO به همراه يك آدرس ايميل مثال ميباشد، و همچنين يك دستورالعمل SHELL كه به shell ميگويد اجرا شود ( در اين مثال bash ) ، يك دستورالعمل HOME با اشاره به مسيري كه در آن مي توانيد جستجوي باينري cron را انجام دهيد، و يك كار تكي cron :
. . .

MAILTO=”example@vpsgol.net”
SHELL=/bin/bash
HOME=/

* * * * * echo ‘Run this command every minute’

اين كار خاص دستور “هر دقيقه اين دستور را اجرا كن” را به همراه دارد و آن خروجي هر دقيقه به آدرس ايميل مشخص شده پس از دستورالعمل MAILTO ارسال مي شود.
همچنين مي توانيد براي جلوگيري از دريافت ايميل با خروجي ، خروجي يك كار cron را به يك فايل log يا به يك مكان خالي هدايت كنيد.
براي افزودن خروجي يك دستور برنامه ريزي شده در يك فايل log ، >> را به انتهاي فرمان اضافه كنيد كه به دنبال آن نام و مكان يك فايل log به انتخاب شما قرار ميگيرد ، مانند اين:
* * * * * echo ‘Run this command every minute’ >> /directory/path/file.log

بهتر است بگوييم شما مي خواهيد از cron براي اجراي يك اسكريپت استفاده كنيد اما آن را در پس زمينه اجرا كنيد. براي اين كار ، مي توانيد خروجي اسكريپت را به يك مكان خالي ، مانند / dev / null هدايت كنيد كه بلافاصله تمام داده هاي نوشته شده براي آن را حذف مي كند. به عنوان مثال ، كار cron زير يك اسكريپت PHP را اجرا مي كند و آن را در پس زمينه اجرا مي كند:
* * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1

اين كار cron همچنين خطاي استاندارد را بازنويسي مي كند – با 2 نمايش داده ميشود- به خروجي استاندارد( >&1). از آنجا كه خروجي استاندارد در حال حاضر به / dev / null هدايت مي شود ، اساساً به اسكريپت اجازه مي دهد تا بي صدا اجرا شود. حتي اگر crontab حاوي جمله MAILTO باشد ، خروجي اين فرمان به آدرس ايميل مشخص شده ارسال نمي شود.
محدود كردن دسترسي
شما مي توانيد كاربران مجاز به استفاده از دستور crontab را با فايل هاي cron.allow و cron.deny مديريت كنيد، كه هر دو در فهرست / etc / ذخيره شده اند. اگر فايل cron.deny وجود داشته باشد ، هر كاربر ذكر شده در آن از ويرايش crontab خود منع خواهد شد. اگر cron.allow وجود داشته باشد ، فقط كاربران ذكر شده در آن قادر به ويرايش crontab هاي خود هستند. اگر هر دو فايل وجود داشته باشد و در هر يك از كاربران يكسان قرار داشته باشد ، فايل cron.allow بر cron.deny غلبه مي كند و كاربر قادر به ويرايش crontab خود خواهد بود.
به عنوان مثال ، براي انكار دسترسي به همه كاربران و سپس دسترسي به كاربر ishmael ، مي توانيد از ترتيب دستور زير استفاده كنيد:
$ sudo echo ALL >>/etc/cron.deny

$ sudo echo ishmael >>/etc/cron.allow
ابتدا، با افزودن ALL به فايل cron.deny ، كليه كاربران را قفل مي كنيم. سپس با اضافه كردن نام كاربري به فايل cron.allow ، به پروفايل كاربر ishmael براي اجراي كارهاي cron دسترسي مي دهيم.
توجه داشته باشيد كه اگر يك كاربر داراي امتيازات sudo است ، مي تواند crontab كاربر ديگري را با دستور زير ويرايش كند:
$ sudo crontab -u user -e
با اين حال ، اگر cron.deny وجود داشته باشد و كاربرها در آن ليست شده باشند و در cron.allow ذكر نشده باشند ، پس از اجراي دستور قبلي ، خطاي زير را دريافت خواهيد كرد:
Output
The user user cannot use this program (crontab)

به صورت پيش فرض، بيشتر cron daemon ها فرض خواهند كرد كه همه كاربران به cron دسترسي دارند مگر اينكه cron.allow يا cron.deny وجود داشته باشد.
دستور ويژه
فرمان هاي كوتاه متعددي وجود دارند كه مي توانيد در فايل crontab خود استفاده كنيد تا به ساده سازي برنامه ريزي كاري كمك كند. آنها در اصل ميانبرهايي هستند براي برنامه ريزي عددي معادل كه به صورت زير مشخص شده:
Shortcut Shorthand for
@hourly 0 * * * *
@daily 0 0 * * *
@weekly 0 0 * * 0
@monthly 0 0 1 * *
@yearly 0 0 1 1 *

توجه: همه cron daemon ها (به ويژه نسخه هاي قديمي) نمي توانند اين تركيب را تجزيه كنند ، بنابراين قبل از اعتماد به آن ، دوبار بررسي كنيد.
علاوه بر اين، هر زمان كه سرور مجازي شروع به كار كند، @reboot همه فرمان هاي بعد از خود را اجرا مي كند:
@reboot echo “System start up”

استفاده از اين ميانبرها در هر زمان ممكن مي تواند به تفسير برنامه كارها در crontab شما كمك كند.
نتيجه
Cron يك ابزار انعطاف پذير و قدرتمند است كه مي تواند بار بسياري از وظايف مرتبط با مديريت سيستم را كاهش دهد. هنگامي كه با اسكريپت هاي shell تركيب شود ، مي توانيد كارهايي را كه معمولاً خسته كننده يا پيچيده هستند ، به طور خودكار انجام دهيد. به عنوان مثال ، شما مي توانيد يك اسكريپت shell بنويسيد تا بك آپ داده ها را به يك راه حل ذخيره سازي موضوعي ارسال كند و سپس آن را با استفاده از cron خودكار كنيد.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

راه اندازي اوليه سرور با CentOS 8   –  تهيه نسخه پشتيبان و بازيابي يك خوشه Kubernetes

نحوه تنظيم كليدهاي SSH در CentOS 8   –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن يك برنامه Node.js با Docker [Quickstart]   –  چگونه مي توان پلتفرم Eclipse Theia Cloud IDE را روي اوبونتو

چگونه مي توان هاست هاي مجازي Apache را در اوبونتو  –   مديريت DNS با استفاده از DNSControl در Debian 10

نحوه تاييد صحت رمز عبور با Apache در اوبونتو 18.04    –  چگونه مي توان پلتفرم Cloud IDE كد سرور را روي CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7   –  نحوه نصب Apache Kafka در Debian 10

نحوه تاييد صحت رمز عبور با Apache در اوبونتو 18.04 –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

استفاده از Cron براي خودكارسازي كارها در اوبونتو 18  –

نصب و استفاده ازRadamsa براي فوز كردن برنامه ها روي Ubuntu 18 –

نحوه راه اندازي Eclipse Theia Cloud IDE Platform در Debian 10  –

نحوه نصب Docker Compose در Debian 10 –

چگونه مي توان با كتابخانه (library) درخواست ها در پايتون شروع به كار كرد –

نحوه اجراي صفحه گذاري در MySQL با PHP روي اوبونتو 18.04 –

نحوه تنظيم پلتفرم Eclipse Theia Cloud IDE در CentOS 7  –

بسته بندي برنامه Laravel 6 براي توسعه با Docker Compose در اوبونتو 18  –

بهينه سازي درخواست هاي MySQL با ذخيره سازي غير مجاز مي باشدSQL در اوبونتو 16 –

استفاده از Ansible براي نصب و راه اندازي وردپرس با LAMP در اوبونتو 18 –

چگونه مي توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04 –

چگونه مي توان از رول هاي ansible براي انتزاع محيط زيرساختي –

نحوه پيكربندي يك خوشه Galera با MySQL در سرورهاي اوبونتو 18 –

 

 

كلمات كليدي خريد سرور

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا 


برچسب: ،
امتیاز:
 
بازدید:
+ نوشته شده: ۴ اسفند ۱۳۹۸ساعت: ۰۱:۵۸:۵۰ توسط:server موضوع:

{COMMENTS}
ارسال نظر
نام :
ایمیل :
سایت :
آواتار :
پیام :
خصوصی :
کد امنیتی :