답변:
나는 시작했다
while true; do yad; sleep 60; done &
테스트하기 위해 터미널을 닫았습니다. 이제 같은 문제가 있습니다.
ps fjx
내 컴퓨터의 마지막 줄 인으로 프로세스 실행에 대한 개요를 살펴 보겠습니다.
2226 11606 11606 19337 ? -1 S 1000 0:00 \_ /bin/bash
11606 22485 11606 19337 ? -1 S 1000 0:00 | \_ sleep 10
2226 9411 9411 8383 ? -1 S 1000 0:00 \_ /bin/bash
9411 17674 9411 8383 ? -1 Sl 1000 0:00 \_ yad
1 2215 2215 2215 ? -1 Ss 1000 0:00 /lib/systemd/systemd --user
2215 2216 2215 2215 ? -1 S 1000 0:00 \_ (sd-pam)
yad
의 하위 프로세스로 볼 수 있습니다. /bin/bash
닫으면 출력에서로 yad
변경됩니다 . 너무 다음과 같이 당신은 또한 출력을 검색 할 수 있습니다 혼란 트리 뷰의 경우 1 :sleep 60
ps
ps fjx | grep "[y]ad" # or respectively
ps fjx | grep "[s]leep 60"
출력 라인은 두 개의 숫자로 시작합니다. 첫 번째는 PPID, 상위 프로세스의 프로세스 ID이고 두 번째는 PID, 프로세스 자체의 ID입니다. 그것은 9411
두 행에 모두 나타나기 때문입니다 .
2226 9411 9411 8383 ? -1 S 1000 0:00 \_ /bin/bash
9411 17674 9411 8383 ? -1 Sl 1000 0:00 \_ yad
이것이 bash
우리가 죽이고 자 하는 서브 쉘이며 PID를 알게되었으므로 이제 남아있는 모든 것은 간단합니다
kill 9411 # replace 9411 with the PID you found out!
성가신 서브 쉘은 사라졌습니다.
1 : 같이 표기 grep "[y]ad"
대신 단순히의이 grep yad
방지 grep
결과리스트에 표시되지 프로세스 자체.
bash
$!
"가장 최근에 백그라운드에 배치 된 작업의 프로세스 ID로 확장" 변수를 제공 하므로 다음은 백그라운드에서 최신 프로세스를 종료합니다.
kill $!
최신 프로세스 가 아닌 경우 jobs
기본 제공 예제 출력 으로 실행중인 작업 목록을 얻을 수 있습니다 .
[1]- Running while true; do
yad; sleep 60;
done &
[2]+ Stopped sleep 10
그 중 하나는 작업 번호 또는 바로 가기로 액세스 할 수 있습니다 죽이는 작업 목록에서 두 작업있다 %
, %+
( "현재 작업")와 %-
백그라운드에서 실행 루프를 죽일 ( "이전 작업"), 예를 들어, 당신 할 수 있었다
kill %1 # or
kill %-
일시 중단 된 sleep 10
작업 을 종료하려면
kill %2 # or
kill %+ # or
kill %
해당 명령을 입력 한 터미널을 닫을 때 하위 명령이 함께 종료되어야합니다. 이것을 재현하려고 시도했을 때이 동작이 나타났습니다.
이제 실제로 이러한 상황이 발생하지 않았다고 가정 &
하면 명령의 끝 으로 인해 백그라운드에서 실행중인 프로그램을 종료하는 방법은 다음과 같습니다.
echo $$
현재 PID (프로세스 ID)를 기록하여 자신의 세션을 종료하지 않도록 실행하십시오.ps -ef | grep $SHELL
명령을 사용하여 쉘을 실행중인 프로그램을 찾을 수 있습니다.echo $$
. 이것은 당신이 죽이고 싶은 PID입니다.kill -SIGTERM <pid>
명령을 실행하십시오.<pid>
세션이나 컴퓨터를 다시 시작할 수도 있지만 위의 방법으로 컴퓨터를 피할 수 있습니다.
는 &
단말기가 새로운 프로세스를 만들고 그 안에 실행 코드를 얻을 수 있도록합니다. 따라서 코드는 터미널 프로세스와 독립적이됩니다. 터미널을 닫아도 코드가 실행중인 새로 프로세스가 중지되지 않습니다. 따라서 제거 &
하거나 수행 ps -aux
하고 프로세스를 찾아 종료하십시오 kill (process id)
.
일반적으로 전경의 배경 fg의 경우 bg 입니다 . 당신이 사용하는 경우 및 기호 사용 FG는 현재 실행중인 프로그램을 표시합니다. 죽이려면 Ctrl + C 를 누르십시오 .
bg
/ fg
단자에서 분리되면 작동하지 않습니다 bash
. 사용하여 다시 연결 할 수없는 것 reptyr
때문에 bash
자식 프로세스가 ( sleep
).
top
을 누른k
다음 PID를 입력 한 다음 enter를 두 번 눌러 프로세스를 종료 할 수도 있습니다 .