项目场景:
系统版本说明
Ubuntu 20.04.6 LTS
Windows Terminal
ps:powershell
wsl:windows子系统Linux
问题描述
在查看当前系统中所有登录用户的信息时,发现在WSL下输入who命令没有反应,即无任何返回信息
当然你直接用虚拟机跑Linux是不会有这个问题的
正常 虚拟机跑该命令显示如下:会显示当前登录用户名称还有终端用户名称
原因分析:
查看了网上很多up主的解释,大致是因为微软在推出WSL时出现的内部问题。
An empty (0 bytes) /var/run/utmp file should be created by /init
其实就是utmp日志文件的创建问题,而utmp中保存的正是当前正在本系统中的用户的信息。这里的一个解决方案是建立运行级别。
——链接:https://juejin.cn/post/6971085749735129125
来源:稀土掘金
解决方案:
1.打开Windows Powershell进入wsl,输入who,确实没有任何返回
2.输入以下命令(直接复制下面命令就可以),然后回车
sudo bash -c “echo ‘[1] [00053] [~~ ] [runlevel] [~ ] [5.4.91-microsoft-standard-WSL2] [0.0.0.0 ] [2021-04-05T23:10:15,040218+00:00]’ | utmpdump -r > /var/run/utmp” 2> /dev/null
3.输入exit,退出wsl回到ps!
4.重新从PS登录WSL
语句:wsl sudo login -f
(username是你自己终端的用户名哦,秘密你自己的linux登录密码哈)
5. 查看运行级别
语句:/sbin/runlevel
6.输入who -u 或者 w
完成啦 可以查看到当前的用户登录信息啦