系統(tǒng)服務(wù)

系統(tǒng)服務(wù)

老師筆記
另一個(gè)

一剩檀、后臺(tái)任務(wù)

&

先說(shuō)工作任務(wù)
Ctrl+z 可以把一個(gè)前臺(tái)運(yùn)行的程序放在后臺(tái)腻惠,且停止工作谬运。

先編輯一個(gè) a.sh 的小程序

while true
do
  echo "$(date +%s) I love her" >> /root/bin/love.txt
  sleep 3
done

運(yùn)行這個(gè)程序
sh a.sh

此時(shí)乙各,你會(huì)發(fā)現(xiàn)這個(gè)程序是卡在當(dāng)前的終端的爬骤,這個(gè)就是程序在前臺(tái)運(yùn)行的骡湖。 這種情況下贱纠,這個(gè)程序不終止的話,當(dāng)前終端就無(wú)法執(zhí)行別的命令了响蕴。
此時(shí)谆焊,可以按下' Ctrl+z '把這個(gè)程序放到后臺(tái),但是浦夷,這個(gè)程序會(huì)進(jìn)入 停止?fàn)顟B(tài)辖试。

jobs 命令會(huì)查看到當(dāng)前后臺(tái)的工作任務(wù)

jobs -l

fg %工作號(hào) 就是可以把后臺(tái)的工作任務(wù)調(diào)到前臺(tái)繼續(xù)運(yùn)行

bg %工作號(hào) 會(huì)讓后天處于停止?fàn)顟B(tài)的任務(wù)(進(jìn)程) 繼續(xù)運(yùn)行于后臺(tái)

使用如下方式,可以讓一個(gè)程序劈狐,在一開(kāi)始運(yùn)行時(shí)就在后臺(tái)運(yùn)行罐孝。

命令   選項(xiàng)   參數(shù)    
sh   a.sh      &

他的效果相當(dāng)于“ctrl+z和bg %工作號(hào)”兩部命令

daemon 守護(hù)進(jìn)程

計(jì)算機(jī)想要提供一些功能給用戶使用,需要一個(gè)程序肥缔,并把進(jìn)程運(yùn)行起來(lái)莲兢。之前說(shuō)過(guò),程序運(yùn)行起來(lái)就是進(jìn)程了续膳,進(jìn)程都有生命周期的改艇。

運(yùn)行 等待 休眠 結(jié)束

計(jì)算機(jī)提供的某一項(xiàng)功能需要長(zhǎng)期的運(yùn)行,就像一個(gè)網(wǎng)站坟岔,你什么時(shí)間訪問(wèn)他谒兄,都會(huì)得到響應(yīng)。這樣就需要把提供這類功能的進(jìn)程長(zhǎng)期的放在內(nèi)存中社付,不讓他結(jié)束承疲。
這類的進(jìn)程通常成為服務(wù)邻耕,那誰(shuí)來(lái)管理這些進(jìn)程呢?就是控制這些服務(wù)進(jìn)程的啟動(dòng)燕鸽、重啟赊豌、停止。
就是叫守護(hù)進(jìn)程的進(jìn)程绵咱, 在 CentOS7 中是 systemd, CentOS5/6 是 init碘饼。也可以說(shuō)服務(wù) service 通常都是以守護(hù)進(jìn)程的方式啟動(dòng)的,都是在后臺(tái)運(yùn)行的。

早期的 System V

在一開(kāi)始 那個(gè)很純種的 Unix 版本的年代下面悲伶,啟動(dòng)系統(tǒng)服務(wù)的管理方式被稱為 SysV 的 init 腳本程序的處理方式艾恼!亦即系統(tǒng)核心第一支調(diào)用的程序是 init , 然后 init 去喚起所有的系統(tǒng)所需要的服務(wù)麸锉,不論是本機(jī)服務(wù)還是網(wǎng)絡(luò)服務(wù)钠绍。
init 的管理機(jī)制有幾個(gè)特點(diǎn):
init 的管理機(jī)制有幾個(gè)特點(diǎn):
1、服務(wù)的啟動(dòng)花沉、關(guān)閉與觀察等方式:

服務(wù)啟動(dòng)腳本通通放置于 /etc/init.d/ 下柳爽,都是 bash shell script 腳本程序。

