برنامه ریزی کار روی Raspberry Pi

چگونه می توان روی Raspberry Pi یک کار را برنامه ریزی کرد؟

برنامه نویسی دستورات یا اسکریپت ها در Raspberry Pi و به طور کلی در لینوکس برای یک مبتدی آسان نیست.
نکات زیادی وجود دارد که شما باید بدانید که هر بار موثر است

شاید شما از خود می پرسید که چگونه می توان کاری را روی Raspberry Pi برنامه ریزی کرد
خوب شما باید از ابزاری به نام crontab استفاده کنید که به شما امکان می دهد کارها را با کاربری که می خواهید شروع کنید، هنگام شروع Raspberry یا هر زمان که بخواهید.

crontab چیست؟

 

Cron

Cron یک سرویس است که به طور خودکار از هر بوت Raspberry Pi شروع می شود، که به کاربر امکان می دهد دستورات برنامه ریزی شده را اجرا کند

هر دقیقه، cron مشاهده خواهد کرد که آیا مجبور است کاری انجام دهد و آن را انجام دهد
آنچه امروز می خواهیم ببینیم این است که چگونه به cron بگوییم در صورت لزوم دستور یا اسکریپت ما را اجرا کند

 

Crontab

crontab ابزاری است که به ما امکان می دهد آنچه را که می خواهیم شروع کنیم ، در قالبی قابل درک توسط سرویس cron لیست کنیم.

یک crontab شامل دو چیز است:
– لیست دستوراتی که باید اجرا شود
– چه زمانی آنها را اجرا کنید

Crontab نیز یک دستور است. این نحو است:

crontab [-u user] file
crontab [-u user] [-l | -r | -e] [-i] [-s]
چه چیزی میخواهید بدانید :

u: crontab به طور پیش فرض crontab کاربر فعلی را باز می کند، اما شما می توانید مشخص کنید کدام یک را باز کنید (اگر مجوز کافی دارید)
l: محتوای فعلی crontab را لیست کنید
e: محتوای فعلی crontab را ویرایش کنید
r: محتوای فعلی crontab را حذف کنید

بیشتر اوقات فقط از دستورات “crontab -l” یا “crontab -e” استفاده خواهید کرد


چگونه می توان یک کار را برنامه ریزی کرد؟

اولین کار برنامه ریزی شد

زمان اقدام است
بیایید یک کار ساده را برنامه ریزی کنیم ، بنابراین برای اولین بار crontab ما را با دستور زیر باز کنید:

crontab -e

 

اولین چیز ، شما باید ویرایشگر را انتخاب کنید. من به شما توصیه می کنم که در nano باشید ، بنابراین گزینه پیش فرض را حفظ کرده و enter را بزنید:

pi@raspberrypi:~ $ crontab -e
no crontab for pi - using an empty one

Select an editor.  To change later, run 'select-editor'.
  ۱. /bin/ed
  ۲. /bin/nano        <---- easiest
  ۳. /usr/bin/vim.tiny

۱-۲-۳ را انتخاب کنید

شما اکنون در ویرایشگر crontab هستید، که خالی است و اگر اولین بار است که به آن دسترسی پیدا می کنید، می تواند کمی سخت باشد …

اول از همه، خطوط با # شروع می شون، هیچ کاری انجام نمی دهند و ما می توانیم آنها را نادیده بگیریم.
تغییرات ما در انتهای پرونده انجام می شود، مکان نما را با پیکان پایین به پایین منتقل کرده و این خط را کپی کنید:

* * * * * echo `date` >> /home/pi/log

فایل را ذخیره کنید (CTRL + O و Enter) و از آن خارج شوید (Ctrl + X)

این خط ساده در crontab به ما امکان می دهد هر دقیقه فرمانی را اجرا کنیم که تاریخ را در یک فایل بنویسد.
پس از چند دقیقه، فایل حاوی تاریخ اجرای دستور است

احتمالاً از خود می پرسید که معنی این پنج ستاره چیست
نحو ورودی در crontab به شرح زیر است:

۱ ۲ ۳ ۴ ۵ command

۱: دقیقه (بین ۰ تا ۵۹)
۲: یک ساعت (بین ۰ تا ۲۳)
۳: روز (بین ۱ تا ۳۱)
۴: ماه (بین ۱ تا ۱۲)
۵: روز هفته (بین ۰ و ۷ ، از روز یکشنبه شروع می شود)

 

مثال

حالا که این تئوری را درک کردیم، بیایید به یک مثال ساده نگاه کنیم تا مطمئن شویم که درست انجام می دهیم
تصور کنید که می خواهید هر چهارشنبه ساعت ۲۴ یک اسکریپت پشتیبان اجرا کنید
شما باید یک خط مانند این اضافه کنید:
۰ ۰ * * ۳ /home/pi/backup.sh

مثالهای دیگر

پس از آن بسیاری از امکانات برای مطابقت با crontab با آنچه شما نیاز دارید وجود دارد

fixed hours
۰ ۶,۱۲ * * * /home/pi/backup.sh   => will run at 6 and 12 only

every 2h
۰ */۲ * * * /home/pi/backup.sh => will run every 2hours (so 0, 2, 4, 6, ...)

فقط در روزهای هفته

۰ ۳ * * ۱-۵ /home/pi/backup.sh => will not run on Saturday/Sunday

همچنین می توانید از طریق بوت چیزی را شروع کنید

@reboot /home/pi/backup.sh   => will run at every boot

 

 افزودن اشکال زدایی

در انتهای مقاله خواهیم دید که چگونه cron را که شروع نشده است یا در زمانی که شما برنامه ریزی کرده اید، اشکال زدایی کنید.
اما ممکن است ذخیره پیام های نمایش داده شده یا خطاهای اسکریپت در یک فایل آسان تر باشد

برای انجام این کار، باید یکی از این گزینه ها را در crontab اضافه کنید:

برای ورود به فایلی که اگر اسکریپت در صورت دستی راه اندازی آن روی صفحه نمایش داده می شد، باید نام فایل را با کاراکتر “>” مشخص کنید:

@reboot /home/pi/backup.sh > /home/pi/log_backup.txt
اما این گزینه فایل را در هر بار اجرا پاک می کند
بنابراین اگر می خواهید یک خط جدید در انتهای پرونده اضافه کنید، باید کاراکتر “>> را اضافه کنید، مانند این:
@reboot /home/pi/backup.sh >> /home/pi/log_backup.txt

 

اکنون اگر می خواهید در فایل دیگری خطاها را وارد کنید باید این مورد را اضافه کنید:

@reboot /home/pi/backup.sh > /home/pi/log_backup.txt 2>/home/pi/errors_backup.txt

و در آخر، اگر می خواهید خطاها و نمایش داده شده در همان فایل را ذخیره کنید، می توانید این کار را انجام دهید:

@reboot /home/pi/backup.sh > /home/pi/log_backup.txt 2>&1
شما باید شروع به درک فوت و فن های کوچک کنید، اما متأسفانه در فناوری اطلاعات به ندرت اتفاقاتی که انتظار می رود می افتد.
من به شما نکاتی را برای رفع خطاهای موجود در crisp روی Raspberry Pi می دهم

نکات Crontab

User privileges

یک اشتباه رایج در ایجاد cron ها فراموش کردن در نظر گرفتن امتیازات کاربری است که cron را شروع می کند

به عنوان مثال، این cron در کاربر پیش فرض Raspberry (“pi”) کار نمی کند:

@reboot /usr/sbin/service ssh start
با خطایی مانند این روبرو خواهید شد:
ssh.service شروع نشد: احراز هویت تعاملی لازم است.

اگر از crontab کاربر فعلی استفاده کنید، cron با امتیازات فعلی شما اجرا می شود
Pi مجاز به شروع سرویس نیست، بنابراین نمی تواند کار کند

برای کار کردن، شما باید این خط را در روت crontab (sudo crontab -e) یا crontab گلوبال موجود در / etc / crontab اضافه کنید

Absolute path

اشتباه گسترده دیگر در استفاده از crons ، نادیده گرفتن مسیر فایل است
شما باید از مسیر کامل استفاده کنید تا به درستی کار کند

این cron حتی در روت crontab کار نخواهد کرد:

@reboot service ssh start
اگر مسیر مطلق را مشخص نکنید، cron نمی داند پرونده سرویس کجاست
بنابراین برای کارایی این cron باید سرویس / usr / sbin / را بنویسید

به محتوای متن های خود نیز توجه کنید
به عنوان مثال، اگر یک اسکریپت PHP داشته باشید که شامل فایل دیگری باشد (مانند: شامل “file.php”) و این اسکریپت را به crontab اضافه کنید، کار نمی کند
شما باید مسیر مطلق را در تابع اضافه کنید یا چیزی شبیه به این را انجام دهید:

@reboot cd /var/www/html; /usr/bin/php test.php
به این ترتیب، در / var / www / html انجام می شود و اسکریپت PHP فایل “file.php” را پیدا می کند.

اشکال زدایی

علاوه بر آنچه  گفته شد، دو روش دیگر نیز وجود دارد که برای رفع اشکال Crons شما معرفی می کنیم

Emails

اگر مشکلی در یکی از کارهای برنامه ریزی شده وی در crontab وجود داشته باشد ، Cron برای او ایمیل ارسال می کند
اگر یک سرور ایمیل روی Raspberry Pi خود نصب کرده اید، می توانید خطاهای موجود در فایل ایمیل کاربر خود را بررسی کنید
$ sudo apt-get install mailutils
پس از آن ، می توانید “نامه” را تایپ کنید تا ایمیل های خود را بخوانید

اگر یک سرور ایمیل کاملاً پیکربندی شده دارید، می توانید با افزودن چیزی مانند این به crontab، ایمیل ها را به آدرس ایمیل خود هدایت کنید:
MAIL=yourname@provider.com

Syslog

Syslog یکی دیگر از کمک های ارزشمند برای بررسی اتفاقی است که در مورد cron های شما رخ داده است
این یک فایل ثبت است که در / var / log / syslog واقع شده است

با این دستور می توانید آخرین پیام های مربوط به crons را بخوانید:

tail -f /var/log/syslog | grep CRON

در صورت شروع کرون جدید، آخرین خطاها را به شما نشان می دهد، با رفرش در زمان واقعی

 

اکنون می دانید که cron و crontab چیست، چگونه می توان یک کار یا اسکریپت را در Raspberry Pi با بسیاری از گزینه ها برنامه ریزی کرد و چگونه می توان فهمید که آنطور که می خواهید کار نمی کند

Crons چیزی است که در Raspberry Pi و Linux به طور کلی اساسی است.


مطالب پیشنهادی برای شما


 

۱۲

محمد صداقتی
Latest posts by محمد صداقتی (see all)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *