WSL手记

快速开始

# 查看WSL版本
>wsl --version

#查看分发版本列表
> wsl --list
适用于 Linux 的 Windows 子系统分发:
Debian (默认)
docker-desktop-data
docker-desktop
# 运行默认的 Linux 发行版(debian),进入WSL命令行
>wsl --user brian

什么是WSL

WSL (Windows Subsystem for Linux)
当点击设置->应用->更多windows功能弹出的对话框中,有一个适用于 Linux 的 Windows 子系统。这就是WSL,它是什么呢?让我们来看看微软官网的解释
WLS适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。
有两个版本:WSL 1 或 WSL 2 。
推荐使用WSL 2. WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。

WSL安装

必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。 如果使用的是更早的版本,请参阅手动安装页

在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入 wsl --install 命令,然后重启计算机。 --install 命令执行以下操作:

  • 启用可选的 WSL 和虚拟机平台组件
  • 下载并安装最新 Linux 内核
  • 将 WSL 2 设置为默认值
  • 下载并安装 Ubuntu Linux 发行版(默认是Ubuntu,可能需要重新启动)
# 查看可通过在线商店下载的可用 Linux 发行版列表
>wsl --list --online 
以下是可安装的有效分发的列表。
使默认分发用 “*” 表示。
使用 'wsl --install -d <Distro>' 安装。
  NAME                                   FRIENDLY NAME
* Ubuntu                                 Ubuntu
  Debian                                 Debian GNU/Linux
  kali-linux                             Kali Linux Rolling
  Ubuntu-18.04                           Ubuntu 18.04 LTS
  Ubuntu-20.04                           Ubuntu 20.04 LTS
  Ubuntu-22.04                           Ubuntu 22.04 LTS
  OracleLinux_7_9                        Oracle Linux 7.9
  OracleLinux_8_7                        Oracle Linux 8.7
  OracleLinux_9_1                        Oracle Linux 9.1
  openSUSE-Leap-15.5                     openSUSE Leap 15.5
  SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
  SUSE-Linux-Enterprise-Server-15-SP5    SUSE Linux Enterprise Server 15 SP5
  openSUSE-Tumbleweed                    openSUSE Tumbleweed
# 默认启用WSL并安装Linux 分发版为 Ubuntu
>wsl --install
# 如果不想使用Ubuntu,可以使用 -d 标志进行更改默认分发版;后续安装其他发行版也是该命令。
>wsl --install -d <Distribution Name>
> wsl --install -d Debian
无法与服务器建立连接
> wsl --install -d Debian
正在安装: 虚拟机平台
已安装 虚拟机平台。
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。
正在安装: Debian GNU/Linux
已安装 Debian GNU/Linux。
请求的操作成功。直到重新启动系统前更改将不会生效。

# 重启后再次运行该命令
PS C:\windows\system32> wsl --install -d Debian
Debian GNU/Linux 已安装。
正在启动 Debian GNU/Linux...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: brian
New password:
Retype new password:
passwd: password updated successfully
Installation successful!

首次启动新安装的 Linux 发行版时,将打开一个控制台窗口,要求你等待将文件解压缩并存储到计算机上。 未来的所有启动时间应不到一秒。

WSL常用命令

通过 WSL 安装的 Linux 发行版最好使用 PowerShell 或 Windows 命令提示符 (CMD) 进行管理。 有关使用 WSL 时需要熟悉的基本命令的列表,请参阅 WSL 命令参考指南

# 列出已安装的 Linux 发行版  wsl --list, -l [Options], 取值为all, running, quiet, verbose
# 显示所有分发的相关详细信息。
>wsl --list --verbose
  NAME      STATE           VERSION
* Debian    Running         2
# 仅列出目前正在运行的分发。
>wsl --list --running
适用于 Linux 的 Windows 子系统分发:
Debian (默认)

# 运行特定的 Linux 发行版
>wsl --distribution <Distribution Name> --user <User Name>
>wsl --distribution Debian --user brian
# 此时PowerShell终端会进入linux
brian@brianomen:~$ pwd
/home/brian

