Запустите процесс на другом tty

Вы запускаете с предположения здесь, которое является этим /etc/{passwd,shadow,group} всегда единственная точка истины (SPOT) для получения информации о пользователе о полях Unix. Это не было верно с середины 1980-х, когда Sun представил NIS.

Обратные API случая действительно существуют: getpwnam(3) и друзья. Если бы ПЯТНО Вашего сайта для пользовательских данных является сервером LDAP, легко видеть, как Вы сократили бы его богатые объемы производства для показа только тех вещей, которые существуют в /etc/{passwd,shadow}.

Но, Вы хотите API, который делает реверс. Как Вы реализовали бы setpwnam(3) в мире, где Вы не знаете, ли хранилище данных бэкенда /etc/*, или NIS или NIS +, или LDAP или ActiveDirectory, или...? Можно отфильтровать криля от океана, но Вы не можете получить кубические метры океана от корзины криля.

32
26.11.2014, 15:34
4 ответа

Проблема была линейным стилем; Вместо «\ R \ n» я использовал «\ N» , а теперь все работает.

-121--108543-
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'

Пока ничего не использует другой TTY ( / dev / tty2 в этом примере), это должно работать. Это включает в себя процесс Getty , который может ждать кого-то для входа в систему; Имея более одного процесса, прочитав его вход от Tty , будет , приводит к неожиданным результатам.

Setsid заботится о запуске команды на новом сеансе.

Обратите внимание, что команда должна соответствовать настройкам STTY , например, e.g. Включите «приготовленный режим» и ONLCR , чтобы вывоп новой строки добавит возврат каретки и т. Д.

32
27.01.2020, 19:37
find . -name something -print -quit

Завершает поиск после первого совпадения после печати.

Прекратить поиск после определенного количества совпадений и распечатать результаты:

find . -name something -print | head -n 5

На удивление, достаточно - голова теперь прекращает последовательность после 5 совпадений, хотя я не знаю, как и почему.

Это очень легко проверить. Просто позвольте найти поиск на корне, который приведет к тысячам, может быть, даже больше совпадений, занимая хотя бы минуту или больше. Но при переходе в «head» «find» будет заканчиваться после указанного количества линий , определенных в head (по умолчанию head показывает 10, используйте head -n для указания линий).

Обратите внимание, что это будет прекращено после того, как «head -n» достигнет указанного количества символов новой строки, и, следовательно, любое совпадение, содержащее несколько символов новой строки, будет соответствующим образом подсчитано.

-121--2698-

Эта проблема заключается в переименовании файла Debian .iso в файл .img, а затем в записи образа на USB с Win32DiskImager (я использовал 0.9.5 и он работал нормально). Установка будет работать.

-121--48731-

На втором tty обычно выполняется какая-либо программа входа в систему или какая-либо оболочка типа bash. Если требуется взаимодействие, необходимо либо заменить программу входа на вашу, либо указать оболочке запустить программу, как если бы программа была запущена с командной строки.

Более простым решением, IMO, было бы начать сеанс tmux после входа во второй экран, а затем использовать

tmux send yourcommand ENTER

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

6
27.01.2020, 19:37

Я только что сделал открытие:

Как я могу запускать приложения с 2 ttys при запуске?

В одном из комментариев упоминается нечто под названием openvt. Похоже, что эта команда делает именно то, что мне нужно!

http://linux.about.com/library/cmd/blcmdl1_openvt.htm

Если никто не знает, что это не так, я думаю, что это , вероятно, "правильный" способ сделать это.

(Я только что попробовал, и кажется, что это работает нормально - несмотря на то, что getty работает, он выбирает следующий неиспользуемый терминал. Наверное, VT не "открываются", пока не переключишься на один, чтобы попробовать войти в систему...)

.
2
27.01.2020, 19:37

я запускаю новую графическую сессию на vt5 с помощью следующей команды

xinit "/usr/bin/<binary_executable>" -- :1 vt5

например:

xinit "/usr/bin/playonlinux" -- :1 vt5

Если вы хотите запустить графическое приложение в уже активном графическом сеансе, вы можете сделать это с помощью:

DISPLAY=:0 "/usr/bin/playonlinux"
0
27.01.2020, 19:37

Теги

Похожие вопросы