ВОЙТИ
    opened image

    ​​​​​​​

     

    Продолжая наше глубокое погружение в возможности команды ps, во второй части мы рассмотрим еще 15 примеров, которые помогут вам освоить более продвинутые техники мониторинга и управления процессами в Linux. Здесь мы сфокусируемся на оптимизации использования ресурсов, безопасности, интеграции с другими утилитами и автоматизации задач.

     

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

     

     

    16. Сортировка процессов по использованию CPU

    Команда:

    ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu
    

    Опция --sort=-%cpu сортирует вывод в порядке убывания по колонке %cpu. Это помогает быстро определить процессы, нагружающие процессор.


    Пример вывода:

      PID USER     %CPU %MEM CMD
     3456 bob      35.0  1.5 /usr/bin/java -jar server.jar
     2345 alice    10.0  2.5 /usr/bin/python app.py
     1234 root      0.5  1.2 /usr/sbin/sshd -D
    

     

    17. Сортировка процессов по использованию памяти

    Команда:

    ps -eo pid,user,%cpu,%mem,cmd --sort=-%mem
    

    Опция --sort=-%mem сортирует процессы по потреблению памяти.


    Пример вывода:

      PID USER     %CPU %MEM CMD
     4567 charlie   5.0 15.0 /usr/bin/python data_analysis.py
     3456 bob      35.0  5.5 /usr/bin/java -jar server.jar
     2345 alice    10.0  2.5 /usr/bin/python app.py
    

     

    18. Отображение времени работы процесса

    Команда:

    ps -p 1234 -o etime
    

    Спецификатор etime показывает время, прошедшее с момента запуска процесса.


    Пример вывода:

        ELAPSED
        02:15:30
    

     

    19. Отображение точного времени запуска процесса

    Команда:

    ps -p 1234 -o lstart
    

    Спецификатор lstart отображает дату и время запуска процесса.


    Пример вывода:

                  STARTED
    Mon Sep 13 10:00:00 2021
    

     

    20. Отображение приоритета процесса

    Команда:

    ps -p 1234 -o pid,ni,cmd
    

    ni: значение "niceness" процесса, определяющее его приоритет. Диапазон от -20 (наивысший приоритет) до 19 (наименьший).


    Пример вывода:

      PID  NI CMD
     1234   0 /usr/sbin/sshd -D
    

     

    21. Отображение процессов с их родительскими процессами

    Команда:

    ps -eo pid,ppid,cmd
    

    Это помогает понять, какие процессы были запущены другими процессами.


    Пример вывода:

      PID  PPID CMD
        1     0 /sbin/init
     1234     1 /usr/sbin/sshd -D
     2345  1234 sshd: user@pts/0
    

     

    22. Вывод процессов без заголовков

    Команда:

    ps -eo pid,cmd --no-headers
    

    Опция --no-headers убирает строку заголовка, что полезно при использовании вывода в скриптах.


    Пример вывода:

     1234 /usr/sbin/sshd -D
     2345 sshd: user@pts/0
    

     

    23. Отображение контекста безопасности (SELinux)

    Команда:

    ps -eZ
    

    Опция -Z выводит контекст безопасности каждого процесса. Это важно в системах с активированным SELinux для управления политиками безопасности.


    Пример вывода:

    LABEL                             PID TTY          TIME CMD
    system_u:system_r:init_t:s0         1 ?        00:00:05 /sbin/init
    system_u:system_r:sshd_t:s0      1234 ?        00:00:00 /usr/sbin/sshd -D
    

     

    24. Фильтрация процессов по терминалу (TTY)

    Команда:

    ps -t pts/0
    

    Опция -t фильтрует процессы, связанные с указанным терминалом.


    Пример вывода:

      PID TTY      STAT   TIME CMD
     3456 pts/0    Ss     0:00 -
     4567 pts/0    R+     0:00 ps -t pts/0
    

     

    25. Исключение определенных процессов из вывода

    Команда:

    ps -e --exclude 1234
    

    Опция --exclude позволяет исключить из вывода процессы с указанным PID.

     

    26. Отображение процессов в реальном времени с использованием watch

    Команда:

    watch -n 5 'ps aux --sort=-%mem | head'
    

    Команда watch перезапускает указанную команду каждые n секунд (в данном случае каждые 5 секунд), позволяя мониторить изменения в реальном времени.

     

    27. Комбинирование ps с awk для расширенной обработки

    Команда:

    ps -eo pid,cmd,%mem --sort=-%mem | awk '$3 > 1.0 {print $0}'
    

    Это отображает процессы, потребляющие более 1% памяти. awk фильтрует строки, где значение в третьем столбце (%mem) больше 1.0.

     

    28. Поиск процессов с использованием регулярных выражений

    Команда:

    ps -ef | grep -E 'ssh|nginx'
    

    Опция -E указывает grep использовать расширенные регулярные выражения. Это отобразит процессы, связанные с ssh или nginx.

     

    29. Отображение количества потоков процессов

    Команда:

    ps -eo pid,cmd,nlwp
    

    nlwp: показывает количество легковесных процессов (потоков) для каждого процесса.


    Пример вывода:

      PID CMD                          NLWP
     1234 /usr/sbin/sshd -D               1
     3456 /usr/bin/java -jar app.jar     25
    

     

    30. Завершение процесса по его имени

    Команда для получения PID процесса:

    ps -C processname -o pid=
    

    Опция -C ищет процессы по имени команды, -o pid= выводит только PID без заголовка.


    Пример:

    ps -C firefox -o pid=
    

    Команда для завершения процесса:

    kill PID
    

    Замените PID на идентификатор процесса, полученный на предыдущем шаге. Для принудительного завершения используйте kill -9 PID.

     

    Заключение

    Команда ps — это мощный инструмент для мониторинга и управления процессами в Linux. Понимание различных опций и возможностей этой команды позволяет системным администраторам эффективно контролировать состояние системы, оптимизировать использование ресурсов и быстро реагировать на возникающие проблемы.

    Освоение приведенных примеров поможет вам глубже понять работу процессов в Linux и повысить уровень профессионализма в управлении системой. Не бойтесь экспериментировать и расширять свои знания, ведь умение эффективно использовать инструменты командной строки — ключевой навык успешного системного администратора.