Como executar o comando unix “jobs” no ambiente python

0

Eu quero saber o processo em segundo plano em execução no momento usando o comando "jobs" do unix em ambiente python.

Eu tentei usar

import os
os.system('jobs')

mas não funciona para mim.

    
por Manas Sahu 18.03.2015 / 05:27

2 respostas

4

jobs não é um comando, é um shell embutido. Juntamente com fg , bg e outros builtins de shell, ele é usado para gerenciar todos os "jobs" que estão sendo executados como processos filho do shell: liste-os, pare-os, coloque-os em primeiro plano, etc. Como tal, não faz sentido fora do contexto da casca a que pertencem os trabalhos.

O conceito equivalente em Python seriam objetos criados usando o módulo subprocesso . Usando esse módulo, você pode iniciar, matar e aguardar subprocessos. Por exemplo, se você criar vários subprocessos usando subprocess.Popen e armazenar os valores de retorno de todas as chamadas subprocess.Popen em uma matriz Python, o conteúdo dessa matriz seria equivalente à saída de jobs em um shell.

    
por 18.03.2015 / 07:26
0

Jobs são uma noção interna do shell. Um trabalho é, na verdade, um subprocesso que o shell se lembra de ter lançado. Você não pode manipular a tabela de trabalhos de um shell de fora desse shell.

Você pode manipular os processos como tal. É impossível dizer se um processo é um trabalho de uma determinada shell, tudo que você pode fazer é adivinhar. Você pode listar os processos cujo ID pai é o PID do shell; você pode listar processos que são líderes de grupos de processos e que estão sendo executados no mesmo terminal que o shell. Consulte esta pergunta sobre estouro de pilha para obter algumas informações sobre como processos em Python.

Se você precisa controlar tarefas no seu script Python, você deve realmente iniciar e gerenciar os processos a partir do script Python, se possível. Tudo o que você precisa está no % módulosubprocess .

    
por 19.03.2015 / 01:11