Как сохранить работу программы после выхода из системы с помощью x2go?

Мне нужно запустить несколько программ на общей рабочей станции с x2go.

Эти программы занимают довольно много времени, и я хочу:

  1. Запустите программу в x2go
  2. Выйти
  3. Подключитесь снова через некоторое время к машине с x2go и посмотрите результаты работы программы

Итак, в конце концов, то, что я хотел бы сделать, похоже на то, что можно сделать с . Однако похоже, что выход из системы убивает все запущенные программы.

Программы используют Mathematica и, в частности, некоторые из ее динамических встроенных функций, поэтому мне нужен доступ к X-серверу для взаимодействия с графическим интерфейсом иscreenэто не вариант.

При необходимости и мой компьютер, и рабочая станция используют Ubuntu. Командаcat /etc/os-releaseдавать:

Мой компьютер

      NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Рабочая станция

      PRETTY_NAME="Ubuntu 22.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.2 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

1 ответ

Это невозможно сделать так, как вы предлагаете:

Как вы обнаружили, когда сеанс графического пользовательского интерфейса завершается, сервер отображения завершается (не приостанавливается и не скрывается), а также завершаются все дочерние задания. Такое поведение имеет основополагающее значение для выхода из системы.

Даже если вы сделали что-то необычное (например,nohup), чтобы сохранить ваше окно живым, оно сразу же выдаст ошибку, поскольку дисплея больше не будет.

Разработчики, сталкивающиеся с такой ситуацией, обычно создают две программы, которые общаются друг с другом: одну, которая не требует дисплея и, следовательно, может сохраняться с использованием терминального мультиплексора (screen,tmux) или просто как служба systemd, cronjob, atjob и т. д. И вторая программа, которая обеспечивает прерывистый графический интерфейс для длительно выполняемого автономного задания.

Кажется, у вас есть две альтернативы: поддерживать сеанс графического интерфейса до завершения или переписать код, чтобы не требовать постоянного отображения.

Другие вопросы по тегам