기본적으로 자체 자식 프로세스를 만들 수있는 일부 프로세스를 동적으로 시작하고 싶습니다. 원할 때마다 방금 만든 특정 프로세스 그룹을 종료하고 싶습니다.
내가 생각할 수있는 한 가지 방법은 이름으로 프로세스를 시작한 다음 (그룹으로 구별하기 위해) 이름으로 프로세스를 종료하는 pkill
것입니다.
문제는 이름으로 프로세스를 시작하여 이름으로 프로세스를 종료하는 방법입니다 pkill
. 다른 솔루션에도 열려 있습니다.
기본적으로 자체 자식 프로세스를 만들 수있는 일부 프로세스를 동적으로 시작하고 싶습니다. 원할 때마다 방금 만든 특정 프로세스 그룹을 종료하고 싶습니다.
내가 생각할 수있는 한 가지 방법은 이름으로 프로세스를 시작한 다음 (그룹으로 구별하기 위해) 이름으로 프로세스를 종료하는 pkill
것입니다.
문제는 이름으로 프로세스를 시작하여 이름으로 프로세스를 종료하는 방법입니다 pkill
. 다른 솔루션에도 열려 있습니다.
답변:
exec
쉘 내장을 사용할 수 있습니다 .
bash -c "exec -a MyUniqueProcessName <command> &"
<command>
현재 셸을 대체하고 새로운 프로세스가 생성되지 않으므로을 호출하기 위해 새 셸을 시작합니다 exec
.
그런 다음 다음을 사용하여 프로세스를 종료 할 수 있습니다.
pkill -f MyUniqueProcessName
동일한 이름으로 둘 이상의 프로세스를 시작한 다음 pkill -f <name>
모든 프로세스를 종료 할 수 있습니다 .
bash -c "exec -a MyUniqueProcessName <command> &"
합니까?
exec -a name sleep 100
은 내가 할 ps -ef
때 나타나지만 내가 할 때는 나타나지 않습니다 pstree -p
.
bash -c "exec -a mymeld123 meld &"
AMItac / 솔라리스 에이전시
이 경우에는 오디오 트랜스 코딩 도구가 있습니다. (3 회 실행)이지만 이름은 하나만 있습니다.
나는 따라 갔다. Shell 도구에서 bin 디렉토리로 이동하지 않고 3 번 복사 한 다음 새 이름을 지정했습니다. tc-1, tc-2, tc-3 (작은 도구이므로 하드 디스크 공간을 많이 차지하지 않습니다.
따라서 프로세스는 고유 이름으로 시작했으며 다른 트랜스 코딩 프로세스를 중단 할 위험 없이이 고유 이름으로 종료 될 수 있습니다.
또 다른 트릭 일 수 있습니다 ....
#bash 스크립트 Name.sh를 추가하고 실행 가능하게 만드십시오. 거기에 명령을 입력하고 bash 스크립트 자체를 시작하십시오. Centos에서는 bin 이름 자체가 아니라 발췌 한 Bashscript 이름을 사용합니다.
무언가가 누군가를 도울 수 있기를 바랍니다.