"Ctrl+c"를 사용하지 않고 "tail -f" 모드를 종료하는 방법은 무엇입니까?

"Ctrl+c"를 사용하지 않고 "tail -f" 모드를 종료하는 방법은 무엇입니까?

이 작업을 수행할 때 프로세스를 종료 tail -f filename하지 않고 어떻게 모드를 종료합니까 ?Ctrl+c

내가 원하는 것은 q.top

프로세스를 종료하는 것은 무언가를 종료하는 좋은 방법이 아니라고 생각하기 때문에 이 질문이 궁금합니다.

답변1

주석에서 말했듯 이 프로세스 Ctrl-C는 종료되지 않습니다 tail. 이는 SIGTERM 또는 SIGKILL 신호(악명 높은 ...)를 전송하여 수행됩니다 . 전달 모드를 종료하고 종료하라는 -9SIGINT를 전송합니다 .tail

참고로 더 나은 도구는 다음과 같습니다.

less +F filename

에서는 less버튼을 눌러 Ctrl-C빨리 감기 모드를 종료하고 파일을 스크롤한 다음 F다시 누르면 빨리 감기 모드로 돌아갈 수 있습니다.

알아채다less +F더 나은 대안으로 많은 사람들이 옹호tail -f. 이 두 도구의 차이점과 고려 사항은 아래 답변을 읽어보세요.`tail -f`가 `less +F`보다 더 효율적인가요?

답변2

내가 원하는 것은 상단의 q와 같은 일반적인 종료 방법입니다.

그건 ControlC:)

프로세스를 종료하는 것은 무언가를 종료하는 좋은 방법이 아니라고 생각하기 때문에 이 질문이 궁금합니다.

^C( ControlC) 보내다지능을 신호하다이 프로세스에서는 다음과 같이 정의됩니다.

사용자가 프로세스를 중단하려고 하면 프로세스를 제어하는 ​​터미널이 SIGINT 신호를 프로세스로 보냅니다.

이것이 바로 당신이 여기서 하고 싶은 일입니다 tail. Interrupt . 원하는 작업을 수행하는 다른 방법은 없으며("멋지게" 꼬리 종료) 다른 답변은 tail다른 방법으로 중지할 수 있는 방법을 제공하지만 그다지 좋지는 않습니다.

Press는 ^CLinux에서 작업을 중단하려고 시도합니다. 이것은 완전히 정상적인 현상입니다. 프로세스가 작업을 수행하고 있고 프로세스가 끝나도록 두지 않으면 "나쁜" 유일한 측면입니다. 효과는 프로세스에서 남은 것입니다. 프로세스. 예를 들어, ^C명령 중간에 make부분적으로 컴파일된 소프트웨어가 남아 있지만 괜찮습니다. 추가 실행을 make통해 소프트웨어가 정리되거나 중단된 위치에서 다시 시작됩니다.

답변3

tail -fCtrl c파일 이름, 프로세스를 종료 하지 않고 모드를 종료하는 방법

당신은 그렇게 할 수 없습니다. 어쩌면 당신은 달리고 싶을 수도 있습니다tail -f somefile | less

Ctrl c신호는 tty 하위 시스템(및 쉘)에 의해 해석되고 전송됩니다( SIGINT참조신호(7)그리고개인 유한 회사(7)...). 바라보다tty가 공개됐다.

답변4

기능이 있다고 가정 해 봅시다

function prll(){
..... 
pkill -9 -x tail
}

함수에 따라 꼬리를 실행한다고 가정합니다.

tail -n 1 -f file | 
pv -l > /dev/null | 
prll file

echo !!done!!

결론적으로 답은 이렇습니다.

pkill -9 -x tail

관련 정보