Почему я не могу иметь параллельные gnome-terminal
на моем сервере, в то время как я могу на своем клиенте.
Вот тест, который иллюстрирует проблему.
#!/bin/bash
# this is the parent script
gnome-terminal --command "./left.sh"
gnome-terminal --command "./right.sh"
#!/bin/bash
echo "this is the left script"
read -p "press any key to close this terminal" key
#!/bin/bash
echo "this is the right script"
read -p "press any key to close this terminal" key
Когда я запускаю это на обычном рабочем столе Ubuntu (Maverick), я вижу два терминала. Когда я запускаю это на отдельном сервере в ферме серверов, второе окно не появляется до после того, как я закрываю первое . Я использую thinvncserver для просмотра рабочего стола сервера.
gnome-terminal
работает локально, использует фоновый «фабричный» сервер, который владеет фактическими окнами терминала; Сама команда gnome-terminal
завершает работу после обращения к серверу через DBus и указания запустить окно. При удаленном запуске он не может обмениваться данными с заводским сервером, поэтому настраивает само окно и должен продолжать работать до тех пор, пока это окно не будет закрыто.
Если вы поместите команду в фоновом режиме с помощью &
, вы получите желаемый эффект независимо от удаленного или локального (или использование --disable-factory
, которое приведет к тому, что локальные будут вести себя как удаленные). В этом случае вам, вероятно, понадобится заключительная команда wait
в скрипте.