مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس

فرآیندها و سرویس‌ها در لینوکس

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

کاربرد مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس

مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس در مواقع مختلفی مورد استفاده قرار می‌گیرد که برخی از مهم‌ترین موارد مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس در زیر آمده است.

راه‌اندازی و توقف سرویس‌ها

زمان بوت شدن سیستم: وقتی سیستم لینوکسی راه‌اندازی می‌شود، سرویس‌های حیاتی مانند شبکه، دیتابیس، سرویس‌های وب و غیره به صورت خودکار اجرا می‌شوند. مدیریت سرویس‌ها در این مرحله مهم است تا مطمئن شویم سرویس‌های ضروری به درستی اجرا شده‌اند.
راه‌اندازی و توقف سرویس‌ها به صورت دستی: اگر نیاز به اجرای یک سرویس خاص در لحظه‌ای خاص دارید یا باید سرویس خاصی را متوقف کنید (مثلاً برای عیب‌یابی)، دستورات مدیریت سرویس‌ها مانند systemctl start یا systemctl stop استفاده می‌شود.

عیب‌یابی و رفع اشکال

بررسی مشکلات سرویس‌ها: اگر یک سرویس به درستی کار نکند یا متوقف شود، می‌توانید با بررسی وضعیت آن (از طریق systemctl status) علت مشکل را پیدا کرده و آن را رفع کنید.
بررسی مشکلات فرآیندها: ممکن است یک فرآیند منابع زیادی مصرف کند یا به درستی اجرا نشود. با استفاده از ابزارهایی مانند top، ps یا htop، می‌توانید فرآیندهای مشکل‌دار را شناسایی و آن‌ها را خاتمه دهید.

مدیریت منابع سیستم

پایش منابع سیستم: اگر سیستم شما کند شده یا منابعی مانند CPU یا RAM به شدت مصرف می‌شود، می‌توانید با استفاده از ابزارهایی مثل top و htop فرآیندهای سنگین را شناسایی کرده و اقدامات لازم را انجام دهید.
خاتمه فرآیندهای مزاحم: گاهی اوقات یک فرآیند ممکن است به درستی کار نکند و منابع زیادی مصرف کند. با استفاده از دستورات kill و killall می‌توانید این فرآیندها را متوقف کنید.

پیکربندی و بهینه‌سازی سیستم

فعال‌سازی یا غیرفعال‌سازی سرویس‌ها: برخی سرویس‌ها ممکن است به صورت پیش‌فرض فعال باشند اما نیازی به آن‌ها نباشد. در این حالت، می‌توانید آن‌ها را غیرفعال کنید تا منابع سیستم آزاد شوند. یا اگر نیاز به سرویس خاصی دارید، می‌توانید آن را فعال و پیکربندی کنید.
کنترل شروع خودکار سرویس‌ها: با استفاده از systemctl enable و disable می‌توانید مشخص کنید که سرویس‌های خاصی به طور خودکار در زمان بوت شدن سیستم شروع شوند یا خیر.

امنیت سیستم

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

مدیریت کارهای پس‌زمینه

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

استفاده از مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس در مواقع بحرانی

حملات یا مشکلات سیستم: اگر سیستم مورد حمله قرار گیرد یا فرآیندهای غیرعادی اجرا شوند، مدیریت سریع فرآیندها و سرویس‌ها برای جلوگیری از تخریب سیستم بسیار مهم است.
مدیریت خرابی‌ها: اگر یک سرویس مهم دچار خرابی شود، باید سریعاً مشکل را شناسایی و سرویس را بازیابی کنید.

مانیتورینگ و نظارت مستمر

پایش مداوم سیستم: برای اطمینان از سلامت سیستم و بهینه بودن عملکرد آن، مدیران سیستم به صورت مداوم فرآیندها و سرویس‌ها را نظارت می‌کنند تا مطمئن شوند همه چیز به درستی کار می‌کند و هیچ فرآیندی دچار مشکل نشده است.

در ادامه به معرفی دستورات و ابزارهای کاربردی برای مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس می‌پردازیم.

مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس

نمایش فرآیندها در لینوکس

ps: دستور ps برای نمایش لیست فرآیندها استفاده می‌شود. معمولاً با گزینه‌های aux برای مشاهده تمام فرآیندها به صورت کامل و -ef برای فرمت دیگر استفاده می‌شود.

ps aux
ps -ef

