백그라운드에서 명령을 실행하고 동시에 출력을 기록하는 방법

백그라운드에서 명령을 실행하고 동시에 출력을 기록하는 방법

백그라운드에서 일부 명령을 실행하고 동시에 출력을 보고 제대로 실행되는지 확인하고 싶습니다.

wp-cli일부 작업을 수행 하고 출력을 저장하는 데 사용합니다 .

답변1

"출력을 텍스트 파일로 저장하고 싶습니다"와 "출력을보고 싶습니다"를 올바르게 이해하면 대답여기도움이 될거야.

"이 tee명령은 표준 입력을 표준 출력으로 복사합니다.그리고인수로 제공된 모든 파일에서도 작동합니다. 이는 파이프를 통해 일부 데이터를 전송할 뿐만 아니라 복사본을 저장하려는 경우에도 유용합니다. "

여기에서 자세한 내용을 읽을 수도 있습니다.
https://www.gnu.org/software/coreutils/manual/html_node/tee-inspirion.html

gustafbstrom을 사용한 간단한 예:
program [arguments...] 2>&1 | tee outfile

따라서 명령의 출력을 파일로 저장하면서 화면에서 볼 수 있습니다.

답변2

"백그라운드에서 실행"과 "출력을 보고 싶습니다"라는 두 가지 질문을 혼동하고 있습니다.

한발 물러서서 문제에 대해 더 많이 생각해야 합니다. 당신이 정말로 원하는 것은 무엇입니까?

내가 수집한 바에 따르면, 당신은 정말로 "백그라운드에서 실행"하고 싶어합니다.

두 가지 목표를 모두 달성할 수 있지만 둘 중 하나가 우선순위를 갖고 주요 목표가 되어야 합니다. 여기에서 다른 솔루션이 통보됩니다.

"프로그램의 출력을 보는 것"은 상당히 사소한 문제이므로 어떻게 해결하든 다른 토론 tee과 리디렉션된 답변을 참조하십시오.

앞서 말했듯이 먼저 "컨텍스트"에 집중하는 것이 좋습니다.

첫 번째 사실: 유닉스에는 "컨텍스트"가 없다는 것을 깨달아야 합니다!

데몬 프로세스라는 개념이 있습니다. 그런 다음 "데몬" 해킹이 있지만 둘 다 "배경"을 의미하지는 않습니다.

악마화의 개념은 오늘날에도 유효하지만 "데몬화"의 개념은 그렇지 않습니다! 2022년인 오늘, 우리는 느린 "데몬"을 창밖으로 내보낼 수 있는 모든 도구를 갖추고 있습니다.

데몬은 멍청합니다. 이것은 BSD에 의해 도입된 버그이며 전혀 발생해서는 안 되며 수십 년 동안 초보자들을 혼란스럽게 했습니다.

반면에 데몬은 단일 사용자 io를 처리할 뿐만 아니라 단일 사용자 처리 및 사용자 세션 바인딩(제한된) 시간 프레임으로 제한되지 않는 프로세스일 뿐입니다. 데몬은 무기한으로 실행되며 종종(항상은 아니지만) 다중 사용자 IO를 처리하며 어떤 사용자 세션에도 연결되지 않습니다. 그러나 "전경"/"배경"은 더 이상 중요하지 않습니다.

따라서 원래 설명으로 돌아가서 유닉스에는 "컨텍스트"가 없으며 두 가지 가능성만 있습니다. 프로세스의 출력과 입력이 현재(사용자) 터미널에 연결되거나 다른 곳에 연결됩니다.

현재 터미널에 연결된 프로세스(예: "프런트엔드" - 하지만 이것은 단지 프런트엔드일 뿐이며 Ben은 다른 프런트엔드를 갖고 있고 Casey도 마찬가지라는 점을 기억하세요)는 해당 터미널의 연결이 끊어지면 자연스럽게 종료됩니다. 따라서 연결 해제 가능한 터미널에 연결되지 않은 모든 항목은 "백그라운드에서" 실행됩니다.

이 질문을 이해하고 혼동하지 않기를 바랍니다. 그렇지 않다면 이해할 때까지 위의 단락을 다시 읽으십시오.

따라서 "백그라운드"의 경우 실행 중인 wp-cli인스턴스가 임시 터미널에 연결되어 있지 않은지 확인하기만 하면 됩니다.

터미널 에뮬레이터 터미널, VT 로그인 터미널 및 SSH 로그인 터미널은 임시적입니다. 즉, 연결을 끊을 수 없습니다. 따라서 당신이 해야 할 일은 wp-cli임시가 아닌 터미널, 즉 자동으로 연결이 끊어지지 않는 터미널에 "바인딩"하는 것뿐입니다. 가장 실행하기 쉬운 것은 tmux및 입니다 screen.

따라서 서버에 로그인하고 새 tmux세션을 시작한 다음 wp-cli거기에서 이동하십시오. SSH 세션이 실패하더라도(네트워크 문제) SSH 터미널(네트워크 실패 시 파괴됨)이 아닌 wp-cli"내부" 터미널에 연결되어 있으므로 작업은 여전히 ​​영향을 받지 않습니다 . tmux이렇게 하면 효과적으로 "맥락화"를 달성할 수 있습니다.

이제 출력을 보관하려는 경우 외에는 다른 것이 필요하지 않습니다. tmux생성된 모든 줄을 통해 뒤로(말장난 의도) 스크롤할 수 있는 스크롤 기능이 있기 때문입니다 wp-cli(물론 tmux는 기록된 줄 수를 제한합니다).

출력을 보관하려면 wp-cli | tee wp-cli.log세션 내에서 간단히 구성하면 tmux출력을 동시에 "감시 및 기록"할 수 있습니다.

screen비슷 tmux하지만 나이도 많고 정신지체도 많으니 꼭 보시길 권합니다 tmux. 반면에 screen더 많은 시스템에 존재합니다(다양한 파괴 단계). 선택은 당신의 것입니다.

tmux는 사용자가 요청한 대로 "백그라운드에서" 긴 임시 작업을 실행하기 위한 훌륭한 "플랫폼"입니다.

불행하게도 때때로 tmux임시/수동(예: 서버가 다시 시작될 때마다 tmux세션을 재설정하고 거기에서 명령을 시작해야 함)과 같이 스크립트를 "데몬"으로 변환하고 싶지만 이는 이 답변을 넘어서는 것입니다. .

관련 정보