خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
آموزش استفاده از دستور Pkill در لینوکس
این مقاله اصول اولیه دستور pkill لینوکس را پوشش می دهد.
pkill یک ابزار خط فرمان است که سیگنال ها را بر اساس پارامترهای داده شده به پردازش های یک اپلیکیشنی که هم اکنون در حال اجراست، ارسال می کند. پردازش ها را می توان با نام کامل یا جزئی آنها، کاربری که پردازش را اجرا می کند یا سایر ویژگی ها مشخص کرد.
دستور pkill بخشی از بسته procps (یا procps-ng) است که تقریباً روی تمام توزیعهای لینوکس از پیش نصب شده است. pkill یک پکیج پایه در برنامه pgrep است که فقط لیستی از فرآیندها را نمایش می کند.
تطبیق PATTERN با استفاده از regular expression ها مشخص می شود.
هنگامی که pkill بدون هیچ گزینه ای فراخوانی می شود، pkill سیگنال 15 (TERM) را به PID همه برنامه های در حال اجرا که با نام داده شده مطابقت دارند ارسال می کند. به عنوان مثال، برای استاپ کردن سریع تمام فرآیندهای فایرفاکس، دستور زیر را اجرا کنید:
زمانی که حداقل یک فرآیند در حال اجرا با نام داده شده مطابقت داشته باشد، این دستور 0 را برمی گرداند. در غیر این صورت، کد خروجی 1 خواهد بود که این می تواند هنگام نوشتن اسکریپت های shell مفید باشد.
برای ارسال سیگنال متفاوت به فرآیندهای منطبق، دستور pkill را با گزینه signal-- و به دنبال آن نام عددی سیگنال یا نام واقعی آن اجرا کنید. راه دیگر برای ارسال سیگنال، اجرای pkill و به دنبال آن نام یا شماره سیگنال با پیشوند space یا خط فاصله (-) است.
از دستور kill -l برای لیست کردن تمام سیگنال های موجود استفاده کنید. رایج ترین سیگنال های مورد استفاده عبارتند از:
1 (HUP): برای load کردن دوباره ی یک فرآیند.
9 (kill): از بین بردن یا بستن یک فرآیند.
15 (TRM): متوقف یا استاپ کردن یک فرآیند.
سیگنال ها را می توان به سه روش مختلف مشخص کرد:
با استفاده از یک عدد (به عنوان مثال، -1)
با پیشوند "SIG" (به عنوان مثال، -SIGHUP)
بدون پیشوند "SIG" (به عنوان مثال، -HUP)
به عنوان مثال، برای reload کردن فرآیندهای Nginx دستور زیر را اجرا کنید:
Pkill از regular expression ها برای مطابقت با نام فرآیندها استفاده می کند. همیشه ایده خوبی است که از دستور pgrep برای نمایش پردازش های منطبق قبل از ارسال سیگنال به آنها استفاده کنید. به عنوان مثال، لیست کردن تمام پردازش هایی که حاوی "ssh" در نام خود هستند:
اگر می خواهید سیگنالی را فقط به پردازش هایی ارسال کنید که نام آنها دقیقاً مطابق الگوی سرچ هستند، از دستور زیر می توانید استفاده کنید:
کاراکتر ^ در ابتدای یک رشته یعنی شروع الگو و $ در پایان رشته یعنی پایان الگو که الگوی تطبیق مطابق با آن باید سرچ را انجام دهد. پس در دستور فوق به وضوح مشخص است که ssh^ , $ قرار دارد و جستجو رشته ssh را شامل می شود.
به طور پیش فرض، pkill فقط با نام فرآیند مطابقت دارد. هنگامی که از گزینه f- استفاده می شود، دستور با لیست های کامل آرگومان مطابقت دارد. اگر دستور حاوی space یا فاصله باشد باید آن را در " " قرار داد.
از گزینه -u استفاده کنید pkill فرآیندهای در حال اجرا را با کاربری که شما تعیین می کنید مطابقت می دهد و پردازش های اجرا شده با نام آن کرابر را می بندد. پس مراقب باشید که نام کاربری که با آن لاگین کرده اید را در دستور قید نکنید.
برای تعیین کردن چندین کاربر، نام آنها را با کاما جدا کنید:
همچنین می توانید گزینه ها و الگوهای سرچ را با هم ترکیب کنید. به عنوان مثال برای ارسال سیگنال KILL برای همه فرآیندهایی که تحت نام کاربری "mark" اجرا شده اند و حاوی "gnome" در نام شان هستند، دستور زیر را باید اجرا کنید:
برای نمایش فقط آخرین (قدیمیترین) یا اخیراً (جدیدترین) فرآیندهایی که استارت و اجرا شدهاند، از گزینه n- (برای جدیدترین) یا o- (برای قدیمیترین) استفاده کنید.
pkill یک ابزار خط فرمان است که سیگنال ها را بر اساس پارامترهای داده شده به پردازش های یک اپلیکیشنی که هم اکنون در حال اجراست، ارسال می کند. پردازش ها را می توان با نام کامل یا جزئی آنها، کاربری که پردازش را اجرا می کند یا سایر ویژگی ها مشخص کرد.
دستور pkill بخشی از بسته procps (یا procps-ng) است که تقریباً روی تمام توزیعهای لینوکس از پیش نصب شده است. pkill یک پکیج پایه در برنامه pgrep است که فقط لیستی از فرآیندها را نمایش می کند.
How to Use the pkill Command
شکل کلی Syntax دستور pkill بصورت زیر است:
pkill [OPTIONS] PATTERN
تطبیق PATTERN با استفاده از regular expression ها مشخص می شود.
هنگامی که pkill بدون هیچ گزینه ای فراخوانی می شود، pkill سیگنال 15 (TERM) را به PID همه برنامه های در حال اجرا که با نام داده شده مطابقت دارند ارسال می کند. به عنوان مثال، برای استاپ کردن سریع تمام فرآیندهای فایرفاکس، دستور زیر را اجرا کنید:
pkill -15 firefox
زمانی که حداقل یک فرآیند در حال اجرا با نام داده شده مطابقت داشته باشد، این دستور 0 را برمی گرداند. در غیر این صورت، کد خروجی 1 خواهد بود که این می تواند هنگام نوشتن اسکریپت های shell مفید باشد.
برای ارسال سیگنال متفاوت به فرآیندهای منطبق، دستور pkill را با گزینه signal-- و به دنبال آن نام عددی سیگنال یا نام واقعی آن اجرا کنید. راه دیگر برای ارسال سیگنال، اجرای pkill و به دنبال آن نام یا شماره سیگنال با پیشوند space یا خط فاصله (-) است.
از دستور kill -l برای لیست کردن تمام سیگنال های موجود استفاده کنید. رایج ترین سیگنال های مورد استفاده عبارتند از:
1 (HUP): برای load کردن دوباره ی یک فرآیند.
9 (kill): از بین بردن یا بستن یک فرآیند.
15 (TRM): متوقف یا استاپ کردن یک فرآیند.
سیگنال ها را می توان به سه روش مختلف مشخص کرد:
با استفاده از یک عدد (به عنوان مثال، -1)
با پیشوند "SIG" (به عنوان مثال، -SIGHUP)
بدون پیشوند "SIG" (به عنوان مثال، -HUP)
به عنوان مثال، برای reload کردن فرآیندهای Nginx دستور زیر را اجرا کنید:
pkill -HUP nginx
Pkill از regular expression ها برای مطابقت با نام فرآیندها استفاده می کند. همیشه ایده خوبی است که از دستور pgrep برای نمایش پردازش های منطبق قبل از ارسال سیگنال به آنها استفاده کنید. به عنوان مثال، لیست کردن تمام پردازش هایی که حاوی "ssh" در نام خود هستند:
1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent
اگر می خواهید سیگنالی را فقط به پردازش هایی ارسال کنید که نام آنها دقیقاً مطابق الگوی سرچ هستند، از دستور زیر می توانید استفاده کنید:
pkill '^ssh$'
کاراکتر ^ در ابتدای یک رشته یعنی شروع الگو و $ در پایان رشته یعنی پایان الگو که الگوی تطبیق مطابق با آن باید سرچ را انجام دهد. پس در دستور فوق به وضوح مشخص است که ssh^ , $ قرار دارد و جستجو رشته ssh را شامل می شود.
به طور پیش فرض، pkill فقط با نام فرآیند مطابقت دارد. هنگامی که از گزینه f- استفاده می شود، دستور با لیست های کامل آرگومان مطابقت دارد. اگر دستور حاوی space یا فاصله باشد باید آن را در " " قرار داد.
pkill -9 -f "ping 8.8.8.8"
از گزینه -u استفاده کنید pkill فرآیندهای در حال اجرا را با کاربری که شما تعیین می کنید مطابقت می دهد و پردازش های اجرا شده با نام آن کرابر را می بندد. پس مراقب باشید که نام کاربری که با آن لاگین کرده اید را در دستور قید نکنید.
pkill -u mark
برای تعیین کردن چندین کاربر، نام آنها را با کاما جدا کنید:
pkill -u mark,danny
همچنین می توانید گزینه ها و الگوهای سرچ را با هم ترکیب کنید. به عنوان مثال برای ارسال سیگنال KILL برای همه فرآیندهایی که تحت نام کاربری "mark" اجرا شده اند و حاوی "gnome" در نام شان هستند، دستور زیر را باید اجرا کنید:
pkill -9 -u mark gnome
برای نمایش فقط آخرین (قدیمیترین) یا اخیراً (جدیدترین) فرآیندهایی که استارت و اجرا شدهاند، از گزینه n- (برای جدیدترین) یا o- (برای قدیمیترین) استفاده کنید.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: