[질문] kill -9 를 실행했을 때 발생하는 signal 은 무엇인가요

alonecrow의 이미지

보통 kill 을 하면 SIGTERM 이 발생 하는 것으로 알고 있습니다.
그러나 -9 옵션을 붙이면 SIGTERM 이 발생하지 않는것 같은데요...

-9 옵션을 사용해서 kill을 보냈을 때 어떤 signal 이 발생하는지 궁금합니다.

:shock:

blackrussian의 이미지

man kill 쳐보니

The following pids have special meanings:
-1 If superuser, broadcast the signal to all processes; otherwise
broadcast to all processes belonging to the user.

Some of the more commonly used signals:
1 HUP (hang up)
2 INT (interrupt)
3 QUIT (quit)
6 ABRT (abort)
9 KILL (non-catchable, non-ignorable kill)
14 ALRM (alarm clock)
15 TERM (software termination signal)

이게 있더군여..

혹시나 도움이 될까 적어봤습니다.

존 레논이 생전에 했던 말처럼..
너의 목소리가 들려..
Let it be..

익명 사용자의 이미지

Signal 9번은 잡아낼수 없습니다.
강제적인 성격을 가진 시그널이라 할수 있겠네요.

쎄시봉의 이미지

kill -l 하시면 모든 시그널의 종류를 보실 수 있습니다.

... 63번 까지 있군요

그럼..

mach의 이미지

alonecrow wrote:
보통 kill 을 하면 SIGTERM 이 발생 하는 것으로 알고 있습니다.
그러나 -9 옵션을 붙이면 SIGTERM 이 발생하지 않는것 같은데요...

-9 옵션을 사용해서 kill을 보냈을 때 어떤 signal 이 발생하는지 궁금합니다.

:shock:

프로세스간에 정보를 주고받는 방법은 여러가지를 생각해 볼 수 있습니다.
그중, signal/wait는 프리미티브라고 불릴정도로 기본적이며,
기초적인 것입니다. 마치 수학의 사칙연산(+,-,*,/)라고 봐야겠지요.
프로세스간에 정보를 주고받는 방법으로, 어떤 메시지를 고려해 볼 수 있습니다만,
단지 번호를 지정해서 주고 받는 기초적인 것이 유닉스의 signal/wait입니다.
이때, signal을 보내는 프로그램을 만들어 놓은것이 kill이지요.
kill이라는 단어의 의미와는 사뭇차이가 있습니다만, 이 신호를 받으면 이유가
무엇이고, 이에대한 기본처리는 이렇게 한다라는 규약이 필요한데요.
운영체제가 기본적으로 처리해주기도 합니다만, 프로그래머가 해당
시그널이 자신이 수행한 프로세스내에 도달하면 어찌 할지를 프로그램으로
작성할 수 있습니다. 이를 시그널 핸들러라고 합니다.
시그널이 발생하는 원인은 다양하고(앞분의 답변참조), 그에 대한 처리는
프로그래머가 핸들러를 달아 달리 수행할 수 있습니다.
그러나, 9번 시그널은 프로그래머가 달리 처리할 수 없고(시그널을 잡거나, 핸들링불가) 무조건 그 시그널을 수신한 프로세스를 종료시키는 시그널입니다.
* 여담
구한말에 BBS를 제작했던적이 있는데, 다수개의 모뎀중 특정 모뎀에 문제가 있어,
해당 연결을 강제로 죽이려한적이 있습니다.(당근으로 kill -9 )
그런데, 안죽더라고요 :( 수퍼유저로 변신해서 다시해도 안죽고,...... :(
결국 죽이는데 성공했는데 방법은 해당 포트의 디바이스 파일을 삭제하 고:(
그 프로세스를 죽이니 죽더군요 :( 하여간 여담이었습니다.
참고로 그 플랫폼은 SCO유닉스였습니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

mach의 이미지

컹 죄송합니다.
답변은 안하고 엄한 얘기만 했네요.

SIGTERM만 프로세스를 죽이는게 아니고, 다른 시그널도 죽일 수 있습니다.
시그널에 대한 default핸들러가 죽도록 하게 하기 때문이지요.
시그널을 수신했을때, 죽지 않게 할 수 있는데, 핸들러에서 처리를 해주면 됩니다.그러나, 9번시그널은 손도 못대보는 시그널이지요.

시그널의 디폴트액션에 대해 검토해보시기 바랍니다.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

댓글 달기

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