서버를 실행 중이며이 서버의 로그는 파일이 아닌 터미널에 로그인됩니다. 이 로그를보다 적게 사용하고 싶습니다.
node server.js | less
로그를보고 싶을 때 Shift+ F를 사용 하여 파일을 끝내고 로그를 계속 지켜보십시오. 멈추고 싶을 때는 CTRL+를 사용 C합니다.
불행히도 이로 인해 서버도 중지됩니다. 서버를 멈추지 않고 로그 끝을 보는 것을 멈추고 싶습니다.
이것을하는 방법?
서버를 실행 중이며이 서버의 로그는 파일이 아닌 터미널에 로그인됩니다. 이 로그를보다 적게 사용하고 싶습니다.
node server.js | less
로그를보고 싶을 때 Shift+ F를 사용 하여 파일을 끝내고 로그를 계속 지켜보십시오. 멈추고 싶을 때는 CTRL+를 사용 C합니다.
불행히도 이로 인해 서버도 중지됩니다. 서버를 멈추지 않고 로그 끝을 보는 것을 멈추고 싶습니다.
이것을하는 방법?
답변:
에서 F
모드 를 종료하는 방법을 찾을 수 없으므로 less
해결 방법을 사용해야합니다. 예를 들어, 출력을 tmp 파일에 저장 한 다음 해당 tmpfile을 대신보십시오.
node server.js > tmpfile & less tmpfile
는 &
차종 node.js
백그라운드에서 실행 명령을 사용합니다. 즉, less tmpfile
즉시 시작되고 tmpfile을 추적합니다.
한 번 less
, 당신은 누르면 F현재 추적 모드로 들어갈 수 있지만, Ctrl+ C그것은 단지 추적을 중지합니다 서버를 죽이지 않을 것이다. 원하는대로 스크롤 할 수 있으며 F다음을 다시 시작하기 위해 적중 할 수 있습니다 .
일반적으로 "영원히 앞으로"모드를 종료하지 않는 것 같습니다 . +를 man less
누르면 수동으로 입력하는 모드의 이름이 수동으로 지정됩니다 .ShiftF
그러나 어쨌든 정상적인 상태로 돌아갈 수있는 방법이 조금 더러운 것을 발견했습니다. 그래도 명령이 잠깐 멈추므로 서버가 중단없이 실행될 수 있는지 확실하지 않습니다.
어쨌든, 여기 속임수가 있습니다 :
나는 당신이 node server.js | less
벌써 시작 하고 Shift+ F를 눌러 "영원히 앞으로"모드로 들어간 것으로 가정 합니다. 이제 less
더 이상 키 누르기에 반응하지 않습니다.
이 상태에서 Ctrl+ C를 누르면 서버 프로세스가 종료 less
되고 다음을 눌러 나중에 종료 할 수 있습니다. Q(어떤 이유로 든 명령을 작업 목록에서 중지 된 프로세스로 남겨 두십시오. fg
계속 진행하려면 완전히 실행 해야합니다. 나중에 종료), 그러나 이것은 우리가 원하는 것이 아닙니다 .
대신 Ctrl+ Z를 눌러 명령을 중지 ( "고정")하고 쉘 프롬프트로 돌아갈 수도 있습니다. 이제 신속하게 쉘 명령을 입력 fg
( " F 광석 g 명령이 포 그라운드에서 계속 실행 수 있도록 라운드"). 당신의 것을 참고 node
서버 프로세스는이 짧은 시간 동안 일시 정지, 당신이 허용인지 여부를 고려해야한다.
이제 less
전과 같이 전경에서 다시 실행되고 있습니까? 예, 그러나 마술 적으로는 더 이상 "영원히 앞으로"모드가 아닙니다. 예를 들어 화살표 키를 다시 사용하여 위아래로 스크롤 할 수 있습니다.
불행히도, less
버퍼 업데이트를 완전히 중단 한 것으로 보이며, 더 이상 명령을 얼린 줄까지 아래로 스크롤 할 수 있습니다. node
서버는 계속 실행하고, 우리가 가야하지만 출력을 생산하고 less
다시 새로 고침.
내가 찾은 가장 쉬운 방법 less
은 키를 H누르고 Q순차적으로 '도움말 화면을 열고 다시 닫는 것 입니다. 이제 모든 것이 다시 잘 작동하는 것 같습니다.
그러나 가장 깨끗한 해결책은 아마도 terdon의 대답 을 따르고 파일 less
을 모니터링하는 데 사용하여 출력을 임시 파일로 리디렉션하는 것 입니다.
%
오히려 당신은 실행할 수 있습니다 fg
; 타이핑하기가 더 쉽고 빠릅니다. 또한 F
(shift-f)는 hq
트릭 을 수행하지 않아도 여전히 작동 하는 것으로 보입니다 . 좋은! 이제 로그를 팔로우 할 때 할 수있는 ctrl-z
%
Enter
일을 줄이고 적은 일을 한 다음 쳐서 다음으로 돌아갑니다 F
.
less
'의 팔로우 를 사용하고 싶을 때 동시에 여러 터미널에서 기능.
TSTP
신호가 새 데이터가 도착하기를 기다리는 읽기 시스템 호출을 방해 하기 때문에 작동합니다 . less
0 바이트를 수신하고 출력이 종료되었다는 결론을 내립니다. 서버를 일시 정지하지 않으려면 새 터미널 창을여십시오. ps
프로세스의 프로세스 ID를 실행 하고 식별합니다 less
. 그런 다음을 입력하십시오 kill -TSTP <PID>; kill -CONT <PID>
. 이렇게하면 입력하는 동안 지연없이 신호가 다시 전달됩니다.
kill
대신 SIGINT를 보낼 수 있습니다. 그럼 당신은 보낼 필요가 없습니다 CONT
, less
당신을 기다리고 있습니다.
귀하의 질문에 따르면 :
이 서버는 파일이 아닌 터미널에 로그인됩니다.
나는 (temp) 로그 파일을 사용하고 싶지 않다고 가정합니다. 아마도 로그가 크거나 어떤 이유로 든 있습니다.
fifo
파일.내가 생각해 낸 named pipe file
것은 fifo
파일 이라고도하는 파일을 사용하는 것입니다.이 파일은 로그를 적게 파이프하는 데만 사용되며 아무것도 저장되지 않습니다.
먼저 fifo file
:
mkfifo mylog
서버를 실행하고 로그를이 파일로 경로 재 지정하십시오.
node server.js > mylog &
less를 사용하여 로그를 읽습니다 (-f는이 특수 파일을 덜 읽습니다).
less -f mylog
이제 shift+ F를 사용 하여 추적을 수행하고 CTRL+ C를 사용 하여 추적 을 중지 할 수 있지만 서버가 계속 실행 중이므로 shift+로 출력을 다시 추적 할 수 있습니다 F.
백업 계획 : 서버를 중지 한 경우 명령 ( node server.js > mylog &
)을 파일 (예 :)에 넣고 run : server.sh
대신 node server.js > mylog &
run : bash server.sh > mylog &
을 실행하십시오 less -f mylog
.
logrotate
.
less
하고 쉘 프롬프트로 돌아가시겠습니까, 아니면 최신 라인을 보지 않고 로그를 스크롤 할 수있는 일반 비 팔로 잉 모드로 돌아가시겠습니까?node
less