작업/프로세스 추적 및 멀티태스킹 모범 사례

작업/프로세스 추적 및 멀티태스킹 모범 사례

저는 10개 이상의 서로 다른 디렉터리에서 10개 이상의 서로 다른 명령을 실행하고 있으며 모든 것을 추적하려면 더 나은 프로세스가 필요합니다.

저는 많은 디버깅을 수행하며 여러 문제를 동시에 해결해야 하는 경우가 많습니다. 실행하는 데 30~240분 정도 걸리는 스크립트가 많이 있습니다. 예를 들면 다음과 같습니다.

  • 작업공간 만들기
  • 코드 컴파일
  • 코드를 실행하여 디버그 정보로 문제를 재현합니다.
  • 운영 자격

나는 다음과 같은 질문을 던지고 있습니다.

  • 무엇이 실행되고 있나요?
  • 왜 실행되고 있나요? 스크립트 작성을 시작하면 무엇을 달성하고 싶나요?
  • 실행은 언제 완료되나요? 종료 코드(성공/실패)는 무엇입니까?

현재 저는 각 디렉터리에서 수행하는 작업을 텍스트 파일에 기록하고 터미널이나 로그 파일을 수동으로 확인하여 모든 작업의 ​​실행 상태를 확인합니다. 더 좋은 방법이 있어야 할 것 같습니다.

답변1

한 작업에서 다른 작업으로 이동할 때 현재 수행 중인 작업을 추적하기 어렵다는 것이 문제라면 다음과 같은 것을 사용하는 것을 고려해 보는 것이 좋습니다.멀티플렉서그리고/또는화면. 이는 터미널을 설정하고 이름을 지정할 수 있는 가상 터미널 윈도우 서버입니다. 이를 통해 터미널에 일부 컨텍스트를 추가하고 데스크탑을 어지럽히지 않고 여러 터미널을 계속 실행할 수 있습니다.

저는 주로 screen을 사용하기 때문에 작업 흐름에 더 익숙하지만 일반적으로 다음과 같이 screen 세션을 설정합니다.

screen -S appX

그런 다음 다음과 같이 연결합니다.

screen -r appX

그런 다음 appX 공간 내에서 appX 관련 작업을 위한 다양한 탭/창을 설정할 수 있습니다. "Compile"이라는 창이 하나 있고 다른 하나는 응용 프로그램의 로그 파일을 추적하는 "Logs"일 수 있습니다. 그런 다음 Ctrl+A+ 키 조합을 사용하여 Ctrl+A한 탭/창에서 다른 탭/창으로 이동할 수 있습니다. 또는 하나가 터미널의 위쪽 1/2 부분에 있고 다른 하나가 아래쪽 1/2 부분에 있도록 터미널을 분할할 수 있습니다.

답변2

유사한 명령을 여러 번 실행하는 경우 유사한 섹션을 쉘 스크립트 또는 makefile에 넣으십시오. 스크립트나 대상에 의미 있는 이름을 지정하십시오. 이렇게 하면 각 터미널이 수행하는 작업을 볼 때 명령줄(그리고 호스트 이름과 현재 디렉터리도 가능)에서 알아야 할 모든 것을 명확하게 알려줄 것입니다.

$PROMPT_COMMAND현재 디렉터리를 표시하고 (bash) 또는 (zsh)에서 preexec명령을 실행하도록 터미널 제목을 설정합니다 . 이렇게 하면 창으로 전환하지 않고도 창 목록에서 직접 무슨 일이 일어나고 있는지 확인할 수 있습니다. 명령이 종료되면 제목을 현재 디렉터리로 설정하고 마지막 명령의 종료 상태( $?)를 설정합니다.

출력을 생성하는 모든 명령을 기록하고 로그에 성공 또는 실패 표시가 포함되어 있는지 확인하십시오(또는 자연적으로 발생하지 않는 경우에는 표시로 끝납니다 echo $?). 이 로깅은 래퍼 스크립트에 포함되어야 합니다(위 참조). 이렇게 하면 이전에 무슨 일이 일어났는지 되돌아볼 수 있습니다. 도움이 된다면 시작일과 종료일도 기록해 두세요.

답변3

질문에 직접 대답하려면:

  • "무엇을 실행하고 있나요?" ps afuxpstree유사한 내용을 통해 현재 실행 중인 내용에 대한 좋은 아이디어를 얻을 수 있습니다. 합리적인 방식으로 스크립트 이름을 지정하면 스크립트의 개요를 쉽게 얻을 수 있습니다. 당신은 또한 수터미널 창 이름 지정사용printf "\033]0;Window title\007"
  • "실행 중인 이유는 무엇입니까? 스크립트를 시작할 때 수행하려는 작업은 무엇입니까?" 작업 중인 문제에 따라 이름이 지정된 로그 파일로 명령 출력을 리디렉션할 수 있습니다. tee실행 중에도 이를 보려면 사용을 선택할 수 있습니다).
  • "무엇이 언제 실행을 마쳤습니까? 종료 코드(통과/실패)는 무엇입니까?" 작업 종료 시 timeecho $?출력을 동일한 파일에 기록하면(또는 이를 스크립트의 표준 부분으로 만들면 더 좋습니다) 마지막에 무슨 일이 일어났는지에 대한 좋은 아이디어를 제공합니다.

답변4

작업 스풀러Linux용 일반 작업 관리 시스템입니다.

하나 이상의 대기열을 사용하여 명령을 실행할 수 있습니다. 새 명령은 이전 명령의 완료 여부에 따라 달라질 수 있습니다. 태그를 사용하여 작업 내의 메타정보를 추적할 수 있습니다. 작업 스풀러에는 완료된 작업에 대한 이메일 알림도 있습니다. 실행 중인 명령과 완료된 명령을 모두 볼 수 있습니다.

관련 정보