Невозможно завершить работу, не открывая ее - PullRequest
1 голос
/ 03 мая 2009

я безуспешно запускаю следующий код

sudo killall %4

где% 4 - мой сеанс Vim.

Как вы можете прекратить работу, не ставя ее перед собой?

Ответы [ 2 ]

3 голосов
/ 03 мая 2009

Попробуйте kill %4 вместо. Оболочка Unix использует% x в качестве переменных для текущих запущенных процессов. Чтобы увидеть процессы, которые вы можете использовать с синтаксисом% x, используйте jobs. Killall - это обертка вокруг kill, которая в основном эквивалентна `ps -aux | grep | cut -f2 -d "" | xargs kill 'или что-то подобное, если вы ненормальный.

Нет, извините, эта команда оболочки не работает, но она иллюстрирует, как работает killall = p. Это просто убивает каждый процесс, который может соответствовать строке, которую вы предоставляете.

Также попробуйте `man kill ', чтобы узнать больше об kill. В частности, kill -9 может оказаться полезным. Это что-то вроде «принудительного ухода».

2 голосов
/ 03 мая 2009

Я полагаю, вы хотите "убить" вместо "killall". Я тестировал под tcsh так:

home% cat
^Z
Suspended
home% kill %1
home% 
[1]    Terminated                    cat

Кроме того, я сомневаюсь, что это сработает с sudo, потому что sudo вызовет новую оболочку, не так ли? И в этой оболочке% 4 не будет определен.

home% cat
^Z
Suspended
home% sudo kill %1
Password:
kill: illegal process id: %1

Если вам действительно нужно sudo, вы можете попробовать это:

home% jobs -l
[1] + 26318 Suspended cat
home% sudo kill 26318
...