xyz 프로그램을 실행해야 합니다. 몇 초 안에 실행이 완료됩니다. 테스트해야 할 신호 처리 기능이 있습니다. 쉘이나 bash 스크립트에서 어떻게 이 프로그램을 실행하고 kill -14
.
현재 내가 시도하는 명령은 다음과 같습니다
/usr/local/xyz input > some_file 2>&1 & PIDOS=$! && kill -14 $PIDOS
트리거되는 신호 처리가 없는 것 같습니다.
답변1
명령이 괜찮아 보입니다. 그런데 막상 해보니 명령이 너무 빠른 것 같습니다. 내 테스트 스크립트가 실행되기 전에 신호 처리기를 설치할 시간이 없는 것과 같습니다.
테스트 스크립트:
$ echo '$SIG{USR1} = sub { print "GOT SIGNAL\n" }; sleep 100' > sigtest.pl
즉시 촬영: ( 다음 프롬프트가 즉시 인쇄되지 않도록 거기에서 자십시오.)
$ perl sigtest.pl & kill -USR1 $! ; sleep 1
[1] 8825
[1]+ User defined signal 1 perl sigtest.pl
아무것도 인쇄하지 않지만 신호와 함께 사라집니다. 잠시 시간을 내어 보겠습니다.
perl sigtest.pl & ( sleep 0.5 ; kill -USR1 $! )
[1] 8827
GOT SIGNAL
[1]+ Done perl sigtest.pl
이제 작동하고 신호 처리기가 트리거됩니다. (신호가 중단되었으므로 sleep
스크립트는 어쨌든 종료됩니다.)