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
기준 치수.