다른 이름으로 프로세스를 시작하려면 어떻게해야합니까?


12

기본적으로 자체 자식 프로세스를 만들 수있는 일부 프로세스를 동적으로 시작하고 싶습니다. 원할 때마다 방금 만든 특정 프로세스 그룹을 종료하고 싶습니다.

내가 생각할 수있는 한 가지 방법은 이름으로 프로세스를 시작한 다음 (그룹으로 구별하기 위해) 이름으로 프로세스를 종료하는 pkill것입니다.

문제는 이름으로 프로세스를 시작하여 이름으로 프로세스를 종료하는 방법입니다 pkill. 다른 솔루션에도 열려 있습니다.


일반적으로 사용하는 것과 다른 이름 으로 프로세스를 시작하는 방법을 묻고 있습니까? 아니면 명령 줄에서 프로세스를 시작하는 방법을 묻고 있습니까?
Eliah Kagan 2016

프로세스 이름은 Linux에서 기본적으로 파일 이름과 동일하게 표시됩니다. 기본 파일 이름을 프로세스 이름으로 사용하거나 실행할 때마다 파일 이름을 변경하고 싶지 않습니다. 따라서 원하는 특정 이름으로 프로세스를 시작하여 'pkill -f MyOwnName'을 사용하여 방금 MyOwnName이라는 이름의 프로세스를 한 번에 종료 할 수 있습니다.
캐시

답변:


12

exec쉘 내장을 사용할 수 있습니다 .

bash -c "exec -a MyUniqueProcessName <command> &"

<command>현재 셸을 대체하고 새로운 프로세스가 생성되지 않으므로을 호출하기 위해 새 셸을 시작합니다 exec.

그런 다음 다음을 사용하여 프로세스를 종료 할 수 있습니다.

pkill -f MyUniqueProcessName

동일한 이름으로 둘 이상의 프로세스를 시작한 다음 pkill -f <name>모든 프로세스를 종료 할 수 있습니다 .


어떻게 취소 bash -c "exec -a MyUniqueProcessName <command> &"합니까?
VNVN

1
@VNVN 당신은 할 수 없습니다. 명령이 실행 된 경우 실행되었습니다. "실행 취소"하려면 수행 한 작업을 정확하게 알고 가능하면 수동으로 실행 취소해야합니다. 명령을 실행할 때 Ctrl + Z가 없습니다.
terdon

+1. 내 관찰은 : 사용 된 이름 exec -a name sleep 100은 내가 할 ps -ef때 나타나지만 내가 할 때는 나타나지 않습니다 pstree -p.
Trevor Boyd Smith

meld에는 작동하지 않습니다. ->bash -c "exec -a mymeld123 meld &"
Eduardo Lucio

0

AMItac / 솔라리스 에이전시

이 경우에는 오디오 트랜스 코딩 도구가 있습니다. (3 회 실행)이지만 이름은 하나만 있습니다.

나는 따라 갔다. Shell 도구에서 bin 디렉토리로 이동하지 않고 3 번 복사 한 다음 새 이름을 지정했습니다. tc-1, tc-2, tc-3 (작은 도구이므로 하드 디스크 공간을 많이 차지하지 않습니다.

따라서 프로세스는 고유 이름으로 시작했으며 다른 트랜스 코딩 프로세스를 중단 할 위험 없이이 고유 이름으로 종료 될 수 있습니다.

또 다른 트릭 일 수 있습니다 ....

#bash 스크립트 Name.sh를 추가하고 실행 가능하게 만드십시오. 거기에 명령을 입력하고 bash 스크립트 자체를 시작하십시오. Centos에서는 bin 이름 자체가 아니라 발췌 한 Bashscript 이름을 사용합니다.

무언가가 누군가를 도울 수 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.