سرور های ما معمولا با توجه به طرح ها و نیاز هایمان ساخته می شوند، اما کدام فانکشن های های در نظرگرفته شده در هنگام ساخت به سرور سرعت و کارایی میدهد. همه ما میدانیم در زمان نصب سیستم عامل های لینوکسی، برخی از بسته های ناخواسته بدون اگاهی کابر نصب می شود. در این مقاله ما در مورد نحوه stop / disabled برخی از برنامه های ناخواسته و سرویس هایی که ممکن است مورد احتیاج نباشد اما به طور پیشفرض در هنگام نصب سیستم عامل نصب شده و ندانسته شروع به خوردن منابع سیستم شما می کنند، بحث خواهیم کرد.
هنگامی که ما در حال ایجاد یک سرور هستیم، باید از خودمان بپرسیم که ما به چه چیزهایی نیاز داریم. آیا من به یک Web Server یا یک FTP Server ، NFS Server DNS Server ، Database Server یا ...... احتیاج دارم.
خوب در ابتدا اجازه بدهید که با دستور زیر ببینیم چه سرویس هایی در حال اجرا بر روی سیستم شما هستند.
خروجی نمونه
حالا اجازه بدهید مانند زیر یک نگاه سریع به پروسه های پذیرش اتصال (Ports) با استفاده از دستور netsat بندازیم.
خروجی نمونه :
درخروجی بالا، شما متوجه شدید که برخی از برنامه ها که در زیر هم اورده شده اند در سرور شما موجود میباشند که مورد نیاز نیستند اما در حال اجرا و استفاده از منابع سرور می باشند.
1. smbd and nmbd
smb مانند پروسه nmbd است. آیا شما واقعا نیاز به اشتراک گذاری SMB در ویندوز یا دستگاه های دیگر دارید؟ اگر نه !پس چرا این پروسه در حال اجراست؟ شما با خیال راحت میتوانید این پروسه را متوقف و شروع خودکار پروسه در بوت بعدی ماشین را غیر فعال کنید.
2. Telnet
آیا شما به برقراری ارتباط متن گرا دو طرفه تعاملی احتیاج دارید؟ اگر نه این پروسه را متوقف و بازشدن هنگام بوت این پروسه را خاموش کنید .
3. rlogin
آیا شما نیاز به ورود، میزبان دیگری از طریق شبکه دارید؟ اگر نه! این پروسه را متوقف و شروع خودکار هنگام بوتش را غیر فعال کنید.
4. rexec
فرایند اجرا از راه دور با نام مستعار rexec به شما اجازه می دهد، دستورات shell را از راه دور بر روی یک کامپیوتر اجرا کنید. اگر شما نیاز به اجرای فرامین shell بر روی کامپیوتر از راه دور ندارید، پس به سادگی این پروسه رو متوقف کنید.
5. FTP
آیا شما نیاز به انتقال فایل ها از یک میزبان به میزبان دیگر از طریق اینترنت دارید؟ اگر نه شما با خیال راحت می توانید این سرویس را متوقف کند.
6. automount
ایا شما نیاز به mount کردن سیستم فایل های دیگر به طور خودکار در زمان بالا آمدن شبکه سیستم فایل دارید؟ اگر نه! پس چرا این پروسه در حال اجراست؟ چرا به این برنامه اجازه میدهید که از منابع تان استفاده کند؟ این پروسه را متوقف و شروع خودکارش را غیر فعال کنید.
7. named
آیا شما نیاز به (NameServer(DNS دارید؟ اگر نه چه چیزی شما را قانع کرده که این پروسه در حال اجرا باشد و منابع شما را بخورد. برای اولین بار این پروسه در حال اجرا را متوقف و اجرا در هنگام بوت را خاموش کنید.
8. lpd
lpd مانند printer است که امکان چاپ را به سرور می دهد. اگر شما احتیاج به چاپ کردن در سرورتان ندارید، شانس خورده شدن منابع را به این پروسه ندهید.
9. Inted
ایا شما در حال اجرای سرویس inetd هستید؟ اگر شما در حال استفاده از برنامه های پایه مانند SSH به تنهایی با برنامه های پایه دیگر به تنهایی مانند Mysql, Apache, etc هستید، پس شما احتیاج به inetd ندارید. بهتر است که این پروسه را متوقف و شروع خودکار در دفعه ی بعد را غیر فعال کنید.
10. portmap
Portmap یک روش اتصال به رایانه راه دور درشبکه باز (ONCRPC) است که کاربردش مانند rpc.portmap و rpcbind است.در حال اجرا بودن این پروسه ها به این معنیست که NFS server در حال اجراست و اگر NFS server در حال اجراست به این معنیست که منابع سیستم شما در حال به هدر رفتن توسط برنامه های غیر ضروری است.
چگونه یک Process را در لینوکس متوقف کنیم
به منظور بستن یک پروسس در حال اجرا در لینوکس، از دستور ‘Kill PID‘ استفاده کنید. اما قبل از استفاده از این دستور، ما باید PID پروسه را پیدا کنیم. برای مثال، من در اینجا میخوام PID پروسه ‘cupsd‘ رو پیدا کنم.
بنابراین، PID پروسه ‘cupsd‘ برابر ‘1511‘ هستش. برای متوقف کردن این PID دستور زیر را اجرا کنید.
چگونه یک سرویس را در لینوکس غیرفعال کنیم؟
در توضیع های پایه ی Red Hat مانندFedora و CentOS از اسکریپتی به نام ‘chkconfig‘ برای فعال و غیر فعال کردن سرویس های در حال اجرا استفاده می کنیم.
برای مثال، اجازه بدید وب سرور Apache رو از startup غیر فعال کنم.
در توزیع های پایه ی Debian مانند Ubuntu - Linux Mint و بقیه ی توزیع های پایه از اسکریپتی به نام 'update-rc.d' استفاده می شود.
به عنوان مثال، برای غیر فعال کردن سرویس Apache از startup، دستور زیر را اجرا می کنیم. در اینجا گزینه ی 'f-' برای اجبار است.
بعد از انجام این تغییرات، سیستم در بوت بعدی بدون این پروسه های بیهوده بارگزاری میشود و در واقع در منابع سیستم صرفه جویی و سرور کاربردی تر، سریع تر، امن تر و مطمئن تر میشود.
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
آنچه که شما باید درباره process ها در لینوکس بدانید
دستور ps در لینوکس برای مانیتور یا پیدا کردن process ها
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
راهنمای دستورات Kill - PKill و Killall برای بستن یک پروسس در لینوکس
چگونه با استفاده از PID Number نام یک Process را در لینوکس پیدا کنیم
نحوه پیدا کردن Process های در حال اجرا که CPU و RAM زیادی در Linux مصرف میکنند
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
نحوه Kill کردن Process های بی مسئولیت با استفاده از دستور xkill در لینوکس
امیدوارم که بتونین از این مقاله استفاده درستی بکنید.
با تشکر از وقتتون
هنگامی که ما در حال ایجاد یک سرور هستیم، باید از خودمان بپرسیم که ما به چه چیزهایی نیاز داریم. آیا من به یک Web Server یا یک FTP Server ، NFS Server DNS Server ، Database Server یا ...... احتیاج دارم.
خوب در ابتدا اجازه بدهید که با دستور زیر ببینیم چه سرویس هایی در حال اجرا بر روی سیستم شما هستند.
کد PHP:
[bahadori@linuxzone]# ps ax
کد PHP:
PID TTY STAT TIME COMMAND
2 ? S 0:00 [kthreadd]
3 ? S 0:00 \_ [migration/0]
4 ? S 0:09 \_ [ksoftirqd/0]
5 ? S 0:00 \_ [migration/0]
6 ? S 0:24 \_ [watchdog/0]
7 ? S 2:20 \_ [events/0]
8 ? S 0:00 \_ [cgroup]
9 ? S 0:00 \_ [khelper]
10 ? S 0:00 \_ [netns]
11 ? S 0:00 \_ [async/mgr]
12 ? S 0:00 \_ [pm]
13 ? S 0:16 \_ [sync_supers]
14 ? S 0:15 \_ [bdi-default]
15 ? S 0:00 \_ [kintegrityd/0]
16 ? S 0:49 \_ [kblockd/0]
17 ? S 0:00 \_ [kacpid]
18 ? S 0:00 \_ [kacpi_notify]
19 ? S 0:00 \_ [kacpi_hotplug]
20 ? S 0:00 \_ [ata_aux]
21 ? S 58:46 \_ [ata_sff/0]
22 ? S 0:00 \_ [ksuspend_usbd]
23 ? S 0:00 \_ [khubd]
24 ? S 0:00 \_ [kseriod]
.....
کد PHP:
[bahadori@linuxzone]# netstat -lp
کد PHP:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:31138 *:* LISTEN 1485/rpc.statd
tcp 0 0 *:mysql *:* LISTEN 1882/mysqld
tcp 0 0 *:sunrpc *:* LISTEN 1276/rpcbind
tcp 0 0 *:ndmp *:* LISTEN 2375/perl
tcp 0 0 *:webcache *:* LISTEN 2312/monitorix-http
tcp 0 0 *:ftp *:* LISTEN 2174/vsftpd
tcp 0 0 *:ssh *:* LISTEN 1623/sshd
tcp 0 0 localhost:ipp *:* LISTEN 1511/cupsd
tcp 0 0 localhost:smtp *:* LISTEN 2189/sendmail
tcp 0 0 *:cbt *:* LISTEN 2243/java
tcp 0 0 *:websm *:* LISTEN 2243/java
tcp 0 0 *:nrpe *:* LISTEN 1631/xinetd
tcp 0 0 *:xmltec-xmlmail *:* LISTEN 2243/java
tcp 0 0 *:xmpp-client *:* LISTEN 2243/java
tcp 0 0 *:hpvirtgrp *:* LISTEN 2243/java
tcp 0 0 *:5229 *:* LISTEN 2243/java
tcp 0 0 *:sunrpc *:* LISTEN 1276/rpcbind
tcp 0 0 *:http *:* LISTEN 6439/httpd
tcp 0 0 *:oracleas-https *:* LISTEN 2243/java
....
1. smbd and nmbd
smb مانند پروسه nmbd است. آیا شما واقعا نیاز به اشتراک گذاری SMB در ویندوز یا دستگاه های دیگر دارید؟ اگر نه !پس چرا این پروسه در حال اجراست؟ شما با خیال راحت میتوانید این پروسه را متوقف و شروع خودکار پروسه در بوت بعدی ماشین را غیر فعال کنید.
2. Telnet
آیا شما به برقراری ارتباط متن گرا دو طرفه تعاملی احتیاج دارید؟ اگر نه این پروسه را متوقف و بازشدن هنگام بوت این پروسه را خاموش کنید .
3. rlogin
آیا شما نیاز به ورود، میزبان دیگری از طریق شبکه دارید؟ اگر نه! این پروسه را متوقف و شروع خودکار هنگام بوتش را غیر فعال کنید.
4. rexec
فرایند اجرا از راه دور با نام مستعار rexec به شما اجازه می دهد، دستورات shell را از راه دور بر روی یک کامپیوتر اجرا کنید. اگر شما نیاز به اجرای فرامین shell بر روی کامپیوتر از راه دور ندارید، پس به سادگی این پروسه رو متوقف کنید.
5. FTP
آیا شما نیاز به انتقال فایل ها از یک میزبان به میزبان دیگر از طریق اینترنت دارید؟ اگر نه شما با خیال راحت می توانید این سرویس را متوقف کند.
6. automount
ایا شما نیاز به mount کردن سیستم فایل های دیگر به طور خودکار در زمان بالا آمدن شبکه سیستم فایل دارید؟ اگر نه! پس چرا این پروسه در حال اجراست؟ چرا به این برنامه اجازه میدهید که از منابع تان استفاده کند؟ این پروسه را متوقف و شروع خودکارش را غیر فعال کنید.
7. named
آیا شما نیاز به (NameServer(DNS دارید؟ اگر نه چه چیزی شما را قانع کرده که این پروسه در حال اجرا باشد و منابع شما را بخورد. برای اولین بار این پروسه در حال اجرا را متوقف و اجرا در هنگام بوت را خاموش کنید.
8. lpd
lpd مانند printer است که امکان چاپ را به سرور می دهد. اگر شما احتیاج به چاپ کردن در سرورتان ندارید، شانس خورده شدن منابع را به این پروسه ندهید.
9. Inted
ایا شما در حال اجرای سرویس inetd هستید؟ اگر شما در حال استفاده از برنامه های پایه مانند SSH به تنهایی با برنامه های پایه دیگر به تنهایی مانند Mysql, Apache, etc هستید، پس شما احتیاج به inetd ندارید. بهتر است که این پروسه را متوقف و شروع خودکار در دفعه ی بعد را غیر فعال کنید.
10. portmap
Portmap یک روش اتصال به رایانه راه دور درشبکه باز (ONCRPC) است که کاربردش مانند rpc.portmap و rpcbind است.در حال اجرا بودن این پروسه ها به این معنیست که NFS server در حال اجراست و اگر NFS server در حال اجراست به این معنیست که منابع سیستم شما در حال به هدر رفتن توسط برنامه های غیر ضروری است.
چگونه یک Process را در لینوکس متوقف کنیم
به منظور بستن یک پروسس در حال اجرا در لینوکس، از دستور ‘Kill PID‘ استفاده کنید. اما قبل از استفاده از این دستور، ما باید PID پروسه را پیدا کنیم. برای مثال، من در اینجا میخوام PID پروسه ‘cupsd‘ رو پیدا کنم.
کد PHP:
[bahadori@linuxzone]# ps ax | grep cupsd
1511 ? Ss 0:00 cupsd -C /etc/cups/cupsd.conf
کد PHP:
[bahadori@linuxzone]# kill -9 1511
چگونه یک سرویس را در لینوکس غیرفعال کنیم؟
در توضیع های پایه ی Red Hat مانندFedora و CentOS از اسکریپتی به نام ‘chkconfig‘ برای فعال و غیر فعال کردن سرویس های در حال اجرا استفاده می کنیم.
برای مثال، اجازه بدید وب سرور Apache رو از startup غیر فعال کنم.
کد PHP:
[bahadori@linuxzone]# chkconfig httpd off
[bahadori@linuxzone]# chkconfig httpd --del
در توزیع های پایه ی Debian مانند Ubuntu - Linux Mint و بقیه ی توزیع های پایه از اسکریپتی به نام 'update-rc.d' استفاده می شود.
به عنوان مثال، برای غیر فعال کردن سرویس Apache از startup، دستور زیر را اجرا می کنیم. در اینجا گزینه ی 'f-' برای اجبار است.
کد PHP:
[bahadori@linuxzone]# update-rc.d -f apache2 remove
همچنین توصیه میشود مقالات زیر را مطالعه کنید :
آنچه که شما باید درباره process ها در لینوکس بدانید
دستور ps در لینوکس برای مانیتور یا پیدا کردن process ها
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
راهنمای دستورات Kill - PKill و Killall برای بستن یک پروسس در لینوکس
چگونه با استفاده از PID Number نام یک Process را در لینوکس پیدا کنیم
نحوه پیدا کردن Process های در حال اجرا که CPU و RAM زیادی در Linux مصرف میکنند
آموزش نحوه پیداکردن پروسس در حال اجرا و kill کردن آن در لینوکس
نحوه Kill کردن Process های بی مسئولیت با استفاده از دستور xkill در لینوکس
امیدوارم که بتونین از این مقاله استفاده درستی بکنید.
با تشکر از وقتتون