جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره‌های آموزشی
  • وبلاگ
  • درباره ما
  • قوانین و مقررات
  • همکاری با ما
  • تماس با ما
محتوای باز
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]
  • خانه
  • کتاب آنلاین
  • درباره سایت
  • درباره لوگو
  • تماس با ما
محتوای باز
  • صفحه اصلی
  • دوره‌های آموزشی
  • وبلاگ
  • درباره ما
  • قوانین و مقررات
  • همکاری با ما
  • تماس با ما
شروع کنید
آخرین اطلاعیه ها
لطفا برای نمایش اطلاعیه ها وارد شوید
0
[wcas-search-form]

سیگنال‌ها در لینوکس

24 تیر 1399
ارسال شده توسط فرشید نوتاش حقیقت
خط فرمان، گنو/لینوکس
سیگنال

فرمان kill به منظور پایان دادن پروسه‌ها استفاده می‌شود. این فرمان ما را قادر می‌سازد تا اجرای یک برنامه را که رفتار بدی دارد و باعث اختلال در سیستم شده است را متوقف کنیم:

[me@linuxbox ~]$ xlogo &
[1] 28401
[me@linuxbox ~]$ kill 28401
[1]+ Terminated xlogo

ابتدا برنامه xlogo را در پس‌زمینه اجرا می‌کنیم. شل PID پروسه را چاپ می‌کند. سپس از فرمان kill برای از بین بردن پروسه استفاده می‌کنیم.

به این منظور پس از فرمان kill شماره PID را وارد کنید:

kill 28401

فرمان kill دقیقاً پروسه را از بین نمی‌برد. بلکه به جای آن سیگنال‌هایی برای آن ارسال می‌کند. سیگنال‌ها یکی از انواع روش‌های مختلفی هستند که سیستم‌عامل با برنامه‌ها ارتباط برقرار می‌کند. ما قبلا با استفاده از Ctrl+C و Ctrl+Z این ارتباط را مشاهده کرده‌ایم. وقتی که ترمینال این کلیدها را دریافت می‌کند سیگنالی برای برنامه ارسال می‌کند. در مورد Ctrl+C یک سیگنال با نام INT (interrupt) ارسال می‌کند و زمانی که Ctrl+Z را فشار می‌دهیم یک سیگنال با نام TSTP (Terminal Stop) را ارسال می‌نماید. برنامه‌ها در عوض به سیگنال‌ها گوش می‌کنند.

این واقعیت که یک برنامه می‌تواند گوش فرا دهد و در برابر سیگنال‌ها عمل کند آن‌ها را قادر می‌سازد که کارهایی مثل ذخیره کار در حین رخداد را در حالتی انجام دهد که سیگنال تخریب را دریافت می‌کند.

ارسال سیگنال به فرآیندها با فرمان kill

رایج‌ترین ترکیب برای فرمان kill به این شکل است:

kill [-signal] PID…

اگر هیچ سیگنالی به خط فرمان اختصاص نیابد، سیگنال TERM (Terminate) به صورت پیش‌فرض ارسال می‌شود. فرمان kill اغلب به منظور ارسال سیگنال‌هایی که در جدول زیر وجود دارد، استفاده می‌شود:

