Що робить "script / dev / null"?


21

Кожен раз, коли я входжу у ВМ із кореневим кодом, suв обліковий запис користувача та намагаюся його використовувати, screenвидає помилку:

Cannot open your terminal '/dev/pts/0' - please check.

У публікації із переповненням стека сказано, що я потребую використання, script /dev/nullщоб виправити це, і він працює, але він все ще не пояснює, чому мені потрібно вводити текст script /dev/null. Я хотів би зрозуміти, що це робить, і чому мені потрібно це вводити.


2
> Запис про переповнення стека сказав - це може бути корисно, якщо ви також додасте посилання на цю публікацію, можливо, в коментарі.
törzsmókus

Наприклад, це могло бути stackoverflow.com/a/44244425/340790 .
JdeBP

Відповіді:


27

Ви не можете відкрити, /dev/pts/0оскільки він належить root, і після того, як ви перейдете на іншого користувача, ви більше не зможете відкрити його через його шлях, але ви все одно можете використовувати його через відкриту ручку до нього, яка була успадкована від батьківського процесу.

script /dev/null створить ще один pty, який належить поточному користувачеві.

У будь-якому разі, ця помилка / обмеження, здається, була виправлена ​​в останніх версіях screen(наприклад, 4.99.0), яка буде правильно відправляти ручку на поточний термінал через SCM_RIGHTSдопоміжне повідомлення в розетці домену unix, а не надсилати лише ім'я термінал і screenсервер намагаються відкрити його (і не вдатися). Те саме з tmux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.