Chapter 8——systemd新特性和awk命令

一欢际、簡(jiǎn)述systemd的新特性及unit常見(jiàn)類(lèi)型分析会钝,能夠?qū)崿F(xiàn)編譯安裝的如nginx\apache實(shí)現(xiàn)通過(guò)systemd來(lái)管理

1这吻、systemd新特性及unit常見(jiàn)類(lèi)型分析

Systemd的新特性:
    系統(tǒng)引導(dǎo)時(shí)實(shí)現(xiàn)服務(wù)并行啟動(dòng)揩抡;
    按需激活進(jìn)程簇爆;
    系統(tǒng)狀態(tài)快照;
    基于依賴(lài)關(guān)系定義服務(wù)控制邏輯视译;

核心概念:unit
    unit由其相關(guān)的配置文件進(jìn)行標(biāo)識(shí)嬉荆、識(shí)別和配置;文件中主要包含了系統(tǒng)服務(wù)酷含、監(jiān)聽(tīng)的socket鄙早、保存的快照以及其它與init相關(guān)的信息汪茧;這些配置文件主要保存在:
        /usr/lib/systemd/system
        /run/systemd/system
        /etc/systemd/system

unit的常見(jiàn)類(lèi)型:
    Service unit:文件擴(kuò)展名為.service,用于定義系統(tǒng)服務(wù)限番;
    Target unit:文件擴(kuò)展名為.target舱污,用于模擬實(shí)現(xiàn)“運(yùn)行級(jí)別”;
    Device unit:文件擴(kuò)展名為.device弥虐,用于定義內(nèi)核識(shí)別的設(shè)備扩灯;
    Mount unit:文件擴(kuò)展名為.mount,定義文件系統(tǒng)掛載點(diǎn)霜瘪;
    Socket unit:文件擴(kuò)展名為.socket珠插,用于標(biāo)識(shí)進(jìn)程間通信用到的socket文件;
    Snapshot unit:文件擴(kuò)展名為.snapshot颖对,管理系統(tǒng)快照捻撑;
    Swap unit:文件擴(kuò)展名為.swap,用于標(biāo)識(shí)swap設(shè)備缤底;
    Automount unit:文件擴(kuò)展名為.automount顾患,文件系統(tǒng)自動(dòng)點(diǎn)設(shè)備;
    Path unit:文件擴(kuò)展名為.path训堆,用于定義文件系統(tǒng)中的文件或目錄描验;

關(guān)鍵特性:
    基于socket的激活機(jī)制:socket與程序分離;
    基于bus的激活機(jī)制坑鱼;
    基于device的激活機(jī)制膘流;
    基于Path的激活機(jī)制;
    系統(tǒng)快照:保存各unit的當(dāng)前狀態(tài)信息于持久存儲(chǔ)設(shè)備中鲁沥;
    向后兼容sysv init腳本呼股;
        /etc/init.d

2、實(shí)現(xiàn)systemd管理nginx/apache

第一步:首先下載nginx源碼包并編譯安裝

[root@localhost ~]# wget https://nginx.org/download/nginx-1.15.5.tar.gz
--2018-10-18 10:00:33--  https://nginx.org/download/nginx-1.15.5.tar.gz
Resolving nginx.org (nginx.org)... 206.251.255.63, 95.211.80.227, 2001:1af8:4060:a004:21::e3, ...
Connecting to nginx.org (nginx.org)|206.251.255.63|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1024791 (1001K) [application/octet-stream]
Saving to: ‘nginx-1.15.5.tar.gz’

100%[=======================================================================================================================================================================>] 1,024,791   96.0KB/s   in 11s    

2018-10-18 10:00:49 (92.0 KB/s) - ‘nginx-1.15.5.tar.gz’ saved [1024791/1024791]

[root@localhost ~]# tar zxf nginx-1.15.5.tar.gz 
[root@localhost ~]# cd nginx-1.15.5
[root@localhost nginx-1.15.5]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@localhost nginx-1.15.5]# ./configure --prefix=/usr/local/nginx
checking for OS
 + Linux 3.10.0-327.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) 
checking for gcc -pipe switch ... found
......
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for zlib library ... found
creating objs/Makefile

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
[root@localhost nginx-1.15.5]# make && make install
make -f objs/Makefile
make[1]: Entering directory `/root/nginx-1.15.5'
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/nginx.o \
    src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
    -o objs/src/core/ngx_log.o \
......
cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html' \
    || cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
make[1]: Leaving directory `/root/nginx-1.15.5'
[root@localhost nginx-1.15.5]# 

第二步:確認(rèn)nginx安裝成功画恰,且正常提供服務(wù)
測(cè)試啟動(dòng)nginx服務(wù)

[root@localhost ~]# /usr/local/nginx/sbin/nginx
[root@localhost ~]# ss -tan 
State       Recv-Q Send-Q                                                           Local Address:Port                                                                          Peer Address:Port              
LISTEN      0      128                                                                          *:80                                                                                       *:* 
LISTEN      0      128                                                                          *:22                                                                                       *:*                  
LISTEN      0      100                                                                  127.0.0.1:25                                                                                       *:*                  
ESTAB       0      52                                                               192.168.0.131:22                                                                             192.168.0.1:60069              
LISTEN      0      128                                                                         :::22                                                                                      :::*                  
LISTEN      0      100                                                                        ::1:25                                                                                      :::* 

此時(shí)可通過(guò)服務(wù)器IP地址彭谁,訪問(wèn)到nginx歡迎頁(yè)面,說(shuō)明nginx安裝成功允扇,且正常提供服務(wù)


image.png

第三步:創(chuàng)建unit文件
由于nginx屬于服務(wù)類(lèi)unit缠局,故unit文件類(lèi)型以.service結(jié)尾

[root@localhost ~]# cd /usr/lib/systemd/system
[root@localhost system]# cat  << EOF  >> nginx.service
> [unit]
> Desciption=This is a web service
> After=network.target
> 
> [Service]
> Type=forking
> ExecStart=/usr/local/nginx/sbin/nginx
> ExecStop=/usr/local/nginx/sbin/nginx -s stop
> ExecReload=/usr/local/nginx/sbin/nginx -s reload
> 
> [Install]
> WantedBy=multi-user.target
> EOF

第四步:systemd重載此配置文件

[root@localhost system]# systemctl daemon-reload

最后:測(cè)試systemctl的管理效果

[root@localhost system]# /usr/local/nginx/sbin/nginx -s stop
[root@localhost system]# ss -tan
State      Recv-Q Send-Q              Local Address:Port                             Peer Address:Port              
LISTEN     0      128                             *:22                                          *:*                  
LISTEN     0      100                     127.0.0.1:25                                          *:*                  
ESTAB      0      52                  192.168.0.131:22                                192.168.0.1:60069              
LISTEN     0      128                            :::22                                         :::*                  
LISTEN     0      100                           ::1:25                                         :::*
image.png
[root@localhost system]# systemctl start nginx
[root@localhost system]# ss -tan
State      Recv-Q Send-Q              Local Address:Port                             Peer Address:Port              
LISTEN     0      128                             *:80                                          *:*                  
LISTEN     0      128                             *:22                                          *:*                  
LISTEN     0      100                     127.0.0.1:25                                          *:*                  
ESTAB      0      52                  192.168.0.131:22                                192.168.0.1:60069              
SYN-SENT   0      1                   192.168.0.131:47014                         192.168.204.129:8090               
SYN-SENT   0      1                   192.168.0.131:55349                         192.168.204.129:8080               
LISTEN     0      128                            :::22                                         :::*                  
LISTEN     0      100                           ::1:25                                         :::*
image.png

二、描述awk命令用法及示例(至少3例)

awk命令

基本用法:awk [options] 'program' FILE ...
    program:PATTERN{ACTION STATEMENTS}
        語(yǔ)句之間用分號(hào)分隔
    options:
        -F:指明輸入時(shí)用到的字段分隔符考润;
        -v var=value:自定義變量狭园;
常見(jiàn)用法1——print
print item1,item2,...
要點(diǎn):
    (1)逗號(hào)分隔符;
    (2)輸出的各item可以是字符串糊治,也可以是數(shù)值唱矛;當(dāng)前記錄的字段、變量或awk的表達(dá)式;
    (3)如省略item绎谦,相當(dāng)于print $0管闷,即打印整行;

示例:打印當(dāng)前系統(tǒng)的用戶名和其所用shell

[root@localhost system]# awk -F: '{print $1,"\t",$7}' /etc/passwd
root     /bin/bash
bin      /sbin/nologin
daemon   /sbin/nologin
adm      /sbin/nologin
lp   /sbin/nologin
sync     /bin/sync
shutdown     /sbin/shutdown
halt     /sbin/halt
mail     /sbin/nologin
operator     /sbin/nologin
games    /sbin/nologin
ftp      /sbin/nologin
nobody   /sbin/nologin
avahi-autoipd    /sbin/nologin
systemd-bus-proxy    /sbin/nologin
systemd-network      /sbin/nologin
dbus     /sbin/nologin
polkitd      /sbin/nologin
tss      /sbin/nologin
postfix      /sbin/nologin
sshd     /sbin/nologin
常見(jiàn)用法2——變量
2.1 內(nèi)建變量
    FS:input field seperator:默認(rèn)為空白字符窃肠;
    OFS:output field seperator:默認(rèn)為空白字符包个;
    RS:input record seperator,把某字符當(dāng)做輸入時(shí)的換行符
    ORS:output record seperator:把某字符當(dāng)做輸入時(shí)的換行符

    NF:number of field冤留,字段數(shù)量
        {print NF}:打印每段的字段數(shù)量;$NF:最后一個(gè)字段
        *注:awk中引用變量時(shí)不加$赃蛛,引用字段才用$
    NR:number of record,行數(shù)
    FNR:行數(shù)搀菩,各文件分別計(jì)數(shù)
    
    FILENAME:當(dāng)前文件名;

    ARGC:命令行參數(shù)的個(gè)數(shù)破托;
    ARGV:數(shù)組肪跋,保存的是命令行所給定的各參數(shù);

2.2 自定義變量
    (1)-v var=value
        變量名區(qū)分字符大小寫(xiě)土砂;
    (2)在program中直接定義

示例:打印當(dāng)前系統(tǒng)的用戶名和其所用shell州既,中間使用###分隔

[root@localhost system]# awk -v FS=':' -v OFS='###' '{print $1,$7}' /etc/passwd
root###/bin/bash
bin###/sbin/nologin
daemon###/sbin/nologin
adm###/sbin/nologin
lp###/sbin/nologin
sync###/bin/sync
shutdown###/sbin/shutdown
halt###/sbin/halt
mail###/sbin/nologin
operator###/sbin/nologin
games###/sbin/nologin
ftp###/sbin/nologin
nobody###/sbin/nologin
avahi-autoipd###/sbin/nologin
systemd-bus-proxy###/sbin/nologin
systemd-network###/sbin/nologin
dbus###/sbin/nologin
polkitd###/sbin/nologin
tss###/sbin/nologin
postfix###/sbin/nologin
sshd###/sbin/nologin
常見(jiàn)用法3——printf命令
      格式化輸出:printf FROMAT,item1,item2,...
        (1)FORMAT必須要給出;
        (2)不會(huì)自動(dòng)換行萝映,需要顯式給出換行控制符吴叶,\n;
        (3)FORMAT中需要分別為后面的每個(gè)item指定一個(gè)格式化符號(hào)序臂;

        格式符:
            %c:顯示字符的ASCII碼蚌卤;
            %d,%i:顯示十進(jìn)制整數(shù)奥秆;
            %e逊彭,%E:科學(xué)計(jì)數(shù)法數(shù)值顯示;
            %f:顯示為浮點(diǎn)數(shù)构订;
            %g侮叮,%G:以科學(xué)計(jì)數(shù)法或浮點(diǎn)形式顯示數(shù)值;
            %s:顯示字符串悼瘾;
            %u:無(wú)符號(hào)整數(shù)囊榜;
            %%:顯示%本身;   

        修飾符:
            #[.#]:第一個(gè)數(shù)字控制顯示的寬度亥宿;第二個(gè)#表示小數(shù)點(diǎn)后的精度卸勺;
                %3.1f
            -:左對(duì)齊(默認(rèn)為右對(duì)齊)
            +:顯示數(shù)值的符號(hào)(即正負(fù),+箩绍、-)

示例1:格式化輸出當(dāng)前系統(tǒng)的用戶名和UID

[root@localhost system]# awk -F: '{printf "Username: %s,UID: %d\n",$1,$3}' /etc/passwd
Username: root,UID: 0
Username: bin,UID: 1
Username: daemon,UID: 2
Username: adm,UID: 3
Username: lp,UID: 4
Username: sync,UID: 5
Username: shutdown,UID: 6
Username: halt,UID: 7
Username: mail,UID: 8
Username: operator,UID: 11
Username: games,UID: 12
Username: ftp,UID: 14
Username: nobody,UID: 99
Username: avahi-autoipd,UID: 170
Username: systemd-bus-proxy,UID: 999
Username: systemd-network,UID: 998
Username: dbus,UID: 81
Username: polkitd,UID: 997
Username: tss,UID: 59
Username: postfix,UID: 89
Username: sshd,UID: 74      

示例2:左對(duì)齊的格式化輸出

[root@localhost system]# awk -F: '{printf "Username: %-20s,UID: %d\n",$1,$3}' /etc/passwd
Username: root                ,UID: 0
Username: bin                 ,UID: 1
Username: daemon              ,UID: 2
Username: adm                 ,UID: 3
Username: lp                  ,UID: 4
Username: sync                ,UID: 5
Username: shutdown            ,UID: 6
Username: halt                ,UID: 7
Username: mail                ,UID: 8
Username: operator            ,UID: 11
Username: games               ,UID: 12
Username: ftp                 ,UID: 14
Username: nobody              ,UID: 99
Username: avahi-autoipd       ,UID: 170
Username: systemd-bus-proxy   ,UID: 999
Username: systemd-network     ,UID: 998
Username: dbus                ,UID: 81
Username: polkitd             ,UID: 997
Username: tss                 ,UID: 59
Username: postfix             ,UID: 89
Username: sshd                ,UID: 74
常見(jiàn)用法4——PATTERN(模式匹配)
    (1)empty:空模式孔庭,匹配每一行;
    (2)/regular expression/:僅處理能夠被此處的模式匹配到的行
    (3)relational expression:關(guān)系表達(dá)式;結(jié)果有“真”有“假”圆到;結(jié)果為“真”才會(huì)被處理怎抛;
        真:結(jié)果為非0值,非空字符串芽淡;
    (4)line ranges:行范圍
        starline,endline:/pat1/,/pat2/
        注意:不支持直接給出數(shù)字的格式
     (5)BEGIN/END模式
        BEGIN{}:僅在開(kāi)始處理文件中的文本之前執(zhí)行一次马绝;
        END{}:僅在文本處理完成之后執(zhí)行一次;

示例:顯示默認(rèn)shell為bash的用戶

[root@localhost ~]# awk -F: '$NF=="/bin/bash"{print $1,$NF}' /etc/passwd
root /bin/bash
或
[root@localhost ~]# awk -F: '$NF~/bash$/{print $1,$NF}' /etc/passwd
root /bin/bash
常見(jiàn)用法5——控制語(yǔ)句
5.1 if-else
    語(yǔ)法:if(condition) statement [else statement]

    示例:
    awk -F: '{if($3>=1000) print $1,$3}' /etc/passwd
    awk -F: '{if($3>=1000) {printf "Common user: %s\n",$1} else {printf "root or sysadmin: %s\n",$1}}'

    awk -F: '{if($NF=="/bin/bash") print $1}' /etc/passwd
    awk '{if(NF>5) print $0}' /etc/fstab
    df -h | awk -F [%] '/^\/dev/{print $1}' | awk '{if($NF>=20) print $1}'

    使用場(chǎng)景:對(duì)awk取得的整行或某個(gè)字段做條件判斷挣菲;

5.2 while循環(huán)
    語(yǔ)法:while(condition) statement
        條件“真”富稻,進(jìn)入循環(huán);條件“假”白胀,退出循環(huán)椭赋;

    使用場(chǎng)景:對(duì)一行內(nèi)的多個(gè)字段逐一類(lèi)似處理時(shí)使用;對(duì)數(shù)組中的各元素逐一處理時(shí)使用或杠;

    示例:
    awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {print $i,length($i);i++}}' /etc/grub2.cfg
    awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {if(length($i)>=7) {print $i,length($i)};i++}}' /etc/grub2.cfg

5.3 do-while循環(huán)
    語(yǔ)法:do statement while(condition)
        意義:至少執(zhí)行一次循環(huán)體

5.4 for循環(huán)
    語(yǔ)法:for(expr1;expr2哪怔;expr3)statement
        for (variable assighment;condition;iteration process) {for-body}

    示例:
    awk '/^[[:space:]]*linux16/{for(i=1;i<=NF;i++){print $i,length($1)}}' /etc/grub2.cfg

    特殊用法:
        能夠遍歷數(shù)組中的元素:
            語(yǔ)法:for(var in array) {for-body}

5.5 switch語(yǔ)句
    語(yǔ)法:switch(expression) {case VALUE1 or /REGEXP/: statement;case VALUE2 or /REGEXP2/: statement;...;default: statement}

5.6 break和continue
    break [n]
    continue

5.7 next
    提前結(jié)束對(duì)本行的處理而直接進(jìn)入下一行;

    awk -F: '{if($3%2!=0) next; print $1,$3}' /etc/passwd
常見(jiàn)用法6——array(數(shù)組)
關(guān)聯(lián)數(shù)組:array[index-expression]

    index-expression:
        (1)可使用任意字符串:字符串要使用雙引號(hào)向抢;
        (2)如果某數(shù)組元素事先不存在认境,在引用時(shí),awk會(huì)自動(dòng)創(chuàng)建此元素挟鸠,并將其值初始化為“空串”叉信;

        若要判斷數(shù)組中是否存在某元素,要使用“index in array”格式進(jìn)行
        weekdays[mon]="Monday"

    若要遍歷數(shù)組中的每個(gè)元素艘希,要使用for循環(huán):
        for (var in array) {for-body}
        示例:
        awk 'BEGIN{weekdays["mon"="Monday";weekdays["tue"="Tuesday";for(i in weekdays) {print weekdays[i]}}'

        注意:var會(huì)遍歷array的每個(gè)索引;
        state["LISTEN"]++
        state["ESTABLISHED"]++
        示例:
        netstat -tan | awk '/^tcp\>/{state[$NF]++}END{for(i in state) print i,state[i]}'
        awk '{ip[$1]++}END{for(i in ip) {print i,ip[i]}}' /var/log/httpd/access_log

實(shí)用示例:統(tǒng)計(jì)/etc/fstab文件中以UUID開(kāi)頭的行文件系統(tǒng)類(lèi)型出現(xiàn)的次數(shù)

[root@localhost ~]# awk '/^UUID/{fs[$3]++}END{for(i in fs) {print i,fs[i]}}' /etc/fstab
xfs 1

三硼身、描述awk函數(shù)示例(至少3例)

內(nèi)置函數(shù)

    數(shù)值處理:
        rand():返回0和1之間一個(gè)隨機(jī)數(shù);(注:取一次之后枢冤,后面此值就固定)
    字符串處理:
        length([s]):返回指定字符串的長(zhǎng)度鸠姨;
        sub(r呀潭,s谤职,[t]):以r表示的模式來(lái)查找t所表示的字符中的匹配的內(nèi)容,并將其第一次出現(xiàn)替換為s所表示的內(nèi)容鬓长;
        gsub(r核蘸,s巍糯,[t]):以r表示的模式來(lái)查找t所表示的字符中的匹配的內(nèi)容,并將其所有出現(xiàn)替換為s所表示的內(nèi)容客扎;

        split(s,a[,r]):以r為分隔符切割字符s祟峦,并將切割后的結(jié)果保存至a所表示的數(shù)組中;

示例1:全局替換字符串并打印

[root@localhost ~]# awk -F: 'gsub("/sbin/nologin","/bin/false"){print $1,$7}' /etc/passwd
bin /bin/false
daemon /bin/false
adm /bin/false
lp /bin/false
mail /bin/false
operator /bin/false
games /bin/false
ftp /bin/false
nobody /bin/false
avahi-autoipd /bin/false
systemd-bus-proxy /bin/false
systemd-network /bin/false
dbus /bin/false
polkitd /bin/false
tss /bin/false
postfix /bin/false
sshd /bin/false

示例2:打印長(zhǎng)度為4字符的用戶名

[root@localhost ~]# awk -F: 'length($1)==4{print $1}' /etc/passwd
root
sync
halt
mail
dbus
sshd

示例3:打印當(dāng)前系統(tǒng)建立了的TCP連接的IP地址及數(shù)量

[root@localhost ~]# netstat -tan | awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for (i in count) {print i,count[i]}}'
192.168.0.1 1
0.0.0.0 3
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末徙鱼,一起剝皮案震驚了整個(gè)濱河市宅楞,隨后出現(xiàn)的幾起案子针姿,更是在濱河造成了極大的恐慌,老刑警劉巖厌衙,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件距淫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡婶希,警方通過(guò)查閱死者的電腦和手機(jī)榕暇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喻杈,“玉大人彤枢,你說(shuō)我怎么就攤上這事⊥彩危” “怎么了缴啡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瓷们。 經(jīng)常有香客問(wèn)我盟猖,道長(zhǎng),這世上最難降的妖魔是什么换棚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮反镇,結(jié)果婚禮上固蚤,老公的妹妹穿的比我還像新娘。我一直安慰自己歹茶,他們只是感情好夕玩,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著惊豺,像睡著了一般燎孟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尸昧,一...
    開(kāi)封第一講書(shū)人閱讀 52,821評(píng)論 1 314
  • 那天揩页,我揣著相機(jī)與錄音,去河邊找鬼烹俗。 笑死爆侣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的幢妄。 我是一名探鬼主播兔仰,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蕉鸳!你這毒婦竟也來(lái)了乎赴?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榕吼,沒(méi)想到半個(gè)月后饿序,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡友题,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年嗤堰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片度宦。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踢匣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出戈抄,到底是詐尸還是另有隱情离唬,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布划鸽,位于F島的核電站输莺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏裸诽。R本人自食惡果不足惜嫂用,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丈冬。 院中可真熱鬧嘱函,春花似錦、人聲如沸埂蕊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蓄氧。三九已至函似,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喉童,已是汗流浹背撇寞。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堂氯,地道東北人重抖。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像祖灰,于是被迫代替她去往敵國(guó)和親钟沛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

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