.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "NICELOAD 1" .TH NICELOAD 1 2026-07-25 20260722 parallel .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" niceload \- کند کردن یک برنامه هنگامی که میانگین بار کاری فراتر از حدی معین است .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBniceload\fR [\-v] [\-h] [\-n nice] [\-I io] [\-L load] [\-M mem] [\-N] [\-\-sensor program] [\-t time] [\-s time|\-f factor] ( command | \-p PID [\-p PID ...] | \-\-prg program ) .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" ابزار \fBniceload\fR گنو زمانی که میانگین بار کاری (یا دیگر فعالیت‌های سیستم) از حد مشخصی فراتر رود، سرعت اجرای یک برنامه را کاهش می‌دهد. هنگامی که سیستم به این حد مجاز برسد، برنامه برای مدتی معلق (suspend) می‌شود؛ سپس مجدداً برای مدتی از سر گرفته خواهد شد (resume). پس از آن میانگین بار کاری دوباره بررسی شده و چرخه از نو آغاز می‌گردد. .PP به جای میانگین بار کاری، \fBniceload\fR همچنین می‌تواند ورودی/خروجی دیسک (I/O)، مقدار حافظه آزاد یا فعالیت سواپ (swapping) را پایش کند. .PP اگر بار کاری برابر با 3.00 باشد، تنظیمات پیش‌فرض برنامه را بدین‌گونه اجرا خواهند کرد: .PP اجرا به مدت ۱ ثانیه، تعلیق به مدت (3.00\-1.00) ثانیه، اجرا به مدت ۱ ثانیه، تعلیق به مدت (3.00\-1.00) ثانیه، اجرا به مدت ۱ ثانیه، ... .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP \fB\-B\fR 9 .IX Item "-B" .PD 0 .IP \fB\-\-battery\fR 9 .IX Item "--battery" .PD تعلیق در صورتی که سیستم با باتری کار می‌کند. این گزینه مخفف عبارت زیر است: \&\-l \-1 \-\-sensor \*(Aqcat /sys/class/power_supply/BAT0/status /proc/acpi/battery/BAT0/state 2>/dev/null | grep \-i \-q discharging; echo $?\*(Aq .IP "\fB\-f\fR \fIFACTOR\fR" 9 .IX Item "-f FACTOR" .PD 0 .IP "\fB\-\-factor\fR \fIFACTOR\fR" 9 .IX Item "--factor FACTOR" .PD ضریب زمان تعلیق. مقدار \fB\-s\fR را به‌طور پویا برابر با «مقدار بیش از حد مجاز * ضریب» تنظیم می‌کند. پیش‌فرض 1 است. .IP \fB\-H\fR 9 .IX Item "-H" .PD 0 .IP \fB\-\-hard\fR 9 .IX Item "--hard" .PD حد سخت. گزینه \fB\-\-hard\fR فرایند را تا زمانی که وضعیت سیستم به زیر محدودیت‌ها بازنگردد معلق نگه می‌دارد. پیش‌فرض \fB\-\-soft\fR است. .IP "\fB\-\-io\fR \fIiolimit\fR" 9 .IX Item "--io iolimit" .PD 0 .IP "\fB\-I\fR \fIiolimit\fR" 9 .IX Item "-I iolimit" .PD حد مجاز ورودی/خروجی (I/O). میزان I/O دیسک به‌صورت عددی بین 0 تا 10 محاسبه می‌شود، که در آن 0 نشان‌دهنده نبود I/O و 10 به معنای اشباع ۱۰۰٪ حداقل یکی از دیسک‌ها است. .Sp گزینه \fB\-\-io\fR هم \fB\-\-start\-io\fR و هم \fB\-\-run\-io\fR را تنظیم خواهد کرد. .IP "\fB\-\-load\fR \fIloadlimit\fR" 9 .IX Item "--load loadlimit" .PD 0 .IP "\fB\-L\fR \fIloadlimit\fR" 9 .IX Item "-L loadlimit" .PD حد مجاز برای میانگین بار کاری (load average). .Sp گزینه \fB\-\-load\fR هم \fB\-\-start\-load\fR و هم \fB\-\-run\-load\fR را تنظیم خواهد کرد. .IP "\fB\-\-mem\fR \fImemlimit\fR" 9 .IX Item "--mem memlimit" .PD 0 .IP "\fB\-M\fR \fImemlimit\fR" 9 .IX Item "-M memlimit" .PD حد مجاز حافظه آزاد. این مقدار نشان‌دهنده بایت‌های در دسترس به صورت آزاد + حافظه موقت (free + cache) است. رفتار این حد برخلاف سایر محدودیت‌هاست: اگر وضعیت سیستم بالاتر از حد باشد، برنامه اجرا می‌شود؛ اگر زیر حد باشد، برنامه متوقف خواهد شد. .Sp مقدار \fImemlimit\fR می‌تواند پسوندهای K، M، G، T یا P داشته باشد که به ترتیب اندازه را در 1024، 1048576، 1073741824 یا 1099511627776 ضرب می‌کند. .Sp گزینه \fB\-\-mem\fR هم \fB\-\-start\-mem\fR و هم \fB\-\-run\-mem\fR را تنظیم خواهد کرد. .IP \fB\-\-noswap\fR 9 .IX Item "--noswap" .PD 0 .IP \fB\-N\fR 9 .IX Item "-N" .PD بدون سواپ. اگر سیستم هم‌زمان عملیات سواپ به داخل و خارج را انجام دهد، نشانه بارزی از فشار شدید بر حافظه سیستم است. .Sp اگر سیستم هم‌زمان عملیات سواپ به داخل و خارج انجام دهد، گزینه \fB\-\-noswap\fR فراتر از حد مجاز در نظر گرفته می‌شود. .Sp گزینه \fB\-\-noswap\fR هم \fB\-\-start\-noswap\fR و هم \fB\-\-run\-noswap\fR را تنظیم خواهد کرد. .IP \fB\-\-net\fR 9 .IX Item "--net" مخفف گزینه \fB\-\-nethops 3\fR. .IP "\fB\-\-nethops\fR \fIh\fR" 9 .IX Item "--nethops h" اولویت شبکه (Network nice). در صورت وجود بار اضافی روی اتصال اینترنت، برنامه متوقف می‌شود. .Sp ابزار \fBniceload\fR مسیریابی در فاصله \fIh\fR جهش (hop) نزدیک‌تر به اینترنت را پیدا می‌کند. سپس هر ثانیه به آن \fBping\fR می‌زند. اگر میزان تاخیر بیش از ۵۰٪ بیشتر از میانه باشد، وضعیت فراتر از حد مجاز تلقی می‌گردد. .Sp گزینه \fB\-\-nethops\fR می‌تواند با \fB\-\-hard\fR ترکیب شود. بدون \fB\-\-hard\fR ممکن است برنامه آن‌قدر ترافیک در صف قرار دهد که پاکسازی آن بیشتر از زمان \fB\-\-suspend\fR طول بکشد. گزینه \fB\-\-hard\fR برای ترافیکی مفید است که با تعلیق برای مدت طولانی‌تر دچار مشکل نمی‌شود. .Sp گزینه \fB\-\-nethops\fR می‌تواند با مقدار بالایی از \fB\-\-suspend\fR ترکیب شود. بدین ترتیب برنامه اجازه می‌یابد گه‌گاه مقداری ترافیک رد و بدل کند. این کار برای زنده نگه‌داشتن اتصال مفید است. .IP "\fB\-n\fR \fIniceness\fR" 9 .IX Item "-n niceness" .PD 0 .IP "\fB\-\-nice\fR \fIniceness\fR" 9 .IX Item "--nice niceness" .PD تنظیم مقدار اولویت (niceness). به \fBnice\fR(1) مراجعه کنید. .IP "\fB\-p\fR \fIPID\fR[,\fIPID\fR]" 9 .IX Item "-p PID[,PID]" .PD 0 .IP "\fB\-\-pid\fR \fIPID\fR[,\fIPID\fR]" 9 .IX Item "--pid PID[,PID]" .PD شناسه‌های فرایند (PID) مربوط به فرایندهایی که باید معلق شوند. می‌توانید چندین شناسه فرایند را با تکرار \fB\-p\fR \fIPID\fR یا با جداسازی PIDها با کاما مشخص کنید. .IP "\fB\-\-prg\fR \fIprogram\fR" 9 .IX Item "--prg program" .PD 0.IP "\fB\-\-program\fR \fIprogram\fR" 9 .IX Item "--program program" .PD نام برنامهٔ در حال اجرا برای تعلیق. می‌توانید چند برنامه را با تکرار \fB\-\-prg\fR \fIprogram\fR مشخص کنید. اگر هیچ فرایندی با نام \fIprogram\fR یافت نشود، \fBniceload\fR زیررشته‌های حاوی \fIprogram\fR را جست‌وجو خواهد کرد. .IP \fB\-\-quote\fR 9 .IX Item "--quote" .PD 0 .IP \fB\-q\fR 9 .IX Item "-q" .PD نقل‌قول کردن (کوتیشن‌گذاری) خط فرمان. زمانی مفید است که دستور حاوی نویسه‌هایی چون *، $، > و " باشد که نباید توسط پوسته تفسیر شوند. .IP "\fB\-\-run\-io\fR \fIiolimit\fR" 9 .IX Item "--run-io iolimit" .PD 0 .IP "\fB\-\-ri\fR \fIiolimit\fR" 9 .IX Item "--ri iolimit" .IP "\fB\-\-run\-load\fR \fIloadlimit\fR" 9 .IX Item "--run-load loadlimit" .IP "\fB\-\-rl\fR \fIloadlimit\fR" 9 .IX Item "--rl loadlimit" .IP "\fB\-\-run\-mem\fR \fImemlimit\fR" 9 .IX Item "--run-mem memlimit" .IP "\fB\-\-rm\fR \fImemlimit\fR" 9 .IX Item "--rm memlimit" .PD حد مجاز هنگام اجرا. اگر بار سیستم بالاتر از این حد باشد، سرعت برنامهٔ در حال اجرا کاهش می‌یابد. ببینید: \fB\-\-io\fR، \fB\-\-load\fR، \fB\-\-mem\fR، \fB\-\-noswap\fR. .IP "\fB\-\-sensor\fR \fIsensor program\fR" 9 .IX Item "--sensor sensor program" خواندن حسگر. از \fIsensor program\fR برای خواندن یک حسگر استفاده کنید. .Sp این دستور دمای پردازنده (CPU) را در GNU/Linux زیر ۸۰ درجهٔ سانتی‌گراد نگه می‌دارد: .Sp .Vb 1 \& niceload \-l 80000 \-f 0.001 \-\-sensor \*(Aqsort \-n /sys/devices/platform/coretemp*/temp*_input\*(Aq gzip * .Ve .Sp این دستور در صورتی که فضای دیسک کمتر از 100000 باشد متوقف خواهد شد: .Sp .Vb 1 \& niceload \-H \-l \-100000 \-\-sensor "df . | awk \*(Aq{ print \e$4 }\*(Aq" echo .Ve .IP "\fB\-\-start\-io\fR \fIiolimit\fR" 9 .IX Item "--start-io iolimit" .PD 0 .IP "\fB\-\-si\fR \fIiolimit\fR" 9 .IX Item "--si iolimit" .IP "\fB\-\-start\-load\fR \fIloadlimit\fR" 9 .IX Item "--start-load loadlimit" .IP "\fB\-\-sl\fR \fIloadlimit\fR" 9 .IX Item "--sl loadlimit" .IP "\fB\-\-start\-mem\fR \fImemlimit\fR" 9 .IX Item "--start-mem memlimit" .IP "\fB\-\-sm\fR \fImemlimit\fR" 9 .IX Item "--sm memlimit" .PD حد مجاز برای شروع. برنامه تا زمانی که بار سیستم به زیر این حد نرسد، آغاز نخواهد شد. ببینید: \fB\-\-io\fR، \fB\-\-load\fR، \fB\-\-mem\fR، \fB\-\-noswap\fR. .IP \fB\-\-soft\fR 9 .IX Item "--soft" .PD 0 .IP \fB\-S\fR 9 .IX Item "-S" .PD حد ملایم (Soft limit). برنامهٔ \fBniceload\fR یک فرایند را برای مدتی تعلیق کرده و سپس اجازه می‌دهد برای یک ثانیه اجرا شود؛ بنابراین تنها زمانی که سیستم بالاتر از یکی از حدود داده‌شده باشد، سرعت فرایند کاهش می‌یابد. این رفتار پیش‌فرض است. .IP "\fB\-\-suspend\fR \fISEC\fR" 9 .IX Item "--suspend SEC" .PD 0 .IP "\fB\-s\fR \fISEC\fR" 9 .IX Item "-s SEC" .PD زمان تعلیق. با رسیدن به بیشینهٔ میانگین بار (max load average)، دستور را به مدت این تعداد ثانیه به حالت تعلیق درمی‌آورد. .IP "\fB\-\-recheck\fR \fISEC\fR" 9 .IX Item "--recheck SEC" .PD 0 .IP "\fB\-t\fR \fISEC\fR" 9 .IX Item "-t SEC" .PD زمان بررسی مجدد بار. پیش از بررسی دوبارهٔ بار سیستم، به مدت \fISEC\fR ثانیه درنگ می‌کند. پیش‌فرض ۱ ثانیه است. .IP \fB\-\-verbose\fR 9 .IX Item "--verbose" .PD 0 .IP \fB\-v\fR 9 .IX Item "-v" .PD پرگو (Verbose). چاپ خروجی‌های اضافی دربارهٔ آنچه در حال رخ دادن است. تا زمانی که کاملاً از عملکرد دستور مطمئن نشده‌اید، از \fB\-v\fR استفاده کنید. .SH "مثال: مشاهده niceload در عمل (EXAMPLE: See niceload in action)" .IX Header "EXAMPLE: See niceload in action" در پایانهٔ ۱ اجرا کنید: top .PP در پایانهٔ ۲ اجرا کنید: .PP \&\fBniceload \-q perl \-e \*(Aq$|=1;do{$l==$r or print "."; \fR\f(CB$l\fR\fB=$r}until(($r=time\-$^T)\fR>\fB50)\*(Aq\fR .PP این دستور به مدت ۵۰ ثانیه در هر ثانیه یک \*(Aq.\*(Aq چاپ کرده و بار پردازشی بالایی روی CPU تحمیل می‌کند. با رسیدن بار به 1.0، فرایند معلق می‌شود. .SH "مثال: اجرای updatedb (EXAMPLE: Run updatedb)" .IX Header "EXAMPLE: Run updatedb" اجرای \fBupdatedb\fR اغلب می‌تواند سیستم را دچار کمبود ورودی/خروجی (I/O) دیسک کند و در نتیجه به بار کاری بالایی منجر شود. .PP اجرای \fBupdatedb\fR همراه با تعلیق آن در صورت فراتر رفتن بار سیستم از 2.00: .PP \&\fBniceload \-L 2 updatedb\fR .SH "مثال: اجرای rsync (EXAMPLE: Run rsync)" .IX Header "EXAMPLE: Run rsync" \&\fBrsync\fR نیز دقیقاً مانند \fBupdatedb\fR می‌تواند منابع ورودی/خروجی دیسک را به شدت درگیر کرده و موجب بار کاری بالا شود. .PP اجرای \fBrsync\fR با حفظ بار سیستم زیر ۳.۴. اگر بار به ۷ برسد، به مدت (7\-3.4)*12 ثانیه درنگ می‌کند: .PP \&\fBniceload \-L 3.4 \-f 12 rsync \-Ha /home/ /backup/home/\fR.SH "مثال: اطمینان از کافی بودن حافظهٔ موقت دیسک (EXAMPLE: Ensure enough disk cache)" .IX Header "EXAMPLE: Ensure enough disk cache" فرض کنید برنامهٔ \fBfoo\fR به‌شکلی سنگین از فایل‌هایی با اندازهٔ ۲ گیگابایت استفاده می‌کند. \fBfoo\fR اگر فایل‌ها در حافظهٔ موقت دیسک (کَش) باشند سریع اجرا خواهد شد، اما اگر در کَش نباشند به‌شدت کُند خواهد بود. .PP برای اطمینان از رزرو ۲ گیگابایت برای حافظهٔ موقت دیسک، دستور زیر را اجرا کنید: .PP \&\fBniceload \-\-hard \-\-run\-mem 2g foo\fR .PP این کار تضمین نمی‌کند که ۲ گیگابایت حافظه حتماً برای فایل‌های مربوط به \fBfoo\fR استفاده شود، اما در صورتی که حافظه برای کَش دیسک بیش از حد کم شود، اجرای \fBfoo\fR را متوقف خواهد کرد. .SH "متغیرهای محیطی (ENVIRONMENT VARIABLES)" .IX Header "ENVIRONMENT VARIABLES" هیچ‌کدام. در نسخه‌های آینده \f(CW$NICELOAD\fR قادر به نگهداری تنظیمات پیش‌فرض خواهد بود. .SH "وضعیت خروج (EXIT STATUS)" .IX Header "EXIT STATUS" وضعیت خروج باید همانند وضعیتی باشد که توسط دستورِ در حال اجرا بازگردانده می‌شود (آزمایش‌نشده). .SH "گزارش باگ‌ها (REPORTING BUGS)" .IX Header "REPORTING BUGS" گزارش باگ‌ها را به بفرستید. .SH "نویسنده (AUTHOR)" .IX Header "AUTHOR" Copyright (C) 2004\-11\-19 Ole Tange, http://ole.tange.dk .PP Copyright (C) 2005\-2010 Ole Tange, http://ole.tange.dk .PP Copyright (C) 2010\-2026 Ole Tange, http://ole.tange.dk and Free Software Foundation, Inc. .SH "مجوز (LICENSE)" .IX Header "LICENSE" این برنامه یک نرم‌افزار آزاد است؛ شما می‌توانید تحت شرایط «پروانهٔ عمومی همگانی گنو» (GNU General Public License) که بنیاد نرم‌افزارهای آزاد منتشر کرده است، آن را بازتوزیع کرده یا تغییر دهید؛ چه نسخهٔ ۳ پروانه و چه (به انتخاب خودتان) هر نسخهٔ متأخر دیگری. .PP این برنامه با این امید که مفید واقع شود توزیع شده است، اما بدون هیچ‌گونه ضمانت؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف مشخص. برای جزئیات بیشتر «پروانهٔ عمومی همگانی گنو» را مطالعه کنید. .PP شما باید به همراه این برنامه یک نسخه از پروانهٔ عمومی همگانی گنو را دریافت کرده باشید. در غیر این صورت، به مراجعه کنید. .SS "مجوز مستندات ۱ (Documentation license I)" .IX Subsection "Documentation license I" اجازهٔ تکثیر، توزیع و/یا تغییر این مستندات تحت شرایط «مجوز مستندات آزاد گنو» (GNU Free Documentation License)، نسخهٔ ۱.۳ یا هر نسخهٔ متأخر دیگری که بنیاد نرم‌افزارهای آزاد منتشر کرده، صادر شده است؛ بدون بخش‌های تغییرناپذیر، بدون متن‌های روی جلد و بدون متن‌های پشت جلد. یک نسخه از این مجوز در فایل LICENSES/GFDL\-1.3\-or\-later.txt گنجانده شده است. .SS "مجوز مستندات ۲ (Documentation license II)" .IX Subsection "Documentation license II" شما مجاز هستید: .IP "\fBاشتراک‌گذاری (to Share)\fR" 9 .IX Item "to Share" به تکثیر، توزیع و انتقال اثر .IP "\fBبازآفرینی (to Remix)\fR" 9 .IX Item "to Remix" به تطبیق و ایجاد اثر اقتباسی .PP تحت شرایط زیر: .IP "\fBانتساب (Attribution)\fR" 9 .IX Item "Attribution" باید به شیوه‌ای که توسط پدیدآورنده یا اعطاکنندهٔ مجوز مشخص شده است، اثر را انتساب دهید (اما نه به هیچ شیوه‌ای که نشان دهد آن‌ها شما یا استفاده‌تان از اثر را تأیید می‌کنند). .IP "\fBاشتراک مساوی (Share Alike)\fR" 9 .IX Item "Share Alike" اگر این اثر را تغییر دهید، دگرگون کنید، یا بر پایهٔ آن اثری بسازید، مجاز هستید اثر حاصل را تنها تحت همان مجوز، مجوزی مشابه یا سازگار با آن توزیع کنید. .PP با این تفهیم که: .IP "\fBچشم‌پوشی (Waiver)\fR" 9 .IX Item "Waiver" در صورت دریافت اجازه از صاحب حق نشر، هر یک از شرایط فوق می‌تواند نادیده گرفته شود. .IP "\fBمالکیت عمومی (Public Domain)\fR" 9 .IX Item "Public Domain" در مواردی که اثر یا هر یک از بخش‌های آن طبق قوانین حاکم در مالکیت عمومی قرار داشته باشد، این وضعیت به هیچ وجه تحت تأثیر این پروانه قرار نمی‌گیرد. .IP "\fBسایر حقوق (Other Rights)\fR" 9 .IX Item "Other Rights" حقوق زیر به هیچ وجه تحت تأثیر این مجوز قرار نخواهند گرفت: .RS 9 .IP \(bu 2 حقوق استفادهٔ منصفانه (fair use) یا معاملهٔ منصفانهٔ شما، یا سایر استثناها و محدودیت‌های قانونی حق نشر؛ .IP \(bu 2 حقوق معنوی پدیدآورنده؛ .IP \(bu 2 حقوقی که اشخاص دیگر ممکن است در خود اثر یا در نحوهٔ استفاده از آن داشته باشند، مانند حقوق تبلیغات یا حریم خصوصی. .RE .RS 9 .RE .IP "\fBاطلاعیه (Notice)\fR" 9 .IX Item "Notice" برای هرگونه استفادهٔ مجدد یا توزیع، باید شرایط مجوز این اثر را برای دیگران شفاف کنید. .PP یک رونوشت از متن کامل مجوز در فایل LICENCES/CC\-BY\-SA\-4.0.txt موجود است. .SH "وابستگی‌ها (DEPENDENCIES)" .IX Header "DEPENDENCIES" ابزار GNU \fBniceload\fR از Perl و ماژول‌های پرلِ POSIX و Getopt::Long استفاده می‌کند. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBparallel\fR(1), \fBnice\fR(1), \fBuptime\fR(1)