linux crontab 定時任務(wù)格式和使用方法2019-01-13

  • 前一天學(xué)習(xí)了 at 命令是針對僅運行一次的任務(wù)胸懈,循環(huán)運行的例行性計劃任務(wù),linux系統(tǒng)則是由 cron (crond) 這個系統(tǒng)服務(wù)來控制的雏赦。Linux 系統(tǒng)上面原本就有非常多的計劃性工作劫笙,因此這個系統(tǒng)服務(wù)是默認(rèn)啟動的。另外, 由于使用者自己也可以設(shè)置計劃任務(wù)星岗,所以填大, Linux 系統(tǒng)也提供了使用者控制計劃任務(wù)的命令 :crontab 命令。

一俏橘、crond簡介

  • crond是linux下用來周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個守護(hù)進(jìn)程允华,與windows下的計劃任務(wù)類似,當(dāng)安裝完成操作系統(tǒng)后寥掐,默認(rèn)會安裝此服務(wù)工具靴寂,并且會自動啟動crond進(jìn)程,crond進(jìn)程每分鐘會定期檢查是否有要執(zhí)行的任務(wù)召耘,如果有要執(zhí)行的任務(wù)百炬,則自動執(zhí)行該任務(wù)。

Linux下的任務(wù)調(diào)度分為兩類怎茫,系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度。

  • 系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作妓灌,比如寫緩存數(shù)據(jù)到硬盤轨蛤、日志清理等。在/etc目錄下有一個crontab文件虫埂,這個就是系統(tǒng)任務(wù)調(diào)度的配置文件祥山。

/etc/crontab文件包括下面幾行:

[root@localhost ~]# cat /etc/crontab 

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=""HOME=/

# run-parts

51 * * * * root run-parts /etc/cron.hourly

24 7 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

[root@localhost ~]#

前四行是用來配置crond任務(wù)運行的環(huán)境變量,第一行SHELL變量指定了系統(tǒng)要使用哪個shell掉伏,這里是bash缝呕,第二行PATH變量指定了系統(tǒng)執(zhí)行命令的路徑澳窑,第三行MAILTO變量指定了crond的任務(wù)執(zhí)行信息將通過電子郵件發(fā)送給root用戶,如果MAILTO變量的值為空供常,則表示不發(fā)送任務(wù)執(zhí)行信息給用戶摊聋,第四行的HOME變量指定了在執(zhí)行命令或者腳本時使用的主目錄。第六至九行表示的含義將在下個小節(jié)詳細(xì)講述栈暇。這里不在多說麻裁。

  • 用戶任務(wù)調(diào)度:用戶定期要執(zhí)行的工作,比如用戶數(shù)據(jù)備份源祈、定時郵件提醒等煎源。用戶可以使用 crontab 工具來定制自己的計劃任務(wù)。所有用戶定義的crontab 文件都被保存在 /var/spool/cron目錄中香缺。其文件名與用戶名一致手销。

使用者權(quán)限文件:

文件: 說明:
/etc/cron.deny 該文件中所列用戶不允許使用crontab命令
/etc/cron.allow 該文件中所列用戶允許使用crontab命令
/var/spool/cron/ 所有用戶crontab文件存放的目錄,以用戶名命名

crontab文件的含義:

用戶所建立的crontab文件中,每一行都代表一項任務(wù)图张,每行的每個字段代表一項設(shè)置锋拖,它的格式共分為六個字段,前五段是時間設(shè)定段埂淮,第六段是要執(zhí)行的命令段姑隅,格式如下:

minute hour day month week command

含義:

  • minute: 表示分鐘,可以是從0到59之間的任何整數(shù)倔撞。

  • hour:表示小時讲仰,可以是從0到23之間的任何整數(shù)。

  • day:表示日期痪蝇,可以是從1到31之間的任何整數(shù)鄙陡。

  • month:表示月份,可以是從1到12之間的任何整數(shù)躏啰。

  • week:表示星期幾趁矾,可以是從0到7之間的任何整數(shù),這里的0或7代表星期日给僵。

  • command:要執(zhí)行的命令毫捣,可以是系統(tǒng)命令,也可以是自己編寫的腳本文件帝际。

crontab格式說明

在以上各個字段中蔓同,還可以使用以下特殊字符:

  • 星號(*):代表所有可能的值,例如month字段如果是星號蹲诀,則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作斑粱。

  • 逗號(,):可以用逗號隔開的值指定一個列表范圍,例如脯爪,“1,2,5,7,8,9”

  • 中杠(-):可以用整數(shù)之間的中杠表示一個整數(shù)范圍则北,例如“2-6”表示“2,3,4,5,6”

  • 正斜線(/):可以用正斜線指定時間的間隔頻率矿微,例如“0-23/2”表示每兩小時執(zhí)行一次。同時正斜線可以和星號一起使用尚揣,例如*/10涌矢,如果用在minute字段,表示每十分鐘執(zhí)行一次惑艇。

二蒿辙、crond服務(wù)

安裝crontab:

yum install crontabs

服務(wù)操作說明:
centos7格式改用systemctl進(jìn)行控制

/sbin/service crond start//啟動服務(wù)
systemctl start crond.service
/sbin/service crond stop//關(guān)閉服務(wù)

/sbin/service crond restart//重啟服務(wù)

/sbin/service crond reload//重新載入配置

查看crontab服務(wù)狀態(tài):

service crond status

手動啟動crontab服務(wù):

service crond start

查看crontab服務(wù)是否已設(shè)置為開機(jī)啟動,執(zhí)行命令:

ntsysv

加入開機(jī)自動啟動:

chkconfig –level 35 crond on


補充centso7操作

systemctl start crond.service       啟動服務(wù)
systemctl stop crond.service        停止服務(wù)
systemctl restart crond.service     重啟服務(wù)
systemctl reload crond.service      重載配置
systemctl status crond.service      查看啟動狀態(tài)
systemctl enable crond.service      設(shè)置開機(jī)自啟

三滨巴、crontab命令詳解

1.命令格式:

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

2.命令功能:

通過crontab 命令思灌,我們可以在固定的間隔時間執(zhí)行指定的系統(tǒng)指令或 shell script腳本。時間間隔的單位可以是分鐘恭取、小時泰偿、日、月蜈垮、周及以上的任意組合耗跛。這個命令非常設(shè)合周期性的日志分析或數(shù)據(jù)備份等工作。

3.命令參數(shù):

  • -u user:用來設(shè)定某個用戶的crontab服務(wù)攒发,例如调塌,“-u ixdba”表示設(shè)定ixdba用戶的crontab服務(wù),此參數(shù)一般有root用戶來運行惠猿。

  • file:file是命令文件的名字,表示將file做為crontab的任務(wù)列表文件并載入crontab羔砾。如果在命令行中沒有指定這個文件,crontab命令將接受標(biāo)準(zhǔn)輸入(鍵盤)上鍵入的命令偶妖,并將它們載入crontab姜凄。

  • -e:編輯某個用戶的crontab文件內(nèi)容。如果不指定用戶趾访,則表示編輯當(dāng)前用戶的crontab文件态秧。

  • -l:顯示某個用戶的crontab文件內(nèi)容,如果不指定用戶扼鞋,則表示顯示當(dāng)前用戶的crontab文件內(nèi)容申鱼。

  • -r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶云头,則默認(rèn)刪除當(dāng)前用戶的crontab文件捐友。

  • -i:在刪除用戶的crontab文件時給確認(rèn)提示。

4.常用方法:

1). 創(chuàng)建一個新的crontab文件

在考慮向cron進(jìn)程提交一個crontab文件之前盘寡,首先要做的一件事情就是設(shè)置環(huán)境變量EDITOR楚殿。cron進(jìn)程根據(jù)它來確定使用哪個編輯器編輯crontab文件撮慨。9 9 %的UNIX和LINUX用戶都使用vi竿痰,如果你也是這樣脆粥,那么你就編輯$ HOME目錄下的. profile文件,在其中加入這樣一行:

 EDITOR=vi; export EDITOR

然后保存并退出影涉。不妨創(chuàng)建一個名為<user> cron的文件变隔,其中<user>是用戶名,例如蟹倾, davecron匣缘。在該文件中加入如下的內(nèi)容。

  # (put your own initials here)echo the date to the console every

  # 15minutes between 6pm and 6am

  0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console

保存并退出鲜棠。確信前面5個域用空格分隔肌厨。

在上面的例子中,系統(tǒng)將每隔1 5分鐘向控制臺輸出一次當(dāng)前時間豁陆。如果系統(tǒng)崩潰或掛起柑爸,從最后所顯示的時間就可以一眼看出系統(tǒng)是什么時間停止工作的。在有些系統(tǒng)中盒音,用tty1來表示控制臺表鳍,可以根據(jù)實際情況對上面的例子進(jìn)行相應(yīng)的修改。為了提交你剛剛創(chuàng)建的crontab文件祥诽,可以把這個新創(chuàng)建的文件作為cron命令的參數(shù):

 $ crontab davecron

現(xiàn)在該文件已經(jīng)提交給cron進(jìn)程譬圣,它將每隔1 5分鐘運行一次。

同時雄坪,新創(chuàng)建文件的一個副本已經(jīng)被放在/var/spool/cron目錄中厘熟,文件名就是用戶名(即dave)。

2). 列出crontab文件

為了列出crontab文件诸衔,可以用:

 $ crontab -l

 0,15,30,45,18-06 * * * /bin/echo `date` > dev/tty1

你將會看到和上面類似的內(nèi)容盯漂。可以使用這種方法在$ H O M E目錄中對crontab文件做一備份:

 $ crontab -l > $HOME/mycron

這樣笨农,一旦不小心誤刪了crontab文件就缆,可以用上一節(jié)所講述的方法迅速恢復(fù)。
3). 編輯crontab文件

如果希望添加谒亦、刪除或編輯crontab文件中的條目竭宰,而E D I TO R環(huán)境變量又設(shè)置為v i,那么就可以用v i來編輯crontab文件份招,相應(yīng)的命令為:

 $ crontab -e

可以像使用v i編輯其他任何文件那樣修改crontab文件并退出切揭。如果修改了某些條目或添加了新的條目,那么在保存該文件時锁摔, c r o n會對其進(jìn)行必要的完整性檢查廓旬。如果其中的某個域出現(xiàn)了超出允許范圍的值,它會提示你谐腰。

我們在編輯crontab文件時孕豹,沒準(zhǔn)會加入新的條目涩盾。例如,加入下面的一條:

# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month

 30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} \;

現(xiàn)在保存并退出励背。最好在crontab文件的每一個條目之上加入一條注釋春霍,這樣就可以知道它的功能、運行時間叶眉,更為重要的是址儒,知道這是哪位用戶的作業(yè)。

現(xiàn)在讓我們使用前面講過的crontab -l命令列出它的全部信息:

$ crontab -l 

# (crondave installed on Tue May 4 13:07:43 1999)

# DT:ech the date to the console every 30 minites

0,15,30,45 18-06 * * * /bin/echo date > /dev/tty1

# DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month

30 3 1,7,14,21,26 * * /bin/find -name "core' -exec rm {} \;
4). 刪除crontab文件

要刪除crontab文件衅疙,可以用:

$ crontab -r
5). 恢復(fù)丟失的crontab文件

如果不小心誤刪了crontab文件莲趣,假設(shè)你在自己的$ H O M E目錄下還有一個備份,那么可以將其拷貝到/var/spool/cron/<username>饱溢,其中<username>是用戶名妖爷。如果由于權(quán)限問題無法完成拷貝,可以用:

 $ crontab <filename>

其中理朋,<filename>是你在$ H O M E目錄中副本的文件名絮识。

我建議你在自己的$ H O M E目錄中保存一個該文件的副本。我就有過類似的經(jīng)歷嗽上,有數(shù)次誤刪了crontab文件(因為r鍵緊挨在e鍵的右邊)次舌。這就是為什么有些系統(tǒng)文檔建議不要直接編輯crontab文件,而是編輯該文件的一個副本兽愤,然后重新提交新的文件彼念。

有些crontab的變體有些怪異,所以在使用crontab命令時要格外小心浅萧。如果遺漏了任何選項逐沙,crontab可能會打開一個空文件,或者看起來像是個空文件洼畅。這時敲delete鍵退出吩案,不要按<Ctrl-D>,否則你將丟失crontab文件帝簇。

5.使用實例

實例: 命令:
* * * * * command 實例1:每1分鐘執(zhí)行一次command
3,15 * * * * command 實例2:每小時的第3和第15分鐘執(zhí)行
3,15 8-11 * * * command 實例3:在上午8點到11點的第3和第15分鐘執(zhí)行
3,15 8-11 */2 * * command 實例4:每隔兩天的上午8點到11點的第3和第15分鐘執(zhí)行
3,15 8-11 * * 1 command 實例5:每個星期一的上午8點到11點的第3和第15分鐘執(zhí)行
30 21 * * * /etc/init.d/smb restart 實例6:每晚的21:30重啟smb
45 4 1,10,22 * * /etc/init.d/smb restart 實例7:每月1徘郭、10、22日的4 : 45重啟smb
10 1 * * 6,0 /etc/init.d/smb restart 實例8:每周六丧肴、周日的1 : 10重啟smb
0,30 18-23 * * * /etc/init.d/smb restart 實例9:每天18 : 00至23 : 00之間每隔30分鐘重啟smb
0 23 * * 6 /etc/init.d/smb restart 實例10:每星期六的晚上11 : 00 pm重啟smb
* */1 * * * /etc/init.d/smb restart 實例11:每一小時重啟smb
* 23-7/1 * * * /etc/init.d/smb restart 實例12:晚上11點到早上7點之間残揉,每隔一小時重啟smb
0 11 4 * mon-wed /etc/init.d/smb restart 實例13:每月的4號與每周一到周三的11點重啟smb
0 4 1 jan * /etc/init.d/smb restart 實例14:一月一號的4點重啟smb
01 * * * * root run-parts /etc/cron.hourly 實例15:每小時執(zhí)行/etc/cron.hourly目錄內(nèi)的腳本[1]

不能漏了run-parts這個參數(shù),如果去掉這個參數(shù)的話芋浮,后面就可以寫要運行的某個腳本名抱环,而不是目錄名了


四、使用注意事項

1. 注意環(huán)境變量問題

有時我們創(chuàng)建了一個crontab,但是這個任務(wù)卻無法自動執(zhí)行镇草,而手動執(zhí)行這個任務(wù)卻沒有問題濒憋,這種情況一般是由于在crontab文件中沒有配置環(huán)境變量引起的。

在crontab文件中定義多個調(diào)度任務(wù)時陶夜,需要特別注意的一個問題就是環(huán)境變量的設(shè)置,因為我們手動執(zhí)行某個任務(wù)時裆站,是在當(dāng)前shell環(huán)境下進(jìn)行的条辟,程序當(dāng)然能找到環(huán)境變量,而系統(tǒng)自動執(zhí)行任務(wù)調(diào)度時宏胯,是不會加載任何環(huán)境變量的羽嫡,因此,就需要在crontab文件中指定任務(wù)運行所需的所有環(huán)境變量肩袍,這樣杭棵,系統(tǒng)執(zhí)行任務(wù)調(diào)度時就沒有問題了。

不要假定cron知道所需要的特殊環(huán)境氛赐,它其實并不知道魂爪。所以你要保證在shelll腳本中提供所有必要的路徑和環(huán)境變量,除了一些自動設(shè)置的全局變量艰管。所以注意如下3點:

  • 1)腳本中涉及文件路徑時寫全局路徑滓侍;

  • 2)腳本執(zhí)行要用到j(luò)ava或其他環(huán)境變量時,通過source命令引入環(huán)境變量牲芋,如:

cat start_cbp.sh

#!/bin/sh

source /etc/profile

 export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf

/usr/local/jboss-4.0.5/bin/run.sh -c mev &
  • 3)當(dāng)手動執(zhí)行腳本OK撩笆,但是crontab死活不執(zhí)行時。這時必須大膽懷疑是環(huán)境變量惹的禍缸浦,并可以嘗試在crontab中直接引入環(huán)境變量解決問題夕冲。如:

      0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
    

2. 注意清理系統(tǒng)用戶的郵件日志

每條任務(wù)調(diào)度執(zhí)行完畢,系統(tǒng)都會將任務(wù)輸出信息通過電子郵件的形式發(fā)送給當(dāng)前系統(tǒng)用戶裂逐,這樣日積月累歹鱼,日志信息會非常大,可能會影響系統(tǒng)的正常運行卜高,因此醉冤,將每條任務(wù)進(jìn)行重定向處理非常重要。

例如篙悯,可以在crontab文件中設(shè)置如下形式蚁阳,忽略日志輸出:

0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1

“/dev/null 2>&1”表示先將標(biāo)準(zhǔn)輸出重定向到/dev/null,然后將標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出鸽照,由于標(biāo)準(zhǔn)輸出已經(jīng)重定向到了/dev/null螺捐,因此標(biāo)準(zhǔn)錯誤也會重定向到/dev/null,這樣日志輸出問題就解決了。

3. 系統(tǒng)級任務(wù)調(diào)度與用戶級任務(wù)調(diào)度

系統(tǒng)級任務(wù)調(diào)度主要完成系統(tǒng)的一些維護(hù)操作定血,用戶級任務(wù)調(diào)度主要完成用戶自定義的一些任務(wù)赔癌,可以將用戶級任務(wù)調(diào)度放到系統(tǒng)級任務(wù)調(diào)度來完成(不建議這么做),但是反過來卻不行澜沟,root用戶的任務(wù)調(diào)度操作可以通過“crontab –uroot –e”來設(shè)置灾票,也可以將調(diào)度任務(wù)直接寫入/etc/crontab文件,需要注意的是茫虽,如果要定義一個定時重啟系統(tǒng)的任務(wù)刊苍,就必須將任務(wù)放到/etc/crontab文件,即使在root用戶下創(chuàng)建一個定時重啟系統(tǒng)的任務(wù)也是無效的濒析。

4. 其他注意事項

新創(chuàng)建的cron job正什,不會馬上執(zhí)行,至少要過2分鐘才執(zhí)行号杏。如果重啟cron則馬上執(zhí)行婴氮。

當(dāng)crontab突然失效時,可以嘗試/etc/init.d/crond restart解決問題盾致≈骶或者查看日志看某個job有沒有執(zhí)行/報錯tail -f /var/log/cron。

\color{#FF0000}{!!!!! }千萬別亂運行crontab -r庭惜。它從Crontab目錄(/var/spool/cron)中刪除用戶的Crontab文件旨怠。刪除了該用戶的所有crontab都沒了。

在crontab中%是有特殊含義的蜈块,表示換行的意思鉴腻。如果要用的話必須進(jìn)行轉(zhuǎn)義%,如經(jīng)常用的date ‘+%Y%m%d’在crontab里是不會執(zhí)行的百揭,應(yīng)該換成date ‘+%Y%m%d’爽哎。


  1. ?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市器一,隨后出現(xiàn)的幾起案子课锌,更是在濱河造成了極大的恐慌,老刑警劉巖祈秕,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渺贤,死亡現(xiàn)場離奇詭異,居然都是意外死亡请毛,警方通過查閱死者的電腦和手機(jī)志鞍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來方仿,“玉大人固棚,你說我怎么就攤上這事统翩。” “怎么了此洲?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵厂汗,是天一觀的道長。 經(jīng)常有香客問我呜师,道長娶桦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任汁汗,我火速辦了婚禮衷畦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘碰酝。我一直安慰自己,他們只是感情好戴差,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布送爸。 她就那樣靜靜地躺著,像睡著了一般暖释。 火紅的嫁衣襯著肌膚如雪袭厂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天球匕,我揣著相機(jī)與錄音纹磺,去河邊找鬼。 笑死亮曹,一個胖子當(dāng)著我的面吹牛橄杨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播照卦,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼式矫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了役耕?” 一聲冷哼從身側(cè)響起采转,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞬痘,沒想到半個月后故慈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡框全,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年察绷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片津辩。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡克婶,死狀恐怖筒严,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情情萤,我是刑警寧澤鸭蛙,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站筋岛,受9級特大地震影響娶视,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜睁宰,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一肪获、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柒傻,春花似錦孝赫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至预侯,卻和暖如春致开,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萎馅。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工双戳, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人糜芳。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓飒货,卻偏偏與公主長得像,于是被迫代替她去往敵國和親峭竣。 傳聞我的和親對象是個殘疾皇子膏斤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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