Как открыть несколько экземпляров программы в Linux - PullRequest
4 голосов
/ 26 сентября 2011

Скажем, например, чтобы открыть несколько экземпляров редактора gedit, я написал скрипт оболочки, подобный этому -

gedit&
gedit&
gedit&
gedit&

Но после того, как я запустил скрипт оболочки ./example.sh, я могу найти только один экземпляр gedit! Я даже использовал оператор &, чтобы оболочка не дожидалась завершения одного экземпляра. Тем не менее я не вижу четырех экземпляров gedit.

Также я попробовал прямо из командной строки. Если я просто введу gedit& в командной строке, он покажет 1906 (это PID недавно созданного процесса gedit), запустит один новый экземпляр gedit и вернется к приглашению снова. Когда я набрал gedit& в командной строке, на этот раз он показал 1909, но новый экземпляр gedit отсутствовал! И я не смог найти ни одного процесса с PID 1909 в системном мониторе. Куда ушел этот новый процесс?

Это событие специфично для gedit? Если да, то каково общее поведение при создании нескольких экземпляров программы?

Ответы [ 5 ]

4 голосов
/ 26 сентября 2011

Это специфично для gedit. Вы, вероятно, ищете gedit --new-window &.

С man gedit:

--new-window
       Create a new toplevel window in an existing instance of gedit.
3 голосов
/ 26 сентября 2011

Это кажется специфичным для gedit, возможно, есть какая-то опция, чтобы отключить проверку работающего экземпляра.

1 голос
/ 12 декабря 2016

Использование этого в скрипте. Я обнаружил, что он делает то, что мне нужно:

#!/bin/bash
xterm -e "gedit; bash" &disown
1 голос
/ 27 июня 2015

Я пришел сюда, пытаясь начать несколько случаев смелости.

Разрешение только одного экземпляра на самом деле труднее реализовать, потому что программе необходимо найти и связаться с уже запущенным экземпляром.Это делается через D-Bus.Чтобы предотвратить связь с уже запущенным экземпляром, вы можете запустить программу в другом сеансе D-Bus:

nohup dbus-run-session audacious &
nohup dbus-run-session audacious &

Примечание: nohup продолжит работу программы, даже если терминал должен быть закрыт.

Этот метод также должен работать для других программ, которые не позволяют пользователю выбирать между несколькими экземплярами и одним экземпляром.

Помните, что это может привести к ошибкам, если несколько экземпляров обращаются к одним и тем же файлам конфигурации.

Протестировано с xfce 4.10.1 и dbus 1.8.16-1

Для Scite:

scite -check.if.already.open=false &
1 голос
/ 26 сентября 2011

Похоже, что gedit сначала ищет работающий экземпляр и просто игнорирует дальнейшие стартовые запросы (просто дикая догадка).Но на странице руководства написано, что вы можете открыть другое окно:

--new-window
              Create a new toplevel window in an existing instance of gedit.

Это не решит вашу проблему, но, возможно, именно это вы и искали.

Удачи, Алекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...