Есть ли способ запустить программу из терминала, который не является "дочерним" из оконного менеджера (pe XFCE), в оконный менеджер?

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

Примером может быть подключение через ssh (без x-forward или аналогичного) к серверу, запуск браузера, закрытие соединения. Сидя перед сервером и используя недавно открытый браузер, который все еще работает. отсоединен от моего ssh-сеанса с новым "владельцем" оконного менеджера.

3 ответа3

1

Войдите на компьютер с X-сервером с SSH и запустите:

DISPLAY=:0 xterm &

Вы должны получить xterm на своем дисплее X, и он должен оставаться открытым даже после закрытия сеанса SSH.

Приложения X11 используют переменную окружения DISPLAY чтобы найти X-сервер; типичное значение :0 , что означает, что приложения X11 должны подключаться к локальному X-серверу через сокет домена Unix /tmp/X11-unix/X0 .

Приложения, запущенные из X-сеанса, наследуют переменную среды DISPLAY которая указывает на X-сервер, но процессы, запущенные вне X-сеанса (например, входа в SSH), не будут иметь этой переменной. Вот почему вы должны явно установить его при запуске приложения X11 из логина SSH.

1

Обычные методы отсоединения процесса от оболочки:

  • запустите в фоновом режиме, используя & , затем попросите оболочку прекратить отслеживать его, используя disown:

    $ xterm &
    $ disown
    

    (или xterm & disown)

  • запустите в фоновом режиме, используя & , и используйте инструмент nohup , чтобы предотвратить его уничтожение:

    $ nohup xterm &
    
  • запустите в фоновом режиме, используя & , и используйте двойной форк, чтобы оболочка не отслеживала его:

    $ (xterm &)
    
  • запустить в фоновом режиме с помощью setsid:

    $ setsid xterm
    

(Попробуйте (setsid xterm &) если некоторые опции не работают.)

1

xterm -e "bash -c \"./script.sh; exec bash\"" &

где ./script.sh может быть просто командой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .