| SYSTEMD-TMPFILES(8) | systemd-tmpfiles | SYSTEMD-TMPFILES(8) |
نام (NAME)
systemd-tmpfiles, systemd-tmpfiles-setup.service, systemd-tmpfiles-setup-dev-early.service, systemd-tmpfiles-setup-dev.service, systemd-tmpfiles-clean.service, systemd-tmpfiles-clean.timer - ایجاد، حذف و پاکسازی خودکار فایلها و دایرکتوریهای موقت
خلاصه دستور (SYNOPSIS)
systemd-tmpfiles [OPTIONS...] [CONFIGFILE...]
واحدهای سیستمی:
واحدهای کاربری:
توضیحات (DESCRIPTION)
systemd-tmpfiles فایلها و دایرکتوریها را با استفاده از قالب و مکان فایلهای پیکربندی مشخصشده در tmpfiles.d(5) ایجاد، حذف و پاکسازی میکند. از نظر تاریخی، همانطور که از نام آن پیداست، برای مدیریت فایلهای موقت و فرار (volatile) طراحی شده بود، اما قابلیتهای عمومی مدیریت فایل را ارائه میدهد و میتواند برای مدیریت هر نوع فایلی استفاده شود. این ابزار باید با یک یا چند دستور از میان --create، --remove و --clean فراخوانی شود تا زیرمجموعه عملیات مربوطه انتخاب گردد.
اگر بدون آرگومان فراخوانی شود، دستورالعملهای موجود در فایلهای پیکربندی ارائهشده در دایرکتوریهای مشخصشده توسط tmpfiles.d(5) اجرا میشوند. هنگامی که با آرگومانهای موضعی فراخوانی شود، اگر گزینه --replace=PATH مشخص شده باشد، آرگومانهای مشخصشده در خط فرمان به جای فایل پیکربندی PATH استفاده میشوند. در غیر این صورت، تنها پیکربندی مشخصشده توسط آرگومانهای خط فرمان اجرا میشود. اگر به جای نام فایل رشتهی "-" مشخص شود، پیکربندی از ورودی استاندارد خوانده میشود. اگر آرگومان نام یک فایل باشد (بدون هیچ اسلشی)، تمام دایرکتوریهای پیکربندی برای یافتن یک فایل مطابق جستجو میشوند و فایلی که دارای بالاترین اولویت است اجرا میشود. اگر آرگومان یک مسیر باشد، آن فایل مستقیماً و بدون جستجو در دایرکتوریهای پیکربندی برای هرگونه فایل منطبق دیگر استفاده میشود.
سرویسهای سیستمی (systemd-tmpfiles-setup.service، systemd-tmpfiles-setup-dev-early.service، systemd-tmpfiles-setup-dev.service، systemd-tmpfiles-clean.service) systemd-tmpfiles را برای ایجاد فایلهای سیستمی و انجام پاکسازی سراسری سیستم فراخوانی میکنند. این سرویسها فایلهای پیکربندی تحت کنترل مدیر سیستم را در دایرکتوریهای tmpfiles.d/ میخوانند. سرویسهای کاربری (systemd-tmpfiles-setup.service، systemd-tmpfiles-clean.service) نیز systemd-tmpfiles را فراخوانی میکنند، اما این نمونه مجموعه جداگانهای از فایلها را میخواند که شامل فایلهای تحت کنترل کاربر در ~/.config/user-tmpfiles.d/ و ~/.local/share/user-tmpfiles.d/ و فایلهای تحت کنترل مدیر سیستم در /usr/share/user-tmpfiles.d/ میشود. کاربران میتوانند از این قابلیت برای ایجاد و پاکسازی فایلهای تحت کنترل خود استفاده کنند، اما نمونه سیستمی پاکسازی سراسری را انجام میدهد و تحت تأثیر پیکربندی کاربر قرار نمیگیرد. توجه داشته باشید که این بدان معناست که یک پاکسازی مبتنی بر زمانِ پیکربندیشده در نمونه سیستمی، مانند آنچه معمولاً برای /tmp/ پیکربندی میشود، روی فایلهای ایجادشده توسط نمونه کاربری نیز در صورتی که در /tmp/ قرار داده شده باشند تأثیر خواهد گذاشت، حتی اگر پاکسازی مبتنی بر زمان نمونه کاربری خاموش باشد.
برای اعمال مجدد تنظیمات پس از تغییر پیکربندی، کافی است systemd-tmpfiles-clean.service را راهاندازی مجدد (restart) کنید، که هر تنظیمی را که بتوان در زمان اجرا با اطمینان اعمال کرد اجرا خواهد نمود. برای اشکالزدایی systemd-tmpfiles، ممکن است فراخوانی مستقیم آن از خط فرمان با افزایش سطح لاگ مفید باشد (به $SYSTEMD_LOG_LEVEL در زیر مراجعه کنید).
دستورات و گزینهها (COMMANDS AND OPTIONS)
دستورات زیر پشتیبانی میشوند:
--create
--clean
--remove
--purge
مورد استفاده اصلی این گزینه، حذف خودکار فایلها و دایرکتوریهایی است که در اصل به نمایندگی از یک بسته نصبشده ایجاد شده بودند، در زمان حذف آن بسته.
توصیه میشود ابتدا این دستور را در ترکیب با --dry-run (زیر را ببینید) اجرا کنید تا بررسی شود چه فایلها و دایرکتوریهایی حذف خواهند شد.
هشدار! این معمولاً دستوری نیست که شما میخواهید! در بیشتر موارد --remove همان چیزی است که به دنبال آن هستید.
اضافهشده در نسخه ۲۵۶.
--user
اضافهشده در نسخه ۲۳۶.
--boot
اضافهشده در نسخه ۲۰۹.
--graceful
اضافهشده در نسخه ۲۵۴.
--dry-run
اضافهشده در نسخه ۲۵۶.
--inline
اضافهشده در نسخه ۲۶۱.
--prefix=path
اضافهشده در نسخه ۲۱۲.
--exclude-prefix=path
اضافهشده در نسخه ۲۰۷.
-E
اضافهشده در نسخه ۲۴۷.
--root=root
هنگامی که از این گزینه استفاده میشود، سرویس سوئیچ نام لایبسی (libc NSS) برای برطرفسازی کاربران و گروهها دور زده میشود. در عوض فایلهای /etc/passwd و /etc/group درون ریشه جایگزین مستقیماً خوانده میشوند. این بدان معناست که کاربران/گروههایی که در این فایلها فهرست نشدهاند شناسایی نخواهند شد، یعنی LDAP، NIS و سایر پایگاههای داده پیچیده در نظر گرفته نمیشوند.
ترکیب این گزینه با -E را در نظر داشته باشید تا اطمینان حاصل شود که فراخوانی، فایلها یا دایرکتوریهایی را زیر نقاط اتصال در ایمیج سیستمعامل تحت عملیات ایجاد نمیکند که معمولاً در طول زمان اجرا روی آنها مانت میشود.
توجه داشته باشید که این یک ویژگی ایزولهسازی (sandboxing) یا امنیتی نیست. تعاریف tmpfiles.d(5) ممکن است به صورت کاملاً ایزوله (hermetic) نسبت به ریشه مشخصشده پردازش نشوند.
اضافهشده در نسخه ۲۱۲.
--image=image
به صورت ضمنی شامل -E میشود.
اضافهشده در نسخه ۲۴۷.
--image-policy=policy
--replace=PATH
این گزینه برای استفاده در زمانی در نظر گرفته شده است که اسکریپتهای نصب بسته در حال اجرا هستند و فایلهای متعلق به آن بسته هنوز روی دیسک در دسترس نیستند، بنابراین محتوای آنها باید در خط فرمان ارائه شود، اما ممکن است پیکربندی مدیر سیستم از قبل وجود داشته باشد و باید اولویت بالاتری به آن داده شود.
اضافهشده در نسخه ۲۳۸.
--cat-config
--tldr
--no-pager
-h, --help
--version
امکان ترکیب --create، --clean و --remove در یک فراخوانی وجود دارد (که در این صورت حذف و پاکسازی قبل از ایجاد فایلهای جدید اجرا میشوند). برای مثال، در حین بوت خط فرمان زیر اجرا میشود تا اطمینان حاصل گردد که تمام دایرکتوریهای موقت و فرار بر اساس فایل پیکربندی حذف و ایجاد میشوند:
systemd-tmpfiles --remove --create
اعتبارنامهها (CREDENTIALS)
systemd-tmpfiles از منطق اعتبارنامههای سرویس همانطور که توسط ImportCredential=/LoadCredential=/SetCredential= پیادهسازی شده است پشتیبانی میکند (برای جزئیات به systemd.exec(5) مراجعه کنید). در صورت ارسال، اعتبارنامههای زیر استفاده میشوند:
tmpfiles.extra
اضافهشده در نسخه ۲۵۲.
توجه داشته باشید که به طور پیشفرض فایل واحد systemd-tmpfiles-setup.service (و فایلهای واحد مرتبط) به گونهای تنظیم شده است که اعتبارنامه "tmpfiles.extra" را از مدیر سرویس به ارث ببرد.
محیط (ENVIRONMENT)
$SYSTEMD_LOG_LEVEL
$SYSTEMD_LOG_COLOR
این تنظیم تنها زمانی مفید است که پیامها مستقیماً در ترمینال نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگها را نمایش میدهند، خودشان پیامها را بر اساس سطح لاگ رنگی میکنند.
$SYSTEMD_LOG_TIME
این تنظیم تنها زمانی مفید است که پیامها مستقیماً در ترمینال یا یک فایل نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگها را نمایش میدهند، خودشان برچسبهای زمانی را بر اساس متادیتای ورودی پیوست میکنند.
$SYSTEMD_LOG_LOCATION
توجه داشته باشید که مکان لاگ اغلب به عنوان متادیتا به ورودیهای ژورنال ضمیمه میشود. با این حال، درج مستقیم آن در متن پیام میتواند هنگام اشکالزدایی برنامهها راحت باشد.
$SYSTEMD_LOG_TARGET
$SYSTEMD_PAGER, $PAGER
نکته: اگر $SYSTEMD_PAGERSECURE تنظیم نشده باشد، $SYSTEMD_PAGER و $PAGER فقط برای غیرفعال کردن صفحهبند (با "cat" یا "") میتوانند استفاده شوند، و در غیر این صورت نادیده گرفته میشوند.
$SYSTEMD_LESS
کاربران ممکن است بخواهند دو گزینه را به ویژه تغییر دهند:
K
اگر مقدار $SYSTEMD_LESS شامل "K" نباشد، و صفحهبند فراخوانیشده less باشد، Ctrl+C توسط فایل اجرایی نادیده گرفته شده و باید توسط صفحهبند مدیریت شود.
X
توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESS هیچ تاثیری برای فراخوانیهای less توسط ابزارهای systemd ندارد.
برای توضیحات بیشتر به less(1) مراجعه کنید.
$SYSTEMD_LESSCHARSET
توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESSCHARSET هیچ تاثیری برای فراخوانیهای less توسط ابزارهای systemd ندارد.
$SYSTEMD_PAGERSECURE
این گزینه یک آرگومان بولی میپذیرد. هنگامی که روی درست تنظیم شود، «حالت امن» صفحهبند فعال میشود. در «حالت امن»، هنگام فراخوانی صفحهبند LESSSECURE=1 تنظیم خواهد شد، که به صفحهبند دستور میدهد دستوراتی را که فایلهای جدید باز میکنند یا ایجاد میکنند یا زیرفرایندهای جدید آغاز میکنند غیرفعال کند. در حال حاضر فقط less(1) شناخته شده است که این متغیر را درک میکند و «حالت امن» را پیادهسازی مینماید.
هنگامی که روی نادرست تنظیم شود، هیچ محدودیتی بر صفحهبند اعمال نمیشود. تنظیم SYSTEMD_PAGERSECURE=0 یا حذف نکردن آن از متغیرهای محیطی به ارث رسیده ممکن است به کاربر اجازه دهد دستورات دلخواه را اجرا کند.
هنگامی که $SYSTEMD_PAGERSECURE تنظیم نشده باشد، ابزارهای systemd تلاش میکنند تا به طور خودکار تشخیص دهند که آیا «حالت امن» باید فعال شود و آیا صفحهبند از آن پشتیبانی میکند یا خیر. اگر UID مؤثر با مالک نشست ورود یکسان نباشد، به geteuid(2) و sd_pid_get_owner_uid(3) مراجعه کنید، یا هنگام اجرا تحت sudo(8) یا ابزارهای مشابه ($SUDO_UID تنظیم شده باشد [2]). در این موارد، SYSTEMD_PAGERSECURE=1 تنظیم میشود و صفحهبندهایی که پیادهسازی «حالت امن» در آنها شناختهشده نیست اصلاً استفاده نخواهند شد. توجه داشته باشید که این تشخیص خودکار فقط متداولترین سازوکارهای ارتقای امتیازات را پوشش میدهد و برای راحتی کار در نظر گرفته شده است. توصیه میشود صراحتاً $SYSTEMD_PAGERSECURE را تنظیم کرده یا صفحهبند را غیرفعال کنید.
توجه داشته باشید که اگر متغیرهای $SYSTEMD_PAGER یا $PAGER قرار است رعایت شوند، به جز برای غیرفعال کردن صفحهبند، $SYSTEMD_PAGERSECURE نیز باید تنظیم شده باشد.
$SYSTEMD_COLORS
true
false
"16", "256", "24bit"
"auto-16", "auto-256", "auto-24bit"
$SYSTEMD_URLIFY
عملیات --CLEANUP بدون امتیاز (UNPRIVILEGED --CLEANUP OPERATION)
systemd-tmpfiles تلاش میکند از تغییر زمانهای دسترسی و اصلاح در دایرکتوریهایی که به آنها دسترسی پیدا میکند اجتناب نماید، که این امر نیازمند امتیازات CAP_FOWNER است. هنگام اجرا به عنوان کاربر غیر ریشه (non-root)، زمان دسترسی دایرکتوریهایی که برای یافتن فایلهای قابل پاکسازی بررسی میشوند افزایش مییابد، که ممکن است مانع از پاکسازی آنها شود.
وضعیت خروج (EXIT STATUS)
در صورت موفقیت، 0 برگردانده میشود. اگر پیکربندی از نظر نحوی نامعتبر باشد (خطاهای نحوی، آرگومانهای مفقود و غیره)، به طوری که برخی خطوط نادیده گرفته شوند اما خطای دیگری رخ ندهد، 65 برگردانده میشود (EX_DATAERR از /usr/include/sysexits.h). اگر پیکربندی از نظر نحوی معتبر باشد، اما نتوان آن را اجرا کرد (عدم وجود مجوزها، ایجاد فایلها در دایرکتوریهای ناموجود، محتوای نامعتبر هنگام نوشتن در مقادیر /sys/ و غیره)، 73 برگردانده میشود (EX_CANTCREAT از /usr/include/sysexits.h). در غیر این صورت، 1 برگردانده میشود (EXIT_FAILURE از /usr/include/stdlib.h).
نکته: هنگام ایجاد موارد، اگر هدف از قبل وجود داشته باشد اما از نوع نادرست باشد یا با وضعیت درخواستشده مطابقت نداشته باشد، و عملیات اجباری با "+" درخواست نشده باشد، پیامی ارسال میشود اما شکست نادیده گرفته خواهد شد.
همچنین ببینید (SEE ALSO)
نکات (NOTES)
- 1.
- مشخصات UAPI.2 Discoverable Partitions Specification
- 2.
- توصیه میشود سایر ابزارها نیز $SUDO_UID را در صورت لزوم تنظیم و بررسی کنند و با آن به عنوان یک رابط مشترک رفتار نمایند.
| systemd 261.2 |