![장기 실행 grep을 실행하고 결과를 less로 파이프하고 모든 것을 백그라운드에 배치하려면 어떻게 해야 합니까?](https://linux55.com/image/5910/%EC%9E%A5%EA%B8%B0%20%EC%8B%A4%ED%96%89%20grep%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B3%A0%20%EA%B2%B0%EA%B3%BC%EB%A5%BC%20less%EB%A1%9C%20%ED%8C%8C%EC%9D%B4%ED%94%84%ED%95%98%EA%B3%A0%20%EB%AA%A8%EB%93%A0%20%EA%B2%83%EC%9D%84%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EC%97%90%20%EB%B0%B0%EC%B9%98%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
나는 종종 다음과 같이 특정 기호에 대한 코드베이스를 찾아야 하는 경우를 발견합니다.
find src/galio -not -path './src/stapi-sdk/apilib/* -regextype posix-extended -iregex '.*(\.hpp|\.hxx|\.cpp|\.cxx|\.h|\.c|\.ma?k|\.sh|makefile)' | xargs egrep --colour=always -Hn 'NUM_EXTERITY_FLAGS' | less -R
find
/결합에는 grep
꽤 오랜 시간이 걸릴 수 있으며 전체 체인을 백그라운드에 두고( Ctrl- Z및 사용 bg
) 나중에 다시 돌아와서 결과를 확인하고 싶습니다.
그러나 전체 작업을 백그라운드로 전환한 후 전체 작업이 즉시 다시 "중지"됩니다 bg
. 해결책이 있나요?
감사해요
답변1
screen
이런 상황에서는 추천하고 싶습니다. (또는 가능하다면 다른 창에서 명령을 실행할 수도 있습니다.)
분리된 세션을 시작하려면 를 입력하면 됩니다 screen
. 그런 다음 명령을 입력하되 &
배경으로 설정하지 마십시오. 실행 중인 세션을 분리하려면 Ctrlathen을 사용하세요 . 기존 세션을 나열하고 다시 연결하는 d데 사용됩니다 .screen -ls
screen -r
답변2
검색 속도를 줄이는 두 가지 문제는 파이프 대기와 읽기를 위해 stdout/error를 여는 것입니다. 일반적인 작업에서는 전체 화면을 채울 만큼 적은 양의 내용을 읽은 후 다음 페이지에 도달할 때까지 읽기를 중지합니다. 파이프에서 읽는 중이고 파이프에 쓰는 프로그램이 파이프 ID가 가득 차서 파이프를 읽고 쓰기가 다음 페이지를 채울 만큼 느려질 때까지 대기 상태에 있다는 것을 알아차리지 않는 한 잘 작동합니다. 이 동작을 줄이는 가장 쉬운 두 가지 방법은 존재하지 않는 것을 검색하거나 표준 입력의 크기를 계산하는 것입니다. 둘 다 전체 파일을 읽습니다. 다음 문제는 덜 제어하려면 키보드로부터 명령을 받아야 하기 때문에 읽기 위해 표준 출력이나 표준 오류를 열어준다는 점이다. 이것은 이상하지만 잘 작동하지만(덜 책임지는 일부 보호 장치를 사용하여) 이제 less에는 읽기용 열린 파일 핸들이 있으며, 이는 제어 tty(덜 제어할 때 필요함)를 가리키고 물건을 옮길 때 Put less가 키를 읽으려고 시도하면 쉘은 키를 잠자기 상태로 만듭니다. 파일을 백그라운드에 넣기 전에 less에서 파일의 끝 부분을 검색하여 이 문제를 해결할 수 있습니다.