도망친 고양이를 죽이는 방법?

도망친 고양이를 죽이는 방법?

cat수천 줄의 내용이 포함된 파일에 대해 실수로 이 명령을 실행한 경우가 많습니다 .

+ 또는 +를 사용하여 명령을 종료하려고 시도했지만 cat둘 다 터미널에 전체 출력이 표시된 후에만 적용되므로 전체 실행까지 기다려야 합니다.CtrlCCtrlZcatcat

기다리지 않는 더 나은 해결책이 있습니까? 때로는 파일 크기가 100MB에 도달할 수 있기 때문에 기다리는 것이 귀찮을 수 있습니다.

을 사용하고 있습니다 tcsh.

답변1

문제의 파일에 많은 데이터가 포함되어 있으면 전송 신호가 실제로 cat완료되기 전에 도착할 수 있습니다. 실제로 관찰하고 있는 것은 터미널의 제한된 속도입니다. cat터미널에 데이터를 전송하면 터미널이 모든 데이터를 표시하는 데 시간이 걸립니다.

일반적으로 각 출력 줄에 대해 전체 출력 창을 다시 그려야 한다는 점을 명심하세요(예: 창의 내용을 한 줄 위로 이동하고 다음 줄을 맨 아래에 인쇄). 이 프로세스를 직접 프로세스보다 빠르게 만들 수 있는 기술과 알고리즘이 있지만 여전히 시간이 걸립니다.

따라서 가능한 한 빨리 출력을 제거하려면터미널 창 숨기기, 그 시점에서는 (보통) 실제 다시 그리기가 발생하지 않기 때문입니다. 그래픽 환경에서는 이는 창을 최소화하거나 다른 가상 데스크탑으로 전환하는 것을 의미할 수 있으며, Linux 가상 콘솔에서는 다른 가상 데스크탑(( Ctrl+) Alt+ )으로 전환하기만 하면 됩니다.Fx

또한 느린 네트워크 링크(예: GSM 연결을 통한 SSH)를 통해 이 작업을 실행하면 cat터미널 다시 그리기 속도가 더 이상 병목 현상을 일으키지 않으므로 신호에 의해 종료되기 전에 확실히 출력이 줄어드는 것을 볼 수 있습니다.

답변2

터미널 설정

나는 이것이 버퍼링 문제보다 터미널 설정 방법과 더 관련이 있다고 생각합니다. 출력을 확인하십시오. -가 /에서 활성화되어 있으면 출력 라인에 해당 항목이 있어야 stty -a | grep intr합니다 . intr = ^C;그렇지 않은 경우 이를 사용하여 활성화할 수 있습니다. 해당 줄을 OR에 추가하여 영구적으로 만드세요(또는 처음에 변경한 줄을 제거하세요!).CtrlCttyptystty intr ^C.tcshrc.login

Ctrl-가 실패 하면 -를 사용하여 전송을 C시도할 수도 있습니다 . 그래도 문제가 해결되지 않으면 설정이 올바른지 다시 확인하세요.SIGQUITCtrl\stty -a | grep quit

터미널 에뮬레이터 설정

또한 터미널 에뮬레이터의 설정을 확인하십시오(터미널 에뮬레이터를 사용하는 경우). 바로가기가 이 수준(복사 등을 위해)으로 설정되어 있고 해당 수준에 도달하지 않았을 수도 있습니다 Ctrl. 데스크탑 환경이나 Windows 시스템의 다른 곳에서 바로가기를 설정할 수도 있습니다.Cpty

Ctrl터미널 에뮬레이터를 사용하는 경우 Linux에 대한 좋은 테스트는 Linux 콘솔( - Alt- ) 로 전환하고 F1거기에 로그인하여 동일한 동작이 발생하는지 확인하는 것입니다. 그렇지 않은 경우 Windows 시스템이나 터미널 에뮬레이터에 문제가 있는 것입니다.

pty이는 제안된 대로 장치에서 데이터를 읽는 사이의 지연 문제일 수 있습니다.페테브. 그러나 만약 그렇다면 실제로 데이터가 표시될 때까지 몇 분 정도 기다려야 한다면 터미널 에뮬레이터는 분명히 버퍼링을 하고 있는 것입니다.방법데이터가 너무 많습니다(또는 컴퓨터 속도가 느림). 답은 터미널 에뮬레이터 설정에서 버퍼 크기를 줄이거나 다른 버퍼 크기를 사용하는 방법을 찾는 것입니다.

추가 팁

추가할 가치가 있는 다른 것이 있습니다. cat실수로 바이너리를 사용하면 cat일반적으로 통제할 수 없는 상황에 빠지게 됩니다. 이렇게 하면 터미널 설정이 엉망이 될 수도 있습니다(바이너리 데이터가 다양한 터미널 이스케이프 코드와 일치하는 경우가 자주 발생합니다). 이미 설치되어 있는 경우 tput(일반적으로 기본 설치) 다음을 사용하여 재부팅을 피할 수 있습니다.

tput reset

답변3

이것이 바로 tmux옵션 c0-change-intervalc0-change-trigger디자인의 목적입니다. 그럼에도 불구하고 세션을 재개하려면 화면 관리자를 사용해야 합니다.

답변4

예를 들어 콘솔 아이콘을 클릭하거나 Ctrl+ 를 눌러 새 콘솔을 엽니다 Alt. F2거기에 들어가세요

killall -9 cat

그리고 오래된 NFS 잠금이나 "sleep-and-sleep" 상황(시간 초과를 설정하지 않고 불량 섹터 읽기)이 없으면 cat은 종료됩니다.

관련 정보