2011-08-10 6 views
1

백그라운드에서 실행되는 내 셸 (ksh) 스크립트에서 콘솔 메시지를 숨기는 데 어려움을 겪고 있습니다.쉘 스크립트 콘솔 메시지 숨기기?

나는 그것을/dev/null로 옮기려고했지만 작동하지 않는 것 같습니다. 내가 놓친 거지 무엇에

$ lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 
lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 

$ ls -lsof: WARNING: /home2/s499929/.lsof_ktazd2250 was updated. 

모든 아이디어 : 나는 스크립트를 시작했다 후

pid=`/usr/local/bin/lsof | grep 16752 | grep LISTEN |awk '{print $2}'` > /dev/null 2>&1 

예 다음은 스크립트의 라인은?

답변

3

/usr/local/bin/lsof 2>/dev/null | grep 16752 | grep LISTEN |awk '{print $2}'

0

아마도 awk가 아닌 실제 lsof 명령의 출력을 리디렉션해야할까요?

+0

예를 들어 풀 낵을 줄 수 있습니까? – roacha

+0

나는 이런 식으로 생각했다 :'ls -ö 2> & 1 | wc -l> dump 2> & 1'은 ls가 에러를 발생 시키도록하기 위해 존재합니다. – Jonatan

0

당신은 변수 할당의 경로를 재 지정할 수 있습니다. 변수 할당은 출력을 생성하지 않으므로 리다이렉션은 아무 것도하지 않습니다.

백틱은 명령의 stdout을 캡처합니다. 그 명령의 stderr를 리디렉션해야합니다. 즉 리다이렉션이 백틱 사이에 있어야합니다.

pid=`/usr/local/bin/lsof | grep 16752 | grep LISTEN | awk '{print $2}' 2>/dev/null` 

그러나 그것은 단지 awk 명령의 표준 오류 리디렉션 내 첫번째 생각

이 작업을 수행하는 것이 었습니다.

pid=`(/usr/local/bin/lsof | grep 16752 | grep LISTEN | awk '{print $2}') 2>/dev/null` 

그러나 개인적으로 나는 역 따옴표로 $(...)을 선호 : 당신은 전체 파이프 라인의 표준 에러 폐기 할 필요가

pid=$((/usr/local/bin/lsof | grep 16752 | grep LISTEN | awk '{print $2}') 2>/dev/null) 

(나는뿐만 아니라 표준 출력, 표준 오류 리디렉션있어 참고를, 당신이에 대한 표준 출력 필요 변수 할당.