2015년 9월 6일 일요일

jobs-현재 터미널에서 동작되고 있는 프로세스 목록 출력

jobs
-현재 터미널에서 실행되거나 정지되있는 프로세스의 목록 출력

Usage : 
jobs: 사용법: jobs [-lnprs] [jobspec ...] or jobs -x command [args]

$ job
[1]   실행중               sleep 300 &
[2]   실행중               sleep 400 &
[3]-  정지됨               sleep 500
[4]+  정지됨               sleep 600

이런식으로 출력이 됩니다.

명령어의 옵션은


OptionDescription
-lShow process id's in addition to the normal information.
-pShow process id's only.
-nShow only processes that have changed status since the last notification are printed.
-rRestrict output to running jobs only.
-sRestrict output to stopped jobs only.
-xCOMMAND is run after all job specifications that appear in ARGS have been replaced with the process ID of that job's process group leader.


예를 들어 위의 출력 값에서 PID를 알고 싶다면
$jobs -l
[1]  32225 실행중               sleep 300 &
[2]  32226 실행중               sleep 400 &
[3]- 32227 정지됨               sleep 500
[4]+ 32228 정지됨               sleep 600

이런식으로 옵션을 주시면 됩니다.

백그라운드에서 작업중인 프로세스만 보고 싶다면
$jobs -lr
[2]  32226 실행중               sleep 400 &

정지된 작업만 보고 싶다면
$jobs -ls
[3]- 32227 정지됨               sleep 500
[4]+ 32228 정지됨               sleep 600

jobs에 대한 기능은 이정도입니다.

추가적으로.
이번에 과제 때문에 공부한 부분인데

쉘 스크립트에서 사용하지 못하고 ( 쉘 프로그래밍에서 사용 못함 )
system() 함수에서도 사용하지 못하는 것을 알게되었습니다.

~/pineoc$ which ls
/bin/ls
~/pineoc$ which jobs
(없음)

which 라는 명령어로 이 명령어가 어디있나 확인해봤는데 없더군요..ㅎㅎ
type 이라는 명령어를 이용해서 알아봤는데
(type : 지정된 명령어가 쉘에 내장된 명령어인지, 외부 명령어인지, alias 명령어인지 등을 확인하는 명령어입니다)

~/pineoc$ type man ls cd jobs
man is hashed (/usr/bin/man)
ls 은/는 `ls --color=auto' 의 별칭
cd is a shell builtin
jobs is a shell builtin

결과는 이렇게 됬는데...
cd와 같은 shell 내장 명령어라고 합니다.. 근데 안되네요..ㅎㅎ
bash에서는 되는데 sh 쉘에서는 안되서 system()함수나 shell 스크립트에서 안되는 것으로 보입니다.

그 외에도 fg, bg등의 job control 함수도 마찬가지로 안되는 것 같습니다.

참고
~/pineoc$ sh -c "ls -al"
합계 56
drwxrwx---  9  4096 2014-05-07 12:17 .
drwxrwx--- 16  4096 2014-04-13 00:30 ..
drwxrwx---  2  4096 2012-07-26 20:02 7_26
drwxrwx---  2  4096 2012-08-02 17:32 8-2
drwxrwx---  2  4096 2012-11-20 03:09 assem
drwx------  4 4096 2014-05-05 23:32 
drwxrwxr-x  2 4096 2013-11-19 15:28 shellProgramming
-rwxrwxr-x  1  8430 2014-05-07 12:17 test
-rw-rw-r--  1   112 2014-05-07 12:17 test.c
-rwxrwxrwx  1   18 2014-05-07 12:15 test.sh
drwxrwx---  7 4096 2012-11-29 13:56 unix
drwx------  2  4096 2013-11-25 20:01 
~/pineoc$ sh -c "jobs -l"
~/pineoc$
system()함수의 기능이 /bin/sh -c "string" 을 호출하여 명령어를 실행하고, 끝난후 반환하는데
ls는 잘되지만 jobs는 안되는 것으로 보입니다.

그리고 프로그래밍으로 system() 함수를 사용해서 리턴 값을 확인해본 결과
리턴 값이 0이 나왔는데, 이는 shell을 이용할 수 없는 커맨드라는 의미라고 합니다.
(간단하게 test.sh에 jobs -l 을 넣고 돌려봤는데 이러한 결과가 나왔습니다.)

댓글 없음:

댓글 쓰기

JIRA Plugin - ScriptRunner 소개 #2

관련 글 소개 #1:  https://pineoc.blogspot.com/2019/03/scriptrunner-1.html ScriptRunner 소개 #2 지난 글에서는 Behaviours를 보았고 다음 내용인 콘솔, 리스너 등을 ...