[완료] shell, ctrl+z로 종료했을때 ps 결과에 대한 질문드립니다.
안녕하세요?
저는 이제 금방 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
[자답]
trap을 설정하여 인터럽트 발생시 정상 종료 되도록했습니다.
실행하니 ps에 남아있지 않네요..
trap "exit 0" INT
안녕하세요?
ctrl-z 는..
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 』
댓글 달기