Top

Матеріал з Wiki Welard
Перейти до навігації Перейти до пошуку

Оригинал Список процессов и PID Каждая запущеная программа в операциооных системах Unix ( и не только ), имеет уникальный номер, PID процесса. Список всех запущенных процессов можно получить утилитой ps.

# ps -auxefw                         # Полный список всех запущеных процессов

Однако, зачастую, целесообразней использовать эту команду с выводом на pgrep:

# ps axww | grep cron
 586  ??  Is     0:01.48 /usr/sbin/cron -s
# ps axjf                            # Все процессы в виде дерева (Linux)
# ps aux | grep 'ss[h]'              # Найти все PID процесса ssh, исключая PID процесса grep
# pgrep -l sshd                      # Найти PID процесса по имени(или по его части)
# echo $$                            # PID процесса текушей оболочки
# fuser -va 22/tcp                   # Список процессов использующих порт 22 (Linux)
# pmap PID                           # Карта памяти процессов (выявление утечек памяти) (Linux)
# fuser -va /home                    # Список процессов, имеющих доступ в раздел /home
# strace df                          # Отслеживать(Trace) системные вызовы и сигналы
# truss df

Приоритет процесса

Изменить приоритет процесса можно командой renice. Отрицательное значение, означает более высокий приоритет.

# renice -5 586                      # Повысить приоритет процесса с PID 586
586: old priority 0, new priority -5

C помощью nice можно запускать процессы с определенным приоритетом. Что-бы узнать, используете вы, /usr/bin/nice или nice встроенный в шелл, используйте which nice).

# nice -n -5 top                     # Повысить приоритет процесса(/usr/bin/nice)
# nice -n 5 top                      # Понизить приоритет процесса(/usr/bin/nice)
# nice +5 top  

В то время как nice отвечает за распределение процессорного времени, другая полезная команда ionice, распределяет дисковый IO. Она весьма полезна в случае приложений, активно использующих дисковый IO (например компилирование). Вы можете установить для приложения соответствующий класс ( idle - best effort - real time), загляните в man, там все довольно доступно рассказано.

# ionice c3 -p123                    # Установить класс idle для pid 123 (только Linux)
# ionice -c2 -n0 firefox             # Запустить Фаерфокс с высоким приоритетом и классом best effort
# ionice -c3 -p$$                    # Установить для текущей оболочки класс idla

полезная программа для просмотра загрузки жосткого диска iotop

Последняя команда очень полезна при компилировании или отладке больших проектов. Любая команда, запущенная из текущей оболочки будет иметь пониженный приоритет. Переменная $$, содержит PID текушей оболочки (попробуйте echo $$) FreeBSD использует idprio/rtprio (0 = максимальный приоритет, 31 = наиболее свободный(most idle)):

# idprio 31 make                     # Компилировать с низким приоритетом
# idprio 31 -1234                    # Установить низкий приоритет для PID 1234
# idprio -t -1234                    # -t удаляет real time/idle приоритеты

background/foreground

Процессы запущенные в шелле, можно переключать в фоновый режим(background), приостанавливать, нажав [Ctrl]-[Z], и выводить обратно в foreground, так-же можно использовать команды bg and fg. Команда jobs, выведет списох запущенных в фоновом режиме процессов.

# ping cb.vu > ping.log
^Z                                   # Команда ping приостановлена [Ctrl]-[Z] 
# bg                                 # Отправить в фон и продолжать выполнение
# jobs -l                            # Список фоновых процессов
[1]  - 36232 Running                       ping cb.vu > ping.log
[2]  + 36233 Suspended (tty output)        top
# fg %2                              # Вернуть процесс 2 в обычный режим

Что-бы процесс продолжал свое выполнение после закрытия оболочки, можно воспользоваться командой nohup.

# nohup ping -i 60 > ping.log &

Программа top Программа top показывает работчие данные по запущенным процессфм. Так-же обратите внимание на программу htop, это более расширенная версия программы, работает на Linux и FreeBSD /usr/ports/sysutils/htop ). Что-бы получить справку по ключам, во время работы top, нажмите h. Вот некоторые полезные ключи:


   u [имя пользователя] Посмотреть процессы принадлежащие конкретному пользователю.
Используйте + или пробел для возврата в режим полного просмотра.
   k [pid] - Убить (завершить) процесс с pid.
   1 - Показать статистику по процессору (только Linux)
   R - Переключить сортировку

Команда kill Остановка процессов или отправка сигнала с помощью команд kill или killall.

# ping -i 60 cb.vu > ping.log &
[1] 4712
# kill -s TERM 4712                  # то-же что и kill -15 4712
# killall -1 httpd                   # отправить сигнал HUP процессу с точным именем
# pkill -9 http                      # отправить сигнал TERM процессу с именем или его частью
# pkill -TERM -u www                 # отправить сигнал TERM процессу выполняющемуся от
                                     # имени  конкретного пользователя
# fuser -k -TERM -m /home            # убить процессы имеющие доступ к /home

Наиболее важные сигналы:

   1 HUP - Часто используется для перечитывания конфигурационных файлов
   2 INT - Прервать(interrupt)
   3 QUIT - Выйти
   9 KILL - Безусловно прибить процесс
   15 TERM - Мягкое прерывание