Как сохранить работу программы после выхода из системы с помощью x2go?
Мне нужно запустить несколько программ на общей рабочей станции с x2go.
Эти программы занимают довольно много времени, и я хочу:
- Запустите программу в x2go
- Выйти
- Подключитесь снова через некоторое время к машине с 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 и т. д. И вторая программа, которая обеспечивает прерывистый графический интерфейс для длительно выполняемого автономного задания.
Кажется, у вас есть две альтернативы: поддерживать сеанс графического интерфейса до завершения или переписать код, чтобы не требовать постоянного отображения.