AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1365678
Accepted
John Rennie
John Rennie
Asked: 2021-09-25 21:59:14 +0800 CST2021-09-25 21:59:14 +0800 CST 2021-09-25 21:59:14 +0800 CST

who 命令在 WSL2 上不产生任何输出

  • 772

我在 Windows 10 上的 Linux 的 Windows 子系统中使用 Ubuntu 20.04。当我键入who命令时,我没有得到任何输出:

renniej@ratitch:~$ whoami
renniej
renniej@ratitch:~$ who
renniej@ratitch:~$

我尝试了各种方法sudo who,who -a但仍然没有输出。who --version给出:

who (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Joseph Arceneaux, David MacKenzie, and Michael Stone.

我在这里做傻事吗?或者这是 WSL2 的一个特性?

windows-10
  • 1 1 个回答
  • 1064 Views

1 个回答

  • Voted
  1. Best Answer
    NotTheDr01ds
    2021-09-26T00:45:55+08:002021-09-26T00:45:55+08:00

    简短的回答

    没什么可笑的。有一个与根本原因有关的 Github 问题。虽然 WSL 团队最初将其标记为“设计”和“功能”,但去年有活动表明它是“高价值低成本”。

    再说一次,最近有人注意到它是 5 年前创建的,并且没有其他用户想要修复它的“赞许”。我的猜测是,除非 WSL 采用更类似于 Systemd 的启动方法(详见下文),否则这不会改变。

    解释

    ...或者比你想知道的更多who

    who没有显示任何结果的原因有两个:

    • 首先,显而易见的 --who旨在显示(引自手册页)“谁已登录”。当您启动 WSL 时,它实际上并没有通过登录密码向您的用户发送,这就是您不会被要求输入密码的原因。

    • 其次,WSL 在启动时将自己的/init进程作为 PID1 运行,它具有设置以下内容的“魔力”:

      • Linux 网络能够搭载在 Windows 网络上
      • Windows 驱动器的自动挂载
      • 允许 Windows.exe运行的互操作
      • 和更多 ...

      另一方面,“正常”的 Linux 系统以 Systemd 或 SysVInit(或多年来的少量其他 init 系统)启动。init 系统负责建立运行级别等。除此之外(我自己只是从 Github 问题中学习到这一点),/var/run/utmp构造,它是跟踪谁在使用该系统。

    有几种方法可以“强制”谁工作:

    • 第一个包含在该 Github 线程中。/var/run/utmp首先,用类似的东西破解 a :

      sudo bash -c "echo '[1] [00049] [~~  ] [runlevel] [~           ] [4.4.0-17115-Micoroso] [0.0.0.0        ] [Wed Feb 28 13:27:14 2018 STD]' | utmpdump -r > /var/run/utmp"
      

      然后,使用 强制“登录” sudo login -f $USER。然后您可以看到您的用户使用who. 如果您要通过再次登录ssh(您需要先进行设置),那么该登录名也会出现。

    • 其次,您可以在自己的 PID 命名空间中启动 Systemd:

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

      等待几秒钟让 Systemd 启动,它会初始化/var/run/utmp. 技术上在这一点上你可以sudo login -f $USER看到who。

      请注意,如果没有额外的努力(超出此答案的范围),Systemd 无法完全使用,并且您必须在执行此操作后终止 Ubuntu WSL 实例才能返回稳定状态。退出 WSL,然后wsl --terminate <distro>(<distro>可能在哪里ubuntu)。一旦你开始备份,一切都会恢复正常。

    • 1

相关问题

  • Ubuntu Server 14.03 lts 未在 Windows 10 Pro 网络中显示

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve