가출 고양이를 죽이는 방법? 수천 줄인 파일에서 실수로

여러 번 cat내용이 최대 수천 줄인 파일에서 실수로 명령을 실행했습니다 .

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

기다리는 것을 피하는 더 나은 해결책이 있습니까? 때로는 파일 크기가 최대 100MB이므로 기다릴 때 짜증이납니다.

사용하고 tcsh있습니다.



답변

해당 파일에 실제로 많은 양의 데이터가 포함되어 있으면 신호가 실제로 cat끝나기 전에 도달 할 수 있습니다 . 당신이 실제로 관찰하는 것은 터미널의 유한 속도입니다-터미널 cat에 데이터를 보내고 터미널이 모든 것을 표시하는 데 시간이 걸립니다.

일반적으로 각 출력 줄에 대해 전체 출력 창을 다시 그려야합니다 (즉, 창의 내용을 한 줄 위로 이동하고 맨 아래에 다음 줄을 인쇄해야 함). 간단한 방법보다 더 빠르게 수행 할 수있는 기술과 알고리즘이 있지만 여전히 시간이 걸립니다.

따라서 가능한 빨리 출력을 제거 하려면 터미널 창을 숨기십시오 . 일반적으로 실제 다시 그리기가 수행되지 않기 때문입니다. 그래픽 환경에서 이는 창을 최소화하거나 다른 가상 데스크톱으로 전환하는 것을 의미 할 수 있습니다. Linux 가상 콘솔에서 다른 가상 데스크톱으로 전환하면됩니다 (( Ctrl+) Alt+ ).Fx

또한 느린 네트워크 링크 (예 : GSM 연결을 통한 SSH)를 통해이를 실행 cat하면 터미널 속도가 더 이상 병목 현상이 발생하지 않기 때문에 신호로 인해 죽기 전에 훨씬 적은 출력을 볼 수 있습니다. .


답변

터미널 설정

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

실패 CtrlC, 당신은 또한 전송 시도 할 수 있습니다 SIGQUIT으로 Ctrl\. 그래도 문제가 해결되지 않으면 다시 설정되어 있는지 확인 stty -a | grep quit하십시오.

터미널 에뮬레이터 설정

(당신이 하나를 사용하는 경우) 또한 터미널 에뮬레이터의 설정을 확인, 거기 (아마 복사 또는 무언가)이 수준에서 설정 바로 가기하고 있다고 할 수있다 CtrlC손이 닿지 않는 pty수준. 바탕 화면 환경 또는 Window 시스템의 다른 곳에 바로 가기를 설정할 수도 있습니다.

(터미널 에뮬레이터를 사용하는 경우 리눅스에 좋은 테스트는 리눅스 콘솔로 전환하는 것입니다 CtrlAltF1거기에 로그인과 같은 문제가 발생하는 경우 참조). 그렇지 않으면 Windows 시스템 또는 터미널 에뮬레이터에 문제가 있음을 나타냅니다.

peterph가pty 제안한대로 장치 에서 데이터를 읽는 간격이 문제 일 수 있습니다 . 이 경우 당신은 실제로 데이터가 표시 될 때까지 분을 기다려야 할 경우, 그때 확실히 터미널 에뮬레이터는 버퍼링이다 방법 너무 많은 데이터가 (또는 PC가 매우 느립니다). 대답은 터미널 에뮬레이터 설정에서 해당 버퍼 크기를 줄이거 나 다른 것을 사용하는 방법을 찾는 것입니다.

추가 팁

추가 할만한 가치가있는 것; cat실수 cat로 이진 파일을 사용하는 경우 일반적으로 런 어웨이 상황이 발생 합니다. 이것의 다른 효과는 터미널 설정을 망칠 수 있습니다 (이진 데이터가 종종 발생하는 다양한 터미널 이스케이프 코드와 일치하는 경우). 경우 tput(일반적으로 디폴트로) 설치, 다음과 같은 명령을 다시 시작하지 방지 할 수 있습니다 :

tput reset

답변

이것이 어떤 tmux옵션 c0-change-interval이며 c0-change-trigger설계되었습니다. 어쨌든 재개 가능한 세션에는 화면 관리자를 사용해야합니다.


답변

CtrlO옵션은 110 보드 시절부터 유닉스되었습니다. 런 어웨이 고양이 명령은 긴 ASCII 파일이 느린 출력 장치에 덤프되고 전체 파일이 장치 드라이버 출력 버퍼에 배치 될 때 항상 문제가되었습니다. CtrlO버퍼 세척을 시작하고 후속 조치 CtrlO세척을 해제하여 고양이가 정상 속도로 읽을 수 있도록합니다. CtrlO를 입력하면 전체 파일이 플러시되고 명령 프롬프트가 빠르게 반환됩니다.

Linux 장치 드라이버 코더가이 기능을 계속 추가 할 필요성을 느꼈는지 여부는 알려져 있지 않습니다. 이 기능은 CtrlSCtrlQ만 구현할 수 있는 장치 드라이버 수준에서 추가되었습니다 . 나는 이것을 사용하여 많은 수표 인쇄로 큰 디버깅 실행을 덤프 한 다음 볼 필요가있는 곳으로 스크롤합니다.


답변

bash를 사용할 때 Ctrl+를 사용하여 작업을 일시 중단 Z한 다음 PID를 사용하거나 https://stackoverflow.com/questions/1624691/linux-kill-background-task 의 응답을 따라 작업을 중단 할 수 있습니다 (예 : kill -9 %%)


답변

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

killall -9 cat

부실한 NFS 잠금 또는 “무정전 수면”상황이 없으면 고양이가 종료됩니다 (시간 초과가 설정되지 않은 불량 섹터에서 읽음).


답변

이것으로 시도해 볼 수 있습니다

디스플레이 사용 재설정 ctrlj

cat이 여전히 실행 중이면 새 터미널을 열고 pkill -9 -f cat“이 작업을 수행하면 모든 cat 프로세스가 종료됩니다.”