(翻譯)如何使用systemctl命令來管理systemd的服務(wù)(Service)和資源(單元)

(翻譯)如何使用systemctl命令來管理systemd的服務(wù)(Service)和資源(單元)

介紹

Systemd 是一個系統(tǒng)初始化和系統(tǒng)管理工具,作為linux機(jī)器的新標(biāo)準(zhǔn)正被廣泛的接受甩骏。雖然 systemd 相比于正被其替代的傳統(tǒng)的 SysV 初始系統(tǒng)是否有改進(jìn)仍有一些值得考慮的細(xì)節(jié),但在主要的版本中準(zhǔn)備采納或已經(jīng)采納它了。

由于其被廣泛采納缀拭,熟悉 systemd 是物有所值的脐区,它會使得管理服務(wù)非常簡單有决。學(xué)習(xí)和掌握組成systemd的工具和守護(hù)進(jìn)程,將會有助你領(lǐng)會其提供的強(qiáng)力谋旦、靈活等能力,至少可以幫助你以最少的麻煩處理工作。

在本指南中勘究,我們將討論systemctl命令愕撰,該命令是來控制初始化系統(tǒng)的核心管理工具刹衫。我們將包含如何管理服務(wù)醋寝、檢查狀態(tài)、改變系統(tǒng)狀態(tài)和使用配置文件带迟。

請注意雖然systemd已經(jīng)成為大多數(shù)linux版本中的初始系統(tǒng)音羞,它并沒有在所有的發(fā)行版中掛載。如果你在跟隨本教程仓犬,在你的終端中輸出 bash: systemctl is not installed 那表示你的機(jī)器中安裝了不同的初始化系統(tǒng)嗅绰。

服務(wù)管理

一個初始化系統(tǒng)的基本目的是在啟動某些必須在Linux核心啟動后啟動的模塊(傳統(tǒng)上稱其為用戶模塊)。該初始化系統(tǒng)也被用來在系統(tǒng)正在運(yùn)行時的任何時間點(diǎn)來管理服務(wù)和用于服務(wù)的守護(hù)進(jìn)程婶肩。留心這一點(diǎn)办陷,我們將開始一些簡單的服務(wù)管理操作

Systemd中,大部分操作的對象是單元(units)律歼,一些Systemd知道如何去管理的資源民镜。單元按照其代表的資源類型進(jìn)行歸類,由作為單元文件被熟知的文件定義险毁。每個單元的類型可以通過文件的后綴名推斷出來制圈。

對于服務(wù)管理任務(wù),目標(biāo)單元將會是服務(wù)單元集畔况,它含有.service后綴名的單元文件鲸鹦。然而,對于大多數(shù)服務(wù)管理命令跷跪,可以省略.service后綴馋嗜,因?yàn)?strong>systemd在你使用服務(wù)管理命令的時候巧妙的知道你想操作一個服務(wù)文件。

啟動和暫停服務(wù)

要啟動一個Systemd服務(wù)吵瞻,使用start命令葛菇,來執(zhí)行服務(wù)的單元文件中的執(zhí)行集。如果當(dāng)前用戶非根用戶橡羞,需要使用sudo執(zhí)行眯停,因?yàn)橐獔?zhí)行的命令將對整個系統(tǒng)產(chǎn)生影響:

sudo systemctl start application.service

就像我們上面提到的,systemd知道去尋找.service文件來進(jìn)行服務(wù)管理命令卿泽,所以該命令可以簡單的這樣輸入:

sudo sytemctl start application

雖然你可以使用上述格式來完成一般的操作莺债,但為了清晰起見,我們將使用.service后綴來提醒命令明確的執(zhí)行我們要操作的目標(biāo)文件签夭。

要停止當(dāng)前運(yùn)行的服務(wù)齐邦,可以用stop命令來替換:

sudo systemctl  stop application.service
重啟和重新加載

要重啟當(dāng)前運(yùn)行的服務(wù),可以用restart命令來替換:

sudo systemctl  restart  application.service

