2013-02-06 2 views
0

SIGNAL.5 초 후에 프로세스에 보내려고합니다.유닉스/리눅스를 통해 신호 보내기

어쩌면 이것은 좋은 생각이 아니지만 나는 드문 임시적인 경우를 위해 그것을하고 싶다.

다음과 같이 시도했지만 작동하지 않습니다.

(sleep .5;kill -9)| some_process 

답변

1

sleep .5; kill -9 $(pidof some_process). pidof은 프로세스 이름에 대한 프로세스 ID를 리턴합니다. $()은 명령의 결과를 kill 명령으로 리턴합니다. 대안은 다음과 같습니다 자세한 내용은

sleep .5; pidof some_process | xargs kill -9

체크 man pidof.

편집 : timeout도 있습니다. timeout -s SIGKILL 0.5s some_process 내가 당신의 질문을 정확하게 이해할 수 있다면 트릭을해야합니다.

+0

나는이'PIPE' 이후 프로세스를 종료 할 번호. 이'some_process'는 다른 프로세스가 아닙니다. – Suku

+0

기본적으로'some_process'의 PID를 얻지는 못합니다. 그래서'some_process'에 파이프를 통해'SIGNAL'을 보내야합니다. – Suku

+1

그래서 프로세스가 시작되어야하고'0.5' 초 후에 죽어야합니까? 어쩌면'man timeout'이 여기 도움이 될까요? 'timeout -k'? –

5

신호는 파이프로 연결되지 않습니다. 그들은 프로세스 식별자 (pid)로 이동합니다. (즉, &가 무엇의)

some_process & sleep .5; kill -KILL $! 

배경에 some_process를 실행하는 것입니다 : 나는 이런 식으로 뭔가를 시도 할 수 있습니다. 0.5 초 후 마지막으로 백그라운드 프로세스의 PID를 나타내는 변수 $!이 사용됩니다.

(일부 시스템 sleep는 정수를 받아 있습니다.)

관련 문제