запустите фоновый терминальный процесс в цикле python один за другим

#python #linux #subprocess #os.system

Вопрос:

Я хочу выполнить эту команду в оболочке терминала с помощью python:

команда= 'program.x input.in output.out amp;'

Мне нужно постоянно обновлять входные файлы с различными параметрами, поэтому для этого я использую python для цикла.

Мой код выглядит примерно так:

 for i in range ():
    *code to update input file here*

    os.system(command)
 

Что я хочу сделать, так это в каждом цикле, я хочу, чтобы процесс os.system заканчивался первым, прежде чем переходить к следующему циклу. Но когда я пробую свой код, python запускает цикл сразу, и у меня есть около 10 различных command процессов, запущенных в фоновом режиме моей системы. Есть ли какой-либо способ запустить эти процессы в фоновом режиме, выполняя цикл один за другим, пока процесс не будет завершен?

Когда я удаляю этот знак » amp; » из команды, код работает хорошо, поэтому это проблема только с фоновыми процессами.

Комментарии:

1. Вы сами ответили на него — когда вы удаляете амперсанд ( » amp; » ), код работает хорошо. Амперсанд означает запуск команды в качестве фонового процесса, не дожидаясь ее завершения.

2. Поскольку я работаю в удаленной системе с использованием ssh, всякий раз, когда я отключаюсь, программа останавливается! Следовательно, мне нужно использовать этот амперсанд, чтобы выполнить свою работу. Возможно ли по-прежнему заставить его работать с амперсандом

3. В этом случае вы можете использовать screen, tmux или nohup.