如果討論中的應(yīng)用可以重載他的配置文件(不用重啟)第租,你可以調(diào)用reload命令來初始化進(jìn)程:

sudo systemctl reload application.service

如果你不能確定當(dāng)前服務(wù)是否重載其配置的功能侄旬,你可以調(diào)用reload-or-restart命令 這將會在可以重載的情況下重載配置,否則煌妈,會重啟服務(wù)使新配置被使用:

sudo systemctl reload-orrestart application.service
打開和關(guān)閉服務(wù)的開機(jī)啟動

上述命令在當(dāng)前會話中啟動或停止命令是很有用。但是告知系統(tǒng)開機(jī)啟動程序,你必須執(zhí)行開機(jī)啟動璧诵。

要執(zhí)行開啟汰蜘,使用enable命令

sudo systemctl enable application.service

這將創(chuàng)建一個從系統(tǒng)的拷貝的服務(wù)文件(通常在/lib/systemd/system 或 /etc/systemd/system)指向用來給systemd程序?qū)ふ易詣訂游募谋镜赜脖P(一般是/etc/systemd/system/some_target.target.wants 我們將在本教程后續(xù)中介紹)符號鏈接

關(guān)閉該服務(wù)的開機(jī)自啟,你可以鍵入:

sudo systemctl disable application.service

這將會刪除說明該程序是開機(jī)啟動的符號鏈接之宿。

記住打開開機(jī)自啟并不會在當(dāng)前會話中啟動服務(wù)族操,如果你既希望啟動服務(wù)也想打開開機(jī)自啟,你將必須startenable命令調(diào)用比被。

檢查服務(wù)的狀態(tài) #####:

要檢查系統(tǒng)中服務(wù)的狀態(tài)色难,可以使用status命令:

systemctl status application.service

這將提供服務(wù)的狀態(tài),cgroup的結(jié)構(gòu)等缀,和少量的最開始的日志行枷莉。

舉個例子,當(dāng)你檢查Ngix服務(wù)的狀態(tài)時尺迂,你將看到這樣的輸入結(jié)果:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2015-01-27 19:41:23 EST; 22h ago
 Main PID: 495 (nginx)
   CGroup: /system.slice/nginx.service
           ├─495 nginx: master process /usr/bin/nginx -g pid /run/nginx.pid; error_log stderr;
           └─496 nginx: worker process
Jan 27 19:41:23 desktop systemd[1]: Starting A high performance web server and a reverse proxy server...
Jan 27 19:41:23 desktop systemd[1]: Started A high performance web server and a reverse proxy server.

這為你提供當(dāng)前服務(wù)很好的狀態(tài)查看笤妙,通知你任何問題還有某個需要執(zhí)行的動作。

也有別的檢查特定狀態(tài)的方法噪裕,例如蹲盘,檢查一個單元是否正在運(yùn)行,可以使用** is-active ** 命令:

systemctl is-active application.service

這將返回當(dāng)前單元的狀態(tài)膳音,通常是active 或 ** inactive**,這段代碼執(zhí)行的結(jié)果召衔,如果是運(yùn)行狀態(tài)將會是“0”,可以在程序上更容易使用祭陷。(一般linux程序成功后會返回0)

查看該單元是否是開機(jī)自啟苍凛,可以使用is-enalbed命令

systemctl is-enabled application.service

這將輸出該服務(wù)是否開機(jī)自啟,同樣的返回結(jié)果為“0”或"1"根據(jù)其自身的狀態(tài)颗胡。

另外一個檢查是查看該單元是否是在一個錯誤的狀態(tài)毫深,這指示了討論中的單元在啟動時是否有問題:

systemctl is-failed application.service

如果正常運(yùn)行返回active,如果有錯誤返回failed毒姨。如果該單元被顯式的停止哑蔫,將會返回unknowninactive。返回狀態(tài)碼”0“表示有失敗發(fā)生而返回狀態(tài)碼“1”表示別的狀態(tài)弧呐。

系統(tǒng)狀態(tài)查看

