Я пытаюсь записать функцию в .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'.
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"
Существует ли причина, Вы перечисляете и затем отбрасываете тонну дополнительного спама?
(Я предполагаю, что Вы используете 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
}
Разбивка: