Day 22-進程管理之狀態(tài)管理讼稚、后臺管理與進程的優(yōu)先級

一、管理進程狀態(tài)

當(dāng)程序運行為進程后帮寻,如果希望停止進程固逗,怎么辦呢? 那么此時我們可以使用linux的kill命令對進程發(fā)送關(guān)閉信號藕帜。當(dāng)然除了kill耘戚、還有killall,pkill.

1饿这、使用kill -l列出當(dāng)前系統(tǒng)所支持的信號

[root@oldboy ~]# kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
······

我們最為常用的3個信號

數(shù)字編號 信號含義 信號翻譯
1 SIGHUP 通常用來重新加載配置文件
9 SIGKILL 強制殺死進程
15 SIGTERM 終止進程长捧、默認kill使用該信號

2吻贿、我們使用kill命令殺死指定PID的進程

1)、安裝運行vsftpd 進程
[root@oldboy ~]# yum -y install vsftpd
[root@oldboy ~]# systemctl start vsftpd
[root@oldboy ~]# ps aux|grep vsftpd
root 9757 0.0 0.0 53176 584 ? Ss 10:28 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 10014 0.0 0.0 112708 980 pts/0 S+ 14:58 0:00 grep --color=auto vsftpd

2)肌割、當(dāng)vsftpd 的配置文件發(fā)生改變把敞,發(fā)送重載信號榨惠,希望重新加載
[root@oldboy ~]# kill -1 9757

3)、發(fā)送停止信號耽装,停止vsftpd 服務(wù)
[root@oldboy ~]# ps aux|grep vsftpd
root 10014 0.0 0.0 112708 980 pts/0 S+ 14:58 0:00 grep --color=auto vsftpd

4)掉奄、發(fā)送強制停止信號,當(dāng)無法停止服務(wù)時绰姻,可強制終止信號
[root@oldboy ~]# kill -9 10041

3、Linux系統(tǒng)中的killall榨馁、pkill命令用于殺死指定名字的進程翼虫。我們可以使用kill命令殺死指定進程PID的進程,如果要找到我們需要殺死的進程掸宛,我們還需要在之前使用ps等命令再配合grep來查找進程招拙,而killall别凤、pkill把這兩個過程合二為一,是一個很好用的命令求豫。

1)诉稍、通過服務(wù)名稱殺掉進程
[root@oldboy ~]# ps aux|grep vsftpd
root 10041 0.0 0.0 53176 580 ? Ss 15:05 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 10054 0.0 0.0 112708 980 pts/0 R+ 15:11 0:00 grep --color=auto vsftpd
[root@oldboy ~]# pkill vsftpd
[root@oldboy ~]# ps aux|grep vsftpd
root 10058 0.0 0.0 112708 980 pts/0 R+ 15:11 0:00 grep --color=auto vsftpd

[root@oldboy ~]# killall vsftpd

2)杯巨、使用pkill踢出從遠程登錄到本機的用戶舔箭,終止pts/0上所有進程, 并且bash也結(jié)束(用戶被強制退出)
[root@oldboy ~]# tty
/dev/pts/1
[root@oldboy ~]# pkill -9 -t pts/1

二蚊逢、管理后臺進程

1烙荷、什么是后臺進程檬寂?

通常進程都會在終端前臺運行桶至,一旦關(guān)閉終端,進程也會隨著結(jié)束圃郊,那么此時我們就希望進程能在后臺運行女蜈,就是將在前臺運行的進程放入后臺運行伪窖,這樣即使我們關(guān)閉了終端也不影響進程的正常運行。

2竹伸、我們?yōu)槭裁匆獙⑦M程放入后臺運行簇宽?

比如:我們此前在國內(nèi)服務(wù)器往國外服務(wù)器傳輸大文件時晦毙,由于網(wǎng)絡(luò)的問題需要傳輸很久,如果在傳輸?shù)倪^程中出現(xiàn)網(wǎng)絡(luò)抖動或者不小心關(guān)閉了終端則會導(dǎo)致傳輸失敗孤荣,如果能將傳輸?shù)倪M程放入后臺盐股,就能解決此類問題了耻卡。

3卵酪、使用什么工具將進程放入后臺?

早期的時候大家都選擇使用&符號將進程放入后臺谤碳,然后在使用jobs蜒简、bg漩仙、fg等方式查看進程狀態(tài)队他,但太麻煩了,也不直觀锡凝,所以我們推薦使用screen磕谅。

1)膊夹、jobs捌浩、bg尸饺、fg的使用(不推薦使用)

[root@oldboy ~]# sleep 3000  #運行程序(時),讓其在后臺執(zhí)行 
[1] 10125
[root@oldboy ~]# sleep 4000  
^Z                                             #將前臺的程序掛起(暫停)到后臺
[2]+  Stopped                 sleep 4000
[root@oldboy ~]#  ps aux |grep sleep
root      10125  0.0  0.0 107952   356 pts/0    S    15:35   0:00 sleep 3000
root      10129  0.0  0.0 107952   360 pts/0    T    15:38   0:00 sleep 4000
[root@oldboy ~]# jobs #查看后臺作業(yè)
[1]-  Running                 sleep 3000 &
[2]+  Stopped                 sleep 4000

[root@oldboy ~]#  bg %2 #讓2在后臺運行
[2]+ sleep 4000 &
[root@oldboy ~]#  fg %1 #讓1調(diào)回到前臺
sleep 3000

[root@oldboy ~]# kill %1   //kill 1,終止 PID 為 1 的進程
[root@oldboyi ~]# (while :; do date; sleep 2; done) & //進程在后臺運行迹栓,但輸出依然在當(dāng)前終端
[root@xuliangwei ~]# (while :; do date; sleep 2; done) &>/dev/null &

2)克伊、screen的使用(推薦使用)

(1)、下載安裝
[root@oldboy ~]# yum install screen -y

(2)不从、開啟一個screen窗口,指定名稱
[root@oldboy ~]# screen -S wget_xtt

(3)椿息、在screen窗口中執(zhí)行任務(wù)

(4)、使用ctrl+a+d平滑的退出screen,但不會終止screen中的任務(wù)条舔,注意: 不要使用exit 逞刷,會真的關(guān)閉screen窗口妻熊。
[root@oldboy ~]# 
[detached from 10520.wget_xtt]

(5)扔役、查看當(dāng)前正在運行的screen有哪些
[root@oldboy ~]# screen -list
There is a screen on:
    10520.wget_xtt  (Detached)
1 Socket in /var/run/screen/S-root.

(6)、進入正在運行的screen
[root@oldboy ~]# screen -r wget_xtt
[root@oldboy ~]# screen -r 10520

三坯钦、.進程的優(yōu)先級

1婉刀、什么優(yōu)先級

優(yōu)先級指的是優(yōu)先享受資源序仙,比如排隊買票時潘悼,軍人優(yōu)先、老人優(yōu)先棒动。等等

2船惨、為什么要有系統(tǒng)優(yōu)先級

舉個例子: 海底撈火鍋正常情況下響應(yīng)就特別快辞槐,那么當(dāng)節(jié)假日來臨時人員突增則會導(dǎo)致處理請求特別慢榄檬,那么假設(shè)我是海底撈VIP客戶(最高優(yōu)先級),無論門店多么繁忙海雪,我都不用排隊奥裸,海底撈人員會直接服務(wù)于我,滿足我的需求樟氢。至于沒有VIP的人員(較低優(yōu)先級)則進入排隊等待狀態(tài)埠啃。

3伟恶、系統(tǒng)中如何給進程配置優(yōu)先級?

在啟動進程時博秫,為不同的進程使用不同的調(diào)度策略挡育。
nice 值越高: 表示優(yōu)先級越低,例如+19良价,該進程容易將CPU 使用量讓給其他進程。
nice 值越低: 表示優(yōu)先級越高蚣常,例如-20抵蚊,該進程更不傾向于讓出CPU贞绳。

1)、使用top或ps命令查看進程的優(yōu)先級

(1)俱尼、使用top可以查看nice優(yōu)先級遇八。 NI: 實際nice級別,默認是0货矮。PR: 顯示nice值囚玫,-20映射到0读规,+19映射到39掖桦。
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAN
6495 root      20   0  300720   6352   4984 S  0.7  0.3   4:48.17 vmtoolsd                                                        
  7486 root      20   0  573824  17232   6084 S  0.3  0.8   1:08.48 tuned        
(2)枪汪、使用ps查看進程優(yōu)先級
/usr/sbin/sshd -D             0
sshd: root@pts/0              0

2)、nice指定程序的優(yōu)先級宿稀。語法格式 nice -n 優(yōu)先級數(shù)字 進程名稱

(1)祝沸、開啟vim并且指定程序優(yōu)先級為-5
[root@oldboy ~]# nice -n -5 vim &
[1] 10543
(2)罩锐、查看該進程的優(yōu)先級情況
[root@oldboy ~]# ps axo pid,command,nice |grep 10543
 10543 vim                          -5

3)卤唉、renice命令修改一個正在運行的進程優(yōu)先級桑驱。語法格式 renice -n 優(yōu)先級數(shù)字 進程pid

(1)熬的、查看sshd進程當(dāng)前的優(yōu)先級狀態(tài)
[root@oldboy ~]# ps axo pid,command,nice |grep sshd
  7487 /usr/sbin/sshd -D             0
 10471 sshd: root@pts/0              0

(2)、調(diào)整sshd主進程的優(yōu)先級
[root@oldboy ~]#  renice -n -20 7487
7487 (process ID) old priority 0, new priority -20

(3)岔绸、查看并退出終端
[root@oldboy ~]# ps axo pid,command,nice |grep sshd
  7487 /usr/sbin/sshd -D           -20
 10471 sshd: root@pts/0              0
[root@oldboy ~]# exit
exit
There are stopped jobs.

(4)亭螟、當(dāng)再次登陸sshd服務(wù)预烙,會由主進程fork子進程(那么子進程會繼承主進程的優(yōu)先級)
[root@oldboy ~]# ps axo pid,command,nice |grep sshd
  7487 /usr/sbin/sshd -D           -20
 10561 sshd: root@pts/2           -20

四扁掸、系統(tǒng)平均負載

每次發(fā)現(xiàn)系統(tǒng)變慢時,我們通常做的第一件事锈麸,就是執(zhí)行 top 或者 uptime 命令忘伞,來了解系統(tǒng)的負載情況。比如像下面這樣沙兰,在命令行內(nèi)輸入了 uptime 命令氓奈,系統(tǒng)也隨即給出了結(jié)果。

16:46:40 up 15:01,  1 user,  load average: 0.00, 0.01, 0.05
當(dāng)前時間     系統(tǒng)運行時長 登錄用戶數(shù) 過去 1 分鐘鼎天、5 分鐘舀奶、15 分鐘的平均負載

1、什么是平均負載斋射?

平均負載不就是單位時間內(nèi)的 CPU 使用率嗎育勺?上面的 0.70,就代表 CPU 使用率是 70%罗岖。其實上并不是。那到底如何理解平均負載: 平均負載是指單位時間內(nèi)桑包,系統(tǒng)處于可運行狀態(tài)和不可中斷狀態(tài)的平均進程數(shù)化借,也就是平均活躍進程數(shù)。

PS: 平均負載與 CPU 使用率并沒有直接關(guān)系捡多。

2、可運行狀態(tài)和不可中斷狀態(tài)是什么铐炫?

1)垒手、可運行狀態(tài)進程,是指正在使用 CPU 或者正在等待 CPU 的進程倒信,也就是我們ps 命令看到處于 R 狀態(tài)的進程科贬。
2)、不可中斷進程,(你做什么事情的時候是不能打斷的?) 系統(tǒng)中最常見的是等待硬件設(shè)備的 I/O 響應(yīng)榜掌,也就是我們 ps 命令中看到的 D 狀態(tài)(也稱為 Disk Sleep)的進程优妙。
例如: 當(dāng)一個進程向磁盤讀寫數(shù)據(jù)時,為了保證數(shù)據(jù)的一致性憎账,在得到磁盤回復(fù)前套硼,它是不能被其他進程或者中斷打斷的,這個時候的進程就處于不可中斷狀態(tài)胞皱。如果此時的進程被打斷了邪意,就容易出現(xiàn)磁盤數(shù)據(jù)與進程數(shù)據(jù)不一致的問題。所以反砌,不可中斷狀態(tài)實際上是系統(tǒng)對進程和硬件設(shè)備的一種保護機制雾鬼。

PS:可以簡單理解為,平均負載其實就是單位時間內(nèi)的活躍進程數(shù)宴树。

3策菜、那平均負載為多少時合理?

最理想的狀態(tài)是每個 CPU 上都剛好運行著一個進程酒贬,這樣每個 CPU 都得到了充分利用又憨。所以在評判平均負載時,首先你要知道系統(tǒng)有幾個 CPU同衣,這可以通過 top 命令獲取竟块,或grep 'model name' /proc/cpuinfo 命令獲取。

(1)耐齐、假設(shè)現(xiàn)在在 4浪秘、2、1核的CPU上埠况,如果平均負載為 2 時耸携,意味著什么呢?
Q1.在4 個 CPU 的系統(tǒng)上辕翰,意味著 CPU 有 50% 的空閑夺衍。
Q2.在2 個 CPU 的系統(tǒng)上,意味著所有的 CPU 都剛好被完全占用喜命。
Q3.而1 個 CPU 的系統(tǒng)上沟沙,則意味著有一半的進程競爭不到 CPU。
(2)壁榕、平均負載有三個數(shù)值矛紫,我們應(yīng)該關(guān)注哪個呢?
實際上,我們都需要關(guān)注牌里。就好比4月的天氣颊咬,如果只看晚上天氣,感覺在過冬天呢。但如果你結(jié)合了早上喳篇、中午敞临、晚上三個時間點的溫度來看,基本就可以全方位了解這一天的天氣情況了麸澜。
a.如果 1 分鐘挺尿、5 分鐘、15 分鐘的三個值基本相同痰憎,或者相差不大票髓,那就說明系統(tǒng)負載很平穩(wěn)。
b.但如果 1 分鐘的值遠小于 15 分鐘的值铣耘,就說明系統(tǒng)最近 1 分鐘的負載在減少洽沟,而過去 15 分鐘內(nèi)卻有很大的負載。
c.反過來蜗细,如果 1 分鐘的值遠大于 15 分鐘的值裆操,就說明最近 1 分鐘的負載在增加,這種增加有可能只是臨時性的炉媒,也有可能還會持續(xù)上升踪区,所以就需要持續(xù)觀察。
(3)吊骤、 一旦 1 分鐘的平均負載接近或超過了 CPU 的個數(shù)缎岗,就意味著系統(tǒng)正在發(fā)生過載的問題,這時就得分析問題白粉,并要想辦法優(yōu)化了
假設(shè)我們在有2個 CPU 系統(tǒng)上看到平均負載為 2.73传泊,6.90,12.98
那么說明在過去1 分鐘內(nèi)鸭巴,系統(tǒng)有 136% 的超載 (2.73/2=136%)
而在過去 5 分鐘內(nèi)眷细,有 345% 的超載 (6.90/2=345%)
而在過去15 分鐘內(nèi),有 649% 的超載鹃祖,(12.98/2=649%)
但從整體趨勢來看溪椎,系統(tǒng)的負載是在逐步的降低。

4恬口、那么在實際生產(chǎn)環(huán)境中校读,平均負載多高時,需要我們重點關(guān)注呢祖能?

當(dāng)平均負載高于 CPU 數(shù)量 70% 的時候地熄,你就應(yīng)該分析排查負載高的問題了。一旦負載過高芯杀,就可能導(dǎo)致進程響應(yīng)變慢,進而影響服務(wù)的正常功能。但 70% 這個數(shù)字并不是絕對的揭厚,最推薦的方法却特,還是把系統(tǒng)的平均負載監(jiān)控起來,然后根據(jù)更多的歷史數(shù)據(jù)筛圆,判斷負載的變化趨勢裂明。當(dāng)發(fā)現(xiàn)負載有明顯升高趨勢時,比如說負載翻倍了太援,你再去做分析和調(diào)查闽晦。

5、平均負載與 CPU 使用率有什么關(guān)系?

在實際工作中提岔,我們經(jīng)常容易把平均負載和 CPU 使用率混淆仙蛉,所以在這里,要做一個區(qū)分碱蒙≤瘢可既然平均負載代表的是活躍進程數(shù),那平均負載高了,不就意味著 CPU 使用率高嗎?回到平均負載的含義上來吓揪,平均負載是指單位時間內(nèi)虱疏,處于可運行狀態(tài)和不可中斷狀態(tài)的進程數(shù)。所以晾蜘,它不僅包括了正在使用 CPU 的進程,還包括等待 CPU 和等待 I/O 的進程。而 CPU 使用率吠各,是單位時間內(nèi) CPU 繁忙情況的統(tǒng)計,跟平均負載并不一定完全對應(yīng)星瘾。比如:CPU 密集型進程走孽,使用大量 CPU 會導(dǎo)致平均負載升高,此時這兩者是一致的琳状;I/O 密集型進程磕瓷,等待 I/O 也會導(dǎo)致平均負載升高,但 CPU 使用率不一定很高念逞;大量等待 CPU 的進程調(diào)度也會導(dǎo)致平均負載升高困食,此時的 CPU 使用率也會比較高。

6翎承、平均負載案例分析實戰(zhàn)

下面硕盹,我們以三個示例分別來看這三種情況,并用 stress叨咖、mpstat瘩例、pidstat 等工具啊胶,找出平均負載升高的根源。
1.stress 是 Linux 系統(tǒng)壓力測試工具垛贤,這里我們用作異常進程模擬平均負載升高的場景焰坪。
2.mpstat 是多核 CPU 性能分析工具,用來實時查看每個 CPU 的性能指標聘惦,以及所有 CPU 的平均指標某饰。
3.pidstat 是一個常用的進程性能分析工具,用來實時查看進程的 CPU善绎、內(nèi)存黔漂、I/O 以及上下文切換等性能指標。

1)禀酱、CPU 密集型進程
(1)首先炬守,我們在第一個終端運行 stress 命令,模擬一個 CPU 使用率 100% 的場景

[root@test-199 ~]# stress --cpu 1 --timeout 600
stress: info: [8570] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
stress: info: [8570] successful run completed in 600s

(2)比勉、在第二個終端運行 uptime 查看平均負載的變化情況

18:55:10 up  2:04,  5 users,  load average: 0.53, 0.15, 0.09

(3)劳较、在第三個終端運行 mpstat 查看 CPU 使用率的變化情況

[root@test-199 ~]# mpstat -P ALL 5
Linux 3.10.0-957.1.3.el7.x86_64 (m01)   2019年08月22日     _x86_64_    (1 CPU)

19時03分03秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
19時03分08秒  all   99.80    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00
19時03分13秒    0   99.80    0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00

(4)、從終端二中可以看到浩聋,1 分鐘的平均負載會慢慢增加到 1.00观蜗,而從終端三中還可以看到,正好有一個 CPU 的使用率為 100%衣洁,但它的 iowait 只有 0墓捻。這說明,平均負載的升高正是由于 CPU 使用率為 100% 坊夫∽┑冢可以使用 pidstat 來查詢到底是哪個進程導(dǎo)致了 CPU 使用率為 100% 。

間隔 5 秒后輸出一組數(shù)據(jù)
[root@test-199 ~]# pidstat -u 5 1
Linux 3.10.0-957.1.3.el7.x86_64 (m01)   2019年08月22日     _x86_64_(1 CPU)

19時09分21秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
19時09分26秒     0    110019   98.80    0.00    0.00   98.80     0  stress

#從這里可以明顯看到环凿,stress 進程的 CPU 使用率為 100%梧兼。

2)、I/O 密集型進程
(1)智听、運行 stress 命令羽杰,模擬 I/O 壓力

[root@test-199 ~]# stress  --io 1 --timeout 600s

(2)、在第二個終端運行 uptime 查看平均負載的變化情況

[root@test-199 ~]# watch -d uptime
19:07:59 up  2:17,  5 users,  load average: 0.03, 0.45, 0.42

(3)到推、第三個終端運行 mpstat 查看 CPU 使用率的變化情況

[root@test-199 ~]# mpstat -P ALL 5
Linux 3.10.0-693.2.2.el7.x86_64 (bgx.com)   2019年08月22日     _x86_64_    (1 CPU)

19時20分07秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
19時20分12秒  all    0.20    0.00   82.45   17.35    0.00    0.00    0.00    0.00    0.00    0.00
19時20分12秒    0    0.20    0.00   82.45   17.35    0.00    0.00    0.00    0.00    0.00    0.00
會發(fā)現(xiàn)cpu的與內(nèi)核打交道的sys占用非常高

(4)考赛、使用 pidstat 來查詢到底是哪個進程導(dǎo)致了iowait 這么高。

間隔 5 秒后輸出一組數(shù)據(jù)莉测,-u 表示 CPU 指標
[root@test-199 ~]# pidstat -u 5 1
Linux 3.10.0-957.1.3.el7.x86_64 (m01)   2019年04月29日     _x86_64_(1 CPU)
19時21分37秒   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
19時21分42秒     0    127259   32.60    0.20    0.00   67.20   32.80     0  stress
19時21分42秒     0    127261    4.60   28.20    0.00   67.20   32.80     0  stress
19時21分42秒     0    127262    4.20   28.60    0.00   67.20   32.80     0  stress

#可以發(fā)現(xiàn)颜骤,還是 stress 進程導(dǎo)致的。

3)捣卤、大量進程的場景
(1)忍抽、首先八孝,使用 stress模擬 4 個進程

[root@test-199 ~]# stress -c 4 --timeout 600

(2)、由于系統(tǒng)只有 1 個 CPU鸠项,明顯比 4 個進程要少得多唆阿,因而,系統(tǒng)的 CPU 處于嚴重過載狀態(tài)

[root@test-199 ~]# watch -d uptime                              

20:46:47 up 3:56, 5 users, load average: 0.00, 0.01, 0.05

(3)锈锤、運行 pidstat 查看進程的情況

[root@test-199 ~]# pidstat -u 5 1
平均時間: UID PID %usr %system %guest %wait %CPU CPU Command
平均時間: 0 130290 24.55 0.00 0.00 75.25 24.55 - stress
平均時間: 0 130291 24.95 0.00 0.00 75.25 24.95 - stress
平均時間: 0 130292 24.95 0.00 0.00 75.25 24.95 - stress
平均時間: 0 130293 24.75 0.00 0.00 74.65 24.75 - stress

(4)、可以看出闲询,4 個進程在爭搶 1 個 CPU久免,每個進程等待 CPU 的時間(也就是代碼塊中的 %wait 列)高達 75%。這些超出 CPU 計算能力的進程扭弧,最終導(dǎo)致 CPU 過載阎姥。
4)、通過分析三個案例鸽捻,歸納平均負載與CPU
>平均負載提供了一個快速查看系統(tǒng)整體性能的手段呼巴,反映了整體的負載情況。但只看平均負載本身御蒲,并不能直接發(fā)現(xiàn)衣赶,到底是哪里出現(xiàn)了瓶頸。所以厚满,在理解平均負載時府瞄,也要注意:
(1)、平均負載高有可能是 CPU 密集型進程導(dǎo)致的碘箍;
(2)遵馆、平均負載高并不一定代表 CPU 使用率高,還有可能是 I/O 更繁忙了丰榴;
(3)货邓、當(dāng)發(fā)現(xiàn)負載高的時候,可以使用 mpstat四濒、pidstat 等工具换况,輔助分析負載的來源;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市峻黍,隨后出現(xiàn)的幾起案子复隆,更是在濱河造成了極大的恐慌,老刑警劉巖姆涩,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挽拂,死亡現(xiàn)場離奇詭異,居然都是意外死亡骨饿,警方通過查閱死者的電腦和手機亏栈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門台腥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人绒北,你說我怎么就攤上這事黎侈。” “怎么了闷游?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵峻汉,是天一觀的道長。 經(jīng)常有香客問我脐往,道長休吠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任业簿,我火速辦了婚禮瘤礁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梅尤。我一直安慰自己柜思,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布巷燥。 她就那樣靜靜地躺著赡盘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪矾湃。 梳的紋絲不亂的頭發(fā)上亡脑,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音邀跃,去河邊找鬼霉咨。 笑死,一個胖子當(dāng)著我的面吹牛拍屑,可吹牛的內(nèi)容都是我干的途戒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼僵驰,長吁一口氣:“原來是場噩夢啊……” “哼喷斋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蒜茴,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤星爪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粉私,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顽腾,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年诺核,在試婚紗的時候發(fā)現(xiàn)自己被綠了抄肖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片久信。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖漓摩,靈堂內(nèi)的尸體忽然破棺而出裙士,到底是詐尸還是另有隱情,我是刑警寧澤管毙,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布腿椎,位于F島的核電站,受9級特大地震影響夭咬,放射性物質(zhì)發(fā)生泄漏酥诽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一皱埠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咖驮,春花似錦边器、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至睦刃,卻和暖如春砚嘴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涩拙。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工际长, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兴泥。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓工育,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搓彻。 傳聞我的和親對象是個殘疾皇子如绸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354