Python 환경에서 Unix "jobs" 명령을 실행하는 방법

Python 환경에서 Unix "jobs" 명령을 실행하는 방법

Python 환경에서 unix "jobs" 명령을 사용하여 현재 실행 중인 백그라운드 프로세스를 알고 싶습니다.

나는 사용하려고

import os
os.system('jobs')

그러나 이것은 나에게 효과가 없습니다.

답변1

jobs명령이 아니라 쉘 내장 명령입니다. fg및 기타 쉘 내장 기능 과 함께 bg쉘 하위 프로세스로 실행되는 모든 "작업"을 관리하는 데 사용됩니다. 이를 나열하고, 중지하고, 포그라운드에 배치하는 등... 따라서 쉘 컨텍스트 내에 있지 않습니다. 그 직업이 속한 곳 밖에서는 의미가 없습니다.

Python의 동등한 개념은 다음을 사용하는 것입니다.하위 프로세스기준 치수. 이 모듈을 사용하면 하위 프로세스를 시작, 종료 및 대기할 수 있습니다. 예를 들어 Python 배열을 사용하여 여러 하위 프로세스를 만들고 모든 호출의 반환 값을 Python 배열에 저장하는 경우 subprocess.Popen배열 의 내용은 셸의 출력 subprocess.Popen과 동일합니다 .jobs

답변2

작업은 셸의 내부 개념입니다. 작업은 실제로 시작된 하위 프로세스를 기억하는 셸입니다. 셸 외부에서는 셸의 작업 목록을 조작할 수 없습니다.

이런 식으로 프로세스를 조작할 수 있습니다. 프로세스가 주어진 쉘의 작업인지 여부를 확인하는 것은 불가능하며, 추측만 할 수 있습니다. 상위 ID가 쉘 PID인 프로세스를 나열할 수 있습니다. 프로세스 그룹 리더이고 쉘과 동일한 터미널에서 실행되는 프로세스를 나열할 수 있습니다. 바라보다이 스택 오버플로 질문Python에서 프로세스 정보를 얻는 몇 가지 방법을 알아보세요.

Python 스크립트에서 작업을 제어해야 하는 경우 가능하면 실제로 Python 스크립트에서 프로세스를 시작하고 관리해야 합니다. 필요한 모든 것이 거기에 있습니다subprocess기준 치수.

관련 정보