المقدمة
يستفيد كل نظام كمبيوتر من إدارة ورصد صحيحين. يساعدك الانتباه إلى كيفية تشغيل نظامك على اكتشاف المشاكل وحلها بسرعة.
هناك العديد من أدوات سطر الأوامر التي تم إنشاؤها لهذا الغرض. ستقدم لك هذه الدليل مقدمة إلى بعض التطبيقات الأكثر فائدة لديك في صندوق أدواتك.
المتطلبات المسبقة
لمتابعة هذا الدليل، ستحتاج إلى الوصول إلى كمبيوتر يعمل بنظام تشغيل مبني على Linux. يمكن أن يكون هذا إما خادم افتراضي خاص قمت بالاتصال به باستخدام SSH أو جهازك المحلي. يرجى ملاحظة أن هذا البرنامج التعليمي تم التحقق منه باستخدام خادم Linux يعمل بنظام Ubuntu 20.04، ولكن الأمثلة المقدمة يجب أن تعمل على جهاز يعمل بأي إصدار من أي توزيعة Linux.
إذا كنت تخطط لاستخدام خادم عن بعد لمتابعة هذا الدليل، فإننا نشجعك على إكمال دليل إعداد الخادم الأولي الخاص بنا أولاً. سيضعك ذلك في بيئة خادم آمنة – بما في ذلك مستخدم غير root بامتيازات sudo
وجدار حماية مكون بـ UFW – يمكنك استخدامها لبناء مهاراتك في Linux.
الخطوة 1 – كيفية عرض العمليات الجارية في لينكس
يمكنك رؤية جميع العمليات الجارية على خادمك باستخدام الأمر top
:
Outputtop - 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers
Swap: 0k total, 0k used, 0k free, 258976k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
تقدم العدة الأولى من الناتج إحصاءات النظام، مثل حمل المعالج/الذاكرة والعدد الإجمالي للمهام الجارية.
يمكنك رؤية أن هناك عملية واحدة تعمل، و 55 عملية تعتبر نائمة لأنها لا تستخدم دورة معالج المركزية بنشاط.
يعرض بقية الناتج المعروض العمليات الجارية وإحصاءات استخدامها. بشكل افتراضي، يقوم top
بفرز هذه تلقائيًا حسب استخدام وحدة المعالجة المركزية، حتى تتمكن من رؤية العمليات الأكثر انشغالًا أولاً. سيستمر top
في العمل في الشاشة الخاصة بك حتى تتوقف عنه باستخدام مفتاح التركيبة القياسي Ctrl+C
للخروج من عملية تعمل. يرسل هذا إشارة kill
، معلمًا العملية بالتوقف برفق إذا كان بإمكانها ذلك.
نسخة محسنة من top
، تُسمى htop
، متاحة في معظم مستودعات الحزم. على Ubuntu 20.04، يمكنك تثبيتها باستخدام apt
:
بعد ذلك، سيكون الأمر htop
متاحًا:
Output Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05
CPU[ 0.0%] Tasks: 21, 3 thr; 1 running
Swp[ 0/0MB] Uptime: 00:58:11
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop
1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init
311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid
314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd --dae
389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon --sys
407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5
408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5
553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-br
htop
يوفر تصورًا أفضل لمواضيع وحدة المعالجة المركزية المتعددة ، ووعيًا أفضل بدعم الألوان في الطرفيات الحديثة ، وخيارات ترتيب أكثر ، بين ميزات أخرى. على عكس top
، فإنه ليس مثبتًا دائمًا بشكل افتراضي ، ولكن يمكن اعتباره بديلًا فوريًا. يمكنك الخروج من htop
عن طريق الضغط على Ctrl+C
كما هو الحال مع top
.
وإليك بعض اختصارات لوحة المفاتيح التي ستساعدك في استخدام htop بشكل أكثر فعالية:
- M: Sort processes by memory usage
- P: Sort processes by processor usage
- ?: الوصول إلى المساعدة
- k: Kill current/tagged process
- F2: تكوين htop. يمكنك اختيار خيارات العرض هنا.
- /:: البحث في العمليات
هناك العديد من الخيارات الأخرى التي يمكنك الوصول إليها من خلال المساعدة أو الإعداد. يجب أن تكون هذه محطاتك الأولى في استكشاف وظائف htop. في الخطوة التالية ، ستتعلم كيفية مراقبة عرض النطاق الترددي لشبكتك.
الخطوة 2 – كيفية مراقبة عرض النطاق الترددي لشبكتك
إذا كان اتصالك بالشبكة يبدو مستخدمًا بشكل زائد وكنت غير متأكد من التطبيق الذي يعتبر الجاني ، فبرنامج يسمى nethogs
هو خيار جيد للتحقق.
على أوبونتو ، يمكنك تثبيت nethogs باستخدام الأمر التالي:
بعد ذلك ، سيكون الأمر nethogs
متاحًا:
OutputNetHogs version 0.8.0
PID USER PROGRAM DEV SENT RECEIVED
3379 root /usr/sbin/sshd eth0 0.485 0.182 KB/sec
820 root sshd: root@pts/0 eth0 0.427 0.052 KB/sec
? root unknown TCP 0.000 0.000 KB/sec
TOTAL 0.912 0.233 KB/sec
nethogs
يقوم بربط كل تطبيق بحركة مروره عبر الشبكة.
هناك فقط عدد قليل من الأوامر التي يمكنك استخدامها للتحكم في nethogs
:
- M: Change displays between “kb/s”, “kb”, “b”, and “mb”.
- R: Sort by traffic received.
- S: Sort by traffic sent.
- Q: quit
iptraf-ng
هي طريقة أخرى لمراقبة حركة الشبكة. يوفر واجهات مراقبة تفاعلية مختلفة.
ملاحظة: يتطلب IPTraf حجم شاشة يبلغ على الأقل 80 عمودًا و 24 سطرًا.
على أوبونتو، يمكنك تثبيت iptraf-ng
باستخدام الأمر التالي:
يجب تشغيل iptraf-ng
بصلاحيات root، لذا يجب أن تسبقه بـ sudo
:
ستظهر لك قائمة تستخدم إطار واجهة سطر الأوامر الشهيرة المسماة ncurses
.
مع هذه القائمة، يمكنك تحديد أي واجهة تريد الوصول إليها.
على سبيل المثال، للحصول على نظرة عامة على كل حركة الشبكة، يمكنك تحديد القائمة الأولى ثم “جميع الواجهات”. ستعرض لك شاشة تبدو مثل هذا:
هنا، يمكنك مشاهدة عناوين IP التي تتواصل عليها على جميع واجهات الشبكة الخاصة بك.
إذا كنت ترغب في تحويل هذه العناوين IP إلى نطاقات، يمكنك تمكين البحث العكسي عن DNS بالخروج من شاشة المرور، واختيار تكوين
ثم تبديل البحث العكسي عن DNS
.
يمكنك أيضًا تمكين أسماء خدمات TCP/UDP
لرؤية أسماء الخدمات التي يتم تشغيلها بدلاً من أرقام المنافذ.
مع تمكين كلتا هذه الخيارات، قد تبدو الشاشة بهذا الشكل:
أمر netstat
هو أداة متعددة الاستخدامات أخرى لجمع معلومات الشبكة.
netstat
مثبت افتراضيًا على معظم الأنظمة الحديثة، ولكن يمكنك تثبيته بنفسك عن طريق تنزيله من مستودعات الحزم الافتراضية لخادمك. في معظم أنظمة Linux، بما في ذلك Ubuntu، يكون الحزمة التي تحتوي على netstat
هي net-tools
:
افتراضيًا، تطبع الأمر netstat
بمفرده قائمة بالمقابس المفتوحة:
OutputActive Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.241.187.204:ssh ip223.hichina.com:50324 ESTABLISHED
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 5 [ ] DGRAM 6559 /dev/log
unix 3 [ ] STREAM CONNECTED 9386
unix 3 [ ] STREAM CONNECTED 9385
. . .
إذا أضفت خيار -a
، فسيقوم بإدراج جميع المنافذ، سواء كانت مستمعة أم غير مستمعة:
OutputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 6195 @/com/ubuntu/upstart
unix 2 [ ACC ] STREAM LISTENING 7762 /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 6503 /var/run/dbus/system_bus_socket
. . .
إذا كنت ترغب في تصفية الاطلاع لرؤية اتصالات TCP أو UDP فقط، استخدم الأعلام -t
أو -u
على التوالي:
OutputActive Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
tcp6 0 0 [::]:ssh [::]:* LISTEN
انظر إلى الإحصائيات عن طريق تمرير العلم “-s”:
OutputIp:
13500 total packets received
0 forwarded
0 incoming packets discarded
13500 incoming packets delivered
3078 requests sent out
16 dropped because of missing route
Icmp:
41 ICMP messages received
0 input ICMP message failed.
ICMP input histogram:
echo requests: 1
echo replies: 40
. . .
إذا كنت ترغب في تحديث الإخراج بشكل مستمر، يمكنك استخدام العلم -c
. هناك العديد من الخيارات الأخرى المتاحة لـ netstat والتي يمكنك معرفتها من خلال استعراض صفحة الدليل الخاصة به.
في الخطوة التالية، ستتعلم بعض الطرق المفيدة لمراقبة استخدامك للقرص.
الخطوة 3 – كيفية مراقبة استخدام القرص الخاص بك
للحصول على نظرة سريعة على كمية المساحة المتبقية على الأقراص المتصلة بك، يمكنك استخدام برنامج df
.
بدون أي خيارات، يبدو الإخراج كما يلي:
OutputFilesystem 1K-blocks Used Available Use% Mounted on
/dev/vda 31383196 1228936 28581396 5% /
udev 505152 4 505148 1% /dev
tmpfs 203920 204 203716 1% /run
none 5120 0 5120 0% /run/lock
none 509800 0 509800 0% /run/shm
يقوم هذا بإخراج استخدام القرص بالبايت، والأمر قد يكون صعبًا قليلاً للقراءة.
لحل هذه المشكلة، يمكنك تحديد الإخراج بتنسيق قابل للقراءة من البشر:
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda 30G 1.2G 28G 5% /
udev 494M 4.0K 494M 1% /dev
tmpfs 200M 204K 199M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 498M 0 498M 0% /run/shm
إذا كنت ترغب في رؤية المساحة الكلية المتاحة على جميع أنظمة الملفات، يمكنك تمرير الخيار --total
. سيقوم هذا بإضافة صف في الأسفل يحتوي على معلومات ملخصة:
OutputFilesystem Size Used Avail Use% Mounted on
/dev/vda 30G 1.2G 28G 5% /
udev 494M 4.0K 494M 1% /dev
tmpfs 200M 204K 199M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 498M 0 498M 0% /run/shm
total 32G 1.2G 29G 4%
df
يمكن أن يوفر لمحة مفيدة. يقدم أمر آخر، du
تقسيمًا حسب الدليل.
du
سيحلل الاستخدام للدليل الحالي وأي دلائل فرعية. المخرج الافتراضي لتشغيل du
في دليل المستخدم الرئيسي الذي يكاد يكون فارغًا يبدو كما يلي:
Output4 ./.cache
8 ./.ssh
28 .
مرة أخرى، يمكنك تحديد الإخراج القابل للقراءة للبشر بتمرير -h
:
Output4.0K ./.cache
8.0K ./.ssh
28K .
لرؤية أحجام الملفات بالإضافة إلى الدلائل، اكتب ما يلي:
Output0 ./.cache/motd.legal-displayed
4 ./.cache
4 ./.ssh/authorized_keys
8 ./.ssh
4 ./.profile
4 ./.bashrc
4 ./.bash_history
28 .
للحصول على إجمالي في الأسفل، يمكنك إضافة الخيار -c
:
Output4 ./.cache
8 ./.ssh
28 .
28 total
إذا كنت مهتمًا بالإجمالي فقط وليس بالتفاصيل، يمكنك إصدار:
Output28 .
هناك أيضًا واجهة مستخدم رسومية لـ du
، تسمى بالشكل الصحيح ncdu
، التي يمكنك تثبيتها:
سيمثل هذا استخدام القرص الخاص بك بشكل رسومي:
Output--- /root ----------------------------------------------------------------------
8.0KiB [##########] /.ssh
4.0KiB [##### ] /.cache
4.0KiB [##### ] .bashrc
4.0KiB [##### ] .profile
4.0KiB [##### ] .bash_history
يمكنك التنقل في نظام الملفات باستخدام الأسهم للأعلى والأسفل والضغط على Enter في أي مدخل دليل.
في القسم الأخير، ستتعلم كيفية مراقبة استخدام الذاكرة الخاصة بك.
الخطوة 4 – كيفية مراقبة استخدام الذاكرة الخاصة بك
يمكنك التحقق من استخدام الذاكرة الحالي على نظامك باستخدام الأمر free
.
عند استخدامه بدون خيارات، يبدو الإخراج على هذا النحو:
Output total used free shared buff/cache available
Mem: 1004896 390988 123484 3124 490424 313744
Swap: 0 0 0
لعرضه بتنسيق أكثر قراءة، يمكنك تمرير الخيار -m
لعرض الإخراج بالميغابايت:
Output total used free shared buff/cache available
Mem: 981 382 120 3 478 306
Swap: 0 0 0
تتضمن السطر Mem
الذاكرة المستخدمة للتخزين المؤقت والتخزين المؤقت، والتي يتم حررها فور الحاجة لأغراض أخرى. Swap
هي الذاكرة التي تمت كتابتها إلى ملف تبديل swapfile
على القرص لتوفير الذاكرة النشطة.
أخيرًا، يمكن لأمر vmstat
إخراج معلومات مختلفة حول نظامك، بما في ذلك الذاكرة وتبديل الذاكرة وإدخال/إخراج القرص ومعلومات وحدة المعالجة المركزية.
يمكنك استخدام الأمر للحصول على رؤية أخرى لاستخدام الذاكرة:
Outputprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 99340 123712 248296 0 0 0 1 9 3 0 0 100 0
يمكنك رؤية هذا بالميغابايت عن طريق تحديد الوحدات باستخدام العلم -S
:
Outputprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 96 120 242 0 0 0 1 9 3 0 0 100 0
للحصول على بعض الإحصائيات العامة حول استخدام الذاكرة، اكتب:
Output 495 M total memory
398 M used memory
252 M active memory
119 M inactive memory
96 M free memory
120 M buffer memory
242 M swap cache
0 M total swap
0 M used swap
0 M free swap
. . .
للحصول على معلومات حول استخدام ذاكرة التخزين المؤقت لعمليات النظام الفردية، اكتب:
OutputCache Num Total Size Pages
ext4_groupinfo_4k 195 195 104 39
UDPLITEv6 0 0 768 10
UDPv6 10 10 768 10
tw_sock_TCPv6 0 0 256 16
TCPv6 11 11 1408 11
kcopyd_job 0 0 2344 13
dm_uevent 0 0 2464 13
bsg_cmd 0 0 288 14
. . .
سيعطيك ذلك تفاصيل حول نوع المعلومات المخزنة في التخزين المؤقت.
الاستنتاج
باستخدام هذه الأدوات، يجب أن تبدأ في القدرة على مراقبة خادمك من خط الأوامر. هناك العديد من الأدوات الأخرى للمراقبة التي تستخدم لأغراض مختلفة، ولكن هذه هي نقطة بداية جيدة.
ثم قد ترغب في التعرف على إدارة العمليات في لينكس باستخدام ps، kill، وnice.