شمارهناممفهوم
1HUPHang Up این بافی مانده روزهای قدیم است که ترمینال‌ها به کامپیوتر از طریق خطوط تلفن و مودم‌ها متصل بودند، سیگنال استفاده می‌شد تا به برنامه‌ها نشان دهند که ترمینال کنترل‌کنننده قطع شده است. تاثیر این سیگنال را می‌توان با بستن یک نشست ترمینال نشان داد. در این حال برنامه‌های در حال اجرا در نمای جلویی ترمینال به سیگنال را دریافت کرده و بسته خواهد شد.
2INTInterrupt یا وقفه. همان عملکرد Ctrl+C را انجام می‌دهد. این سیگنال معمولا یک برنامه را از بین می‌برد.
9KILLKILL این سیگنال ویژه است. نظر به اینکه برنامه‌ها ممکن است سیگنال‌ها را به شیوه‌ای متفاوت بکار ببرند. مثل نادیده گرفتن سیگنال‌ها در این وضعیت سیگنال KILL هرگز به برنامه هدف ارسال نمی‌شود. وقتی که یک پروسه به شیوه‌ای از بین می‌رود که هنوز در حالت درگیری باقی می‌ماند و پاک نمی‌شود. سیگنال KILL به عنوان آخرین چاره برای نابود پروسه استفاده می‌شود.
15TERMTerminate این سیگنال پیشفرض است که توسط فرمان Kill ارسال می‌گردد. اگر یک پروسه هنوز زنده است که سیگنالی را دریافت کند. این سیگنال آن را از بین خواهد برد.
18CONTContinue این یک پروسه را پس از برخورد با سیگنال STOP بازیابی خواهد کرد.
19STOPStop این سیگنال باعث می‌شود که یک پروسه متوقف شده بدون اینکه تخریب گردد سیگنال KILL این سیگنال نیز به پروسه هدف ارسال نمی‌شود در نتیجه نمی‌تواند نادیده گرفته شود.

حال، این فرمان را امتحان می‌کنیم:

[me@linuxbox ~]$ xlogo &
[1] 13546
[me@linuxbox ~]$ kill -1 13546
[1]+ Hangup xlogo

در این مثال برنامه xlogo را در پس‌زمینه اجرا کرده و سپس برای آن یک سیگنال HUP را به همراه kill ارسال می‌کنیم. در نتیجه برنامه xlogo ایان یافته و Shell حاکی از آن است که پروسه پس‌زمینه یک سیگنال Hangup دریافت کرده است. ممکن است برای مشاهده پیام، لازم باشد چندین بار Enter را فشار دهید. توجه داشته باشید که سیگنال ممکن است از طریق شماره و یا نام (شامل اسامی که حروف پیشوند SIG دارند) مشخص شود.

[me@linuxbox ~]$ xlogo &
[1] 13601
[me@linuxbox ~]$ kill -INT 13601
[1]+ Interrupt xlogo
[me@linuxbox ~]$ xlogo &
[1] 13608
[me@linuxbox ~]$ kill -SIGINT 13608
[1]+ Interrupt xlogo

مثال بالا را امتحان کنید و دیگر سیگنال‌ها را آزمایش کنید. به خاطر داشته باشید که شما می‌توانید از jobspecها نیز به جای PIDها استفاده کنید.

پردازش‌ها نیز شبیه فایل‌ها دارای مالک هستند و شما بایستی مالک یک پروسه (و یا کاربر ارشد باشید) تا بتوانید پروسه را با استفاده از kill از بین ببرید.

علاوه بر سیگنال‌هایی که در جدول قبلی یافت می‌شوند که اغلب هم به همراه kill به کار برده می‌شوند، جدول زیر سیگنال‌های رایج دیگر را لیست کرده است:

شمارهناممفهوم
3QUITخروج
11SEGVSegmentation violation این سیگنال در صورتی ارسال می‌گردد که یک برنامه به صورت غیرقانونی از رم استفاده کند.
20TSTPTerminal Stop این سیگنالی است که وقتی ترمینال می‌فرستد که Ctrl+Z را وارد کنید. بر خلاف TStop Stop توسط برنامه دریافت می‌گردد ولی برنامه ممکن است آن را نادیده بگیرد.
28WINCHWindow Change این سیگنالی است که توسط سیستم زمانی که اندازه یک پنجره را تغییر می‌دهید ارسال می‌گردد. برخی برنامه‌ها شبیه less و top به نحوی این سیگنال پاسخ می‌دهد تا اندازه خود را در پنجره هم اندازه کنند.

برای دریافت لیستی کامل‌تر از سیگنال‌ها از فرمان زیر استفاده کنید:

[me@linuxbox ~]$ kill -l

ارسال سیگنال‌ها به چندین فرآیند با فرمان killall

