특정 프로세스 실행 계정의 모든 프로세스를 종료시키려면?

FIFO의 이미지

어떤 프로그램 A가 있는데
이 프로그램은 공유 메모리 등 자원 문제가 복잡합니다.

자원을 공유하는 다른 프로그램들은 종료시에도 자원 해제를 하는 기능이 없고
프로그램 A의 종료시에만 자원 해제가 됩니다.

그래서 프로그램 A의 프로세스 종료 시
이 프로세스를 실행시킨 계정의 모든 프로세스를 죽이고 나서 자원을 해제하고,
계정을 로그아웃까지 시키려고 합니다.

그런데 이런걸 어떻게 짜야 좋을지 모르겠습니다.
당장 자기 프로세스 ID를 구하는것도 잘 모르지만...
일단 '자기 자신을 실행시킨 계정'을 어떻게 구하는건지도 모르겠고
(무슨 시스템 함수가 있나요?)
그냥 죽이다 보면 자기 프로세스의 parent를 죽인다든지 등등 문제가 있을건데
그런걸 방지하면서 '잘 죽이는' 법을 알고 싶습니다.

조언 주시면 감사하겠습니다.

nineye의 이미지


watch process를 돌리면 어떨까 하네요...
watch process는 주기적으로 ps명령으로 프로세스A가 떴는지 체크하고,
새로운 프로세스A가 뜨면 프로세스명칭과 띄운 유저ID(ps 명령의 결과에 나옵니다.)를 list에 등록합니다.
그리고 list에 등록된 프로세스A가 ps명령의 결과에서 없어진다면, 없어진 프로세스의 유저ID를 가져와서 다시 ps명령에서 유저ID필드에 동일 유저ID를 가진 프로세스가 있다면 모두 kill합니다.
그리고 유저를 로그아웃 시키는 명령(명령어는 기억이 잘 안나지만..)을 실행하고
해당 list 아이템을 list에서 제거합니다.
이러면 될 것 같은데... 물론 watch process는 타 계정을 컨트롤 할 수 있는 권한까지 있어야 합니다.
_________________________________________________________

nineye's blog

_________________________________________________________

nineye's blog

FIFO의 이미지

힘없는(?) 계정인지라 이번에 적용은 힘들겠으나 좋은 정보 감사합니다.

jick의 이미지

kill(-1, SIGKILL) 하면 전체 시스템에서 자기가 시그널을 보낼 수 있는 모든 프로세스를 다 죽입니다. 아마 가장 빠르고 단순 무식하게-_- 원하시는 결과를 얻을 수 있는 방법일 듯.

불행히도 "원하는 프로세스만 골라 죽이기" 같은 건 안됩니다.

* 혹시 모르니 setpgrp 같은 걸 찾아보세요. 프로세스 그룹을 설정하면 나중에 kill을 이용해 그룹 단위로 죽일 수 있습니다. (물론 자식 프로세스가 멋대로 setpgrp를 불러서 다른 그룹을 만들면 소용없지만, 다들 착한 프로세스라는 가정 하에...)

FIFO의 이미지

프로세스 그룹이란게 있었군요.
한수 제대로 배워갑니다. 감사합니다.

goodnux의 이미지

ps aux | grep 프로세스 | cut -n userid

ps aux | grep userid | cut -n pid

for in

kill -9 PID

이런식으로요

FIFO의 이미지

cut이란게 있었군요
역시 스크립트의 세계는 심오하다는...
잘 배워갑니다.

댓글 달기

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