функция в .bash_profile

Я пытаюсь записать функцию в .bash_profile для определения функции для процесса, уничтожающего следующим образом:

function pkill {
                pid = ps -elf|grep python|grep $1|awk -F " " '{print $4}'
                kill -9 pid
}

И то, что я хочу сделать, использует "pkill ключевое слово" для уничтожения процесса, что pid = [PS-elf|grep python|grep keyword|awk-F "" '{печатает 4$}'], и мой код не работал. Как я должен записать эту функцию?

об уничтожении:
мой процесс Python является многопоточным. Я попробовал kill pid,kill -TERM pid, илиkill -INT pid, но все еще может найти его в processlist. Таким образом, я использовал, 'уничтожают-9'.

1
задан 11.03.2010, 03:40

3 ответа

pid=$(ps -elf|grep vim|grep 'screenrc' | awk -F" " '{print $4}')

Но Вы смогли использовать pgrep вместо этого:

pid=$(pgrep -f "python .*$1")

или

pids=$(pgrep -d' ' -f "python .*$1")
kill -9 $pids

Если Вы чувствуете себя уверенно (опрометчивый!):

\pkill -9 -f "python .*$1"
3
ответ дан 12.12.2019, 08:40

Существует ли причина, Вы перечисляете и затем отбрасываете тонну дополнительного спама?

(Я предполагаю, что Вы используете PS GNU, но я предпочитаю синтаксис PS BSD. Это поддерживается PS GNU также, потому что PS GNU поддерживает все.)

 # as others have noted 'pkill' is an existing command, so let's not clash with its name
 function pypkill {
      pids=$(ps ax -opid= -ocomm= | grep python | grep "$1" | awk -F " " '{print $1}')
      kill -TERM $pids
 }

Разбивка:

  • pids =
    • Оболочка sub может возвратить больше чем один PID. Это получает всех их
  • $( )
    • подоболочка. Команды в круглых скобках будут выполняться и их вывод, возвращенный на месте.
  • топор PS
    • шоу все процессы в системе (синтаксис BSD)
  • - opid =-ocomm =
    • говорит PS производить два столбца: PID и название команды, и к ommit строка заголовка
  • уничтожьте - $pids ТЕРМИНА
    • Используя уничтожение-9 последнее средство. В большинстве случаев уничтожьте - ТЕРМИН - то, что Вы хотите или возможно уничтожаете - INT, прежде, чем обратиться для уничтожения - УНИЧТОЖАЮТ.
2
ответ дан 12.12.2019, 08:40

Не был должен это больше быть похожим

  pid=$(ps -elf|grep python|grep $1|awk -F" " '{print $4}')
  kill -9 $pid
0
ответ дан 12.12.2019, 08:40

Теги

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