killall & sleep

blhole의 이미지

안녕하세요.
시그널에 대한 질문 드립니다.
아래는 펌웨어를 업그레이드하는 쉘스크립트의 일부인데요.. 이 정도면 될 것 같아 이 부분만 올렸는데, 더 필요하다면 올려드리겠습니다.
질문 내용을 아래 세번째 줄과 네번째 줄에 관련된 내용입니다. (killall -USR1 vtss_appl, sleep 3)

펌웨어 업그레이드는 콘솔에서 실행할 수도 있고 telnet을 통해 원격에서도 실행할 수 있습니다.
콘솔에서 실행할 때는 문제가 없는데, telnet으로 접속해서 스크립트를 실행하면 sleep 이후로 "1"만 출력되고 "2"는 출력되지 않습니다. 물론 콘솔에서 출력값을 확인했고요..
그래도, telnet 데몬은 죽었는지 접속이 끊어집니다. 하지만, 실제로 그 이후 펌웨어를 쓰는 과정은 진행이 되지 않습니다.
무엇이 문제일가요? killall -USR1과 sleep은 어떠한 관계이며, sleep 시간은 왜 필요한지요? 5, 7로 바꾸어서도 해 보았지만, 같은 증상이더라구요.
감사합니다.

------------------------------------------------------------------------------------
exec > /dev/console 2>&1 /console

logger -s -p daemon.notice "Firmware Update: Shutting down applications"

killall -USR1 vtss_appl
sleep 3

echo "1"

shutdown="ipsec samba miniupnpd rp-l2tpd httpd matrixssl lighttpd telnet dropbear"
for app in $shutdown; do
[ -x /etc/init.d/$app ] && /etc/init.d/$app stop >/dev/null 2>&1
done

echo "2"

lock $LOCKFILE

mount -o remount,ro /jffs
------------------------------------------------------------------------------------

mithrandir의 이미지

shutdown="ipsec samba miniupnpd rp-l2tpd httpd matrixssl lighttpd telnet dropbear"
for app in $shutdown; do
[ -x /etc/init.d/$app ] && /etc/init.d/$app stop >/dev/null 2>&1
done

여기서 telnet을 죽이는 것 같네요. 죽이니 죽는듯;;
안죽이시려면 nohup등을 사용해서 background process로 돌려야 하지 않을까요.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

blhole의 이미지

하지만, 저의 포인트는 killall을 하고나서 왜 sleep을 하는지 이며, sleep 시간을 얼마로 주어야 하는지에 대한 문제입니다. 제 설명이 많이 모자랐던 것 같습니다.

mithrandir의 이미지

포인트가 왜 telnet이 죽고 그 이후가 진행되지 않는가 인줄 알았는데 아닌가보네요.
sleep과 kill의 관계는 딱히 없습니다. 아마도 USR1을 날리고 바로 죽지 않는 경우(signal handler가 여러가지 복잡할 경우를 대비해서) sleep을 하는거겠죠. 그러므로 sleep시간이 적당히 길면 (대부분 1초도 충분)
sleep을 늘린다고 결과가 변하지 않습니다.

터미널이 죽고 그 아래에 있는 프로세스들은 터미널을 잃어버려서 SIGHUP을 받게 되며, 이 시그널때문에
프로세스가 죽게 됩니다.

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net

댓글 달기

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