Обычно существует различие между корневым входом в систему и корневыми полномочиями.
В первом случае Вы идентифицируетесь системой как корень, подразумевая, что у Вас нет буквально ограничений, входа в систему, сделанного, поскольку корень обычно намного более опасен, чем наличие пользователя с корневыми полномочиями потому что:
При наличии пользователя в ярости, это - вероятно, никогда хорошая идея, также даже, администратору действительно нужно неконтролируемое питание сделать его собственные вещи, поэтому много дистрибутивов отключают пользователя root прямо от /etc/shadow
и используйте sudo
это дает корневые полномочия, не входя в систему пользователя root, также sudo
может различать несколько пользователей и ограничить их в четко определенном наборе полномочий и групп.
Существует интересное обсуждение здесь, также я предлагаю считать что-то о как shadow
работы файла.
Существует много способов пойти об этом.
Можно использовать ps
управляйте, чтобы найти идентификатор процесса для этого процесса и затем использовать PID для уничтожения процесса.
$ ps -eaf | grep [w]get
saml 1713 1709 0 Dec10 pts/0 00:00:00 wget ...
$ kill 1713
Можно также найти идентификационное использование процесса pgrep
.
$ pgrep wget
1234
$ kill 1234
Если Вы уверены, что это - единственное wget
Вы работали, можно использовать команду pkill
уничтожить задание по имени.
$ pkill wget
Если Вы находитесь в той же оболочке от того, куда Вы выполнили задание, это - теперь фон. Можно проверить, выполняет ли это все еще использование jobs
команда, и также уничтожает его своим числом задания.
Мое поддельное задание, sleep
.
$ sleep 100 &
[1] 4542
Найдите, что это - число задания.Примечание: номер 4542 является идентификатором процесса.
$ jobs
[1]+ Running sleep 100 &
$ kill %1
[1]+ Terminated sleep 100
Можно возвратить фоновое задание переднему плану с помощью fg
команда.
Поддельное задание, sleep
.
$ sleep 100 &
[1] 4650
Получите число задания.
$ jobs
[1]+ Running sleep 100 &
Возвратите задание № 1 переднему плану и затем используйте Ctrl+C.
$ fg 1
sleep 100
^C
$
В ударе можно использовать fg
получить задание к переднему плану и затем использовать Ctrl+C
Или перечислите процесс в фоновом режиме с jobs
и затем сделайте
kill %1
(с 1 замененным числом jobs
дал Вам),
Править: Однажды на переднем плане, Вы можете Ctrl+C, или как @Zelda упоминания, уничтожить с '%x', где 'x' является числом задания, отправит сигнал по умолчанию (наиболее вероятный SIGTERM в случае Linux).
просто введите fg
принести его к переднему плану, если это был последний процесс Вы фон (с '& ').
Если это не было последнее, введите: jobs
и найдите 'число задания', представленным в' []'. Затем просто введите:
fg 2
.. где '2' число задания, например:
foo@bar:~/junk/books$ jobs
[1]+ Running okular how_to_cook_a_turkey.pdf &
foo@bar:~/junk/books$ fg 1
okular how_to_cook_a_turkey.pdf <- this is now in the foreground.
Правильный способ - набрать jobs
, а затем использовать номер задания для его уничтожения. Для того, чтобы убить его с помощью пида, необходимо вывести его на передний план, как указано в первом ответе. Попробуйте это
Попробуйте это
~/Desktop$ sleep 1000 &
[1] 7056
~/Desktop$ jobs
[1]+ Running sleep 1000 &
/Desktop$ kill %1 #(%1 is the job number)
Если вы выполняете задание сразу после его завершения, вы должны увидеть это
Desktop$ jobs
[1]+ Terminated sleep 1000
Одна вещь, которую я не вижу здесь, и которую я нашел очень полезной, особенно при тестировании команд, это pidof
. Вы можете использовать pidof [command]
, чтобы узнать идентификатор процесса, который запущен в данный момент. Мне это нравится, потому что позволяет быстро найти идентификатор нужной команды, которая обычно является тем, что я только что вызвал.
Получив pid, вы можете просто убить процесс. Это позволяет создавать простые сценарии для убийства процесса, только если он запущен.
Вы также можете использовать kill $!
, чтобы убить последнее фоновое задание.
Un ejemplo común es la herramienta stress
.Digamos que ejecutó lo siguiente:
$ stress -c 4 -m 4
y cerró la ventana del terminal. El proceso continuaría consumiendo sus recursos desde el fondo.
De ella es lo que hago:
$ x=`pgrep stress` ; sudo kill -9 $x
pgrep
enumera los PID del proceso sujeto y lo almacena en la variable x
que luego usa kill -9
para terminarlo.
в bash последний остановленный процесс (Ctrl -Z )вы убьете:
kill %%
kill -9 %%
или, если хотите, используйте:
jobs
, затем:
kill %N
нравитсяkill %2
Самый простой способ — использовать флаг -9
в команде kill
user@host:/path> jobs
[1]+ Running /usr/home/script1.sh $i &
user@host:/path> fg
/usr/home/script1.sh $i
^C
[1]+ Stopped /usr/home/script1.sh $i
user@host:/path> kill -9 %1
[1]+ Stopped /usr/home/script1.sh $i
user@host:/path>
[1]+ Killed /usr/home/script1.sh $i
user@host:/path>
user@host:/path> jobs
user@host:/path>
Это старый вопрос, и на него уже есть несколько хороших ответов, но я попытаюсь представить свой немного по-другому.
На самом деле фоновые процессы называются заданиями , и управление заданиями очень хорошо объясняется на этих 3 коротких страницах:https://www.gnu.org/software/bash/manual/html_node/Job-Control.html
По сути, мы можем ссылаться на задание по спецификации задания , то есть за символом %
, за которым следует либо другой символ (, либо последовательность в некоторых более сложных случаях ), либо задание Я БЫ. И то же самое для kill
, fg
, bg
или disown
.
%+
(или просто %
, или%%
)будет ссылаться на последний фоновый задание (текущее)%-
будет ссылаться на предыдущий %{jobid}
будет ссылаться на указанное задание Чтобы вывести список фоновых заданий, используйте команду jobs
.
kill $!
имеет другое поведение, он уничтожит последний процесс, отправленный в фоновом режиме как задание, а не последнее созданное задание.
Вы отправили 5 заданий в фоновом режиме.
Вы возвращаете задание #2 на передний план(fg %2
или просто %2
), затем отправляете его обратно на задний план (<Ctrl-Z>
, затемbg
).
Это последний процесс, отправленный в фоновый режим, но он остается заданием. #2.
Таким образом, kill $!
завершит задание #2 -последнего процесса (re ), отправленного в фоновый режим, а kill %+
завершит задание #5, последнее задание, которое создано ("текущая работа"):
$ jobs [1] Running sleep 1000 & [2] Running sleep 2000 & [3] Running sleep 3000 & [4]- Running sleep 4000 & [5]+ Running sleep 5000 & $ fg %2 sleep 2000 ^Z [2]+ Stopped sleep 2000 $ bg [2]+ sleep 2000 & $ jobs [1] Running sleep 1000 & [2] Running sleep 2000 & [3] Running sleep 3000 & [4]- Running sleep 4000 & [5]+ Running sleep 5000 & $ kill %+ $ jobs [1] Running sleep 1000 & [2] Running sleep 2000 & [3] Running sleep 3000 & [4]- Running sleep 4000 & [5]+ Terminated sleep 5000 $ kill $! [2] Terminated sleep 2000 $ jobs [1] Running sleep 1000 & [3]- Running sleep 3000 & [4]+ Running sleep 4000 &
Список всех заданий, набрав
jobs
Вывод>>[1]+ Остановлен sudo nano ls.txt
Вывести этот процесс на передний план и убить
fg %1
then press ctrl+c
jobs
имеет нетoutput
иfg
Саис:-bash: fg: 1: no such job
. Но вводfg
работы хорошо и такжеpkill wget
работы хорошо. ноps -eaf|grep wget
и затемkill <process number>
доза не останавливает задание. PS: Я использую третье число в качестве числа процесса. – Mohammad Etemaddar 12.12.2013, 09:32ps
. 3-й # является идентификатором процесса родителя. – slm♦ 12.12.2013, 09:34ps -eaef| grep [w]get
. – slm♦ 12.12.2013, 09:54pgrep
вместо этого,pgrep wget
. – slm♦ 12.12.2013, 09:56ps -eaf | grep [w]get
. Опции, находятся вps
страница справочника.man ps
. – slm♦ 12.12.2013, 10:01