sun's longitude:241 40 56.41 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
1224 번 글의 답장글: Re: Re: Re: ps -ef | grep 실행시 왜 잘리죠?
글쓴이: 산이 [홈페이지] 글쓴날: 2002년 12월 02일 01:31:18 월(새벽) 조회: 5906
일단,

# ps -ef | grep aaa | awk '{print $2}' | kill -9

이런 명령어 결과는 제대로 수행되지 않거나 에러날 확률이
높습니다.
즉 kill 옵션 다음에 반드시 PIDs가 나와야 하는데
표준 출력을 표준입력으로 받지 못하기 때문에 파이프 연결시
되지
않습니다.

또한 ps 수행시간이 길면 grep 명령어로 파이프 연결할 경우
자기 자신까지도 포함되므로 이 부분도 체크해야 합니다.

굳지 파이프로 연결해서 kill 명령어를 사용하려면

예)
# kill -9 $(ps -ef | grep 'aaa' | grep -v 'grep' | awk '{print $2}') \
2>/dev/null

이와 같은 방법으로 해야합니다.
(참고로 mysqld 같은 데몬은 그 방식이 약간 다르므로
주의하세요)

프로세스를 죽이는 쉘스크립트를 짜고 있다면
ps 와 파이프 연결 대신 pidof 또는 killall 명령어를 사용해
보세요.

...

그리고
ps 명령어는 3가지 방식의 옵션이 있습니다.
예를들어,

# ps -ef f --width 200

이와 같이 옵션을 복합하여 사용할 수도 있는데

1. 첫번째 -ef 와 같이 대쉬(-)를 하나 사용할 경우 Unix98
스타일이고,
2. 두번째 f 옵션과 같이 대쉬가 없는 경우는 BSD 스타일,
3. 세번째 --width 200과 같은 경우는 GNU 스타일입니다.

또한 각각의 방식에서 옵션은 비슷하지만 모두 같지는
않습니다.
예를들어,
앞에서 -ef 에서 f는 '-f' 옵션으로 Unix98 스타일 옵션의
'full listing'을 의미합니다.
반면 그 다음 옵션에서 대쉬(-)가 없는 'f' 옵션은 BSD 옵션으로
프로세스를 tree 구조와 같이 출력합니다.

따라서

# ps -ef
# ps -e f

의 결과는 각각 다릅니다.

우선 이렇게 옵션 방식에 따라서 다르다는 것을 염두해
두세요.

...

ps 명령결과는
output 폭에 관한 옵션이 없다면, 실제로 화면(스크린)에
 보이는 것과
파이프로 연결하거나 파일로 쓰기할 경우는 약간 다릅니다.

# ps --info
BSD j    OL_j
BSD l    OL_l
BSD s    OL_s
BSD u    OL_u
BSD v    OL_v
SysV -f  (none)
SysV -fl (none)
SysV -j  (none)
SysV -l  (none)

procps version 2.0.7
Linux version 2.4.19
Compiled with: libc 6, internal version 2.2

header_gap=-1 lines_to_next_header=1 max_line_width=80
screen_cols=116 screen_rows=35

personality=0x00000000 (from "unknown")
EUID=0 TTY=136,1 Hertz=100
#

참고로 output 폭에 관한 옵션은

-w, w, --width, --cols, --columns, ...

등이 있습니다.


output 폭 옵션이 없다면 앞의 결과에서
파이프나 파일로 쓰기할때는 그 폭을 max_line_width=80 을
사용합니다.
(이값에 대한 기본값 설정은 저도 잘모르겠네요..
 아마 컴파일시...)

화면에 보이는 폭은 screen_cols=116 으로써 이 값은
현재 화면(창)의 가로 크기에 따라 계속 유동적으로 변합니다.
(따라서 명령어 라인이 길어도 한 줄에 한 프로세스씩 출력)


# ps -ef | grep 'aaa'

이 옵션은 Unix98 스타일 옵션으로 output 폭 옵션이 없기 때문에
파이프 전에는 화면에 꽉찬 내용을 볼 수는 있지만
파이프나 파일로 쓰기하면 한 줄당 최대 80 칸(cols) 정도만
출력합니다.

따라서 화면에 보이는 내용과 정확히 똑같이 output 하려면
화면에 보이는 폭(예: screen_cols=116) 값을 먼저 알아 본 다음에