همچنین ممکن است که سیگنال‌هایی را به چندین فرآیند که یک برنامه یا نام کاربری مشترک دارند را ارسال کنید. با استفاده از ترکیب زیر چگونگی استفاده از فرمان killall قابل پیاده‌سازی است:

killall [-u user] [-signal] name…

برای شرح بیشتر، چندین نمونه از برنامه xlogo را آغاز کرده و سپس با killall همگی را نابود می‌کنیم:

[me@linuxbox ~]$ xlogo &
[1] 18801
[me@linuxbox ~]$ xlogo &
[2] 18802
[me@linuxbox ~]$ killall xlogo
[1]- Terminated xlogo
[2]+ Terminated xlogo

به یاد داشته باشید که دست مثل فرمان kill برای استفاده از killall نیاز به مجوزهای کاربر ارشد (Super User) دارید.

دیگر فرمان‌های مرتبط با پروسه‌ها

از آنجایی که مانیتور پروسه‌ها یک وظیفه پراهمیت مدیریت سیستم است، فرمان‌های زیادی برای این کار در نظر گرفته شده‌اند. جدول زیر لیستی از این فرمان‌ها را نشان می‌دهد:

فرمانشرح
pstreeارسال خروجی از لیست مرتب در یک الگوی درختی‌شکل که رابطه والد و فرزندی بین پروسه‌ها را نشان می‌دهد.
vmstatارسال خروجی یک تصویر از منابع در حال استفاده حافظه، swap و دیسک. برای داشتن یک نمایش دایمی یک زمان وقفه را به ثانیه پس از فرمان بیاورید. مثل vmstat 5
xloadیک برنامه گرافیکی که یک گراف حاوی بار سیستم هست را نمایش می‌دهد.
tloadشبیه xload ولی بار گراف را در داخل ترمینال می‌کشد.
منبع: لینوکس‌سیزن نوشته فرشید نوتاش حقیقت
برچسب ها: CLICommand Lineخط فرمانخط فرمان لینوکس
درباره فرشید نوتاش حقیقت

همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرم‌افزارهای آزاد/ متن‌باز و سیستم‌عامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.

نوشته‌های بیشتر از فرشید نوتاش حقیقت
قبلی کنترل پروسه‌ها در خط فرمان لینوکس
بعدی Cryptkeeper برنامه قفل پوشه در اوبونتو

دیدگاهتان را بنویسید لغو پاسخ

این سایت از اکیسمت برای کاهش جفنگ استفاده می‌کند. درباره چگونگی پردازش داده‌های دیدگاه خود بیشتر بدانید.

جستجو
جستجو برای:
دسته‌بندی موضوعی مقالات
  • برنامه‌نویسی
    • پایتون
    • دواپس
  • پایگاه‌داده
    • MariaDB
    • MySQL
  • تجارت الکترونیک
    • بازاریابی اینترنتی
    • دیجیتال مارکتینگ
    • شبکه‌های اجتماعی
  • جامعه کاربری
    • لاگ
  • دسته‌بندی نشده
  • شبکه و امنیت
  • طراحی وب
    • سئو
    • سیستم مدیریت محتوا
      • وردپرس
  • فناوری‌های نوظهور
    • اینترنت اشیاء
    • رایانش ابری
      • OpenStack
    • کلان‌داده‌ها
  • گنو/لینوکس
    • توزیع
      • CentOS
      • اوبونتو
      • دبیان
      • فدورا
    • چیست
    • خط فرمان
  • مهاجرت به آزاد/متن‌باز
  • نرم‌افزار
    • اداری
      • لیبره آفیس
        • ایمپرس
        • بیس
        • دراو
        • رایتر
        • کالک
    • کاربردی
    • گرافیک و انیمیشن
      • بلندر
      • گیمپ
نماد الکترونیکی (اینماد)
پرداخت‌یار

محتوای باز؛ مرجع آموزشی نرم‌افزارهای آزاد/ متن‌باز

از اینکه قصد همکاری با رسانه «محتوای باز» را دارید بسیار خرسندیم و این مایه مباهات ماست.

نحوه همکاری با ما چندان پیچیده نیست و شرایط آن در ادامه، ارائه گردیده است.

دستمزد مدرسین

پیش از بیان شرایط ضبط ویدئو شایان ذکر است اشاره‌ای به دستمزد مدرسین سایت داشته باشیم.

شما ممکن است در دو حالت تمایل به نشر ویدئو خود را داشته باشید: یا آن را رایگان در اختیار عموم قرار دهید و یا اینکه در قبال فروش آن از خریدار وجه مربوطه محصول را اخذ نمایید.

صرف نظر از هر حالت ممکنه، می‌بایست شرایطی که در ادامه ذکر شده‌اند را رعایت کرده باشید.

در حالت اول (رایگان) رسانه محتوای باز (Open Content)، نه وجهی از شما برای نشر ویدئو می‌گیرد و نه وجهی به شما پرداخت می‌نماید و دوره آموزشی شما را به رایگان منتشر می‌کند.

اما در حالت بعدی طریقه همکاری به روش درآمد از فروش خواهد بود، به گونه‌ای که 70 درصد از کل مبلغ فروش دوره آموزشی متعلق به مدرس دوره بوده و 30 درصد مابقی به رسانه محتوای باز تعلق می‌گیرد.

شرایط کلی ضبط دوره آموزشی

دوره آموزشی مربوطه، صرف نظر از هر محتوایی که دارد می‌بایست در یکی از توزیعات گنو/لینوکسی ضبط شده باشد. (به‌عنوان مثال دوره دروپال در اوبونتو، دوره آموزشی کار با آردوینو در دبیان و امثالهم). اگر دوره آموزشی شما در محیط ویندوز و یا هر پلتفرم/سیستم‌عامل دیگری ضبط شده باشد از همکاری با شما معذوریم.

پیشنهاد می‌گردد برای ضبط دوره آموزشی در توزیع گنو/لینوکس از ابزار قدرتمند OBS استفاده نمایید. البته این صرفا یک پیشنهاد است و شما می‌توانید از هر ابزار مناسب دیگری برای این کار بهره ببرید.

برای آشنایی یا تسلط بیشتر می‌توانید دوره رایگان آموزش OBS محمد عابدینی را ببینید:

مشاهده دوره آموزش OBS
شرایط کیفی ضبط دوره آموزشی

کیفیت صدا از اهمیت ویژه‌ای برخوردار می‌باشد و می‌بایست فاقد هر گونه نویز یا صدای اضافی دیگری (صدای محیط پیرامون) باشد.

دوره آموزشی تهیه شده صرفا باید برای رسانه محتوای باز تدوین شده باشد و در هیچ سایت مشابه دیگری قرار نگرفته باشد.

از قرار دادن موسیقی متن، در بک‌گراند دوره آموزشی شدیدا پرهیز کنید. این کار موجب حواس‌پرتی مخاطب و ضعیف شدن صدای مدرس می‌گردد.

دوره آموزشی ضبط شده می‌باید فاقد هر گونه لوگو یا آدرس سایت دیگری (در گوشه تصویر یا بک‌گراند صفحه دسکتاپ و هر جای دیگری) باشد.

در حین دوره، مدرس نباید به برند خاصی اشاره کند که جز رقبای ما به‌شمار می‌آیند.

مدرس باید در ابتدا در اواسط و در انتهای دوره به برند ما یعنی رسانه محتوای باز (Open Content) بصورت کلامی اشاره نماید.

مدرس، هنگام تدریس نباید تپق زده، سرفه یا عطسه کند یا صدای قورت دادن بزاقش شنیده شود و بایستی با صدای رسا، دوستانه و پرانرژی به تدریس بپردازد.

قبل از تدوین دوره آموزشی حتما با ما در تماس باشید و یک ویدیوی چنددقیقه‌ای (ترجیحا 5 الی 10 دقیقه)، بصورت نمونه‌کار برای ما بفرستید.

از همکاری با شما سپاسگزاریم.

فراخوان همکاری