t초 동안 명령의 표준 출력을 폐기합니다.

t초 동안 명령의 표준 출력을 폐기합니다.

저는 다음과 관련된 일부 배치 스크립트를 작업 중입니다.

  • 종료되지 않는 일부 하위 프로세스 실행(비동기식)
  • 기다리다두번째
  • 다른 작업 수행엑스일정 기간
  • 하위 프로세스 종료

이상적으로는 내보낸 하위 프로세스의 표준 출력을 구별할 수 있기를 원합니다.앞으로 엑스에서 보냈습니다뒤쪽에 엑스.

몇 가지 아이디어를 생각해 냈지만 어떻게 구현해야 할지 모르겠습니다.

  • 표준 출력 폐기두번째
  • 섹션을 시각적으로 구분하려면 일부 텍스트(예: "작업 X가 시작되었습니다")를 삽입하세요.
  • stdout을 다양한 출력 스트림으로 분할

답변1

exec문제를 복잡하게 만들 수도 있지만파일 설명자 인수, 두 번째 제안이 가장 간단합니다. 시작하기 전에엑스, echo로그 파일의 태그 문자열입니다.

이러한 명령은 모두 동일한 파일에 추가되므로 모든 출력을 앞에 추가하는 것이 좋습니다.엑스플래그를 사용하면 아직 실행 중인 이전 명령 중 하나와 출력을 구별할 수 있습니다. 대략 다음과 같습니다.

{ X; } | sed 's,^,[X say] ,'

이렇게 하면 추가 분석이 더 쉬워집니다. 이는 안전하지 않으며 매우 긴 프로그램에서는 경쟁 조건이 자주 발생합니다.

단일 로그 줄을 깨는 기회를 잡고 아무런 결과 없이 첫 번째 애플리케이션 배치를 깨뜨릴 수 있는 경우 다음 방법도 작동합니다.

{ Y; } >> log &
sleep $t
kill -STOP %% # last job, like the same as %1
echo -e "\nX started" >> log
kill -CONT %%
{ X; } >> log2

관련 정보