프로세스 종료되면 자동 재시작시키는 프로그램을 어떻게 만드나

익명 사용자의 이미지

리눅스에서 특정프로그램을 자동 실행하게 하였는데
이것이 어떤것에 영향을 받아 종료가 되는것을 방지
하기위해 스크립터로 프로세서상태를 감시하여
종료되었으면 재기동 시키도록 만들었습ㄴ다.
근데 이상하게도 스크립터에서 오동작을 하더군요

while [1] ; do
#------------- Process Check --------------
sleep 60
if ps -A | grep xxx
then
echo "Process ON"
else
/sbin/xxx&
fi
done

프로세서가 있는데도 불구하고 xxx를 다시 실행시키는
걸 가끔 보았습니다. (자주는 아니지만)

그래서 아예 프로세서가 종료되는지 감시하는 프로그램을
하나 짜려고 합니다.
C 에서 어떻게 해야 할런지
깜깜하네요
조언좀 바람니다.

익명 사용자의 이미지

프로세스가 정상적으로 종료를 한다면,
프로그램의 시작부에 atexit에 user function을
추가하여 정상적인 종료를 처리하면 될 듯 합니다.

만약 비정상적인 종료가 존재한다면,
문제가 복잡하겠죠.

꼭 필요하다면 pid를 file에 기록하고
/proc/pid를 검사하는 방법도 좋을듯 합니다.
시작시에 이화일의 pid를 /proc/pid를 확인하면
간단히 할 수도 있죠.

그리고 조금더 빠른 방법은 shared memory에 pid를
저장하고 감시 프로그램이 이 메모리의 process를
추적한다면 조금더 발전적인 방법이 되겠죠.

익명 사용자의 이미지

답변 감사합니다,
그런데 /proc 에 화일로 pid 를 저장해 놓으면
그 pid 프로세스가 살았는지 죽었는지
어떻게 검사하죠
펑션이 있나요

익명 사용자의 이미지

/proc 는 os가 가지고 있는 file system인데요.
메모리로 구성된 fs입니다.
여기에 뭘저장 한다는거죠.

이거는 os가 관리하는 fs이므로 함부로 사용하면
곤란한 경우를 당합니다.

저는 단지 여기를 참조하라는 말입니다.

보통 프로세스가 생성되면, 여기에 등록 됩니다.
그렇기 때문에 사용상 주의를 해야합니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.