Як вбити всі процеси python, крім одного з bash


11

Як я можу вбити з bash всі процеси python, виключаючи один скрипт python. (Я знаю її назву, але її під іноді можна міняти).

Мені потрібен вид, pkill -f "python"але з виключенням конкретного сценарію python.

Порадьте, будь ласка.

Відповіді:


13

ps aux |grep python |grep -v 'pattern_of_process_you_dont_want_to_kill' |awk '{print $2}' |xargs kill

Оновлення: покрокове пояснення, як вимагається в коментарях

  • ps aux |grep python- показати всі процеси, які відповідають pythonшаблону
  • grep -v 'pattern_of_process_you_dont_want_to_kill' - виключити процес, який ви не хочете вбивати
  • awk '{print $2}' - показати друге поле виводу, це PID.
  • xargs kill- застосувати killкоманду до кожного вхідного аргументу (PID).

Якщо ви не знайомі з xargsкомандою, я б радив вам не хвилюватися, якщо ви не зрозумієте її відразу. Це може здатися досить складним вперше. Я розмістив дуже простий приклад його використання, ви можете отримати Google ще більше.


1
Чудово, але чи можете ви пояснити, як це працює? Наприклад, що таке awk '{print $ 2}' та xargs kill?
user370717

awk '{print $2}' - друкує друге поле psвиводу, у поточному випадку воно є PID. xargsзастосовує killкоманду до кожногоPID
user1700494

1
Вказати це в коментарі приємно, але я б краще проголосувати за вашу відповідь після того, як добре відформатований коментар був інтегрований у вашу відповідь.
пташенята
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.