گاهی ضروری است که یک برنامه را در لینوکس در ساعت و زمان دیگری به جز زمان سیستم اجرا کنید.
یک راه حل دم دست اما نامناسب تغییر ساعت سیستم می باشد.
اما چرا نامناسب است، به دو دلیل زیر:
1- اول اینکه ممکن است شما دسترسی ادمین نداشته باشید.
2- حتی با داشتن دسترسی ادمین بر روی یک سیستم با چند کاربر احتمال بروز مشکل در کارهای دیگران را پیش می آورد.
همچنین اگر بخواهید اسکریپت را با crontab به صورت خودکار اجرا کنید امکان تغییر ساعت وجود ندارد.
یک راه استفاده از برنامه libfaketime است. من این برنامه را در فضای کاربری خودم دانلود و کمپایل کردم.
نحوه استفاده از آن به شکل زیر است:
LD_PRELOAD=$faketimePATH/libfaketime.so.1 FAKETIME="@2022-01-01 01:01:00" \
FAKETIME_DONT_RESET=1 \
"run your program"
با اجرای دستور بالا، زمان اجرای برنامه شما به ساعت 01:01:00 تاریخ 2022-01-01 تنظیم و آن برنامه در آن تاریخ اجرا می شود.
در اینحالت زمان سیستم شما تغییر نمیکند و سایر برنامه ها مطابق روال همیشه اجرا می شوند.