#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.