[완료] shell, ctrl+z로 종료했을때 ps 결과에 대한 질문드립니다.

song9063의 이미지

안녕하세요?
저는 이제 금방 Linux programming 공부를 시작하기로 마음먹고
shell script부터 공부중입니다.
아직 Linux환경을 사용한지가 길지 않아 Shell script를 공부하면서 명령들을 익히는 중입니다.

제가 free명령의 결과를 이용하여 1초 간격으로 화면에 메모리 사용량을 보여주는 스크립트를 작성했습니다.
아래 스크립트를 실행하고, Ctrl+z로 종료시켰습니다.
몇번 반복하여 실행후 PS로 프로세스 목록을 보니 실행한 만큼 프로세스들이 보여집니다.
스크립트 명은 memchk2입니다.(스크립트 내에서 sleep를 사용했습니다.)
아래 ps의 결과는 현재 4개의 memchk2 프로세스가 완전히 종료되지 않음을 나타내는 것인가요?

$ ps
PID TTY TIME CMD
6212 pts/2 00:00:00 bash
6234 pts/2 00:00:00 memchk2
6276 pts/2 00:00:00 sleep
6278 pts/2 00:00:00 memchk2
6290 pts/2 00:00:00 sleep
6372 pts/2 00:00:00 memchk2
6384 pts/2 00:00:00 sleep
6386 pts/2 00:00:00 memchk2
6398 pts/2 00:00:00 sleep
6413 pts/2 00:00:00 sleep
6414 pts/2 00:00:00 ps

스크립트. memchk2

#!/bin/bash
 
# memory graph example
# caddsjy at gmail dot com
 
draw_graph ( ) {
    blockcnt=`expr $1 / 10`
    remaincnt=`expr 10 - $blockcnt`
 
    # draw used block
    while [ "$blockcnt" -gt "0" ]
    do
    echo -n "[*]"
    blockcnt=$(($blockcnt-1))
    done
 
    # draw free block
    while [ "$remaincnt" -gt "0" ]
    do
    echo -n "[ ]"
    remaincnt=$(($remaincnt-1))
    done
    echo
}
 
pertmp="100"
while [ "$inputCmd" != "q" ] ; do
      set $(free)
      totalmem="$8"
      usedmem="$9"
 
      echo "Total = $totalmem"
      echo "Used  = $usedmem"
      usedmem=`expr $usedmem \* $pertmp`
      sumtmp=`expr $usedmem / $totalmem`
      echo "$sumtmp%"
      draw_graph "$sumtmp"
      sleep 1
done
 
exit 0

song9063의 이미지

trap을 설정하여 인터럽트 발생시 정상 종료 되도록했습니다.
실행하니 ps에 남아있지 않네요..

trap "exit 0" INT

안녕하세요?

ymir의 이미지

ctrl-z 는 process 를 suspend 상태로 전환하는 컨트롤 명령입니다.
running process 가 background 상태에서 suspend 되고..
현재 shell 이 리턴됩니다... (jobs, fg, bg 명령 참조)

ctrl-c 하고 잠시 혼동하신 모양이네요.. ^^

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

댓글 달기

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