Red Hat System Administration I 8.2

Упражнение под руководством преподавателя: Мониторинг процессов

В этом упражнении вы будете использовать команду top для динамического просмотра запущенных процессов и управления ими.

Результаты

Вы сможете управлять процессами в режиме реального времени.

Войдите на workstation как пользователь student с паролем student.

На workstation выполните команду lab processes-monitor start. Эта команда запускает подготовительный сценарий, который проверяет доступность хоста servera в сети.

[student@workstation ~]$ lab processes-monitor start
  1. На workstation откройте рядом два окна терминала. Здесь эти терминалы называются левым и правым. На каждом терминале с помощью команды ssh войдите на хост servera как пользователь student.

    [student@workstation ~]$ ssh student@servera
    ...output omitted...
    [student@servera ~]$ 
  2. В командной оболочке левого терминала создайте новый каталог с именем /home/student/bin. В новом каталоге создайте сценарий оболочки с именем monitor, который создает искусственную нагрузку на процессор. Убедитесь, что сценарий является исполняемым.

    1. С помощью команды mkdir создайте новый каталог с именем /home/student/bin.

      [student@servera ~]$ mkdir /home/student/bin
    2. Создайте в каталоге /home/student/bin сценарий с именем monitor и следующим содержимым:

      #!/bin/bash
      while true; do
        var=1
        while [[ var -lt 60000 ]]; do
          var=$(($var+1))
        done
        sleep 1
      done

      Сценарий monitor работает до тех пор, пока не будет завершен. Он создает искусственную нагрузку на процессор, выполняя шестьдесят тысяч задач сложения. Затем он ничего не делает в течение одной секунды, сбрасывает переменную и повторяется.

    3. Используйте команду chmod, чтобы сделать файл monitor исполняемым.

      [student@servera ~]$ chmod a+x /home/student/bin/monitor
  3. В командной оболочке правого терминала запустите утилиту top. Измените размер окна, сделав его как можно больше по высоте.

    [student@servera ~]$ top
    top - 12:13:03 up 11 days, 58 min,  3 users,  load average: 0.00, 0.00, 0.00
    Tasks: 113 total,   2 running, 111 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    MiB Mem :   1829.4 total,   1377.3 free,    193.9 used,    258.2 buff/cache
    MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   1476.1 avail Mem
    
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    5861 root      20   0       0      0      0 I   0.3   0.0   0:00.71 kworker/1:3-events
    6068 student   20   0  273564   4300   3688 R   0.3   0.2   0:00.01 top
       1 root      20   0  178680  13424   8924 S   0.0   0.7   0:04.03 systemd
       2 root      20   0       0      0      0 S   0.0   0.0   0:00.03 kthreadd
       3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
    ...output omitted...
  4. В командной оболочке левого терминала выполните команду lscpu, чтобы определить количество логических процессоров на этой виртуальной машине.

    [student@servera ~]$ lscpu
    Architecture:        x86_64
    CPU op-mode(s):      32-bit, 64-bit
    Byte Order:          Little Endian
    CPU(s):              2
    ...output omitted...
  5. В командной оболочке левого терминала запустите один экземпляр программы monitor. Используйте амперсанд (&), чтобы запустить процесс в фоновом режиме.

    [student@servera ~]$ monitor &
    [1] 6071  
  6. В командной оболочке правого терминала просмотрите вывод команды top. Используйте отдельные клавиши l, t и m для переключения строк заголовка для нагрузки, потоков и памяти. Убедитесь, что отображаются все заголовки.

  7. Обратите внимание на идентификатор процесса (PID) для monitor. Посмотрите процентную долю использования ЦП процессом. Она должна быть в пределах 15–25 %.

    [student@servera ~]$ top
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    071 student   20   0  222448   2964   2716 S  18.7   0.2   0:27.35 monitor
    ...output omitted...

    Просмотрите средние нагрузки. Средняя нагрузка за одну минуту в настоящее время меньше 1. На полученное значение может влиять конкуренция за ресурсы со стороны другой виртуальной машины или виртуального хоста.

    top - 12:23:45 up 11 days,  1:09,  3 users,  load average: 0.21, 0.14, 0.05
  8. В командной оболочке левого терминала запустите второй экземпляр monitor. Используйте амперсанд (&), чтобы запустить процесс в фоновом режиме.

    [student@servera ~]$ monitor &
    [2] 6498  
  9. В командной оболочке правого терминала обратите внимание на идентификатор (PID) второго процесса monitor. Посмотрите процентную долю использования ЦП процессом. Она также должна быть в пределах 15–25 %.

    [student@servera ~]$ top
     PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    6071 student   20   0  222448   2964   2716 S  19.0   0.2   1:36.53 monitor
    6498 student   20   0  222448   2996   2748 R  15.7   0.2   0:16.34 monitor
    ...output omitted...

    Снова проверьте среднюю нагрузку за минуту. Она все еще меньше 1. Обязательно подождите как минимум минуту, чтобы расчеты обновились с учетом новой рабочей нагрузки.

    top - 12:27:39 up 11 days,  1:13,  3 users,  load average: 0.36, 0.25, 0.11 
  10. В командной оболочке левого терминала запустите третий экземпляр monitor. Используйте амперсанд (&), чтобы запустить процесс в фоновом режиме.

    [student@servera ~]$ monitor &
    [3] 6881 
  11. В командной оболочке правого терминала обратите внимание на идентификатор (PID) третьего процесса monitor. Посмотрите процентную долю использования ЦП процессом. Она снова должна быть в пределах 15–25 %.

    [student@servera ~]$ top
     PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    6881 student   20   0  222448   3032   2784 S  18.6   0.2   0:11.48 monitor
    6498 student   20   0  222448   2996   2748 S  15.6   0.2   0:47.86 monitor
    6071 student   20   0  222448   2964   2716 S  18.1   0.2   2:07.86 monitor 

    Чтобы значение средней нагрузки оказалось больше 1, необходимо запустить больше процессов monitor. В учебной среде 2 процессора, поэтому трех процессов недостаточно. Запустите еще три процесса monitor. Снова проверьте среднюю нагрузку за минуту. Теперь она должна превышать 1. Обязательно подождите как минимум минуту, чтобы расчеты обновились с учетом новой рабочей нагрузки.

    [student@servera ~]$ monitor &
    [4] 10708
    [student@servera ~]$ monitor &
    [5] 11122
    [student@servera ~]$ monitor &
    [6] 11338
            
    top - 12:42:32 up 11 days,  1:28,  3 users,  load average: 1.23, 2.50, 1.54
  12. Закончив наблюдение за значениями средней нагрузки, завершите каждый процесс monitor из top.

    1. В командной оболочке правого терминала нажмите k. Появится приглашение под заголовками и над столбцами.

      ...output omitted...
      PID to signal/kill [default pid = 11338] 
    2. В приглашении выбраны процессы monitor в верхней части списка. Нажмите Enter, чтобы завершить процесс.

      ...output omitted...
      Send pid 11338 signal [15/sigterm] 
    3. Снова нажмите Enter, чтобы подтвердить сигнал SIGTERM 15.

    Убедитесь, что выбранный процесс больше не отображается в top. Если этот PID не исчез, повторите шаги завершения, заменив, когда будет предложено, сигнал SIGKILL 9.

     6498 student   20   0  222448   2996   2748 R  22.9   0.2   5:31.47 monitor
     6881 student   20   0  222448   3032   2784 R  21.3   0.2   4:54.47 monitor
    11122 student   20   0  222448   2984   2736 R  15.3   0.2   2:32.48 monitor
     6071 student   20   0  222448   2964   2716 S  15.0   0.2   6:50.90 monitor
    10708 student   20   0  222448   3032   2784 S  14.6   0.2   2:53.46 monitor
  13. Повторите предыдущий шаг для каждого из оставшихся экземпляров monitor. Убедитесь, что в top не осталось ни одного процесса monitor.

  14. В командной оболочке правого терминала нажмите q, чтобы выйти из top. Выйдите с servera на обоих терминалах.

    [student@servera ~]$ exit
    logout
    Connection to servera closed.
    [student@workstation ~]$ 
    [student@servera ~]$ exit
    logout
    Connection to servera closed.
    [student@workstation ~]$ 

Конец

На workstation запустите сценарий lab processes-monitor finish, чтобы закончить упражнение.

[student@workstation ~]$ lab processes-monitor finish

Упражнение завершено.