다른 셸(터미널 창 또는 탭)에서 시작된 작업을 종료하는 방법은 무엇입니까?

다른 셸(터미널 창 또는 탭)에서 시작된 작업을 종료하는 방법은 무엇입니까?

프로세스를 시작하고 터미널 창(예: )의 백그라운드에 놓으면 ping google.com &이를 사용하여 프로세스를 종료할 수 있습니다 kill %1(작업 1이라고 가정).

하지만 다른 터미널 창(또는 탭)을 열면 아래에 백그라운드 프로세스가 나열되지 않아 jobs직접 사용할 수 없습니다 kill.

다른 터미널 창이나 탭에서 이 프로세스를 종료할 수 있습니까?

참고: 저는 Xfce 터미널 에뮬레이터 0.4.3과 bash를 사용하고 있습니다. (솔루션이 bash가 아닌 다른 공통 셸에 있는 경우에도 이에 대해 열려 있습니다.)

답변1

예, 알아야 할 것은 프로세스의 프로세스 ID(PID)뿐입니다. ps, 또는 명령 을 사용하여 이를 찾을 수 있습니다 pidof.

kill $(pidof ping)

다른 쉘에서도 작동해야 합니다. 그렇지 않은 경우 ps 및 grep을 사용하여 ping을 수행할 수 있습니다.

답변2

다른 터미널 창에 입력 하면 top실행 중인 모든 프로세스가 나열됩니다. 프로세스 ID를 기록해 job두고 q이 화면에서 나가세요. 그런 다음 kill프로세스는 평소와 같습니다.

답변3

나는 보통 다음과 같은 일을 합니다:

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

예를 들어 $PROCESS="bash"인 경우 현재 세션의 출력은 다음과 같습니다.

2683 bash
4481 bash
5695 bash

그런 다음 더 이상 운영하고 싶지 않은 프로그램을 선택합니다 kill $PID./bin/bash

psgrep(선택 사항) awkPID를 추적하는 데 도움이 됩니다 kill.

답변4

쉘에서 이 작업을 수행하기에는 너무 간단하고 대답이 아닙니다. 그러나 "해결"하려는 모든 사람들을 위해:

닫아야 하는 다른 터미널 창으로 전환하고 "X"를 클릭합니다. 그러면 프로세스가 종료될 것이라고 말하고 내가 정말로 이 작업을 원하는지 묻습니다. Yes. 그게 내가 필요한 전부입니다.

관련 정보