到現(xiàn)在介紹的命令對于控制單個服務(wù)很有用闸迷,但是對于探查系統(tǒng)當(dāng)前狀態(tài)用處不大。有很多的systemctl命令來提供該信息俘枫。

列舉當(dāng)前單元

要查看當(dāng)前systemd知道的所有的活動的單元列表腥沽,我們可以使用list-units命令:

systemctl list-units

這將會展示系統(tǒng)中systemd激活的所有的單元列表。輸出會類似于這樣:

UNIT                                      LOAD   ACTIVE SUB     DESCRIPTION
atd.service                               loaded active running ATD daemon
avahi-daemon.service                      loaded active running Avahi mDNS/DNS-SD Stack
dbus.service                              loaded active running D-Bus System Message Bus
dcron.service                             loaded active running Periodic Command Scheduler
dkms.service                              loaded active exited  Dynamic Kernel Modules System
getty@tty1.service                        loaded active running Getty on tty1
. . .

輸出中包含如下幾列:

  • UNIT: systemd的單元名稱
  • LOAD: 單元的配置是否被systemd解析鸠蚪,加載過的單元的配置保存在內(nèi)存中
  • ACTIVE: 一個簡要關(guān)于單元是否激活的狀態(tài)信息今阳,通常是相當(dāng)基本的告知該單元是否成功的啟動
  • SUB:這是低等級狀態(tài)標(biāo)識了該單元的更多的細(xì)節(jié)信息师溅。這通常會根據(jù)單元類型,狀態(tài)和單元運(yùn)行的真是真實(shí)方法變化盾舌。
  • DESCIPTION: 一個簡短的單元功能的文字描述

因?yàn)?strong>list-units命令默認(rèn)只展示激活的單元墓臭,上面所有的條目中的LOAD列都顯示“l(fā)oaded”和ACTIVE列都顯示“active”,這些信息就是不帶額外參數(shù)systemctl的默認(rèn)展示行為妖谴,所以如果你不帶參數(shù)的調(diào)用systemctl命令窿锉,你將看到同樣的輸出結(jié)果:

systemctl

我們可以通過添加額外的標(biāo)志參數(shù)告知systemctl輸出不同的信息。列如膝舅,查看systemd中所有加載的(或試圖加載)嗡载,不論是否被激活的單元,你可以使用-all參數(shù)仍稀,像這樣:

systemctl list-units --all

這將會輸出systemd加載的或試圖去加載的單元洼滚,不考慮他們當(dāng)前在系統(tǒng)中的狀態(tài)。其中琳轿,一些單元在運(yùn)行后變?yōu)榉羌せ顮顟B(tài)判沟,一些systemd試圖去加載的但是在硬盤中找不到的單元。

你可以使用別的參數(shù)來過濾這些結(jié)果崭篡。例如挪哄,我們可以使用--state參數(shù)來標(biāo)識LOAD、ACTIVE琉闪,或SUB狀態(tài)中我們想要查看的迹炼。同時你需要保留--all參數(shù)來告知systemctl允許非激活狀態(tài)的單元展示。

systemctl list-units --all --state=inactive

另外一個常用的過濾參數(shù)--type=.我們可以告知systenctl來展示我們感興趣的類型的單元颠毙。例如斯入,只查看激活的服務(wù)的單元,我們可以使用

systemctl list-units --type=service
列舉所有單元文件

list-units命令只展示哪些systemd試圖解析和加載進(jìn)內(nèi)存的單元蛀蜜。因?yàn)?strong>systemd只會讀取它認(rèn)為他將需要的單元刻两,這將不一定包含系統(tǒng)中所有可用的單元。要查看在systemd目錄中每個可用的單元文件滴某,包含哪些systemd沒有試圖加載的磅摹。你可以使用list-unit-files命令替代:

systemctl list-unit-files

單元是systemd知道的資源的集合。因?yàn)?strong>systemd不一定需要讀取所有的定義信息霎奢,它只展示文件本身的基本信息户誓。輸出結(jié)果有兩列: 單元文件名和狀態(tài)

UNIT FILE                                  STATE   
proc-sys-fs-binfmt_misc.automount          static  
dev-hugepages.mount                        static  
dev-mqueue.mount                           static  
proc-fs-nfsd.mount                         static  
proc-sys-fs-binfmt_misc.mount              static  
sys-fs-fuse-connections.mount              static  
sys-kernel-config.mount                    static  
sys-kernel-debug.mount                     static  
tmp.mount                                  static  
var-lib-nfs-rpc_pipefs.mount               static  
org.cups.cupsd.path                        enabled
. . .

狀態(tài)列通常為“enabled”,"disabled",“static”幕侠,“masked”帝美。在該語境下,靜態(tài)表示該單元文件沒有包含那些用來打開單元開機(jī)自啟功能的安裝部分代碼晤硕,因此這些單元不能夠開機(jī)自啟悼潭。通常庇忌,這意味著扮演者一次性執(zhí)行動作或僅被用來其他單元的依賴不能夠單獨(dú)運(yùn)行的。

我們將在涉及到時展開“masked”的解釋女责。

單元管理

目前為止漆枚,我們已經(jīng)實(shí)踐了服務(wù)相關(guān)和展示systemd知道的單元和單元文件的信息。我們可以使用一些其他的命令來查找找出更多的特定信息抵知。

展示一個單元文件

要展示一個被systemd加載進(jìn)其系統(tǒng)的單元文件,你可以使用cat命令软族。例如刷喜,查看atd計(jì)劃守護(hù)進(jìn)程,我們可以鍵入:

systemctl cat atd.service
[Unit]
Description=ATD daemon
[Service]
Type=forking
ExecStart=/usr/bin/atd
[Install]
WantedBy=multi-user.target

輸出的結(jié)果是被當(dāng)前運(yùn)行的systemd進(jìn)程所知道的單元文件內(nèi)容立砸,如果你最近修改了單元文件內(nèi)容或正在重寫一個單元文件片段的內(nèi)容掖疮,知道這點(diǎn)很重要。(我們在后續(xù)會涉及到)

展示依賴

查看一個單元的依賴樹颗祝,你可以使用list-dependencied命令:

systemctl list-dependencies sshd.service

這將展示一個分層的那些為了開啟討論中單元時必須處理的依賴關(guān)系圖浊闪。這些依賴,在當(dāng)前語境下螺戳,包括那些直接被程序需要以及啟動這些程序的上一級的依賴程序搁宾。

sshd.service
├─system.slice
└─basic.target
  ├─microcode.service
  ├─rhel-autorelabel-mark.service
  ├─rhel-autorelabel.service
  ├─rhel-configure.service
  ├─rhel-dmesg.service
  ├─rhel-loadmodules.service
  ├─paths.target
  ├─slices.target
. . .

遞歸的依賴只展示到.target單元,這些單元用來指示系統(tǒng)的狀態(tài)倔幼。若要遞歸展示所有的依賴盖腿,加入--all參數(shù)。

展示反轉(zhuǎn)的依賴(給定的單元被別的單元依賴)损同,你可以添加--reverse參數(shù)翩腐,其他常用的參數(shù)--before--after,可以用來分別展示在特定單元之前或之后運(yùn)行的單元膏燃。

檢查單元的屬性

若要查看低一級的單元屬性茂卦,你可以使用show命令。這將用key==value(鍵值對)形式列舉出該單元的屬性:

systemctl show sshd.service
Id=sshd.service
Names=sshd.service
Requires=basic.target
Wants=system.slice
WantedBy=multi-user.target
Conflicts=shutdown.target
Before=shutdown.target multi-user.target
After=syslog.target network.target auditd.service systemd-journald.socket basic.target system.slice
Description=OpenSSH server daemon
. . .

如果你想展示某個特定的屬性组哩,你可以使用-p參數(shù)并附帶屬性名稱等龙。例如,查看sshd.service單元的conflicts屬性,你可以鍵入:

systemctl show sshd.service -p Conflicts
Conflicts=shutdown.target
標(biāo)記和不標(biāo)記單元

我們已經(jīng)在服務(wù)管理部分知道如何去停止和關(guān)閉開機(jī)啟動服務(wù)禁炒,但是systemd也有把單元標(biāo)記為不論自動或手動都不可啟動的能力而咆,這是通過將該單元鏈接到/dev/null實(shí)現(xiàn)的。這被稱為標(biāo)記單元幕袱,可以用個mask命令來實(shí)現(xiàn):

sudo systemctl mask nginx.service

這將阻止nginx服務(wù)被自動或手動啟動暴备,只要在其被標(biāo)記的狀態(tài)下。

如果你查看list-unit-files们豌,你將會看到該服務(wù)已經(jīng)被標(biāo)記為“masked”狀態(tài)展示:

systemctl list-unit-files

. . .
kmod-static-nodes.service              static  
ldconfig.service                       static  
mandb.service                          static  
messagebus.service                     static  
nginx.service                          masked
quotaon.service                        static  
rc-local.service                       static  
rdisc.service                          disabled
rescue.service                         static
. . .

如果你試圖啟動該服務(wù)涯捻,你將看到如下信息:

sudo systemctl start nginx.service
Failed to start nginx.service: Unit nginx.service is masked.

若要解鎖一個單元的標(biāo)記機(jī)浅妆,讓其可以被使用,簡單的使用unmask即可:

sudo systemctl unmask nginx.service

這將是該單元返回到其被標(biāo)記前的狀態(tài)障癌,被允許啟動或開機(jī)自啟凌外。

編輯單元文件內(nèi)容

關(guān)于單元文件的格式的討論不在本教程范圍內(nèi),如果你需要調(diào)整單元文件的內(nèi)容可以使用systemctl提供了內(nèi)置的修改或編輯單元文件的命令來完成涛浙。

edit命令默認(rèn)會打開當(dāng)前的單元文件片段:

sudo systemctl edit nginx.service

這將打開一個空白的文件康辑,該文件可以用來覆蓋或添加單元中定義的指令。同時在/etc/systemd/system路徑下轿亮,一個文件夾將會被創(chuàng)建疮薇,文件名是單元文件名附加。d.例如我注,對于nginx.service來說按咒,一個名為nginx.service.d的文件夾將會被創(chuàng)建。

在該文件夾內(nèi)但骨,名為override.conf的片段文件將會被創(chuàng)建励七。當(dāng)單元被加載過,systemd將會在內(nèi)存中將該重寫片段和初始的單元文件合并起來奔缠。該片段中的指令的優(yōu)先級高于初始單元文件中相應(yīng)的指令掠抬。

如果你想要編輯完成的單元文件而不是單元文件片段,你可以輸入--full參數(shù):

sudo systemctl edit --full nginx.service

這將會將當(dāng)前的單元文件加載到編輯器添坊,在那里可以被修改剿另。當(dāng)編輯器退出時,修改后的文件將會被存儲到/etc/systemd/system贬蛙,該文件將會被以比系統(tǒng)的單元定義(通常在**/lib/systemd/system)高的優(yōu)先級被使用雨女。

如要刪除任意的你創(chuàng)建的附加的或者單元的.d配置文件夾或者在/etc/systemd/system路徑下的修改的文件。例如阳准,刪除片段氛堕,我們可以鍵入:

sudo rm -r /etc/systemd/system/nginx.service.d

若要刪除一個完整修改的單元文件,你將鍵入:

sudo rm /etc/systemd/system/nginx.service

在刪除這些文件或文件夾后野蝇,你需要重載systemd進(jìn)程讼稚,這樣它就不會再引用這些文件,讓它回溯使用原來系統(tǒng)給定文件绕沈。你可以通過鍵入如下信息來完成:

sudo systemctl daemon-reload

通過目標(biāo)(Targets)調(diào)整系統(tǒng)狀態(tài)(運(yùn)行等級)

目標(biāo)是一些特殊的單元文件锐想,可以來描述系統(tǒng)狀態(tài)或同步點(diǎn)。像其他的單元乍狐,定義目標(biāo)的文件也可以通過后綴名被認(rèn)出赠摇,對于目標(biāo)文件來說是.target。目標(biāo)本身不做很多功能,代之的是被用來整合其他的單元藕帜。

這點(diǎn)可以用來使系統(tǒng)變成特定的狀態(tài)烫罩,跟別的初始化系統(tǒng)中使用運(yùn)行級別(runlevel)很相似。它們被用來當(dāng)作某個特定功能可用時的索引洽故,可以讓你直接指明想要的狀態(tài)而不是通過一些需要的單獨(dú)的單元來完成狀態(tài)修改贝攒。

例如,有個swap.target文件是用來標(biāo)識交換(swap)功能可用的时甚。那些是該進(jìn)程的組成部分的需要目標(biāo)文件同步加載單元隘弊,在其配置中以WantedBy=RequiredBy=那個swap.target標(biāo)識。而那些需要swap文件可用的單元文件在配置中可以使用Wants=撞秋,××Requires=,和After=××指令來說明他們之間的關(guān)系长捧。

獲取和設(shè)置默認(rèn)的目標(biāo)

systemd進(jìn)程當(dāng)啟動系統(tǒng)時會使用默認(rèn)的目標(biāo)。完成那個目標(biāo)文件的級聯(lián)的依賴將會是系統(tǒng)進(jìn)入所需的狀態(tài)吻贿。若要查看系統(tǒng)中默認(rèn)的目標(biāo),鍵入:

systemctl get-dafault
multi-user.target

如果你想要設(shè)置一個不同的默認(rèn)目標(biāo)哑子,你可以使用set-default舅列。例如,你如果有個圖形桌面安裝目標(biāo)卧蜓,你希望系統(tǒng)將其作為默認(rèn)的目標(biāo)加載帐要,你可以相應(yīng)的改變系統(tǒng)默認(rèn)的目標(biāo):

sydo systemctl set-default graphical.target
列舉可用的目標(biāo)

你可以查看在系統(tǒng)中可用的目標(biāo)列表,鍵入:

systemctl list-unit-files --type=target

不像運(yùn)行級別弥奸,目標(biāo)一次可以啟動多個榨惠。一個激活的目標(biāo)示意systemd重新試圖啟動所有跟該目標(biāo)相關(guān)的單元并且沒有試圖將這些單元停止。要查看所有的活動目標(biāo)盛霎,鍵入:

systemctl list-units --type=target
隔離目標(biāo)

啟動一個目標(biāo)中涉及的所有的單元赠橙,并且停止所有不再依賴樹上的單元是可以的。想達(dá)到該目的的命令被稱為愤炸,isolate期揪。這類似去其他初始化系統(tǒng)中的改變運(yùn)行級別。

例如规个,你正在通過graphical.target激活來操作一個圖形化系統(tǒng)凤薛,你可以使用隔離multi-user.target來關(guān)閉圖形系統(tǒng)讓系統(tǒng)進(jìn)入多用戶命令行狀態(tài)。由于graphical.target依賴于multi-user.target但不包括其他的依賴诞仓,所以所有的圖形單元會被關(guān)閉缤苫。

在你要使用隔離功能隔離某個目標(biāo)前,你或許希望查看一下你要隔離的目標(biāo)中所有的依賴來保證重要的依賴不被停止:

systemctl list-dependencies multi-user.target

當(dāng)你認(rèn)為只有這些單元被激活可以滿足需要墅拭,輸入:

sudo systemctl isolate multi-user.target
使用重要事件的快捷方式

有一些被定義用來服務(wù)與重要事件的目標(biāo)如關(guān)機(jī)或重啟活玲。 然而,systemd也有一些添加了一些額外功能的快捷方式。

例如翼虫,讓系統(tǒng)計(jì)入安全模式(single-user)屑柔,你可以使用rescue命令代替isolate rescue.target

sudo systemctl rescue

這將產(chǎn)生額外的功能,提醒關(guān)于事件的用戶日志珍剑。

若想掛起系統(tǒng)掸宛,可以使用halt命令:

sudo systemctl halt

若要執(zhí)行徹底的關(guān)機(jī),使用poweroff命令:

sudo systemctl poweroff

重啟是reboot命令:

sudo systemctl reboot

這些都會給提示普通用戶不能使用該功能招拙,這些提示是簡單的運(yùn)行和隔離目標(biāo)不會給出的唧瘾。注意大多數(shù)機(jī)器會將這些快捷方式轉(zhuǎn)變成更加方便的使用方式。

例如别凤,重啟系統(tǒng)饰序,可以鍵入:

sudo reboot

總結(jié)

到現(xiàn)在位置,你已經(jīng)熟悉了一些systemctl的基本能力规哪,用來允許你控制和使用systemd實(shí)例求豫。該systemctl工具將會是你主要的服務(wù)控制和系統(tǒng)狀態(tài)管理工具。

然而systemctl操作主要是來操作systemd核心功能诉稍,還有別的systemd模塊系統(tǒng)被別的工具來控制蝠嘉。 其它能力,像日志管理和用戶對話被單獨(dú)的守護(hù)進(jìn)程和管理工具控制(**journald/journalctl ** 和 logind/loginctl). 花點(diǎn)時間來熟悉這些工具和守護(hù)進(jìn)程杯巨,將會是管理系統(tǒng)變得很簡單蚤告。

參考文章

How To Use Systemctl to Manage Systemd Services and Units

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市服爷,隨后出現(xiàn)的幾起案子杜恰,更是在濱河造成了極大的恐慌,老刑警劉巖仍源,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件心褐,死亡現(xiàn)場離奇詭異,居然都是意外死亡镜会,警方通過查閱死者的電腦和手機(jī)檬寂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戳表,“玉大人桶至,你說我怎么就攤上這事∝倚瘢” “怎么了镣屹?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長价涝。 經(jīng)常有香客問我女蜈,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任伪窖,我火速辦了婚禮逸寓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘覆山。我一直安慰自己竹伸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布簇宽。 她就那樣靜靜地躺著勋篓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪魏割。 梳的紋絲不亂的頭發(fā)上譬嚣,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機(jī)與錄音钞它,去河邊找鬼拜银。 笑死,一個胖子當(dāng)著我的面吹牛遭垛,可吹牛的內(nèi)容都是我干的盐股。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼耻卡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了牲尺?” 一聲冷哼從身側(cè)響起卵酪,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谤碳,沒想到半個月后溃卡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜒简,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年瘸羡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搓茬。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡犹赖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卷仑,到底是詐尸還是另有隱情峻村,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布锡凝,位于F島的核電站粘昨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜张肾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一芭析、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吞瞪,春花似錦馁启、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浪听,卻和暖如春螟碎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背迹栓。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工掉分, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人克伊。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓酥郭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親愿吹。 傳聞我的和親對象是個殘疾皇子不从,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

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

  • 最近在研究Docker的源碼.讀到ApiServer的啟動過程時,發(fā)現(xiàn)其有一個新的概念,叫做service act...
    AlstonWilliams閱讀 1,139評論 1 4
  • 筆者在日常的開發(fā)和使用中,經(jīng)常需要寫大量的本地服務(wù)并且進(jìn)行管理犁跪,例如定時執(zhí)行椿息,定時查錯,異步排隊(duì)以及數(shù)據(jù)庫的備份歸...
    kivinsae閱讀 2,924評論 0 1
  • muahao閱讀 2,070評論 0 3
  • System的簡介 Systemd 是 Linux 系統(tǒng)中最新的初始化系統(tǒng)(init)坷衍,它主要的設(shè)計(jì)目標(biāo)是克服 s...
    魏鎮(zhèn)坪閱讀 11,994評論 0 11
  • 文/流上云間 01 對于火車有四段記憶寝优。 第一段,是尚且年幼的時候枫耳,春節(jié)和父母去叔叔家拜年乏矾。那是我第一次坐火車,記...
    荊棘紫閱讀 287評論 1 4