啟動(dòng):/etc/init.d/daemon start
關(guān)閉:/etc/init.d/daemon stop
重新啟動(dòng):/etc/init.d/daemon restart
查看狀態(tài):/etc/init.d/daemon status

2碱屁、服務(wù)啟動(dòng)的分類:獨(dú)立啟動(dòng)和超級(jí)守護(hù)進(jìn)程總管程序管理
3磷脯、服務(wù)的相依性問(wèn)題
假如啟動(dòng)一個(gè) HTTP 服務(wù),那他就依賴于 網(wǎng)絡(luò)服務(wù)娩脾,就是網(wǎng)絡(luò)服務(wù)必須先被啟動(dòng)赵誓。
4、執(zhí)行等級(jí)的分類
init 是開(kāi)機(jī)后核心主動(dòng)調(diào)用的柿赊, 然后 init 可以根據(jù)使用者自訂的執(zhí)行等級(jí) (runlevel) 來(lái)喚醒不同的服務(wù)俩功,以進(jìn)入不同的操作界面。
Linux 提供 7 個(gè)等級(jí)(0-6)
比較重要的:

0 關(guān)機(jī)
1 單用戶模式(root)
3 帶網(wǎng)絡(luò)服務(wù)的多用戶純文本模式
5 圖形界面
6 重啟

  • 使用命令 init 級(jí)別的數(shù)字 可以進(jìn)入相應(yīng)的運(yùn)行級(jí)別

CentOS7當(dāng)前的 systemd

從 CentOS 7.x 以后碰声,Red Hat 系列的 distribution(發(fā)行版本) 放棄沿用多年的 System V 開(kāi)機(jī)啟動(dòng)服務(wù)的流程诡蜓,就是前面提到的 init 啟動(dòng)腳本的方法, 改用 systemd 這個(gè)啟動(dòng)服務(wù)管理機(jī)制胰挑。
systemd 的優(yōu)點(diǎn)

  • 并行啟動(dòng)服務(wù)

舊的 init 啟動(dòng)腳本是一項(xiàng)一項(xiàng)任務(wù)依序啟動(dòng)的模式蔓罚,因此沒(méi)有依賴關(guān)系的服務(wù)也是得要一個(gè)一個(gè)的啟動(dòng)的。
目前我們的硬件主機(jī)系統(tǒng)與操作系統(tǒng)幾乎都支持多核心架構(gòu)了,所以應(yīng)該支持并行啟動(dòng)洽腺。systemd 就是可以讓所有的服務(wù)同時(shí)啟動(dòng)脚粟。

  • 請(qǐng)求得到立刻回復(fù)

systemd 由于常駐內(nèi)存,因此任何要求 (on-demand) 都可以立即處理后續(xù)的 daemon 啟動(dòng)的任務(wù)蘸朋。

  • 服務(wù)相依性的自我檢查

例如,你部署了 FTP 服務(wù)扣唱,并且明確配置了它要依賴于 network (網(wǎng)絡(luò)) 服務(wù),但是你的 network 服務(wù)并沒(méi)有啟動(dòng)藕坯,此時(shí)团南,你要啟動(dòng) FTP 服務(wù),systemd 會(huì)幫你啟動(dòng) network 服務(wù)炼彪。

  • 依 daemon 功能分類

systemd 將服務(wù)單位 (unit) 區(qū)分為 service, socket, target, path, snapshot, timer 等多種不同的類型(type)吐根, 方便系統(tǒng)管理員分類與記憶。

  • 向下相容舊有的 init 服務(wù)腳本

基本上辐马, systemd 是可以相容于 init 的啟動(dòng)腳本的拷橘,因此,舊的 init 啟動(dòng)腳本也能夠通過(guò) systemd 來(lái)管理喜爷,只是更進(jìn)階的 systemd 功能就沒(méi)有辦法支持了冗疮。

  • 多個(gè) daemons 集合成為一個(gè)群組 target

systemd 的配置文件放置目錄

systemd 將過(guò)去所謂的 daemon 執(zhí)行腳本通通稱為一個(gè)服務(wù)單位 (unit),而每種服務(wù)單位依據(jù)功能來(lái)區(qū)分時(shí)檩帐,就分類為不同的類型 (type)术幔。

配置文件都放在下面的路徑中

  • /usr/lib/systemd/system/
    每個(gè)服務(wù)最主要的啟動(dòng)腳本設(shè)置,有點(diǎn)類似以前的 /etc/init.d 下面的文件湃密;
  • /run/systemd/system/
    系統(tǒng)執(zhí)行過(guò)程中所產(chǎn)生的服務(wù)腳本诅挑,這些腳本的優(yōu)先序要比 /usr/lib/systemd/system/ 高!
  • /etc/systemd/system/
    管理員依據(jù)主機(jī)系統(tǒng)的需求所創(chuàng)建的執(zhí)行腳本泛源,其實(shí)這個(gè)目錄有點(diǎn)像以前 /etc/rc.d/rc5.d/Sxx 之類的功能拔妥!執(zhí)行優(yōu)先序又比 /run/systemd/system/ 高!

而實(shí)際執(zhí)行的 systemd 啟動(dòng)腳本配置文件达箍, 其實(shí)都是放置在 /usr/lib/systemd/system/ 下面毒嫡。
因此如果你想要修改某個(gè)服務(wù)啟動(dòng)的設(shè)置,應(yīng)該要去 /usr/lib/systemd/system/ 下面修改才對(duì)幻梯!

systemd 的 unit 類型分類說(shuō)明

一個(gè)服務(wù)執(zhí)行的腳本就成為一個(gè) unit (服務(wù)單位)
通過(guò)擴(kuò)展名區(qū)分 unit 的類型

  • .service 一般服務(wù)類型 (service unit)

主要是系統(tǒng)服務(wù)兜畸,包括服務(wù)器本身所需要的本機(jī)服務(wù)以及網(wǎng)絡(luò)服務(wù)都是!比較經(jīng)常被使用到的服務(wù)大多是這種類型碘梢! 所以咬摇,這也是最常見(jiàn)的類型了!

  • .socket 內(nèi)部程序數(shù)據(jù)交換的 socket 服務(wù) (socket unit)

主要是 IPC (Inter-process communication) 的傳輸訊息 socket file 功能。 一般用于本機(jī)服務(wù)比較多煞躬,例如我們的圖形界面很多的軟件都是通過(guò) socket 來(lái)進(jìn)行本機(jī)程序數(shù)據(jù)交換的行為肛鹏。

  • .target 執(zhí)行環(huán)境類型 (target unit)

其實(shí)是一群 unit 的集合,例如 multi-user.target 其實(shí)就是一堆服務(wù)的集合~也就是說(shuō)恩沛, 選擇執(zhí)行 multi-user.target 就是執(zhí)行一堆其他 .service 或/及 .socket 之類的服務(wù)在扰!

  • .mount .automount 文件系統(tǒng)掛載相關(guān)的服務(wù) (automount unit / mount unit)

例如來(lái)自網(wǎng)絡(luò)的自動(dòng)掛載、NFS 文件系統(tǒng)掛載等與文件系統(tǒng)相關(guān)性較高的程序管理雷客。

  • .path 偵測(cè)特定文件或目錄類型 (path unit)

某些服務(wù)需要偵測(cè)某些特定的目錄來(lái)提供隊(duì)列服務(wù)芒珠,例如最常見(jiàn)的打印服務(wù),就是通過(guò)偵測(cè)打印隊(duì)列目錄來(lái)啟動(dòng)打印功能搅裙! 這時(shí)就得要 .path 的服務(wù)類型支持了皱卓!

  • .timer 循環(huán)執(zhí)行的服務(wù) (timer unit)

這個(gè)東西有點(diǎn)類似 anacrontab 喔裹芝!不過(guò)是由 systemd 主動(dòng)提供的,比 anacrontab 更加有彈性娜汁!

通過(guò) systemctl 管理服務(wù)

systemd 啟動(dòng)服務(wù)的機(jī)制嫂易,主要是通過(guò) systemctl 的命令完成所有的操作。
命令語(yǔ)法: systemctl [command] [unit]

command 主要有:
status :查看這個(gè) unit 的狀態(tài)掐禁!
start :立刻啟動(dòng)
stop :立刻停止
restart :先執(zhí)行 stop 再執(zhí)行 start 的意思
enable :設(shè)置下次開(kāi)機(jī)時(shí)怜械,啟動(dòng)后面接的 unit
disable :設(shè)置下次開(kāi)機(jī)時(shí),不啟動(dòng)后面接的 unit
reload :不關(guān)閉后面接的 unit 的情況下傅事,重新載入配置文件缕允,讓設(shè)置生效

