Управління процесами в linux
Як ви думаєте, операційна система Linux може автоматично подбати сама про себе? Коли працює все нормально або вам не потрібні ніякі нестандартні можливості - цілком так. Але іноді може знадобитися ваше втручання в її роботу.
У Linux для кожної окремої програми, при її запуску створюється процес. Неважливо запускаєте програму ви вручну самостійно або це робить система або ядро. Наприклад, програма ініціалізації, яка запускається відразу після завершення завантаження ядра теж має свій процес з ідентифікатором 0. Процеси в linux можна описати як контейнери, в яких зберігається вся інформація про стан і виконанні програми. Якщо програма працює добре, то все нормально, але якщо вона зависла або вам потрібно налаштувати її роботу може знадобитися управління процесами в Linux.
У цій статті буде порушена велика тема, ми розглянемо такі можливості:
- Перегляд запущених процесів
- Перегляд інформації про процеси
- Пошук процесів в Linux
- Зміна пріоритету процесів
- завершення процесів
- Обмеження пам`яті доступної процесу
Я не міг не включити до статті перші пункти, але вони дуже прості і ми не будемо розбирати їх дуже докладно. Але ось все інше може здатися складним і недостатньо описаним.
Що таке процес?
Почнемо з того, що розберемося в термінах. По суті, процес - це кожна програма. Як я вже говорив для кожної програми, що запускається створюється окремий процес. В рамках процесу програмі виділяється процесорний час, оперативна пам`ять і інші системні ресурси. У кожного процесу є свій ідентифікатор, Proccess ID або просто PID, по ним, найчастіше і визначаються процеси Linux. PID визначається не випадково, як я вже говорив, програма ініціалізації отримує PID 1, а кожна наступна запущена програма - на одиницю більше. Таким чином PID призначених для користувача програм доходить вже до кількох тисяч.
Насправді, процеси Linux не настільки абстрактні, якими вони вам зараз здаються. Їх цілком можна спробувати помацати. Відкрийте ваш файловий менеджер, перейдіть в кореневий каталог, потім відкрийте папку / proc. Бачите тут купу номерів? Так ось це все - PID всіх запущених процесів. У кожній з цих папок знаходиться вся інформація про процес.
Наприклад, подивимося папку процесу 1. В папці є інші під каталоги і багато файлів. Файл cmdline містить інформацію про команду запуску процесу:
$ / Usr / lib / systemd / systemdОскільки у мене використовується система ініціалізації Systemd, то і перший процес запускається для неї. За допомогою каталогу / proc можна зробити все. Але це дуже незручно, особливо з огляду на кількість запущених процесів в системі. Тому для реалізації потрібних завдань існують спеціальні утиліти. Перейдемо до розгляду утиліт, які дозволяють реалізувати управління процесами в Linux.
Управління процесами в Linux
У Linux є дуже велика кількість утиліт для вирішення різних завдань з управління процесами. Це і такі багатофункціональні рішення, як htop, top, а також прості утиліти, наприклад, ps, kill, killall, who і т д. Я не буду розглядати в цій статті графічні утиліти, і top теж розглядати не буду. Перше бо надто просто, друге - тому що htop краще. Ми зупинимося на роботі з програмою htop і її аналогами в формі утиліт в стилі GNU, одна утиліта - одна функція.
Давайте встановимо htop, якщо вона у вас ще не встановлена. В Ubuntu це робиться так:
$ Ps auxПрограма показує всі ті ж параметри, тільки тут немає інтерактивного інтерфейсу. Думаєте тут не можна впорядкувати процеси, але помиляєтеся, можна. Для цього є опція sort. Ви можете сортувати їх по будь-якому полю, наприклад:
$ Ps aux --sort = -% cpuЯк поля для сортування можуть бути використані пріоритети процесів Linux або будь-які інші параметри. Також ви можете обрізати висновок, якщо не потрібно виводити всю інформацію:
$ pstreeПошук процесів в Linux
Список процесів, це добре. Але іноді, коли який-небудь процес завис і потрібно вбити процес Linux або нам потрібно провести з ним будь-які дії, потрібно виділити цей процес зі списку, дізнатися його PID і інформацію про нього.
Щоб знайти процес linux в htop можна використовувати кнопку F3. Натисніть F3 і наберіть потрібне слово. Далі щоб знайти наступний примірник натискайте F2 або Esc для завершення пошуку:
Відео: Управління процесами в linux
Для пошуку процесів в htop можна використовувати також фільтр htop. Натисніть F4, введіть слово і будуть виведені тільки процеси linux, ім`я яких включає це слово.
Відео: LPIC-1 Курс Linux для системного адміністратора: управління процесами Linux
В утиліті ps фільтрації немає, але зате ми можемо використовувати утиліту grep, перенаправивши висновок ps на неї щоб знайти процес linux:
$ Nice -n 10 apt-get upgradeАбо змінити пріоритет для вже існуючого на його pid:
$ Kill -TERM 1943Також можна знищити процес по імені:
sergiy hard nproc 20Подивитися обмеження для певного процесу ви можете в папці proc:
Max cpu time unlimited unlimited secondsMax file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 204800 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 23562 23562 processes
Max open files 1024 4096 files
Max locked memory 18446744073708503040 18446744073708503040 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 23562 23562 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
Обмеження, змінені, таким чином вступлять в силу після перезавантаження. Але ми можемо і встановлювати обмеження для поточного командного інтерпретатора і створюваних ним процесів за допомогою команди ulimit.
Ось опції команди:
- -S - м`яке обмеження
- -H - жорстке обмеження
- -a - вивести всю інформацію
- -f - максимальний розмір створюваних файлів
- -n - максимальна кількість відкритих файлів
- -s - максимальний розмір стека
- -t - максимальну кількість процесорного часу
- -u - максимальну кількість запущених процесів
- -v - максимальний обсяг віртуальної пам`яті
Відео: 03 - Програмування Linux. Процеси і потоки
Наприклад, ми можемо встановити нове обмеження для кількості відкритих файлів:
$ Ulimit -SnВстановимо ліміт оперативної пам`яті:
- Як запустити програми windows на linux
- Що таке ядро linux
- Що робить ядро linux
- Як приховати процес в linux
- Як подивитися потоки процесу в linux
- Що робити якщо зависла ubuntu
- Як оновити ядро до 4.1 в ubuntu
- Як звільнити пам`ять linux
- Як вбити процес linux
- Як дізнатися версію linux mint
- Установка драйверів в linux
- Віртуальна флешка в linux
- Реліз linux kernel 4.8 rc3
- Процес завантаження linux
- 5 Міфів про контейнерах linux
- Відбувся реліз linux mint 17.3 xfce і kde edition
- Системи ініціалізації linux
- Завантаження диска linux
- Управління службами linux
- Lame - linux administration made easy
- Lfs - linux from scratch