jobs
-현재 터미널에서 실행되거나 정지되있는 프로세스의 목록 출력
Usage :
jobs: 사용법: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
$ job
[1] 실행중 sleep 300 &
[2] 실행중 sleep 400 &
[3]- 정지됨 sleep 500
[4]+ 정지됨 sleep 600
이런식으로 출력이 됩니다.
명령어의 옵션은
Option | Description |
-l | Show process id's in addition to the normal information. |
-p | Show process id's only. |
-n | Show only processes that have changed status since the last notification are printed. |
-r | Restrict output to running jobs only. |
-s | Restrict output to stopped jobs only. |
-x | COMMAND 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 을 넣고 돌려봤는데 이러한 결과가 나왔습니다.)