示例操作

查看 atd.server 的狀態(tài)

[root@shark ~]# systemctl status atd.service
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2019-07-29 22:41:37 CST; 46min ago
 Main PID: 1162 (atd)
   CGroup: /system.slice/atd.service
           └─1162 /usr/sbin/atd -f
7月 29 22:41:37 shark.sharkyun.com systemd[1]: Started Job spooling tools.
7月 29 22:41:37 shark.sharkyun.com systemd[1]: Starting Job spooling tools...

關(guān)鍵的是第二行和第三行
第二行中的 enabled 表示下次開(kāi)機(jī),會(huì)自動(dòng)啟動(dòng)此服務(wù)享完。
第三行中的 loaded(running) 表示目前是運(yùn)行狀態(tài)灼芭。

關(guān)閉 atd.server, 在看其狀態(tài)

[root@shark ~]# systemctl stop atd.service
[root@shark ~]# systemctl status atd.service
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since 一 2019-07-29 23:31:09 CST; 1s ago
  Process: 1162 ExecStart=/usr/sbin/atd -f $OPTS (code=exited, status=0/SUCCESS)
 Main PID: 1162 (code=exited, status=0/SUCCESS)
7月 29 22:41:37 shark.sharkyun.com systemd[1]: Started Job spooling tools.
7月 29 22:41:37 shark.sharkyun.com systemd[1]: Starting Job spooling tools...
7月 29 23:31:09 shark.sharkyun.com systemd[1]: Stopping Job spooling tools...
7月 29 23:31:09 shark.sharkyun.com systemd[1]: Stopped Job spooling tools.

第三行中的 inactive (dead) 表示目前沒(méi)有運(yùn)行

關(guān)于 Active 的狀態(tài):

  • active (running):正在運(yùn)行
  • active (exited):僅執(zhí)行一次就正常結(jié)束的服務(wù),目前并沒(méi)有任何程序在系統(tǒng)中執(zhí)行般又。 舉例來(lái)說(shuō)彼绷,開(kāi)機(jī)或者是掛載時(shí)才會(huì)進(jìn)行一次的 quotaon 功能,就是這種模式\钋ā(無(wú)須常駐內(nèi)存)寄悯。
  • active (waiting):正在執(zhí)行當(dāng)中,不過(guò)還再等待其他的事件才能繼續(xù)處理堕义。舉例來(lái)說(shuō)猜旬,打印的隊(duì)列相關(guān)服務(wù)就是這種狀態(tài)!
  • inactive:這個(gè)服務(wù)目前沒(méi)有運(yùn)行的意思倦卖。
    關(guān)于daemon (服務(wù)) 的默認(rèn)狀態(tài)
  • enabled:這個(gè) daemon 將在開(kāi)機(jī)時(shí)被執(zhí)行
  • disabled:這個(gè) daemon 在開(kāi)機(jī)時(shí)不會(huì)被執(zhí)行
  • mask:這個(gè) daemon 無(wú)論如何都無(wú)法被啟動(dòng)洒擦!因?yàn)橐呀?jīng)被強(qiáng)制注銷 (非刪除)∨绿牛可通過(guò) systemctl unmask 方式改回原本狀態(tài)
  • static:這個(gè) daemon 不可以自己?jiǎn)?dòng) (enable 不可)熟嫩,不過(guò)可能會(huì)被其他的 enabled 的服務(wù)來(lái)喚醒 (相依屬性的服務(wù))
強(qiáng)制注銷

被注銷的服務(wù)是服務(wù)再次啟動(dòng)的

命令
systemctl status cups
輸出
● cups.service
   Loaded: masked (/dev/null; bad)  # 注意這里
   Active: inactive (dead)
取消注銷
 systemctl unmask cups.service

添加自定義服務(wù)到 systemd

systemctl 配置文件的設(shè)置項(xiàng)目簡(jiǎn)介

先看一個(gè) sshd.service 的實(shí)例

[root@shark ~]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target

配置文件中大概能夠?qū)⒄麄€(gè)設(shè)置分為三個(gè)部份,就是:

  • [Unit]

unit 本身的說(shuō)明褐捻,以及與其他相依 daemon 的設(shè)置掸茅,包括在什么服務(wù)之后才啟動(dòng)此 unit 之類的設(shè)置值;

  • [Service], [Socket], [Timer], [Mount], [Path]...

不同的 unit type 就得要使用相對(duì)應(yīng)的設(shè)置項(xiàng)目柠逞。
我們拿的是 sshd.service 來(lái)當(dāng)范本昧狮,所以這邊就使用 [Service] 來(lái)設(shè)置。 這個(gè)項(xiàng)目?jī)?nèi)主要在規(guī)范服務(wù)啟動(dòng)的腳本板壮、環(huán)境配置文件文件名逗鸣、重新啟動(dòng)的方式等等。

  • [Install]

這個(gè)項(xiàng)目就是將此 unit 安裝到哪個(gè) target 里面去的意思!

參考資料

示例

下面的示例是慕购,寫(xiě)一個(gè) shell 腳本聊疲,之后讓 systemd 去管理這個(gè)腳本程序茬底。

  • 編寫(xiě)腳本和環(huán)境文件
    在自己用戶的家目錄下的 bin 目錄下編寫(xiě)腳本 love.sh , 寫(xiě)入下面的內(nèi)容
while true
do
   echo "$(date +%s) I love her" >> /root/bin/love.txt
   echo "$(date +%s) ${name} love her" >> /root/bin/love.txt
   sleep 3
done

腳本的意思是
每 3 秒鐘向 /root/bin/love.txt 文件中寫(xiě)上兩句話
注意 ${name} 是一個(gè)配置文件的中變量

編寫(xiě)這個(gè)腳本程序的配置文件 /root/bin/love.conf

  • 作為服務(wù)添加到 systemd
    編譯 /etc/ 文件沪悲,添加如下內(nèi)容
[Unit]
Description=Love server daemon
[Service]
Type=simple
ExecStart=/bin/bash /root/bin/love.sh
ExecStop=/bin/kill -9 $(ps -ef |grep '[a].sh' |awk '{print $2}')
EnvironmentFile=/root/bin/love.conf
[Install]
WantedBy=multi-user.target
  • 控制服務(wù)啟停
systemctl daemon-reload   // 程序加載 讓 systemd 加載 love.service 服務(wù)
systemctl start love.service   // 啟動(dòng)
systemctl status love.service   // 查看狀態(tài)

驗(yàn)證程序的執(zhí)行結(jié)果, 持續(xù)觀察 /root/bin/love.txt 文件,看有沒(méi)有被持續(xù)寫(xiě)入內(nèi)容阱表,并且觀察變量有沒(méi)有生效殿如。

tail   -f    /root/bin/love.txt
輸出
1564567167 I love her
1564567167 shark-user love her
1564567170 I love her
1564567170 shark-user love her
1564567173 I love her
1564567173 shark-user love her
1564567176 I love her
1564567176 shark-user love her
1564567179 I love her
1564567179 shark-user love her
timer

資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市最爬,隨后出現(xiàn)的幾起案子涉馁,更是在濱河造成了極大的恐慌,老刑警劉巖爱致,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烤送,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡糠悯,警方通過(guò)查閱死者的電腦和手機(jī)帮坚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)互艾,“玉大人试和,你說(shuō)我怎么就攤上這事∪移眨” “怎么了阅悍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)昨稼。 經(jīng)常有香客問(wèn)我节视,道長(zhǎng),這世上最難降的妖魔是什么假栓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任寻行,我火速辦了婚禮,結(jié)果婚禮上但指,老公的妹妹穿的比我還像新娘寡痰。我一直安慰自己,他們只是感情好棋凳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布拦坠。 她就那樣靜靜地躺著,像睡著了一般剩岳。 火紅的嫁衣襯著肌膚如雪贞滨。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音晓铆,去河邊找鬼勺良。 笑死,一個(gè)胖子當(dāng)著我的面吹牛骄噪,可吹牛的內(nèi)容都是我干的尚困。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼链蕊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼事甜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起滔韵,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤逻谦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后陪蜻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體邦马,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年宴卖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滋将。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嘱腥,死狀恐怖耕渴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情齿兔,我是刑警寧澤橱脸,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站分苇,受9級(jí)特大地震影響添诉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜医寿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一栏赴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧靖秩,春花似錦须眷、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至惠拭,卻和暖如春扩劝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工棒呛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留聂示,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓簇秒,卻偏偏與公主長(zhǎng)得像鱼喉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宰睡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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