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