# 将分发设置为默认分发。
>wsl  --set-default, -s <Distro>
>wsl --set-default Debian
操作成功完成。

# 立即终止所有正在运行的发行版和 WSL 2 轻量级实用工具虚拟机。
>wsl --shutdown
# 此时,PowerShell终端会变回windows
PS C:\windows\system32> pwd
Path
----
C:\windows\system32
 
# 运行默认的 Linux 发行版 wsl --user <Username>
>wsl --user brian
# Windows Terminal会变为Linux终端
brian@brianomen:/mnt/c/Users/lhs_3$ pwd
/mnt/c/Users/lhs_3

# 导入和导出发行版
>wsl --export <Distribution Name> <FileName>
>wsl --import <Distribution Name> <InstallLocation> <FileName>

# 若要终止指定的发行版或阻止其运行
>wsl --terminate <Distribution Name>

# 注销并卸载 WSL 发行版:
>wsl --unregister <DistributionName>

# 装载磁盘或设备
>wsl --mount <DiskPath>
>wsl --unmount <DiskPath>

# 查看wsl版本
>wsl --version
WSL 版本: 1.2.5.0
内核版本: 5.15.90.1
WSLg 版本: 1.0.51
MSRDC 版本: 1.2.3770
Direct3D 版本: 1.608.2-61064218
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.22621.1848

# 更新WSL(适用于 Linux 的 Windows 子系统程序包)。
 >wsl --update
        
# 显示WSL的状态。
>wsl --status
默认分发: Debian
默认版本: 2
当前计算机配置不支持 WSL1。
若要使用 WSL1,请启用“Windows Subsystem for Linux”可选组件。
        
# 更多命令(仅保留常用命令):
>wsl --help
用法: wsl.exe [Argument] [Options...] [CommandLine]

管理WSL磁盘空间

WSL 2使用虚拟化平台将 Linux 分发版与主机 Windows 操作系统一起安装,创建虚拟硬盘 (VHD) 来存储安装的每个 Linux 发行版的文件。 这些 VHD 使用 ext4 文件系统类型 ,并在 Windows 硬盘驱动器上表示为 ext4.vhdx 文件。
WSL 2 会自动调整这些 VHD 文件的大小以满足存储需求。 默认情况下,WSL 2分配了 1TB 的最大磁盘空间量。

# 检查可用磁盘空间 wsl --system -d <distribution-name> df -h /mnt/wslg/distro 或 wsl df -h / 
> wsl --system -d Debian df -h /mnt/wslg/distro
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc       1007G  277M  956G   1% /mnt/wslg/distro
> wsl df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc       1007G  277M  956G   1% /

