دستور cron یک راه فوق العاده برای برنامه ریزی کارهای تکراری در لینوکس است. اما اگر بخواهید یک دستور یا اسکریپت خاص را فقط یک بار اجرا کنید چه؟
تسلط بر مدیریت زمان هنری دشوار است. خوشبختانه، با کمک فناوری، می توانید کارهای روزمره را به طور خودکار انجام دهید و به رایانه خود محول کنید. برخلاف انسانها، رایانههای شخصی در اجرای کارهای تکراری در زمان تعیین شده بسیار خوب هستند.
در لینوکس، می توانید کارهای تکراری را با استفاده از ابزارهایی مانند cron اجرا کنید. علاوه بر این، می توانید با استفاده از دستور at، کارهای یکباره را برنامه ریزی و اجرا کنید.
در حال نصب در لینوکس
دستور at بخشی از ابزارهای استاندارد لینوکس در اکثر توزیع ها نیست. خوشبختانه، بدون در نظر گرفتن توزیعی که استفاده می کنید، می توانید آن را به راحتی با استفاده از مدیر بسته خود نصب کنید.
در سیستمهای مبتنی بر دبیان مانند Ubuntu، MX Linux و Pop!_OS، میتوانید با اجرای:
sudo apt install at
اگر از توزیع مبتنی بر RPM مانند RHEL، Fedora یا Rocky Linux استفاده میکنید، از DNF برای نصب بسته استفاده کنید:
sudo dnf install at
در توزیعهای لینوکس مبتنی بر Arch مانند Manjaro، اجرا کنید:
sudo pacman -S at
راهاندازی سرویس زمانبندی شغلی atd
قبل از استفاده از دستور at، مطمئن شوید که شبح زمانبندی atd در حال اجرا است. این همان چیزی است که دستور at برای اجرای کارهای برنامه ریزی شده استفاده می کند.
sudo systemctl status atd
اگر سرویس atd اجرا نمی شود، می توانید آن را با استفاده از:
sudo systemctl start atd
زمانبندی وظایف در لینوکس با در
در اینجا آمده است که چگونه می توانید یک کار یک بار مصرف را برای اجرا در زمان معینی در آینده با استفاده از در برنامه ریزی کنید:
command | at time_stamp
برای مثال، میتوانیم با استفاده از دستور ls، کاری را برای فهرست کردن محتویات دایرکتوری فعلیتان برنامهریزی کنیم و یک دقیقه دیگر خروجی را در یک فایل بنویسیم.
ابتدا با استفاده از دستور cd به پوشه home user خود تغییر دهید:
cd ~
سپس دستور زیر را برای زمانبندی کار خود اجرا کنید:
ls > list_items.txt | at now + 1 minutes
خروجی نشان می دهد که وظیفه شما برنامه ریزی شده است. پس از سپری شدن زمان، می توانید محتویات دایرکتوری خود را فهرست کنید و یک فایل متنی جدید با محتویات دایرکتوری باید وجود داشته باشد.
اگر می خواهید دستور را در ظهر فردا اجرا کنید، اجرا کنید:
ls > list_items.txt | at noon tomorrow
برای زمان ها و تاریخ های خاص تر، از قالب تاریخ MMDDHHMM YYYY استفاده کنید. به عنوان مثال، برای اجرای دستور قبلی در ساعت 13:00. در 25 دسامبر 2023، می توانید دستور زیر را اجرا کنید:
ls > list_items.txt | at 12251300 2023
دستور at دارای ویژگی های بسیار پیشرفته تری است که به شما امکان می دهد دستورات خاصی را در زمان دقیق اجرا کنید. برای گزینه های دستوری بیشتر به صفحات man آن نگاهی بیندازید:
man at
زمانبندی اسکریپتها در لینوکس با استفاده از در
جدا از اجرای دستورات فردی، میتوانید از دستور at نیز برای برنامهریزی اسکریپتها برای اجرای در زمانهای مشخص استفاده کنید.
بیایید فرض کنیم که شما یک اسکریپت به نام disk_usage.sh دارید که در پوشه اصلی خود قرار دارد. اسکریپت به سادگی استفاده از هارد دیسک را در یک فایل متنی چاپ می کند. این اسکریپت است:
#!/bin/bash
df -h > disk_usage.txt
برای اجرای این اسکریپت سی دقیقه بعد، می توانید به سادگی دستور زیر را اجرا کنید:
at now + 30 minutes -f ~/disk_usage.sh
با دادن حالت مناسب به آن اطمینان حاصل کنید که اسکریپت شما قابل اجرا است. برای این کار می توانید از دستور chmod استفاده کنید:
sudo chmod +x disk_usage.sh
مدیریت معلق در Tasks در لینوکس
با استفاده از دستور زیر می توانید کارهای در حال انتظار را مشاهده کنید:
atq
برای حذف یک کار معلق، از فرمت دستور زیر استفاده کنید:
atrm task_number
به عنوان مثال، برای حذف وظیفه شماره 12، از:
atrm 12
خودکار کردن وظایف تکراری در لینوکس با در
دستور at یک ابزار قدرتمند و همه کاره برای اجرا یا اجرای کارهای یکبار مصرف در رایانه لینوکس شما است. به غیر از at، میتوانید از crontab برای خودکار کردن انواع کارها، از کارهای ساده تا پیچیده، استفاده کنید.