Рейтинг:1

команда who не производит вывод на WSL2

флаг it

Я использую Ubuntu 20.04 в подсистеме Windows для Linux в Windows 10. Когда я набираю кто команда, которую я не получаю:

renniej@ratitch:~$ whoami
renniej
renniej@ratitch:~$ кто
renniej@ratitch:~$

Я пробовал разные вещи, такие как судо кто и кто -а но все же я не получаю вывода. кто --версия дает:

кто (GNU coreutils) 8.30
Авторское право (C) 2018 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или выше <https://gnu.org/licenses/gpl.html>.
Это бесплатное программное обеспечение: вы можете изменять и распространять его.
НИКАКИХ ГАРАНТИЙ, насколько это разрешено законом.

Авторы сценария Джозеф Арсено, Дэвид Маккензи и Майкл Стоун.

Я делаю что-то глупое здесь? Или это особенность WSL2?

Рейтинг:1
флаг vn

Короткий ответ

Ничего глупого. Это Проблема Github, связанная с основной причиной. Хотя команда WSL первоначально пометила его «по дизайну» и «функциям», в прошлом году в отношении него наблюдалась активность, которая указывает на то, что это «высокое качество по низкой цене».

С другой стороны, совсем недавно было отмечено, что он был создан 5 лет назад, и другие пользователи, желающие его исправить, не получили одобрения. Я предполагаю, что это не изменится до тех пор, пока WSL не примет подход к запуску, более похожий на Systemd (подробности см. Ниже).

Объяснение

... или больше, чем вы, вероятно, когда-либо хотели знать о кто

Есть две причины, по которым кто не показывает никаких результатов:

  • Во-первых, очевидное - кто предназначен для отображения (цитата из справочной страницы), «кто вошел в систему». Когда вы запускаете WSL, он фактически не отправляет вашему пользователю пароль для входа, поэтому у вас не запрашивается пароль.

  • Во-вторых, WSL работает самостоятельно. /в этом обрабатывать как PID1 при запуске, что делает «магию» по настройке таких вещей, как:

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

    «Нормальная» система Linux, с другой стороны, запускается с помощью Systemd или SysVInit (или нескольких других систем инициализации за эти годы). Система инициализации, среди прочего, отвечает за установку уровня выполнения. И наряду с этим (я только что узнал об этом из той проблемы Github), /var/выполнить/utmp конструкция, которая отслеживает, кто использует систему.

Есть несколько способов «заставить» кого-то работать:

  • Первый описан в этой ветке Github. Сначала взломайте /var/выполнить/utmp с чем-то вроде:

    sudo bash -c "echo '[1] [00049] [~~ ] [уровень запуска] [~ ] [4.4.0-17115-Micoroso] [0.0.0.0 ] [Среда, 28 февраля, 13:27:14 2018 STD]' | utmpdump -r > /var/run/utmp"
    

    Затем принудительно выполните вход с помощью sudo логин -f $USER. Затем вы можете увидеть, как ваш пользователь вошел в систему, используя кто. Если бы вы снова вошли в систему через ssh (вам нужно сначала настроить его), тогда этот логин также появится.

  • Во-вторых, вы можете запустить Systemd в собственном пространстве имен PID:

    sudo -b unshare --pid --fork --mount-proc /lib/systemd/systemd --system-unit=basic.target
    

    Подождите несколько секунд, пока Systemd запустится, и он инициализируется. /var/выполнить/utmp. Технически на этом этапе вы можете sudo логин -f $USER и увидеть кто.

    Обратите внимание, что Systemd нельзя полностью использовать без дополнительных усилий (выходящих за рамки этого ответа), и что вы должен завершите экземпляр Ubuntu WSL после этого, чтобы вернуться в стабильное состояние. Выйдите из WSL, а затем wsl --terminate <дистрибутив> (куда <distro> похоже убунту). Как только вы начнете резервное копирование, все вернется на круги своя.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.