Рейтинг:1

Миграция проекта python с ubuntu на сервер ubuntu

флаг sd

У меня есть несколько дней опыта работы с сервером Ubuntu и прошу прощения за глупые вопросы.

Я написал программу на Python, которая отлично работает на Ubuntu 18.04LTS. Теперь я пытаюсь запустить ту же программу на UBUNTU SERVER. Внутри сценария у меня есть вызов подпроцесса следующим образом:

subprocess.call(["gnome-terminal", "--", "bash", "-c", string_as_parameters ])

Когда я пытаюсь запустить на сервере Ubuntu, у меня возникает ошибка:

[Error2] Нет такого файла или каталога: 'gnome-terminal'

Если я хочу запустить программу как на сервере, так и на обычной Ubuntu, как мне вызвать подпроцесс? Если это невозможно, как изменить мой код для сервера Ubuntu?

Soren A avatar
флаг mx
Ubuntu-сервер представляет собой чистый интерфейс командной строки, никаких графических программ/GUI. Поэтому gnome-терминал (или любые другие графические программы) не устанавливается.
luki avatar
флаг sd
Это я знаю сейчас. Как решить мою проблему? Должен ли я вызывать программу подпроцесса как обычную программу Python и делать все отпечатки в файл? Есть другой способ? Могу ли я вызвать новый интерфейс командной строки?
Soren A avatar
флаг mx
Я не программист на Python, но нельзя ли вызвать и выполнить bash напрямую? без какой-либо необходимости в графической поддержке. Также эту проблему лучше задать на форуме программирования - и с более четким описанием того, что вы пытаетесь реализовать.
user535733 avatar
флаг cn
Для Ubuntu Server просто опустите первые два элемента списка.
cocomac avatar
флаг cn
Отвечает ли это на ваш вопрос? [Как выполнить программу или вызвать системную команду?] (https://stackoverflow.com/a/89243/16886597) - @SorenA Да, это так. Вы бы сделали `subprocess.call(["bash", "-c", string_as_parameters])`.
luki avatar
флаг sd
Этот вызов устранил мою проблему: subprocess.Popen(['python3', path_to_file, arg1, arg2], preexec_fn=os.setpgrp) . Я не мог использовать subprocess.call, потому что у меня есть 3 подпроцесса в одном скрипте, и первая программа ожидает завершения первого вызова.
luki avatar
флаг sd
мы можем закрыть этот вопрос

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.