# ps -ef --cols 116 | grep 'aaa'

이와 같이 --cols, --width 옵션을 사용하여 직접 폭을 지정해줘야
합니다.

그런데 이와 같이 하면 좀 불편하죠..
그래서 wide-output 옵션(-w, w)을 사용하면 모든 명령어 라인
옵션울 볼 수 있습니다.

# ps -efw | grep 'aaa'
or
# ps auwx | grep 'aaa'
or
# ps aux --cols 200 | grep 'aaa'
or
# ps aux --width 200 | grep 'aaa'


참고로 mysqld 서버를 긴 옵션으로 가동해 놓고 'aaa' 대신
'mysqld'로
테스트해 보세요.



*PS)
팁적인 성향이 있어서
조금 길게 설명했습니다.(나중에
 팁문서 작성에 이용)

=============================================================

[박세원]님이 남기신 글:

>앗 지송... 제가 뭘 빠뜨렸네요...
>
>ps -ef | grep aaa | awk '{print $2}' | kill -9
>
>라고 해야 하는데...
>
>문제는 ps -ef 해서 출력되는것 하고,
>
>ps -ef를 파이프 연결이나 리다이렉션을 써서 파일로
>
>저장을 했을 때 나오는 게 틀리다는 겁니다.
>
>후자의 경우는 한줄에 표시되는 글자수가 제한이 
>
>있는 것 같습니다.  직접해 보시면 아실 거예요...
>
>제가 쓰는 리눅스(파란7.1)에서는
 그렇거든요...
>
>저만 그런건지... 
>
>답변 감사 드립니다....
>
>[산이]님이 남기신 글:
>
>>[박세원]님이 남기신 글:
>>
>>>안녀하십니까?

>>>
>>>여기저기 돌아다니다 이 사이트를 발견하고
질문드립니다.
>>>
>>>저는 지금 와우리눅스 7.1 파란을 쓰고 있습니다.
>>>
>>>매일 00:00 시에 어떤 파일(aaa라 가정)을 실행시킬려고
하는데요.
>>>
>>>즉 어제 00:00시에 띄웠던 실행파일을 kill 시키고, 다시
띄울려구요.
>>>
>>>그래서 ps -ef | grep aaa | kill -9 를 실행해 보았지만
먹히질
>>>
>>>않네요.
>>>
>>>그냥 ps -ef 하면 분명 그 파일이 실행되고 있는데도
말입니다.
>>>
>>>ps -ef 를 해서 화면상에 디스플레이 하는 것 하고, 이걸
파이프나
>>>
>>>화일로 저장해서 보면 어떤 길이 이상의 것은 잘려서
나오거든요.
>>>
>>>그래서 위와 같은 현상이 나오는것 같은데, 해결책이
없을까요? 
>>
>>========================================
>>
>>kill [-s sigspec | -n signum | -sigspec] [pid | job]...
>>or
>>kill -l [sigspec]
>>
>>따라서 당연히
>>
>>ps -ef | grep aaa | kill -9
>>
>>이런 명령은 되지 않습니다.
>>즉 kill 옵션 다음에 pid 하나 또는 pid 리스트가 나와야
합니다.
>>
>>ps -ef | grep aaa
>>
>>이 경우는 pid 만 출력되는 것이 아니라 다른
정보까지
>>출력되므로 pid 만 따로 또 뽑아야 합니다.
>>
>>--------------------
>>#!/bin/sh
>>
>>program='aaa'
>>
>>pid=`/sbin/pidof $program`
>>
>>[ X"$pid" != X ] && kill -9 $pid
>>
>>## ...(이하 생략) ...
>>
>>exit 0
>>--------------------
>>
>>이와 같은 쉘스크립트를 짜야 합니다. 
>
>======================================== 

========================================

 
이전글 : Re: Re: ps -ef | grep 실행시 왜 잘리죠?
다음글 : Re: Re: Re: Re: ps -ef | grep 실행시 왜 잘리죠?  
 from 61.254.75.40
JS(Redhands)Board 0.4 +@

Re: Re: ps -ef | grep  실행시 왜 잘리죠? Re: Re: Re: Re: ps -ef | grep  실행시 왜 잘리죠?
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds