Linux內(nèi)核 特殊文件系統(tǒng)

特殊文件系統(tǒng)

1.proc文件系統(tǒng)

  • /proc是一個(gè)位于內(nèi)存中的偽文件系統(tǒng)(in-memory pseudo-file system)。該目錄下保存的不是真正的文件和目錄感挥,而是一些“運(yùn)行時(shí)”信息炊邦,如系統(tǒng)內(nèi)存嚎尤、磁盤(pán)io瓤逼、設(shè)備掛載信息和硬件配置信息等礼华。

  • proc目錄是一個(gè)控制中心勺馆,用戶(hù)可以通過(guò)更改其中某些文件來(lái)改變內(nèi)核的運(yùn)行狀態(tài)戏售。

  • proc目錄也是內(nèi)核提供給我們的查詢(xún)中心,我們可以通過(guò)這些文件查看有關(guān)系統(tǒng)硬件及當(dāng)前正在運(yùn)行進(jìn)程的信息草穆。

  • proc文件系統(tǒng)提供了內(nèi)核空間用戶(hù)空間之間的通信方法灌灾。

1)proc各目錄說(shuō)明
  • /proc/buddyinfo 每個(gè)內(nèi)存區(qū)中的每個(gè)order有多少塊可用,和內(nèi)存碎片問(wèn)題有關(guān)
  • /proc/cmdline 啟動(dòng)時(shí)傳遞給kernel的參數(shù)信息
  • /proc/cpuinfo cpu的信息
  • /proc/crypto 內(nèi)核使用的所有已安裝的加密密碼及細(xì)節(jié)
  • /proc/devices 已經(jīng)加載的設(shè)備
  • /proc/dma 已注冊(cè)使用的ISA DMA頻道列表
  • /proc/execdomains linux內(nèi)核當(dāng)前支持的execution domains
  • /proc/fb 幀緩沖設(shè)備列表悲柱,包括數(shù)量和控制它的驅(qū)動(dòng)
  • /proc/filesystems 內(nèi)核當(dāng)前支持的文件系統(tǒng)類(lèi)型
  • /proc/interrupts x86架構(gòu)中的每個(gè)IRQ中斷數(shù)
  • /proc/iomem 每個(gè)物理設(shè)備當(dāng)前在系統(tǒng)內(nèi)存中的映射
  • /proc/ioports 一個(gè)設(shè)備的輸入輸出所使用的注冊(cè)端口范圍
  • /proc/kcore 代表系統(tǒng)的物理內(nèi)存锋喜,存儲(chǔ)為核心文件格式,里邊顯示的是字節(jié)數(shù)豌鸡,等于RAM大小加上4kb
  • /proc/kmsg 記錄內(nèi)核生成的信息嘿般,可以通過(guò)/sbin/klogd或/bin/dmesg來(lái)處理
  • /proc/loadavg 根據(jù)過(guò)去一段時(shí)間內(nèi)CPU和IO的狀態(tài)得出的負(fù)載狀態(tài),與uptime命令有關(guān)
  • /proc/locks 內(nèi)核鎖住的文件列表
  • /proc/mdstat 多硬盤(pán)涯冠,RAID配置信息(md=multiple disks)
  • /proc/meminfo RAM使用的相關(guān)信息
  • /proc/misc 其他的主要設(shè)備(設(shè)備號(hào)為10)上注冊(cè)的驅(qū)動(dòng)
  • /proc/modules 所有加載到內(nèi)核的模塊列表
  • /proc/mounts 系統(tǒng)中使用的所有掛載
  • /proc/mtrr 系統(tǒng)使用的Memory Type Range Registers (MTRRs)
  • /proc/partitions 分區(qū)中的塊分配信息
  • /proc/pci 系統(tǒng)中的PCI設(shè)備列表
  • /proc/slabinfo 系統(tǒng)中所有活動(dòng)的 slab 緩存信息
  • /proc/stat 所有的CPU活動(dòng)信息
  • /proc/sysrq-trigger 使用echo命令來(lái)寫(xiě)這個(gè)文件的時(shí)候炉奴,遠(yuǎn)程root用戶(hù)可以執(zhí)行大多數(shù)的系統(tǒng)請(qǐng)求關(guān)鍵命令,就好像在本地終端執(zhí)行一樣蛇更。要寫(xiě)入這個(gè)文件瞻赶,需要把/proc/sys/kernel/sysrq不能設(shè)置為0赛糟。這個(gè)文件對(duì)root也是不可讀的
  • /proc/uptime 系統(tǒng)已經(jīng)運(yùn)行了多久
  • /proc/swaps 交換空間的使用情況
  • /proc/version Linux內(nèi)核版本和gcc版本
  • /proc/bus 系統(tǒng)總線(xiàn)(Bus)信息,例如pci/usb等
  • /proc/driver 驅(qū)動(dòng)信息
  • /proc/fs 文件系統(tǒng)信息
  • /proc/ide ide設(shè)備信息
  • /proc/irq 中斷請(qǐng)求設(shè)備信息
  • /proc/net 網(wǎng)卡設(shè)備信息
  • /proc/scsi scsi設(shè)備信息
  • /proc/tty tty設(shè)備信息
  • /proc/net/dev 顯示網(wǎng)絡(luò)適配器及統(tǒng)計(jì)信息
  • /proc/vmstat 虛擬內(nèi)存統(tǒng)計(jì)信息
  • /proc/vmcore 內(nèi)核panic時(shí)的內(nèi)存映像
  • /proc/diskstats 取得磁盤(pán)信息
  • /proc/schedstat kernel調(diào)度器的統(tǒng)計(jì)信息
  • /proc/zoneinfo 顯示內(nèi)存空間的統(tǒng)計(jì)信息砸逊,對(duì)分析虛擬內(nèi)存行為很有用
2)進(jìn)程目錄/proc/[pid]說(shuō)明
  • /proc/N pid為N的進(jìn)程信息
  • /proc/N/cmdline 進(jìn)程啟動(dòng)命令
  • /proc/N/cwd 鏈接到進(jìn)程當(dāng)前工作目錄
  • /proc/N/environ 進(jìn)程環(huán)境變量列表
  • /proc/N/exe 鏈接到進(jìn)程的執(zhí)行命令文件
  • /proc/N/fd 包含進(jìn)程相關(guān)的所有的文件描述符
  • /proc/N/maps 與進(jìn)程相關(guān)的內(nèi)存映射信息
  • /proc/N/mem 指代進(jìn)程持有的內(nèi)存璧南,不可讀
  • /proc/N/root 鏈接到進(jìn)程的根目錄
  • /proc/N/stat 進(jìn)程的狀態(tài)
  • /proc/N/statm 進(jìn)程使用的內(nèi)存的狀態(tài)
  • /proc/N/status 進(jìn)程狀態(tài)信息,比stat/statm更具可讀性
  • /proc/self 鏈接到當(dāng)前正在運(yùn)行的進(jìn)程

2.sysfs偽文件系統(tǒng)

  • Sysfs文件系統(tǒng)是一個(gè)類(lèi)似于proc文件系統(tǒng)的基于內(nèi)存的虛擬的文件系統(tǒng)师逸,用于將系統(tǒng)中的設(shè)備組織成層次結(jié)構(gòu)司倚,并向用戶(hù)模式程序提供詳細(xì)的內(nèi)核數(shù)據(jù)結(jié)構(gòu)信息。

  • 掛載到 /sys 目錄下字旭,在用戶(hù)態(tài)可以通過(guò)對(duì)sys文件系統(tǒng)的訪(fǎng)問(wèn)对湃,來(lái)看內(nèi)核態(tài)的一些驅(qū)動(dòng)或者設(shè)備等。

  • 手動(dòng)掛載sysfs

    mount -t sysfs sysfs /sys 
    
1)/sys目錄說(shuō)明
2)sysfs與proc的關(guān)系
  • 在 sysfs 下的很多 kobject 下都有 uevent 屬性遗淳,用于內(nèi)核與 udev (自動(dòng)設(shè)備發(fā)現(xiàn)程序)之間的一個(gè)通信接口拍柒;
  • netlink 協(xié)議套接字是udev 與內(nèi)核的通信接口。
  • uevent 屬性文件一般都是可寫(xiě)的屈暗,可以向 udevd (udev 后臺(tái)程序)發(fā)送一條 netlink 消息拆讯,讓它再重新一遍相關(guān)的 udev 規(guī)則文件,從而讓用戶(hù)空間的udev動(dòng)態(tài)創(chuàng)建或刪除設(shè)備文件养叛;

3.devfs設(shè)備文件系統(tǒng)

  • 存在于內(nèi)核空間种呐,在linux2.6之后被拋棄,內(nèi)核空間的devfs被用戶(hù)空間的udev取代弃甥。
  • 特點(diǎn):
    • 設(shè)備文件被打開(kāi)時(shí)才加載驅(qū)動(dòng)
    • 由內(nèi)核管理設(shè)備文件名稱(chēng)

4.udev設(shè)備管理器

? udev 是Linux kernel 2.6系列的設(shè)備管理器爽室。它主要的功能是管理/dev目錄底下的設(shè)備節(jié)點(diǎn)。它同時(shí)也是用來(lái)接替devfshotplug的功能淆攻,這意味著它要在添加/刪除硬件時(shí)處理/dev目錄以及所有用戶(hù)空間的行為阔墩,包括加載firmware時(shí)。

1)運(yùn)行方式
  • 動(dòng)態(tài)管理:udev是在用戶(hù)空間運(yùn)行的守護(hù)進(jìn)程瓶珊,它會(huì)監(jiān)聽(tīng)內(nèi)核的uevent事件(通過(guò)netlink socket)啸箫,根據(jù)事件和配置的udev規(guī)則,添加或者刪除設(shè)備文件伞芹。
  • 自定義命名規(guī)則:通過(guò) Linux 默認(rèn)的規(guī)則文件忘苛,udev 在 /dev/ 里為所有的設(shè)備定義了內(nèi)核設(shè)備名稱(chēng),比如 /dev/sda唱较、/dev/hda扎唾、/dev/fd等等。由于 udev 是在用戶(hù)空間 (user space) 運(yùn)行南缓,Linux 用戶(hù)可以通過(guò)自定義的規(guī)則文件鞭莽,靈活地產(chǎn)生標(biāo)識(shí)性強(qiáng)的設(shè)備文件名睁本,如/dev/ttyGPS塞弊。
  • 設(shè)定設(shè)備的權(quán)限和所有者 / 組:udev 可以按一定的條件來(lái)設(shè)置設(shè)備文件的權(quán)限和設(shè)備文件所有者 / 組。
image
2)udev組成

udev系統(tǒng)可以分為三個(gè)部分:

  • libudev函數(shù)庫(kù)藕筋,可以用來(lái)獲取設(shè)備的信息。

  • udevd守護(hù)進(jìn)程世分,處于用戶(hù)空間岛马,用于管理虛擬/dev

  • 管理命令udevadm,用來(lái)診斷出錯(cuò)情況届案。

    $ udevadm info /dev/ttyTHS1
    P: /devices/70006040.serial/tty/ttyTHS1
    N: ttyTHS1
    E: DEVNAME=/dev/ttyTHS1
    E: DEVPATH=/devices/70006040.serial/tty/ttyTHS1
    E: ID_MM_CANDIDATE=1
    E: MAJOR=238
    E: MINOR=1
    E: SUBSYSTEM=tty
    E: TAGS=:systemd:
    E: USEC_INITIALIZED=4078860
    E: net.ifnames=0
    
  • 查看udev設(shè)備詳細(xì)信息

$ udevadm info -a -p /sys/class/net/eth1

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/1003000.pcie/pci0000:00/0000:00:02.0/0000:01:00.0/net/eth1':
    KERNEL=="eth1"
    SUBSYSTEM=="net"
    DRIVER==""
    ATTR{addr_assign_type}=="0"
    ATTR{addr_len}=="6"
    ATTR{address}=="00:04:4b:e5:da:f3"
    ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
    ATTR{carrier}=="1"
    ATTR{carrier_changes}=="2"
    ATTR{dev_id}=="0x0"
    ATTR{dev_port}=="0"
    ATTR{dormant}=="0"
    ATTR{duplex}=="full"
    ATTR{flags}=="0x1003"
    ATTR{gro_flush_timeout}=="0"
    ATTR{ifalias}==""
    ATTR{ifindex}=="4"
    ATTR{iflink}=="4"
    ATTR{link_mode}=="0"
    ATTR{mtu}=="1500"
    ATTR{netdev_group}=="0"
    ATTR{operstate}=="up"
    ATTR{proto_down}=="0"
    ATTR{speed}=="1000"
    ATTR{tx_queue_len}=="1000"
    ATTR{type}=="1"

  looking at parent device '/devices/1003000.pcie/pci0000:00/0000:00:02.0/0000:01:00.0':
    KERNELS=="0000:01:00.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="r8168"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x020000"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{device}=="0x8168"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{irq}=="405"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{local_cpus}=="f"
    ATTRS{msi_bus}=="1"
    ATTRS{subsystem_device}=="0x8168"
    ATTRS{subsystem_vendor}=="0x10ec"
    ATTRS{vendor}=="0x10ec"

  looking at parent device '/devices/1003000.pcie/pci0000:00/0000:00:02.0':
    KERNELS=="0000:00:02.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="pcieport"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x060400"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{device}=="0x0faf"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{irq}=="83"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{local_cpus}=="f"
    ATTRS{msi_bus}=="1"
    ATTRS{subsystem_device}=="0x0000"
    ATTRS{subsystem_vendor}=="0x10de"
    ATTRS{vendor}=="0x10de"

  looking at parent device '/devices/1003000.pcie/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device '/devices/1003000.pcie':
    KERNELS=="1003000.pcie"
    SUBSYSTEMS=="platform"
    DRIVERS=="tegra-pcie"
    ATTRS{driver_override}=="(null)"

3)udev規(guī)則和文件
  • udev配置文件是/etc/udev/udev.conf庵楷,指定udev規(guī)則存儲(chǔ)的目錄,默認(rèn)為udev_rules=“/etc/udev/rules.d”楣颠。

  • 目錄中存儲(chǔ)一系列以.rules結(jié)束的規(guī)則文件尽纽,每個(gè)文件處理一系列規(guī)則來(lái)幫助udev分配名字給設(shè)備文件并保證內(nèi)核可以識(shí)別此名字。

    root@michael-desktop:/etc/udev/rules.d# ls -l
    total 32
    -rw-r--r-- 1 root root  497 Jul 17 08:19 90-alsa-asound-tegra.rules
    -rw-r--r-- 1 root root  175 Jul 17 08:19 91-xorg-conf-tegra.rules
    -rw-r--r-- 1 root root  711 Jul 17 08:19 92-hdmi-audio-tegra.rules
    -rw-r--r-- 1 root root  208 Jul 17 08:19 99-nv-l4t-usb-device-mode.rules
    -rw-r--r-- 1 root root  634 Jul 17 08:19 99-nv-wifibt.rules
    -rw-r--r-- 1 root root 1425 Jul 17 08:19 99-tegra-devices.rules
    -rw-r--r-- 1 root root  130 Jul 17 08:19 99-tegra-mmc-ra.rules
    -rw-r--r-- 1 root root  157 Aug 14 14:10 ttyUSB.rules
    
  • 規(guī)則文件由系列鍵-值對(duì)組成童漩,匹配鍵和賦值鍵操作符解釋如下

    操作符     匹配或賦值                         解釋
    ----------------------------------------
         ==            匹配              相等比較
         !=            匹配              不等比較
         =             賦值              分配一個(gè)特定的值給該鍵,他可以覆蓋之前的賦值.
         +=            賦值              追加特定的值給已經(jīng)存在的鍵
         :=            賦值              分配一個(gè)特定的值給該鍵,后面的規(guī)則不可能覆蓋它.
    
  • 常用鍵說(shuō)明

    鍵                含義
    ----------------------------------------
    ACTION               事件 (uevent) 的行為,例如:add( 添加設(shè)備 )弄贿、remove( 刪除設(shè)備 ).
    KERNEL               在內(nèi)核里看到的設(shè)備名字,比如sd*表示任意SCSI磁盤(pán)設(shè)備
    DEVPATH              內(nèi)核設(shè)備路徑,比如/devices/*
    SUBSYSTEM            設(shè)備子系統(tǒng)名字,例如:sda 的子系統(tǒng)為 block.
    BUS                  總線(xiàn)的名字,比如IDE,USB
    DRIVER               設(shè)備驅(qū)動(dòng)的名字,比如ide-cdrom
    ID                   獨(dú)立于內(nèi)核名字的設(shè)備名字
    SYSFS{ value}        sysfs屬性值,他可以表示任意
    ATTRS                  匹配設(shè)備的sysfs屬性,或任何父設(shè)備的sysfs屬性
    ENV{ key}            環(huán)境變量,可以表示任意
    PROGRAM              可執(zhí)行的外部程序,如果程序返回0值,該鍵則認(rèn)為為真(true)
    RESULT               上一個(gè)PROGRAM調(diào)用返回的標(biāo)準(zhǔn)輸出.
    NAME                 根據(jù)這個(gè)規(guī)則創(chuàng)建的設(shè)備文件的文件名.
    (注意:僅僅第一行的NAME描述是有效的,后面的均忽略.如果你想使用使用兩個(gè)以上的名字來(lái)訪(fǎng)問(wèn)一個(gè)設(shè)備的話(huà),可以考慮SYMLINK鍵.)
    SYMLINK              為 /dev/下的設(shè)備文件產(chǎn)生符號(hào)鏈接.由于 udev 只能為某個(gè)設(shè)備產(chǎn)生一個(gè)設(shè)備文件,
    (所以為了不覆蓋系統(tǒng)默認(rèn)的 udev 規(guī)則所產(chǎn)生的文件,推薦使用符號(hào)鏈接.)
    OWNER                設(shè)備文件的屬組
    GROUP                設(shè)備文件所在的組.
    MODE                 設(shè)備文件的權(quán)限,采用8進(jìn)制
    RUN                  為設(shè)備而執(zhí)行的程序列表
    LABEL                在配置文件里為內(nèi)部控制而采用的名字標(biāo)簽(下下面的GOTO服務(wù))
    GOTO                 跳到匹配的規(guī)則(通過(guò)LABEL來(lái)標(biāo)識(shí)),有點(diǎn)類(lèi)似程序語(yǔ)言中的GOTO
    IMPORT{ type}        導(dǎo)入一個(gè)文件或者一個(gè)程序執(zhí)行后而生成的規(guī)則集到當(dāng)前文件
    WAIT_FOR_SYSFS       等待一個(gè)特定的設(shè)備文件的創(chuàng)建.主要是用作時(shí)序和依賴(lài)問(wèn)題.
    PTIONS               特定的選項(xiàng):
    last_rule            對(duì)這類(lèi)設(shè)備終端規(guī)則執(zhí)行矫膨;
    ignore_device        忽略當(dāng)前規(guī)則差凹;
    ignore_remove        忽略接下來(lái)的并移走請(qǐng)求.
    all_partitions       為所有的磁盤(pán)分區(qū)創(chuàng)建設(shè)備文件.
    
  • 特殊的值和替換值

    例如:my_root_disk, my_printer.同時(shí)也可以引用下面的替換操作符:
    ----------------------------------------
    $kernel,       %k:       設(shè)備的內(nèi)核設(shè)備名稱(chēng),例如:sda、cdrom.
    $number,       %n:       設(shè)備的內(nèi)核號(hào)碼,例如:sda3 的內(nèi)核號(hào)碼是 3.
    $devpath,      %p:       設(shè)備的 devpath路徑.
    $id,           %b:       設(shè)備在 devpath里的 ID 號(hào).
    $sysfs{file},  %s{file}: 設(shè)備的 sysfs里 file 的內(nèi)容.其實(shí)就是設(shè)備的屬性值.
    $env{key},     %E{key}:   一個(gè)環(huán)境變量的值.
    $major,        %M:        設(shè)備的 major 號(hào).
    $minor侧馅,       %m:        設(shè)備的 minor 號(hào).
    $result,       %c:        PROGRAM 返回的結(jié)果
    $parent,       %P:        父設(shè)備的設(shè)備文件名.
    $root,         %r:        udev_root的值,默認(rèn)是 /dev/.
    $tempnode,     %N:        臨時(shí)設(shè)備名.
    %%:           符號(hào) % 本身.
    $$:           符號(hào) $ 本身.
    
4)編寫(xiě)udev規(guī)則步驟

? 編寫(xiě)udev規(guī)則

  • 獲取設(shè)備KERNEL相關(guān)的信息

    # udevinfo -a -p /sys/block/sda
    
      looking at device '/block/sda':
        KERNEL=="sda"
        SUBSYSTEM=="block"
        ATTR{stat}=="  128535     2246  2788977   766188    73998   317300  3132216  5735004        0   516516  6503316"
        ATTR{size}=="234441648"
        ATTR{removable}=="0"
        ATTR{range}=="16"
        ATTR{dev}=="8:0"
    
      looking at parent device '/devices/pci0000:00/0000:00:07.0/host0/target0:0:0/0:0:0:0':
        KERNELS=="0:0:0:0"
        SUBSYSTEMS=="scsi"
        DRIVERS=="sd"
        ATTRS{ioerr_cnt}=="0x0"
        ATTRS{iodone_cnt}=="0x31737"
        ATTRS{iorequest_cnt}=="0x31737"
        ATTRS{iocounterbits}=="32"
        ATTRS{timeout}=="30"
        ATTRS{state}=="running"
        ATTRS{rev}=="3.42"
        ATTRS{model}=="ST3120827AS     "
        ATTRS{vendor}=="ATA     "
        ATTRS{scsi_level}=="6"
        ATTRS{type}=="0"
        ATTRS{queue_type}=="none"
        ATTRS{queue_depth}=="1"
        ATTRS{device_blocked}=="0"
    
      looking at parent device '/devices/pci0000:00/0000:00:07.0':
        KERNELS=="0000:00:07.0"
        SUBSYSTEMS=="pci"
        DRIVERS=="sata_nv"
        ATTRS{vendor}=="0x10de"
        ATTRS{device}=="0x037f"
    
  • 如對(duì)兩個(gè)usb轉(zhuǎn)ttl設(shè)備生成新的符號(hào)鏈接

    $ cat ttyUSB.rules 
    ATTRS{serial}=="A5XK3RJT", MODE:="0777", GROUP:="dialout", SYMLINK+="ttyGPS"
    ATTRS{serial}=="AH072FQW", MODE:="0777", GROUP:="dialout", SYMLINK+="ttyHandle"
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末危尿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子馁痴,更是在濱河造成了極大的恐慌谊娇,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罗晕,死亡現(xiàn)場(chǎng)離奇詭異济欢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)攀例,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)船逮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人粤铭,你說(shuō)我怎么就攤上這事挖胃。” “怎么了梆惯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵酱鸭,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我垛吗,道長(zhǎng)凹髓,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任怯屉,我火速辦了婚禮蔚舀,結(jié)果婚禮上饵沧,老公的妹妹穿的比我還像新娘。我一直安慰自己赌躺,他們只是感情好狼牺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著礼患,像睡著了一般是钥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缅叠,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天悄泥,我揣著相機(jī)與錄音,去河邊找鬼肤粱。 笑死弹囚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狼犯。 我是一名探鬼主播余寥,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼悯森!你這毒婦竟也來(lái)了宋舷?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瓢姻,失蹤者是張志新(化名)和其女友劉穎祝蝠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體幻碱,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绎狭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褥傍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片儡嘶。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖恍风,靈堂內(nèi)的尸體忽然破棺而出蹦狂,到底是詐尸還是另有隱情,我是刑警寧澤朋贬,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布凯楔,位于F島的核電站,受9級(jí)特大地震影響锦募,放射性物質(zhì)發(fā)生泄漏摆屯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一糠亩、第九天 我趴在偏房一處隱蔽的房頂上張望虐骑。 院中可真熱鬧准验,春花似錦、人聲如沸廷没。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腕柜。三九已至,卻和暖如春矫废,著一層夾襖步出監(jiān)牢的瞬間盏缤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工蓖扑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唉铜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓律杠,卻偏偏與公主長(zhǎng)得像潭流,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柜去,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容