일부 사용자 종속 프로세스는 상단에 표시되지 않습니다.

일부 사용자 종속 프로세스는 상단에 표시되지 않습니다.

스케줄러에 의해 실행될 것으로 예상되는 top 명령이 포함된 스크립트를 개발했습니다. 직접 실행하면 예상한 결과를 얻지만 스케줄러에 의해 실행하면 예상한 결과를 얻지 못합니다.

문제의 코드 줄은 다음 줄입니다.

ESBLOGENTRY=`top -b -n 1 -c|grep " DataFlowEngine"|grep -v grep| gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'|grep ACES_KOFAX_TCM_DRS|sed 's/[ ]*$//'`

방금 대화형 및 전체 명령 옵션(-b -n 1 -c) 없이 top을 실행한 다음 grep을 수행하고 타임스탬프를 추가했습니다.

시스템의 시스템 관리자가 루트 또는 나와 동일한 사용자에게 su 명령을 실행했는데 때로는 프로세스가 사라졌습니다(ESBLOGENTRY가 비어 있음).

스케줄러에서 사용하는 사용자는 출력을 얻지 못합니다.

이것에 무엇이 문제가 될 수 있는지에 대한 아이디어가 있습니까?

답변1

주문하다

ESBLOGENTRY=`top -b -n 1 -c|grep " DataFlowEngine"|grep -v grep| gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'|grep ACES_KOFAX_TCM_DRS|sed 's/[ ]*$//'`

가상 출력에는 top최소한 다음 두 문자열이 포함됩니다.

DataFlowEngine ACES_KOFAX_TCM_DRS

34자입니다. 빠른 확인에서는 top64열부터 시작하는 명령이 표시됩니다. 하지만 top최대 80개 열까지의 행만 표시됩니다. 이는 환경이 $COLUMNS더 넓은 값으로 설정된 경우 사용될 수 있습니다 top(빠른 확인은 Debian 7에서 발생합니다). 이것top매뉴얼 페이지옵션 을 사용하면 -w기본값은 512개 열이라고 말하지만 기본 너비는 언급하지 않습니다.아니요옵션.

줄이 짧아지면 grep for가 ACES_KOFAX_TCM_DRS실패하여 스크립트가 빈 문자열을 반환하게 됩니다. 당신이 사용하는 경우-w옵션을 사용하면 스크립트가 더 일관되게 작동해야 합니다.

또는 명령을 다음으로 변경하십시오.

ESBLOGENTRY=`COLUMNS=128 top -b -n 1 -c|grep " DataFlowEngine"|grep -v grep| gawk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }'|grep ACES_KOFAX_TCM_DRS|sed 's/[ ]*$//'`

top다른 프로그램을 방해하지 않고 환경을 설정합니다 .

관련 정보