명령 프롬프트에서 실행 하면 jobs -l
실행 중인 작업의 상태가 표시되지만 ./tmp.sh 파일에서 실행하면
#! /bin/bash
jobs -l
빈 출력을 보여줍니다.
왜 그런 겁니까? 쉘 스크립트 내에서 특정 작업의 상태에 대한 정보를 어떻게 얻을 수 있습니까?
답변1
jobs
채용공고 보기현재 쉘에서 관리됨. 스크립트는 자체 셸 내에서 실행되므로 jobs
스크립트 셸에서 관리하는 작업만 표시됩니다.
실제로 보려면 다음을 실행하세요.
#!/bin/bash
sleep 60 &
jobs -l
스크립트 내부의 쉘 스크립트 이전에 시작된 "작업"에 대한 정보를 보려면 이를 일반 프로세스로 취급하고 사용해야 합니다 ps
. 스크립트 내의 변수를 사용하여 상위 셸(있는 경우 스크립트를 시작한 셸)에서 시작된 프로세스로 자신을 제한 $PPID
하고 동일한 상위 PID를 공유하는 프로세스를 찾을 수 있습니다.