Вы запускаете с предположения здесь, которое является этим /etc/{passwd,shadow,group}
всегда единственная точка истины (SPOT) для получения информации о пользователе о полях Unix. Это не было верно с середины 1980-х, когда Sun представил NIS.
Обратные API случая действительно существуют: getpwnam(3)
и друзья. Если бы ПЯТНО Вашего сайта для пользовательских данных является сервером LDAP, легко видеть, как Вы сократили бы его богатые объемы производства для показа только тех вещей, которые существуют в /etc/{passwd,shadow}
.
Но, Вы хотите API, который делает реверс. Как Вы реализовали бы setpwnam(3)
в мире, где Вы не знаете, ли хранилище данных бэкенда /etc/*
, или NIS или NIS +, или LDAP или ActiveDirectory, или...? Можно отфильтровать криля от океана, но Вы не можете получить кубические метры океана от корзины криля.
Проблема была линейным стилем; Вместо «\ R \ n»
я использовал «\ N»
, а теперь все работает.
setsid sh -c 'exec command <> /dev/tty2 >&0 2>&1'
Пока ничего не использует другой TTY ( / dev / tty2
в этом примере), это должно работать. Это включает в себя процесс Getty
, который может ждать кого-то для входа в систему; Имея более одного процесса, прочитав его вход от Tty , будет , приводит к неожиданным результатам.
Setsid
заботится о запуске команды на новом сеансе.
Обратите внимание, что команда
должна соответствовать настройкам STTY
, например, e.g. Включите «приготовленный режим» и ONLCR
, чтобы вывоп новой строки добавит возврат каретки и т. Д.
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
, который будет отображаться после переключения на второй терминал.
Я только что сделал открытие:
Как я могу запускать приложения с 2 ttys при запуске?
В одном из комментариев упоминается нечто под названием openvt
. Похоже, что эта команда делает именно то, что мне нужно!
http://linux.about.com/library/cmd/blcmdl1_openvt.htm
Если никто не знает, что это не так, я думаю, что это , вероятно, "правильный" способ сделать это.
(Я только что попробовал, и кажется, что это работает нормально - несмотря на то, что getty
работает, он выбирает следующий неиспользуемый терминал. Наверное, VT не "открываются", пока не переключишься на один, чтобы попробовать войти в систему...)
я запускаю новую графическую сессию на vt5 с помощью следующей команды
xinit "/usr/bin/<binary_executable>" -- :1 vt5
например:
xinit "/usr/bin/playonlinux" -- :1 vt5
Если вы хотите запустить графическое приложение в уже активном графическом сеансе, вы можете сделать это с помощью:
DISPLAY=:0 "/usr/bin/playonlinux"