Как я могу уничтожить задание, которое инициировалось в другой оболочке (окно терминала или вкладка)?

Ну, не, что Вы ожидаете, но это работает:

history | fgrep -v history | tail -3 | sed 's_^ *__' | cut -f 2- | bash

И можно создать функцию для этого:

myFunc(){
    history | egrep -v 'history|myFunc' | tail ${1} | sed 's_^ *__' | cut -f 2- | bash
}

Таким образом, можно назвать его как:

myFunc -3     
9
11.12.2012, 17:06
3 ответа

Да, все, что необходимо знать, является идентификатором процесса (PID) процесса. Можно найти это с ps команда, или pidof команда.

kill $(pidof ping)

Должен работать от любой другой оболочки. Если это не делает, можно использовать PS и grep для ping.

10
27.01.2020, 20:05

Если Вы вводите top в другом окне терминала это перечислит все выполнение процесса. Отметьте идентификатор процесса Вашего job там, Затем нажмите q оставить тот экран. Затем kill процесс, как обычно.

6
27.01.2020, 20:05
  • 1
    благодарит за Ваш ответ, но top кажется, не показывает все определенные процессы, работающие в оболочке (например, она не показывает ping). Это действительно дает мне PID для эмулятора терминала, но это уничтожает эмулятор терминала, как Вы ожидали бы. –  DQdlM 11.12.2012, 21:51
  • 2
    , если Вы вводите top -U yourusername в терминале это перечислит только процесс, который Вы используете. –  arthankamal 12.12.2012, 05:25
  • 3
    ! +1 только для этого! спасибо –  DQdlM 12.12.2012, 16:59
  • 4
    , в то время как в вершине, хит k затем 15 для мягкого - уничтожает (пробуют сначала), 9 для твердого - уничтожает. –  Michael Durrant 25.12.2012, 06:01

Я обычно делаю что-то вроде этого:

ps aux | grep $PROCESS | grep -v grep | awk '{print $2 " " $11}'

Например, если $PROCESS = "удар", то это - вывод от моей текущей сессии:

2683 bash
4481 bash
5695 bash

Затем я был бы kill $PID поскольку, какой бы ни /bin/bash Я больше не хочу работать.

ps, grep и (дополнительно) awk полезны для выслеживания PIDs к kill.

4
27.01.2020, 20:05

Теги

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