다음 명령을 실행하는 PowerShell 스크립트가 있습니다.putty.exe -ssh user@srv -pw password -m Execute_Command_File -t
스크립트 중에 tailf /dir/log/
명령은 Execute_Command_File에 기록됩니다. 스크립트를 실행한 후 요청한 세션이 열리고 tailf
작동 중입니다.
문제는 Ctrl+C를 눌러 종료하려고 하면 tailf
터미널이 닫히는 것입니다.
/bin/bash
도움이 되지 않는 끝에 추가하려고 했습니다 Execute_Command_File
. 물론 시도했지만 tail -f/F
작동하지 않았습니다 ...
어떤 아이디어가 있나요?
답변1
CTRL+C 때문에 죽는 일이 발생 tail
하지만 부모에게도 전송됩니다(SINGINT) bash
. 기본적으로 bash는 그러한 신호를 받으면 죽기 때문에 bash
신호를 받을 때 의 기본 동작을 바꿔야 합니다 .
사용덫bash(1)
이를 변경하는 내장 명령입니다 .
다음 스크립트 tailf-ctrl.sh
는 데모이며 답변을 보여줍니다.
#!/bin/bash
function finish {
echo "CTRL-C pressed!"
}
F=testfile
echo hello > $F
# set custom action
trap finish SIGINT # comment this to see the problem
tail -f $F
# reset default action
trap - SIGINT
echo "Hello after" > after
cat after
참고:
- 서명CTRL+C와 관련된 신호입니다.
- 첫 번째덫SIGINT 신호와 관련된 사용자 정의 작업 설치
- 두번째덫SIGINT 신호의 기본 동작 재설정
스크립트의 출력은 다음과 같습니다
$ bash tailf-ctrl.sh
hello
^CCTRL-C pressed!
Hello after
이는 두 번째 파일이 작성 되어 tail
.CTRL-C
첫 번째 트랩 명령을 주석 처리하면 문제가 나타나는 것을 볼 수 있습니다. bash는 즉시 종료되고 출력은 다음과 같아야 합니다.
$ bash tailf-ctrl.sh
hello
^C
$