Born Shell 에서 프로그램 pid 변수에 저장하기

wooix의 이미지

사용쉘은 bash가 아니 sh입니다. born 쉘에서

$> run.sh

과 같이 프로그램 실행 했을때 이녀석의 pid를 바로 특정 변수에 저장을 하고 싶습니다.

예를 들자면 어떤 script내에서

SomeVariable=`run.sh`

과 같이 했을 경우 run.sh이 실행되면 생성된 pid를 $SomeVariable에 넣어 버릴 수 없을까요? (저렇겐 안되겠지만 ^^;)

bash쓰다 sh쓰니까 답답하네요. 혹 sh에서 array를 처리하는 방법 아시는 분도 답글 환영입니다.

cinsk의 이미지

그런 목적으로 쓰기 위해서, daemon 형태 또는 background로 동작하는 프로그램들은 pid 파일 (자신의 pid를 기록한 파일)을 만들어 두는 것이 일반적입니다. 따라서 shell script는 그 pid 파일만을 조사하면 되겠죠. 대개 /var/run 밑에 존재합니다. daemon에 따라서 특정 pid 파일을 지정할 수 있게 되어 있는 것도 많습니다.

저도 예전에 비슷한 의문이 있었는데, 위 이외의 경우는.. shell에서 쉽게 pid를 알 수 있는 방법이 존재하지 않습니다.

advanced의 이미지

pidof 란 프로그램을 써보세요. man 페이지를 일부 인용하면

NAME
       pidof -- find the process ID of a running program.

SYNOPSIS
       pidof [-s] [-x] [-o omitpid] [-o omitpid..]  program [program..]

$ pidof gnome-session
5393

ai의 이미지

wooix wrote:
사용쉘은 bash가 아니 sh입니다. born 쉘에서

$> run.sh

과 같이 프로그램 실행 했을때 이녀석의 pid를 바로 특정 변수에 저장을 하고 싶습니다.

예를 들자면 어떤 script내에서

SomeVariable=`run.sh`

과 같이 했을 경우 run.sh이 실행되면 생성된 pid를 $SomeVariable에 넣어 버릴 수 없을까요? (저렇겐 안되겠지만 ^^;)

bash쓰다 sh쓰니까 답답하네요. 혹 sh에서 array를 처리하는 방법 아시는 분도 답글 환영입니다.


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.

wooix의 이미지

제가 글을 자세히 쓰지 않아 많은 분들께 심려를 끼친것 같네요.. 죄송합니다. :oops:

aix server 라서 /var/run은 보이지 않더군요.
pidof라는 프로그램도 역시 찾기 힘들고요..

늦은 시간에 구글링 하다가 $!를 찾아서 문제를 해결하고 아침에 자답 하려고 왔더니 ai 님이 답을 올려 주셨네요.. 감사합니다.

저의 경우 특정 job을 nohup걸어 두고 wait 을 이용해서 job이 죽었을때 일을 처리하는게 목적이였는데 대충 맞아 떨어진것 같네요.. 답분해 주신 분들께 감사드립니다. :D

평온하다~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.