مدیریت و نظارت بر فرآیندها و سرویسها در لینوکس بخش مهمی از مدیریت سیستم است. این فرآیندها به شما کمک میکنند تا سیستم خود را بهینه و پایدار نگهدارید. البته برای این کار آشنایی با ساختار فایل سیستم لینوکس میتواند به شما بیشتر کمک کند.
کاربرد مدیریت و نظارت بر فرآیندها و سرویسها در لینوکس
مدیریت و نظارت بر فرآیندها و سرویسها در لینوکس در مواقع مختلفی مورد استفاده قرار میگیرد که برخی از مهمترین موارد مدیریت و نظارت بر فرآیندها و سرویسها در لینوکس در زیر آمده است.
راهاندازی و توقف سرویسها
زمان بوت شدن سیستم: وقتی سیستم لینوکسی راهاندازی میشود، سرویسهای حیاتی مانند شبکه، دیتابیس، سرویسهای وب و غیره به صورت خودکار اجرا میشوند. مدیریت سرویسها در این مرحله مهم است تا مطمئن شویم سرویسهای ضروری به درستی اجرا شدهاند.
راهاندازی و توقف سرویسها به صورت دستی: اگر نیاز به اجرای یک سرویس خاص در لحظهای خاص دارید یا باید سرویس خاصی را متوقف کنید (مثلاً برای عیبیابی)، دستورات مدیریت سرویسها مانند 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
این دستور سیستم را بعد از ۱۰ دقیقه خاموش میکند. میتوانید از این دستور برای زمانبندی خاموش کردن سیستم در مواقع خاص استفاده کنید.
این مجموعه مثالها همراه با دستورات آن به شما امکان میدهد تا مدیریت و نظارت بهتری بر فرآیندها و سرویسهای لینوکس داشته باشید. هر یک از این دستورات به شما کمک میکند تا سیستم را بهینهسازی کرده، منابع را مدیریت کنید و امنیت سیستم را افزایش دهید.
برای مشاهده فرآیندهای در حال اجرا در سیستم عامل ویندوز از طریق خط فرمان این مطلب را مشاهده کنید.
نظر خود را در مورد این مقاله بنویسید