# 如何查找 Linux 分发版的 .vhdx 文件和磁盘路径
```shell
> (Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<Debian>' }).GetValue("BasePath") + "\ext4.vhdx"
不能对 Null 值表达式调用方法。
所在位置 行:1 字符: 1
+ (Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [],RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

# 手工查找 或者使用Everything搜索` ext4.vhdx `
 C:\Users\lhs_3\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\ext4.vhdx

跨 Windows 和 Linux 文件系统工作

建议不要跨操作系统使用文件,除非有这么做的特定原因。
若想获得最快的性能速度,请将文件存储在 WSL 文件系统中,前提是在 Linux 命令行(Ubuntu、OpenSUSE 等)中工作。
如果使用 Windows 命令行(PowerShell、命令提示符)工作,请将文件存储在 Windows 文件系统中。

例如,在存储 WSL 项目文件时:
使用 Linux 文件系统根目录:\\wsl$\Ubuntu\home\<user name>\Project
而不使用 Windows 文件系统根目录:/mnt/c/Users/<user name>/Project$C:\Users\<user name>\Project
在 WSL 命令行的文件路径中看到 /mnt/ 时,表示你正在使用已装载的驱动器。 因此,Windows 文件系统 C:/ 驱动器 (C:\Users\<user name>\Project) 在 WSL 命令行中装载时将如下所示:/mnt/c/Users/<user name>/Project$。 你可以将项目文件存储在装载的驱动器上,但如果将其直接存储在 \\wsl$ 驱动器上,性能速度会提高。

从 Linux 访问 Windows 文件

从 Linux 访问 Windows 驱动器文件系统 (DrvFS) 中的文件,一般是通过 /mnt/c。文件权限是根据 Windows 权限计算的,或者是从已由 WSL 添加到文件的元数据中读取的。 默认情况下,此元数据处于未启用状态。
具体参考这里

使用\\wsl$ 从Windows中访问Linux文件

若要在 Windows 文件资源管理器中查看所有可用的 Linux 发行版及其根文件系统,请在地址栏中输入:\\wsl$ ,这里可以查看所有的Linux发行版。选择其中一个如Debian,打开就进入该发行版的根目录 /。 它本质上是一种网络计算机访问形式。

在地址栏直接输入powershell进入Windows PowerShell命令行, 可以在命令行终端通过网络访问方式查看分发版中的文件。

通过 \wsl$ 访问 Linux 文件时将使用 WSL 分发版的默认用户。 因此,任何访问 Linux 文件的 Windows 应用都具有与默认用户相同的权限。

# 进入PowerShell命令行:`PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Debian` 

# 查看当前目录: 确为Debian系统的根目录
PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Debian> wsl pwd
/

# 切换到用户目录
PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Debian> cd \\wsl$\Debian\home\brian

# 列出用户目录的文件
PS Microsoft.PowerShell.Core\FileSystem::\\wsl$\Debian\home\brian> ls
    目录: \\wsl$\Debian\home\brian
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
------         2023/6/30     14:25            807 .profile
------         2023/6/30     14:25            220 .bash_logout
------         2023/6/30     14:25           3526 .bashrc

借助 WSL,Windows 和 Linux 工具和命令可互换使用。

  • 从 Linux 命令行(即 Ubuntu)运行 Windows 工具(即 notepad.exe)。
  • 从 Windows 命令行(即 PowerShell)运行 Linux 工具(即 grep)。
  • 在 Windows 与 Windows 之间共享环境变量。 (版本 17063+)

从 Windows 命令行运行 Linux 工具

打开 Windows 命令提示符 (CMD) 或 PowerShell ,可以通过使用 wsl <command>wsl + Linux命令的方式直接使用linux命令行或 Linux 二进制文件。

注意下面示例中Linux的ls命令和windows的dir命令输出的目录列表描述字符串的差异。

# 切换windows目录(使用windows终端命令)
>cd c:\Users

# 查看目录内容(使用windows终端命令)
c:\Users>dir
 驱动器 C 中的卷是 Windows
 卷的序列号是 EAEB-9726
 c:\Users 的目录
2023/05/29  07:36    <DIR>          .
2023/06/20  20:13    <DIR>          lhs_3
2023/06/01  15:54    <DIR>          Public
               0 个文件              0 字节
               3 个目录 1,879,334,477,824 可用字节

# 查看目录内容(使用wsl + linux命令)
c:\Users>wsl ls -la
total 0
dr-xr-xr-x 1 brian brian 4096 May 29 07:36  .
drwxrwxrwx 1 brian brian 4096 Jun 29 11:06  ..
lrwxrwxrwx 1 brian brian   18 May  7  2022 'All Users' -> /mnt/c/ProgramData
dr-xr-xr-x 1 brian brian 4096 Jun  4 20:40  Default
lrwxrwxrwx 1 brian brian   20 May  7  2022 'Default User' -> /mnt/c/Users/Default
-r-xr-xr-x 1 brian brian  174 May  7  2022  desktop.ini
drwxrwxrwx 1 brian brian 4096 Jun 20 20:13  lhs_3
drwxrwxrwx 1 brian brian 4096 Jun  1 15:54  Public

# 查看当前目录地址(使用windows终端命令)
c:\Users>>chdir    或者>echo %cd%  
c:\Users

# 查看当前目录地址(使用wsl + linux命令)
c:\Users>wsl pwd
/mnt/c/Users

PS中混合 Linux 和 Windows 命令

下面是几个使用 PowerShell 混合 Linux 和 Windows 命令的示例。

注意:在PowerShell 命令行终端和Windows命令行终端,都可以采用这种方式运行。注意linux的ls命令和windows的dir命令显示方式的不同。

# 先使用WSL+Linux命令,管道传递,再使用PowerShell命令
>wsl ls -la |findstr "desktop"
-r-xr-xr-x 1 brian brian  174 May  7  2022 desktop.ini

# 先使用WSL+Linux命令,管道传递,再使用WSL+Linux命令
>wsl ls -la |wsl grep "desktop"
-r-xr-xr-x 1 brian brian  174 May  7  2022 desktop.ini

# 先使用PowerShell命令,管道传递,再使用WSL+Linux命令
>dir /a | wsl grep "desktop"
2022/05/07  13:22               174 desktop.ini

# 使用 Linux 命令 ls -la 列出文件,并使用 PowerShell 命令 > out.txt 将该列表输出到名为“out.txt”的文本文件
>C:\temp> wsl ls -la > out.txt

# 列出 /proc/cpuinfo Linux 文件系统路径中的文件(文件路径必须以 WSL 格式或linux方式指定)
>C:\temp> wsl ls -la /proc/cpuinfo

# 先使用PowerShell命令,管道传递,再使用WSL+Linux命令,再管道+WSL+Linux 
> ipconfig.exe |wsl grep IPv4 |wsl cut -d: -f2
 192.168.2.197
 xxx.27.16.1

从 WSL 命令行运行 Windows 工具

以这种方式运行的Windows 工具应用程序具有以下属性:

  • 按 WSL 命令提示保留工作目录(大部分情况下是这样 -- 下面所述的情况除外)。
  • 拥有与 WSL 进程相同的权限。
  • 以活动 Windows 用户的身份运行。
  • 显示在 Windows 任务管理器中,就如同直接从 CMD 提示符执行的一样。

在 WSL 中运行的 Windows 可执行文件的处理方式类似于本机 Linux 可执行文件 - 管道处理、重定向,甚至后台处理都可按预期方式工作。

# 运行默认的 Linux 发行版,进入WSL命令行
C:\Users\lhs_3>wsl --user brian

# 在WSL命令行中(即Linux发行版中)查看当前目录
brian@brianomen:/mnt/c/Users/lhs_3$ pwd
/mnt/c/Users/lhs_3

#   切换到Linux发行版的用户目录
brian@brianomen:/mnt/c/Users/lhs_3$ cd /home/brian
brian@brianomen:~$ ls -a
.  ..  .bash_logout  .bashrc  .profile

# 直接从 WSL 命令行运行 Windows 工具,参数将按原样传递到 Windows 二进制文件
brian@brianomen:~$ notepad.exe .bashrc

# 使用Linux 命令 ls -la 列出文件,管道传递,使用 PowerShell 工具 findstr.exe 来筛选结果
~$ ls -la | findstr.exe .bash
-rw-r--r-- 1 brian brian  220 Jun 30 14:25 .bash_logout
-rw-r--r-- 1 brian brian 3526 Jun 30 14:25 .bashrc

# 在WSL中使用Windows的 ping 命令
$ ping.exe www.microsoft.com

# 显示当前 TCP/IP 网络配置值,然后通过 Linux 工具 grep 被筛选为仅 IPv4 结果
~$ ipconfig.exe | grep IPv4 | cut -d: -f2
grep: (standard input): binary file matches
# grep添加--text参数或-a参数,等价于 --binary-files=text 详见grep帮助
~$ ipconfig.exe | grep --text IPv4 | cut -d: -f2
 192.168.2.197
 xxx.27.16.1

WSL 与网络

TODO
参考资料:
https://learn.microsoft.com/zh-cn/windows/wsl/networking
https://zhuanlan.zhihu.com/p/153124468

设置WSL开发环境

设置用户名/密码

使用 WSL 安装 Linux 发行版的过程完成后,使用“开始”菜单打开该发行版(默认情况下为 Ubuntu)。 系统将要求你为 Linux 发行版创建“用户名”和“密码”。

  • 此用户名和密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
  • 输入 密码时,屏幕上不会显示任何内容。 这称为盲目键入。
  • 创建用户名和密码后,该帐户将是分发版的默认用户,并将在启动时自动登录。
  • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。
  • 在 WSL 上运行的每个 Linux 发行版都有其自己的 Linux 用户帐户和密码。 每当添加分发版、重新安装或重置时,都必须配置一个 Linux 用户帐户。
  • 若要更改或重置密码,请打开 Linux 发行版并输入命令:passwd。
  • 如果忘记了 Linux 分发版的密码:请打开 PowerShell,使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称,如果是Ubuntu可以省略。在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd <username>,其中 <username> 是发行版中帐户的用户名。系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用以下命令在 PowerShell 内关闭 WSL:exit。

更新和升级包

建议使用发行版的首选包管理器定期更新和升级包。 对于 Ubuntu 或 Debian,请使用以下命令:

sudo apt update && sudo apt upgrade

Windows 不会自动更新或升级 Linux 分发版。

使用Code编辑器

分步指南开始将 Visual Studio Code 与 WSL 配合使用,其中包括安装远程开发扩展包。 此扩展使你能够运行 WSL、SSH 或开发容器,以便使用完整的Visual Studio Code功能集进行编辑和调试。 在不同的独立开发环境之间快速切换并进行更新,而无需担心会影响本地计算机。

安装并设置 VS Code 后,可以通过输入以下内容使用 VS Code 远程服务器打开 WSL 项目:code .

使用Docker

分步指南开始使用 WSL 2 上的 Docker 远程容器,并使用 Docker Desktop for Windows 将项目连接到远程开发容器。

安装Docker桌面版

Docker Desktop for Windows 为生成、交付和运行 Docker 化的应用提供了一个开发环境。 通过启用基于 WSL 2 的引擎,可以在同一计算机上的 Docker Desktop 中运行 Linux 和 Windows 容器。
安装 Docker Desktop, 需要重启生成docker用户生效。
配置:
1)“设置”>“常规”中选中“使用基于 WSL 2 的引擎”。
2)“设置”>“资源”>“WSL 集成”,从要启用 Docker 集成的已安装 WSL 2 发行版中 进行选择
确认是否完成安装:

# 启动某个发行版,此处为Debian
C:\Users\user3>wsl --user brian
# 输入 docker --version 来显示版本和内部版本号
brian@brianomen:/mnt/c/Users/user3$ docker --version
Docker version 24.0.6, build ed223bc
# 运行简单的内置 Docker 映像,测试安装是否正常工作
brian@brianomen:/mnt/c/Users/user3$docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:4f53e2564790c8e7856ec08e384732aa38dc43c52f02952483e3f003afbf23db
Status: Downloaded newer image for hello-world:latest
Hello from Docker!

使用 VS Code 在远程容器中开发

若要开始将 Docker 与 WSL 2 配合使用来开发应用,建议使用 VS Code 以及 WSL、开发容器和 Docker 扩展。

  • 安装 VS Code WSL 扩展。 此扩展使你能够在 VS Code 中打开在 WSL 上运行的 Linux 项目(无需担心路径问题、二进制兼容性或其他跨 OS 的难题)。

  • 安装 VS Code 开发容器扩展。 此扩展使你能够打开容器内的项目文件夹或存储库,并利用 Visual Studio Code 的完整功能集在容器中执行开发工作。

  • 安装 VS Code Docker 扩展。 此扩展添加了从 VS Code 内生成、管理和部署容器化应用程序的功能。 (需要开发容器扩展才能将容器实际用作开发环境。)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容