چگونه می توان روی 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 در کاربر پیش فرض Raspberry (“pi”) کار نمی کند:
@reboot /usr/sbin/service ssh start
ssh.service شروع نشد: احراز هویت تعاملی لازم است.
اگر از crontab کاربر فعلی استفاده کنید، cron با امتیازات فعلی شما اجرا می شود
Pi مجاز به شروع سرویس نیست، بنابراین نمی تواند کار کند
برای کار کردن، شما باید این خط را در روت crontab (sudo crontab -e) یا crontab گلوبال موجود در / etc / crontab اضافه کنید
Absolute path
شما باید از مسیر کامل استفاده کنید تا به درستی کار کند
این cron حتی در روت crontab کار نخواهد کرد:
@reboot service ssh start
بنابراین برای کارایی این cron باید سرویس / usr / sbin / را بنویسید
به محتوای متن های خود نیز توجه کنید
به عنوان مثال، اگر یک اسکریپت PHP داشته باشید که شامل فایل دیگری باشد (مانند: شامل “file.php”) و این اسکریپت را به crontab اضافه کنید، کار نمی کند
شما باید مسیر مطلق را در تابع اضافه کنید یا چیزی شبیه به این را انجام دهید:
@reboot cd /var/www/html; /usr/bin/php test.php
اشکال زدایی
Emails
اگر یک سرور ایمیل روی Raspberry Pi خود نصب کرده اید، می توانید خطاهای موجود در فایل ایمیل کاربر خود را بررسی کنید
$ sudo apt-get install mailutils
اگر یک سرور ایمیل کاملاً پیکربندی شده دارید، می توانید با افزودن چیزی مانند این به crontab، ایمیل ها را به آدرس ایمیل خود هدایت کنید:
MAIL=yourname@provider.com
Syslog
این یک فایل ثبت است که در / var / log / syslog واقع شده است
با این دستور می توانید آخرین پیام های مربوط به crons را بخوانید:
tail -f /var/log/syslog | grep CRON
در صورت شروع کرون جدید، آخرین خطاها را به شما نشان می دهد، با رفرش در زمان واقعی
اکنون می دانید که cron و crontab چیست، چگونه می توان یک کار یا اسکریپت را در Raspberry Pi با بسیاری از گزینه ها برنامه ریزی کرد و چگونه می توان فهمید که آنطور که می خواهید کار نمی کند
Crons چیزی است که در Raspberry Pi و Linux به طور کلی اساسی است.
مطالب پیشنهادی برای شما
- تست سرعت کارت SD در Raspberry Pi
- تغییر دسکتاپ در Raspberry Pi
- آموزش راه اندازی برد رزبری پای و ماژول GPS
- ارتباط سریال RS-485 بین Raspberry Pi و Arduino Uno
- معرفی Webmin برای کار با Raspberry Pi
- اندازه گیری فاصله با سنسور اولتراسونیک و Raspberry Pi
- تست سرعت کارت SD در Raspberry Pi
۱۲
- تفاوت بین روتر و فایروال - مهر ۱۰, ۱۴۰۳
- مسیریابی استاتیک در ویندوز - مهر ۸, ۱۴۰۳
- پروتکل SNMP - شهریور ۱۵, ۱۴۰۳