top: ابزار top نمایش زنده و تعاملی از فرآیندهای در حال اجرا را فراهم می‌کند و به شما امکان می‌دهد فرآیندها را بر اساس استفاده از منابع مشاهده و مدیریت کنید.

top

htop: ابزار htop مشابه top است ولی با رابط کاربری گرافیکی بهتر و گزینه‌های بیشتر برای تعامل.

htop

مدیریت فرآیندها در لینوکس

kill: دستور kill برای ارسال سیگنال‌ توقف به فرآیندها، مانند SIGTERM برای خاتمه ملایم یا SIGKILL برای خاتمه فوری، استفاده می‌شود.

kill PID
kill -9 PID

همانطور که در بالا مشاهده می‌کنید از سوئیچ -9 بعد از دستور kill استفاده شده است. منظور از -9 سیگنال مورد نظر است. معمولاً سیگنال‌های شناخته‌شده شامل دو مورد زیر هستند.

-9 (برای خاتمه اجباری)
-15 (برای خاتمه آرام)

pkill: دستور pkill برای ارسال سیگنال توقف به فرآیندها بر اساس نام آن‌ها است.

pkill processname

killall: مشابه pkill، ولی با امکان انتخاب سیگنال‌های مختلف.

killall processname

مدیریت فرآیندهای پس‌زمینه

&: اضافه کردن & به پایان دستور باعث می‌شود که فرآیند در پس‌زمینه اجرا شود.

command &

jobs: نمایش لیست فرآیندهای پس‌زمینه.

jobs

fg: بازگرداندن یک فرآیند پس‌زمینه به پیش‌زمینه.

fg %jobnumber

bg: ادامه اجرای یک فرآیند متوقف شده در پس‌زمینه.

bg %jobnumber

مدیریت و نظارت بر سرویس‌ها

مدیریت سرویس‌ها با systemd

systemctl: ابزار اصلی برای مدیریت سرویس‌ها با systemd است. می‌توانید سرویس‌ها را شروع، متوقف، ری‌استارت، و مشاهده وضعیت آن‌ها کنید.

نمایش همه سرویس‌هایی که در سیستم وجود دارند:

sudo systemctl list-units –type=service


نمایش وضعیت یک سرویس خاص:

systemctl status servicename

شروع یک سرویس:

systemctl start servicename

متوقف کردن یک سرویس:

systemctl stop servicename

ری‌استارت یک سرویس:

systemctl restart servicename

فعال کردن سرویس برای شروع خودکار:

systemctl enable servicename

غیرفعال کردن سرویس برای عدم شروع خودکار:

systemctl disable servicename

مدیریت سرویس‌ها با service (برای نسخه‌های قدیمی‌تر)

service: در سیستم‌های قدیمی‌تر که از init استفاده می‌کنند، برای مدیریت سرویس‌ها از دستور service استفاده می‌شود.
نمایش وضعیت سرویس:

service servicename status

شروع سرویس:

service servicename start

متوقف کردن سرویس:


service servicename stop

ری‌استارت سرویس:

service servicename restart

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

journalctl: برای مشاهده لاگ‌های سیستم که توسط systemd مدیریت می‌شود، از journalctl استفاده می‌شود.

journalctl

مشاهده پیغام‌های مرتبط با خطاها

journalctl -xe

tail: برای مشاهده لاگ‌های خاص به صورت زنده، مانند لاگ‌های موجود در /var/log, از tail استفاده می‌شود.

tail -f /var/log/syslog

grep: برای جستجوی خاص در لاگ‌ها.

grep ‘search_term’ /var/log/syslog

برای آشنایی بیشتر با مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس در زیر چند مثال برای شما آورده ایم:

آموزش مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس همراه با مثال

مدیریت و نظارت بر فرآیندها و سرویس‌ها در لینوکس در بسیاری از موارد کاربردی است. در ادامه برای هر موقعیت یک مثال کاربردی همراه با دستورات مورد استفاده آورده شده است.

فرآیندها و سرویس‌ها در لینوکس از طریق راه‌اندازی و توقف سرویس‌ها

فرض کنید می‌خواهید سرویس وب Apache را راه‌اندازی کنید. برای این کار از دستور کاربردی زیر برای راه اندازی سرویس وب Apache استفاده کنید.

systemctl start httpd

این دستور سرویس Apache (httpd) را راه‌اندازی می‌کند. اگر سرور وب شما غیرفعال باشد و بخواهید آن را فعال کنید، باید از این دستور استفاده کنید.

عیب‌یابی و رفع اشکال سرویس‌ها از طریق فرآیندها و سرویس‌ها در لینوکس

فرض کنید که سرویس MariaDB به درستی کار نمی‌کند و شما می‌خواهید علت مشکل را بررسی کنید.
دستور کاربردی برای عیب یابی و رفع اشکال سرویس MariaDB

systemctl status mariadb

با اجرای این دستور می‌توانید وضعیت سرویس MariaDB را بررسی کنید و اطلاعاتی درباره خطاها یا توقف‌های احتمالی آن دریافت کنید. این کار به شما در رفع مشکل کمک می‌کند.

مدیریت منابع سیستم

شما متوجه شده‌اید که یکی از فرآیندها منابع زیادی از CPU یا RAM مصرف می‌کند و می‌خواهید فرآیندهای مصرفی را شناسایی کنید.
دستور کاربردی برای شناسایی و مشاهده فرآیندهایی که در حال استفاده از CPU و RAM هستند

top

این دستور لیستی از فرآیندها را به ترتیب مصرف CPU و RAM نشان می‌دهد. از این طریق می‌توانید فرآیندهای پرمصرف را شناسایی کرده و در صورت نیاز آن‌ها را متوقف کنید.

خاتمه فرآیندهای مزاحم

فرض کنید فرآیندی به نام firefox بیش از حد منابع سیستم را مصرف می‌کند و شما قصد دارید آن را متوقف کنید.
دستور کاربردی برای متوقلف کردن فرآیندی به نام firefox

pkill firefox

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

فعال‌سازی و غیرفعال‌سازی سرویس‌ها

مثلا می‌خواهید سرویس SSH در هنگام راه‌اندازی سیستم به صورت خودکار اجرا شود.
برای این کار از دستور زیر استفاده کنید

systemctl enable sshd

این دستور سرویس SSH را فعال می‌کند تا در زمان راه‌اندازی سیستم به صورت خودکار اجرا شود.

مشاهده DNS سرورهای پیکربندی شده


می‌خواهید آدرس‌های DNS سرورهای پیکربندی شده بر روی سیستم را مشاهده کنید. برای این کار از دستور زیر باید استفاده کنید.

systemd-resolve –status

شرح: این دستور اطلاعات مربوط به DNS سرورهای پیکربندی شده روی سیستم را نمایش می‌دهد.

نظارت بر لاگ‌ها برای عیب‌یابی

اگر می‌خواهید بررسی کنید که آیا سرویس sshd در لاگ‌های سیستم خطایی داشته است یا خیر. باید از دستور زیر استفاده کنید.

journalctl -u sshd

این دستور تمامی لاگ‌های مربوط به سرویس sshd را نمایش می‌دهد. بررسی لاگ‌ها به شما کمک می‌کند تا مشکلات و خطاهای رخ داده در سرویس را شناسایی کنید.

مدیریت سرویس‌های پس‌زمینه

فرض کنید یک اسکریپت طولانی‌مدت در حال اجرا دارید و می‌خواهید آن را در پس‌زمینه اجرا کنید. برای این کار از دستور زیر استفاده کنید.

./script.sh &

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

راه‌اندازی مجدد سرویس‌ها پس از به‌روزرسانی

بعد از به‌روزرسانی یک سرویس مانند Nginx، باید آن را مجدداً راه‌اندازی کنید. برای این کار از دستور زیر باید استفاده کنید.

systemctl restart nginx

این دستور سرویس Nginx را مجدداً راه‌اندازی می‌کند تا تغییرات پس از به‌روزرسانی اعمال شوند.

کنترل دسترسی به سرویس‌ها

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

ss -tuln

این دستور لیستی از سرویس‌هایی که به پورت‌های TCP و UDP گوش می‌دهند را نمایش می‌دهد. این اطلاعات برای بررسی وضعیت دسترسی به سرویس‌ها و بررسی امنیت سیستم مفید است.

مشاهده سرویس‌های فعال

برای مشاهده لیستی از سرویس‌های فعال بر روی سیستم خود باید از دستورات زیر استفاده کنید.

systemctl list-units –type=service –state=running

این دستور تمامی سرویس‌هایی که در حال حاضر فعال و در حال اجرا هستند را نمایش می‌دهد.

بررسی مصرف حافظه فرآیندها

اگر می‌خواهید فرآیندهایی که بیشترین مصرف حافظه را دارند پیدا کنید میتوانید از دستور زیر استفاده کنید.

ps aux –sort=-%mem | head -n 10

این دستور ۱۰ فرآیند با بالاترین میزان مصرف حافظه را نمایش می‌دهد و به شما کمک می‌کند فرآیندهای پرمصرف را شناسایی کنید.

مشاهده فرآیندهای یک کاربر خاص

اگر می‌خواهید فرآیندهایی که توسط یک کاربر خاص (مثلاً root) در حال اجرا هستند را مشاهده کنید میتوانید از دستور زیر استفاده کنید

ps -u root

این دستور لیستی از فرآیندهای متعلق به کاربر root را نمایش می‌دهد. این روش برای مدیریت و نظارت بر فعالیت‌های کاربران مفید است.

نظارت بر فایل‌های باز توسط یک فرآیند خاص

اگر می‌خواهید بررسی کنید که یک فرآیند خاص (مثلاً nginx) چه فایل‌هایی را باز کرده است باید از دستورات زیر استفاده کنید.

lsof -c nginx

این دستور تمامی فایل‌هایی که توسط فرآیند nginx باز شده‌اند را نشان می‌دهد. این می‌تواند برای عیب‌یابی مشکلات مربوط به دسترسی به فایل‌ها استفاده شود.

مدیریت فرآیندهای متوقف شده (Paused)

فرض کنید یک فرآیندبه دلیل سیگنال توقف متوقف شده و شما می‌خواهید آن را دوباره اجرا کنید.

kill -CONT <PID>

دستور kill -CONT برای از سرگیری (resume) یک فرآیند متوقف شده (suspended) در سیستم‌عامل لینوکس استفاده می‌شود. سیگنال CONT به فرآیندی ارسال می‌شود که با استفاده از سیگنال‌هایی مانند SIGSTOP یا SIGTSTP متوقف شده است. پس از ارسال این سیگنال، فرآیند دوباره به حالت اجرا در می‌آید.

ساختار کلی دستور kill -CONT به این صورت است: با استفاده از این دستور، می‌توانید فرآیند متوقف شده را مجدداً ادامه دهید. (به جای <PID> باید شناسه فرآیند مورد نظر را وارد کنید.)

تغییر اولویت اجرای یک فرآیند (Nice)

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

renice +10

این دستور اولویت فرآیند را تغییر می‌دهد تا تأثیر کمتری بر منابع سیستم داشته باشد. با وارد کردن مقدار +10، اولویت فرآیند کاهش پیدا می‌کند.

غیرفعال‌سازی سرویس در زمان بوت

اگر بخواهید یک سرویس مثلا سرویس apache2 (یا هر سرویس دیگر) به صورت خودکار در زمان بوت سیستم اجرا نشود میتوانید از دستور زیر استفاده کنید

systemctl disable apache2

این دستور باعث می‌شود سرویس apache2 در زمان بوت سیستم غیرفعال شود و به صورت خودکار شروع به کار نکند.

مشاهده پورت‌های باز روی سیستم

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

netstat -tuln

این دستور لیستی از پورت‌های TCP و UDP باز را همراه با فرآیندهایی که از آن‌ها استفاده می‌کنند، نمایش می‌دهد. این کار برای بررسی امنیت شبکه بسیار مفید است.

بررسی زمان‌بندی فرآیندها (Crontab)

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

crontab -l

این دستور لیستی از وظایف زمان‌بندی شده در فایل کرون کاربر جاری را نمایش می‌دهد. برای مدیریت خودکار وظایف در سیستم بسیار کاربردی است.

خاموش کردن سیستم بعد از یک زمان مشخص

برای خاموش کردن سیستم بعد از یک مدت زمان مشخص (مثلاً ۱۰ دقیقه) میتوانید از دستور کاربردی زیر استفاده کنید

shutdown -h +10

این دستور سیستم را بعد از ۱۰ دقیقه خاموش می‌کند. می‌توانید از این دستور برای زمان‌بندی خاموش کردن سیستم در مواقع خاص استفاده کنید.
این مجموعه مثالها همراه با دستورات آن به شما امکان می‌دهد تا مدیریت و نظارت بهتری بر فرآیندها و سرویس‌های لینوکس داشته باشید. هر یک از این دستورات به شما کمک می‌کند تا سیستم را بهینه‌سازی کرده، منابع را مدیریت کنید و امنیت سیستم را افزایش دهید.

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