Удаление всех сценариев python, кроме процесса grep и определенного сценария python

Во-первых, как и говорили другие, вам нужно установить их с WantedBy=default.target вместо WantdBy=multi-user.target. Это стандартный способ включения пользовательских единиц.

Но также, если вы хотите, чтобы они запускались при загрузке, см. эту запись ArchWiki о запуске пользовательских модулей systemd при загрузке вместо привязки к входу в систему.

Вкратце:

# loginctl enable-linger username

(Кстати, Unit=rsync_backup1.service является избыточным, так как файл таймера и сервисный файл имеют одинаковое базовое имя)

1
15.09.2016, 19:42
1 ответ

Вы можете использовать что-то вроде этого:

pkill $(pgrep python | grep -xv $(pgrep test.py))

Работая изнутри наружу, это:

  1. собирает PID для test.py с помощью pgrep test. py
  2. отправляет этот PID в grep -xv, который исключит его (-v; опция -x говорит, что нужно искать всю строку (PID)) из списка, собранного:
  3. pgrep python для сбора списка скриптов python, которые вы хотите убить

Возможно, вам придется подправить pgrep, чтобы найти именно те процессы python, которые вам нужны, но это основная структура. Адаптируйте ее к вашей ситуации, работая заново изнутри:

  1. запустите pgrep test.py, чтобы убедиться, что он находит именно тот PID, который вы ожидаете. Рассмотрите опцию pgrep -f для соответствия полному имени процесса, чтобы быть более уверенным.

  2. запустите pgrep python (или аналогичный), чтобы найти "скрипты python", которые вы хотите уничтожить.

  3. соберите все вместе!

0
28.01.2020, 01:11

Теги

Похожие вопросы