일반 프로세스에 태그를 지정해야 합니다. 실행 중인 명령을 실제로 제어할 수는 없습니다.
다음과 같이 할 수 있습니까?
run_special_cmd(){
"$@" -- --very-special-command
}
run_special_cmd sleep 5000 && echo 'bar'
그런 다음 나중에 다음을 사용하십시오.
pkill -9 -f '--very-special-command'
어떤 프로세스가 종료되는지 알아보세요. 아니면 나중에 식별하기 위해 프로세스를 표시하는 더 나은 일반적인 방법이 있습니까?
답변1
모든 명령이 전달된 인수를 무시하는 것은 아닙니다.
호출된 프로세스가 분기되지 않으면 호출 프로세스의 pid를 저장하고 exec로 호출할 수 있습니다. 스크립트 사용
#!/bin/sh
echo $$ > /var/run/foo.pid
exec "$@"
그러면 동일한 프로세스에서 명령이 실행되고 프로세스를 실행하기 전에 pid가 저장됩니다.
pid 파일을 삭제하려면 프로세스가 종료된 후 삭제하면 됩니다.
#!/bin/bash
PIDFILE=/var/run/foo.pid
"$@" &
echo $! > $PIDFILE
wait
rm -f $PIDFILE
그러면 백그라운드에서 프로세스가 시작되고, pid를 기록하고, 프로세스가 종료될 때까지 기다린 다음, 파일이 삭제됩니다.