Born Shell 에서 프로그램 pid 변수에 저장하기
글쓴이: wooix / 작성시간: 월, 2006/02/27 - 6:40오후
사용쉘은 bash가 아니 sh입니다. born 쉘에서
$> run.sh
과 같이 프로그램 실행 했을때 이녀석의 pid를 바로 특정 변수에 저장을 하고 싶습니다.
예를 들자면 어떤 script내에서
SomeVariable=`run.sh`
과 같이 했을 경우 run.sh이 실행되면 생성된 pid를 $SomeVariable에 넣어 버릴 수 없을까요? (저렇겐 안되겠지만 ^^;)
bash쓰다 sh쓰니까 답답하네요. 혹 sh에서 array를 처리하는 방법 아시는 분도 답글 환영입니다.
Forums:


그런 목적으로 쓰기 위해서, daemon 형태 또는 background로
그런 목적으로 쓰기 위해서, daemon 형태 또는 background로 동작하는 프로그램들은 pid 파일 (자신의 pid를 기록한 파일)을 만들어 두는 것이 일반적입니다. 따라서 shell script는 그 pid 파일만을 조사하면 되겠죠. 대개 /var/run 밑에 존재합니다. daemon에 따라서 특정 pid 파일을 지정할 수 있게 되어 있는 것도 많습니다.
저도 예전에 비슷한 의문이 있었는데, 위 이외의 경우는.. shell에서 쉽게 pid를 알 수 있는 방법이 존재하지 않습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
pidof 란 프로그램을 써보세요. man 페이지를 일부 인용하면
pidof 란 프로그램을 써보세요. man 페이지를 일부 인용하면
NAME pidof -- find the process ID of a running program. SYNOPSIS pidof [-s] [-x] [-o omitpid] [-o omitpid..] program [program..]Re: Born Shell 에서 프로그램 pid 변수에 저장하기
bash 에서는 $! 로 마지막 백그라운드로 실행된 프로세스 번호를 얻어올 수 있습니다만.. sh 에서도 될런지는 모르겠네요.
PARAMETERS Special Parameters ! Expands to the process ID of the most recently executed background (asynchronous) command.War doesnt determine whos right, just whos left.
답변 감사합니다.
제가 글을 자세히 쓰지 않아 많은 분들께 심려를 끼친것 같네요.. 죄송합니다. :oops:
aix server 라서 /var/run은 보이지 않더군요.
pidof라는 프로그램도 역시 찾기 힘들고요..
늦은 시간에 구글링 하다가 $!를 찾아서 문제를 해결하고 아침에 자답 하려고 왔더니 ai 님이 답을 올려 주셨네요.. 감사합니다.
저의 경우 특정 job을 nohup걸어 두고 wait 을 이용해서 job이 죽었을때 일을 처리하는게 목적이였는데 대충 맞아 떨어진것 같네요.. 답분해 주신 분들께 감사드립니다. :D
평온하다~
댓글 달기