Давайте предположим, что у вас есть Баш скрипт с именем tmp.sh со следующим содержанием:
#!/bin/bash
(while true; do echo hahaha; sleep 1; done)&
И вы его исполняете! Конечно, он будет печатать hahaha на stdout каждые 1 секунду. Вы не можете перечислить его с помощью заданий. Но ... это все еще процесс! И это ребенок в лесу нынешнего терминала! Итак:
1 Получить имя файла терминала, подключенного к стандартному вводу:
$tty
/dev/pts/2
2- Список процессов, связанных с терминалом (в данном примере мы используем очки/2), и шоу статус с S
и отображение в формате леса f
:
$ps --tty pts/2 Sf
PID TTY STAT TIME COMMAND
3691 pts/2 Ss+ 0:00 /bin/bash
3787 pts/2 S 0:00 /bin/bash
4879 pts/2 S 0:00 \_ sleep 1
3- Теперь, вы можете увидеть, что пример перечисляет сон 1 команды, которая является дочерним /бункера/bash процесс с PID . Теперь убей его!
kill -9 3787
Примечания: Не убивайте процесс Баша, который имеет S + статусы, является процессом Баша, который дает вам подсказку! От человека (пс):
s is a session leader
+ is in the foreground process group
Рекомендации:
В таком случае, как это, вы должны сохранить PID в файле:
#!/bin/bash
(while true; do echo hahaha; sleep 1; done)&
echo $! > /path/to/my_script.pid
Тогда вам может просто сделать какой-то сценарий, чтобы отключить его:
#!/bin/bash
kill -9 $(cat /path/to/my_script.pid)
Вы можете убить последнюю созданную работу с помощью kill $! http://stackoverflow.com/questions/1624691/linux-kill-background-task $! является pid последней работы, которая была запущена. – LinuxDisciple