第三周笔记

DAY18


定时任务要领:

* * * * *  /bin/sh /server/scripts/bak.sh &>/dev/null

如何调试定时任务?

1、查看错误日志*****

/var/log/cron

学会最小化排除:

先清空,>/var/log/cron

然后在测试和观察。

2、增加执行任务频率调试任务      *****

把频率调快。

3、把定时任务执行时间比当前时间拖后5分钟

00 03执行,当前5:00,咱们就把时间调整 05 05,有个5分钟提前量。

4、调整系统时间(测试环境还凑合)否则会造成别的任务混乱

00 03执行,把系统时间调整到2:55。

5、通过脚本日志输出调试定时任务

定时任务输出

* * * * *  /bin/sh /server/scripts/bak.sh &>/tmp/bak.log

脚本输出:

tar zcvf oldboy.tar.gz  ./data &>/tmp/tar.log

注意点:

有时候程序只能执行一次。一定要在测试环境测试好,然后直接复制到正式。

代码发布流程:

办公室测试环境===>IDC机房测试环境===>IDC机房正式环境

防止在正式环境发生错误,从而影响用户体验,业务稳定。

企业故障案例:No space left on device常见企业故障案例

磁盘满的报错,原因往往是inode被占满了。

df -i

因为定时任务没有加&>/dev/null,定时任务执行的时候把输出给系统root发邮件。

邮件服务器postfix服务默认不开,这些给系统发的邮件就会堆在临时目录(大量小文件存在)

/var/spool/clientmqueue/      6

/var/spool/postfix/maildrop/  7

企业故障案例:程序通过手动可以执行,放定时任务里不执行。

export变量生产案例

定时任务在执行脚本的时候,多数情况没办法加载环境变量,特别是/etc/profile。

登录后怎么操作都对,但是就是放到定时任务不行。

命令行:bash登录方式

1.手工登录后,加载所有环境变量(~/.bash_profile,~/.bash_rc,/etc/profile,/etc/bashrc)

2.定时任务执行脚本属于非登录状态(/etc/bashrc)。

实践检验,定时任务能否自动加载/etc/bashrc和/etc/profile文件。

所有运维都会把变量放到此文件/etc/profile,把这个文件里的变量定义

在执行的脚本中 重新定义。

具体为crond执行Shell时只能识别为数不多的系统环境变量,普通环境变量一般是无法识别的,如果在编写的脚本中需要使用变量,最好使用export重新声明下该变量,以确保脚本正确执行。以后要将其作为一个开发基本规范写上。

用户管理知识:

用户相关文件:

/etc/passwd 用户所在文件

/etc/shadow 密码所在文件

useradd oldboy 添加用户实际上就是修改上述两个文件

passwd oldboy  改密码实际上就是修改密码所在文件

用户组相关文件:

/etc/group    用户组所在文件

/etc/gshadow  用户组密码所在文件(废弃状态)

useradd oldboy 添加用户实际上也会修改上述两个文件(因为要创建同名的用户组)

groupadd sa 添加用户组就是修改上述两个文件

md5sum 给文件设置指纹(计算和检查MD5数字信息)

/etc/passwd文件:

Linux是命令行管理,平时输入ls,cp,谁识别,帮我们把我们想要的输出呢?

这个工具就是bash(命令行解释器)

用户登录:输入命令,希望哪个解释器解释(结尾列决定)

/etc/passwd:bingbing:x:1004:1006::/home/bingbing:/bin/bash

CentOS7默认解释器是bash。

/etc/passwd里的解释器

[root@oldboyedu ~]# cat /etc/shells

/bin/sh

/bin/bash

/usr/bin/sh

/usr/bin/bash

bash是sh的扩展,sh是bash的软连接。

[root@oldboyedu ~]# ls -l /bin/sh

lrwxrwxrwx. 1 root root 4 Mar  4 11:15 /bin/sh -> bash

/bin/bash    /server/scripts/bak.sh

[root@oldboyedu ~]# tail -1 /etc/shadow

bingbing  用户

:!!      密码

:17980    最近更改密码的时间

:0        禁止修改密码的天数

:99999    用户必须更改口令的天数

:7        警告更改密码的期限

:   在用户密码过期之后到禁用账户的天数

:   从1970年1月1日起,到用户被禁用的天数

:   保留

/etc/group

/etc/gshadow

[root@oldboyedu ~]# useradd gongli -u 888 -s /sbin/nologin -M

[root@oldboyedu ~]# tail -1 /etc/passwd

gongli:x:888:1007::/home/gongli:/sbin/nologin

bingbing:x:1004:1006::/home/bingbing:/bin/bash

[root@oldboyedu ~]# useradd gongli1 -c "beautify woman" -d /tmp -e '2020/10/20'

useradd: warning: the home directory already exists.

Not copying any file from skel directory into it.

[root@oldboyedu ~]# tail -1 /etc/passwd

gongli1:x:1005:1008:beautify woman:/tmp:/bin/bash

[root@oldboyedu ~]# chage -l gongli1

Last password change : Mar 25, 2019

Password expires : never

Password inactive : never

Account expires : Oct 20, 2020  =================

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

给开发等人员添加用户,尽量给截止时间。

[root@oldboyedu ~]# useradd gongli2 -g incahome

[root@oldboyedu ~]# id gongli2

uid=1006(gongli2) gid=1004(incahome) groups=1004(incahome)

/etc/default/useradd文件 useradd命令的配置文件

默认shell就是/bin/bash

为什么默认的家目录在home下

为什么默认的家目录/home/用户名下面有很多隐藏文件,从哪来的。

就是/etc/default/useradd文件配置的。

[root@oldboyedu ~]# cat /etc/default/useradd

# useradd defaults file

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/bash

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

修改方法:

useradd -D -s /bin/sh  相当于vim编辑/etc/default/useradd文件。

[root@oldboyedu ~]# useradd -D -s /bin/sh

You have new mail in /var/spool/mail/root

[root@oldboyedu ~]# cat /etc/default/useradd

# useradd defaults file

GROUP=100

HOME=/home

INACTIVE=-1

EXPIRE=

SHELL=/bin/sh

SKEL=/etc/skel

CREATE_MAIL_SPOOL=yes

[root@oldboyedu ~]# useradd chenglong1

You have new mail in /var/spool/mail/root

[root@oldboyedu ~]# tail -1 /etc/passwd

chenglong1:x:1007:1009::/home/chenglong1:/bin/sh

[root@oldboyedu ~]# chage -l chenglong1

Last password change : Mar 25, 2019

Password expires : never

Password inactive : never

Account expires : Oct 21, 2020

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

/etc/skel目录,创建用户默认就会把此目录下的文件拷贝到/home/用户名下。

/etc/skel 为每个用户提供用户环境变量的目录。

[root@oldboyedu ~]# ls /etc/skel -A

.bash_logout  .bash_profile  .bashrc

===================================================

.bash_logout  .bash_profile  .bashrc 用户环境变量

登录系统后,命令行出现如下提示:为什么?

[root@oldboyedu /home/chenglong1]# su - chenglong1

-sh-4.2$

-sh-4.2$

解答:用户的环境变量缺失导致的。

执行如下命令解决

-sh-4.2$ cp /etc/skel/.bash* .

-sh-4.2$ source ./.bash_profile ./.bashrc

[chenglong1@oldboyedu ~]$

[chenglong1@oldboyedu ~]$

-sh-4.2$ export PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \w\[\e[0m\]]\$'

[chenglong1@oldboyedu ~]$

添加用户要用的文件

/etc/login.defs 了解

添加用户要用的文件

/etc/login.defs  /etc/skel /etc/default/useradd

编辑/etc/passwd,通过注释来删除。

#chenglong1:x:1007:1009::/home/chenglong1:/bin/sh

"/etc/passwd" 30L, 1362C written                                                             

[root@oldboyedu ~]# su - chenglong1

su: user chenglong1 does not exist

[root@oldboyedu ~]# useradd -u 9999 -s /bin/sh -M -g sa -c "老男孩" -e "2019/5/1" zongsheng

[root@oldboyedu ~]# tail -1 /etc/passwd

zongsheng:x:9999:1003:老男孩:/home/zongsheng:/bin/sh

[root@oldboyedu ~]# id zongsheng

uid=9999(zongsheng) gid=1003(sa) groups=1003(sa)

[root@oldboyedu ~]# chage -l zongsheng

Last password change : Mar 25, 2019

Password expires : never

Password inactive : never

Account expires : May 01, 2019

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

usermod -u 8888 -s /bin/bash -m /home/zongsheng -g incahome -c "男孩" -e "2020/5/1"

[root@oldboyedu ~]# usermod -u 8888 -s /bin/bash -g incahome -c "男孩" -e "2020/5/1" zongsheng

[root@oldboyedu ~]# chage -l zongsheng

Last password change : Mar 25, 2019

Password expires : never

Password inactive : never

Account expires : May 01, 2020

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

[root@oldboyedu ~]# id zongsheng

uid=8888(zongsheng) gid=1004(incahome) groups=1004(incahome)

[root@oldboyedu ~]# tail -1 /etc/passwd

zongsheng:x:8888:1004:男孩:/home/zongsheng:/bin/bash

You have new mail in /var/spool/mail/root

usermod -u 8888 -s /bin/bash -g incahome -c "男孩" -e "2020/5/1" zongsheng

usermod -m /home/zongsheng zongsheng

不交互设置密码:

方法1:

[root@oldboyedu ~]# echo 123456|passwd --stdin oldgirl

Changing password for user oldgirl.

passwd: all authentication tokens updated successfully.

方法2:

[root@oldboyedu ~]# echo 123456 >pass

[root@oldboyedu ~]# cat pass

123456

[root@oldboyedu ~]# passwd --stdin oldgirl <pass

Changing password for user oldgirl.

passwd: all authentication tokens updated successfully.

[root@oldboyedu ~]# tail -4 /etc/passwd|awk -F ":" '{print $1":oldboy"}' >user.log

[root@oldboyedu ~]# cat user.log

gongli1:oldboy

gongli2:oldboy

chenglong1:oldboy

zongsheng:oldboy

chpasswd对密码文件的要求是上述user.log

方法1:

[root@oldboyedu ~]# chpasswd<user.log

方法2:

[root@oldboyedu ~]# tail -4 /etc/passwd|awk -F ":" '{print $1":oldboy"}'|chpasswd

批量创建10个用户,oldboy01-oldboy10,请设置和用户名相同的密码。

DAY 19

范例14-17:创建新用户range,要求该用户7天内不能更改密码,

60天以后必须修改密码,过期前10天通知用户,过期后30天后禁止用户登录。

chage -m7 -M60 -W10 -I30 oldboy

联系英文:

Options:

  -d, --lastday LAST_DAY        set date of last password change to LAST_DAY

  -E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE

  -h, --help                    display this help message and exit

  -I, --inactive INACTIVE      set password inactive after expiration

                                to INACTIVE

  -l, --list                    show account aging information

  -m, --mindays MIN_DAYS        set minimum number of days before password

                                change to MIN_DAYS

  -M, --maxdays MAX_DAYS        set maximim number of days before password

                                change to MAX_DAYS

  -R, --root CHROOT_DIR        directory to chroot into

  -W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS


[root@oldboyedu ~]# chage -l oldboy

Last password change : Oct 07, 2020

Password expires : never

Password inactive : never

Account expires : Oct 01, 2020

Minimum number of days between password change : 0

Maximum number of days between password change : 99999

Number of days of warning before password expires : 7

You have new mail in /var/spool/mail/root

[root@oldboyedu ~]# chage -m7 -M60 -W10 -I30 oldboy

[root@oldboyedu ~]# chage -l oldboy

Last password change : Oct 07, 2020

Password expires : Dec 06, 2020

Password inactive : Jan 05, 2021

Account expires : Oct 01, 2020

Minimum number of days between password change : 7

Maximum number of days between password change : 60

Number of days of warning before password expires : 10

passwd -n70 -x600 -w100 -i300 oldboy

[root@oldboyedu ~]# passwd -n70 -x600 -w100 -i300 oldboy

Adjusting aging data for user oldboy.

passwd: Success

You have new mail in /var/spool/mail/root

[root@oldboyedu ~]# chage -l oldboy

Last password change : Oct 07, 2020

Password expires : May 30, 2022

Password inactive : Mar 26, 2023

Account expires : Oct 01, 2020

Minimum number of days between password change : 70

Maximum number of days between password change : 600

Number of days of warning before password expires : 100

-n, --minimum DAYS

              This  will  set  the  minimum password lifetime, in days, if the user's account supports password life‐

              times.  Available to root only.

-x, --maximum DAYS

              This will set the maximum password lifetime, in days, if the user's  account  supports  password  life‐

              times.  Available to root only.

-w, --warning DAYS

              This  will  set  the number of days in advance the user will begin receiving warnings that her password

              will expire, if the user's account supports password lifetimes.  Available to root only.

-i, --inactive DAYS

[root@oldboyedu ~]# su - oldboy -c pwd

/home/oldboy

[root@oldboyedu ~]# su - oldboy -c whoami

oldboy

怎么用su。

1、先登录普通用户,没事不允许登录root。

只有执行的任务需要root权限的时候才允许你登录root。

系统维护通道。

用su管理,必须知道root密码,安全隐患。

10个运维,都得知道root密码,安全隐患。

需求:

1、不用知道root密码还能管理服务器。

2、最小化管理服务器,想关机,就只给你halt权限。

sudo命令:

可以以最小化的权限(单个命令),执行命令时拥有root用户的权限

SUID 针对命令,任何用户执行命令都有root身份。    任何用户执行某个命令:模糊

SUDO 针对用户,给某个用户以root身份执行某个命令。指定用户执行某个命令:具体。

如何编辑配置sudo?

sudo是一个提权的命令(对应权限通过读取/etc/sudoers(严格语法)文件实现的)

配置/etc/sudoers可以使用visudo命令,或vim /etc/sudoers(不推荐)

[oldboy@oldboyedu ~]$ ls /root

ls: cannot open directory /root: Permission denied

完成上面的动作。

给oldboy用户,针对ls设置权限。

visudo进入编辑状态,100G

## Allow root to run any commands anywhere

root    ALL=(ALL)      ALL

oldboy  ALL=(ALL)      /usr/bin/ls,/bin/cp  #<===增加一行

用户        主机=(角色)      命令

注意:

1、路径要全路径:

which cp查

2、不要vim /etc/sudoers编辑,如果非要用编辑完visudo -c检查语法

oldboy是管理员,并且不要密码:

oldboy  ALL=(ALL)      NOPASSWD: ALL

登录后切到root运行。

[oldboy@oldboyedu ~]$ sudo su - root

Last login: Tue Mar 26 10:32:57 CST 2019 on pts/3

[root@oldboyedu ~]#

为了安全禁止root远程连接linux。

工作中如何登录?使用普通用户登录然后利用sudo提权到root。

Wecomle to oldboy training 58期。

[oldboy@oldboyedu ~]$ whoami

oldboy

[oldboy@oldboyedu ~]$ sudo ls /root

a.txt  c.txt  data1  etc      oldboy     oldboy_b     oldboy_soft_link  pass  test.txt   user.log

b.txt  d      d.txt  grep.txt  oldboy_1.txt  oldboyedu.txt  oldboy.txt       test  test.txt.ori

[oldboy@oldboyedu ~]$

[oldboy@oldboyedu ~]$

[oldboy@oldboyedu ~]$ sudo su -

Last login: Tue Mar 26 11:42:09 CST 2019 on pts/0

[root@oldboyedu ~]#

[root@oldboyedu ~]# su - oldboy

Last login: Tue Mar 26 10:44:08 CST 2019 on pts/3

[oldboy@oldboyedu ~]$ ls /root

ls: cannot open directory /root: Permission denied

[oldboy@oldboyedu ~]$ sudo -l

We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.

    #2) Think before you type.

    #3) With great power comes great responsibility.

[sudo] password for oldboy:

Matching Defaults entries for oldboy on oldboyedu:

User oldboy may run the following commands on oldboyedu:

    (ALL) /bin/ls

[oldboy@oldboyedu ~]$ sudo ls /root

a.txt  c.txt  data1  etc      oldboy     oldboy_b     oldboy_soft_link  pass  test.txt   user.log

b.txt  d      d.txt  grep.txt  oldboy_1.txt  oldboyedu.txt  oldboy.txt       test  test.txt.ori

[oldboy@oldboyedu ~]$ ls /root

ls: cannot open directory /root: Permission denied

[oldboy@oldboyedu ~]$

DAY 20

磁盘历史和内外部物理结构介绍

发展趋势          解决办法

体积更小          存储密度更高

速度更快          读写更灵敏的磁头,主轴转数更高,接口更先进

容量更大          存储密度更高,介质更好

使用更安全        数据保存技术

磁盘的接口类型

IDE  SCCSI(这两个淘汰了)  SATA 光纤FC SAS 

SSD接口有SATA  PCIE M2

SATA接口是SATA

SAS接口是SAS

磁盘选购小结:

线上的业务,用SAS磁盘。

线下的业务,用SATA磁盘,磁带库

线上高并发,小容量的业务,SSD磁盘

成本控制思想:根据数据的访问热度,智能分析分层存储。SATA+SSD

SAS:满足容量的基础  性能中等

SATA理由:1.没钱。 2.数据量少,数据不需要给用户提供服务。 3. 用于备份。

容量性价比高。

SSD

特点:容量小  价格贵 速度快。

名词

——————————

一个磁盘有多个盘面,盘面上会有一个读写磁头。(磁头数=盘片个数*2)

不同的盘面的磁道被划分称为多个扇形区域,每个区域就是一个扇区

磁盘在格式化时被分成许多同心圆,这些同心圆的轨迹叫做磁道 300-1024

不同盘面的相同半径的磁道,叫做柱面。

一个柱面包含多个磁道,一个磁道包含多个扇区

数据信息记录可表示为:某磁头,某磁道,某扇面。

磁道:看起来是一个平面圆周形

扇区:不同的磁道被直线分为多个弧形,看起来就是圆弧或扇形 512字节

柱面:看起来是一个圆柱体

三维位置

————————————

0磁头0磁道1扇区  系统位置

容量计算

——————————————

磁盘大小·

512字节*每磁道扇区数=磁道大小

磁道大小*磁道数=盘面大小

盘面大小*磁头数=磁盘容量

磁盘容量=盘面大小*磁头数*磁道数=512*磁道数*每磁道扇区数

柱面大小=磁道大小*磁头数

磁道大小=512*每磁道扇区数

磁盘容量=512字节*每磁道扇区数*柱面数*磁头数

读写数据原理

——————————————

1.读取同一个盘面的某一磁道

2.若仍未读取完,切换磁头,读取下一个盘面的相同半径的磁道

3.未仍读取完,切换磁头到所有盘面的相同半径的磁道完成。

4.若仍未读取完,则切换其他不同半径的磁道。

寻道:

按柱面为单位读写数据,

即先读取同一个盘面的某一个磁道,

没有读完 就切换磁头,读取下一个盘面的相同半径的磁道,

直到所有盘面相同半径的磁道读取完成之后,如果还没有完成,就切换其他不同半径的磁道。

磁头之间的切换是电子切换, 磁头寻道是机械运动。

————————————————————————————————————————————————————————————————

企业案例:

不要用SATA磁盘做在线高并发服务的数据存储或数据库业务。

某公司采用SATA做数据库存储盘,宕机一个月。

5台SATA盘(raid5) 换成了SAS(raid10), 6个月没出问题。

1.主库选择使用SAS raid10  从库SAS raid0

2.当数据库使用的引擎是MyISAM 换成Innodb

淘宝分级策略:

根据数据的访问热度,智能分析分层存储。SATA+SSD

DAY21

Raid是廉价冗余磁盘阵列(Redundant Array of Inexpensive Disk)的简称, 有时也简称磁盘阵列(Disk Array)。

RAID分为两类:

软RAID,系统层面实现的,性能差。

硬RAID,硬件层面实现的,性能好。

        主板板载RAID:功能弱,0,1

独立RAID卡:功能强,0,1,5,10 *****工作选择。

LVM全称(Logic Volume Management (Manager))逻辑卷管理,它的最大用途是可以【灵活的管理磁盘的容量】,让磁盘分区可以随意放大或缩小,便于更好的应用磁盘的剩余空间,如果过于强调性能与备份,那么还是应该使用RAID功能,而不是LVM。

LVM是软件层面实现的,性能太低。性能降低5-10%。

买服务器插满磁盘,分区规划好,永远都不需要LVM。

RAID1又称为Mirror或Mirroring(镜像),

它的宗旨是最大限度的保证用户数据的可用性和可修复性。

RAID1的操作方式是把用户写入一个磁盘的数据百分之百地自动复制到另外

一个磁盘上,从而实现存储双份的数据。

RAID5描述 中庸

RAID5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。

RAID5需要三块或以上的物理磁盘,可以提供热备盘实现故障的恢复;

采用【奇偶校验】,可靠性强,且只有同时损坏两块硬盘时数据才会完全损坏,

只损坏一块硬盘时,系统会根据存储的奇偶校验位重建数据,临时提供服务;此时如果有热备盘,系统还会自动在热备盘上重建故障磁盘上的数据;

分区知识:

回忆:

(1)什么是分区?

磁盘分区就相当于给磁盘打隔断。

(2)磁盘和分区在Linux里的命名。

IDE /dev/hda hdb

SCSI sda sdb

分区数字表示:sda1 sda2 sda3

(3)磁盘分区类型和特点:

1、主分区(primary)P

  1)系统中必须要存在的分区,系统盘选择主分区安装。

  2)数字编号只能是1-4.sda1、sda2、sda3、sda4。

  3)主分区最多四个,最少一个。

2、扩展分区(extend)E

  1)相当于一个独立的小磁盘。独立的分区表,不能独立存在。

  2)有独立的分区表。

  3)不能独立存在,即不能直接存放数据。

  4)必须在扩展分区上建立逻辑分区才能存放数据。

  5)占用主分区的编号(主分区+扩展分区)之和最多4个。

  6)扩展分区可以没有,最多只能有一个。

3、逻辑分区(logic)L

  2)数字编号只能是从5开始。

  3)存放于扩展分区之上。

  4)存放任意普通数据。


磁盘分区注意事项要点

一块硬盘的分区方式只能为如下组合之一:

(1)任意多个主分区,但要求1≤主分区数量≤4。

例如:一个硬盘可以分为4个主分区3个主分区2个主分区或1个主分区。

(2)扩展分区可以和主分区组合,但要求2≤(主分区+扩展分区)数量≤4)。

例如:3个主分区+1个扩展分区或2个主分区+1个扩展分区或1个主分区+1个扩展分区。

当总分区的数量大于4个的时候,必须提前分一个扩展分区,扩展分区最多只能有一个。

(3)如果要分成四个磁盘分区的话,那么最多就是可以:

P + P + P + P

P + P + P + E

问题:如果给一个磁盘分6个分区有哪些方案,同时写出分区/dev/sda(数字)。

3P+1E(3L)  1 2 3 5 6 7

2P+1E(4L)  12 5678

1P+1E(5L)  1 56789

分区分完了,空间还有剩余浪费掉空间。

P + P + P + P

(4)磁盘分区工作原理:

磁盘是按柱面分区的。

磁盘分区登记的地点,磁盘分区表。

磁盘分区表存放分区结果信息的。

磁盘分区表位置,0磁道0磁头1扇区(512字节)

占用1扇区的前446字节(系统引导信息的)后面的64字节(分区表),

剩下2个字节分区结束标志。

磁盘分区表的容量是有限的,64字节,一个分区固定占16字节。

64/16=4分区(主分区+扩展分区)

(5)磁盘分区实战

磁盘分区关键就是修改64字节的的分区表而已。

磁盘分区常用命令fdisk,修改MBR分区表,MBR格式。

缺陷,被修改的磁盘大小不能大于2T。

磁盘分区其他命令parted,gpt分区格式,既能修改小于2T也能修改大于2T的磁盘。

小于2T就用fdisk

大于2T就用parted

[root@oldboyedu ~]# fdisk -l

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x000cd234

  Device Boot      Start        End      Blocks  Id  System

/dev/sda1  *        2048      526335      262144  83  Linux

/dev/sda2          526336    2099199      786432  82  Linux swap / Solaris

/dev/sda3        2099200    41943039    19921920  83  Linux

[root@oldboyedu ~]# fdisk /dev/sdb  #<==开始给sdb磁盘分区

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0xbc9b0906.

Command (m for help): m  #<==查看分区的帮助信息。

Command action

  a  toggle a bootable flag

  b  edit bsd disklabel

  c  toggle the dos compatibility flag

  d  delete a partition            #<==删除一个分区。

  g  create a new empty GPT partition table

  G  create an IRIX (SGI) partition table

  l  list known partition types

  m  print this menu              #<==查看分区的帮助信息。

  n  add a new partition          #<==添加一个新分区。

  o  create a new empty DOS partition table

  p  print the partition table    #<==查看分区结果信息。

  q  quit without saving changes  #<==退出不保存。

  s  create a new empty Sun disklabel

  t  change a partition's system id

  u  change display/entry units

  v  verify the partition table

  w  write table to disk and exit  #<==保存并退出。

  x  extra functionality (experts only)

Command (m for help):

开始实践:

如果给一个磁盘分6个分区有哪些方案,同时写出分区/dev/sda(数字)。

3P+1E(3L)  1 2 3 5 6 7

2P+1E(4L)  12 5678

1P+1E(5L)  1 56789

用下面方案:

3P+1E(3L)  1 2 3 5 6 7 每个150M

DAY 22

[root@oldboyedu ~]# parted /dev/sdb  #交互式开始分区

GNU Parted 3.1

Using /dev/sdb

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) help

(parted) mklabel gpt  #修改分区格式为gpt                                                   

Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to

continue?

Yes/No? Yes                                                       

(parted) p                                                               

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 1074MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt  #修改结果

(parted) mkpart primary 0 480  #创建第一个主分区480M。

Warning: The resulting partition is not properly aligned for best performance.

Ignore/Cancel? Ignore #忽略提示。                                                           

(parted) mkpart primary 481 580 #创建第二个主分区100M。

Warning: You requested a partition from 481MB to 580MB (sectors 939453..1132812).

The closest location we can manage is 481MB to 481MB (sectors 940031..940031).

Is this still acceptable to you?

Yes/No? Y                                                             

Warning: The resulting partition is not properly aligned for best performance.

Ignore/Cancel? I #忽略提示。                                                       

(parted) mkpart logic 581 600 #创建一个20M逻辑分区。

(parted) p                                                               

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 1074MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

Number  Start  End    Size    File system  Name    Flags

1      17.4kB  480MB  480MB                primary

3      481MB  481MB  512B                primary

2      481MB  580MB  98.6MB              primary

4      581MB  600MB  18.9MB              logic

(parted) rm 4  #删除                                             

(parted) p                                                               

分区被parted搞了。

修改分区格式:

(parted) mklabel msdos

Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to

continue?

Yes/No? Y                                                           

(parted) p                                                               

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 1074MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

创建分区:

[root@oldboyedu ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Command (m for help): n

Partition type:

  p  primary (0 primary, 0 extended, 4 free)

  e  extended

Select (default p): p

Partition number (1-4, default 1):

First sector (2048-2097151, default 2048):

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): +100M

Partition 1 of type Linux and of size 100 MiB is set

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x000006b6

  Device Boot      Start        End      Blocks  Id  System

/dev/sdb1            2048      206847      102400  83  Linux

Command (m for help): n

Partition type:

  p  primary (1 primary, 0 extended, 3 free)

  e  extended

Select (default p): p

Partition number (2-4, default 2):

First sector (206848-2097151, default 206848):

Using default value 206848

Last sector, +sectors or +size{K,M,G} (206848-2097151, default 2097151): +100M

Partition 2 of type Linux and of size 100 MiB is set

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x000006b6

  Device Boot      Start        End      Blocks  Id  System

/dev/sdb1            2048      206847      102400  83  Linux

/dev/sdb2          206848      411647      102400  83  Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

[root@oldboyedu ~]# ls -l /dev/sdb*

brw-rw---- 1 root disk 8, 16 Mar 29 11:31 /dev/sdb

brw-rw---- 1 root disk 8, 17 Mar 29 11:31 /dev/sdb1

brw-rw---- 1 root disk 8, 18 Mar 29 11:31 /dev/sdb2

[root@oldboyedu ~]# mkfs -t ext4 /dev/sdb1 #格式化ext4文件系统 mkfs.ext4

其实关键就是生成一定数量的Inode和Block。

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

25688 inodes, 102400 blocks

5120 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=33685504

13 block groups

8192 blocks per group, 8192 fragments per group

1976 inodes per group

Superblock backups stored on blocks:

8193, 24577, 40961, 57345, 73729

Allocating group tables: done                           

Writing inode tables: done                           

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

挂载:    开门、开窗住人使用

[root@oldboyedu ~]# mount  /dev/sdb1 /mnt #临时挂载到/mnt

[root@oldboyedu ~]# df -h #查看挂载结果

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G  18G  10% /

devtmpfs        980M  5.0M  975M  1% /dev

tmpfs          991M    0  991M  0% /dev/shm

tmpfs          991M  18M  973M  2% /run

tmpfs          991M    0  991M  0% /sys/fs/cgroup

/dev/sda1      253M  136M  118M  54% /boot

tmpfs          199M    0  199M  0% /run/user/0

tmpfs          199M    0  199M  0% /run/user/1000

/dev/sdb1        93M  1.6M  85M  2% /mnt #<====已挂载。

[root@oldboyedu ~]# cat /proc/mounts  #查看挂载结果

rootfs / rootfs rw 0 0

sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0

proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0

configfs /sys/kernel/config configfs rw,relatime 0 0

/dev/sda3 / xfs rw,relatime,attr2,inode64,noquota 0 0

systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=32,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=19277 0 0

hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0

debugfs /sys/kernel/debug debugfs rw,relatime 0 0

mqueue /dev/mqueue mqueue rw,relatime 0 0

/dev/sda1 /boot xfs rw,relatime,attr2,inode64,noquota 0 0

tmpfs /run/user/0 tmpfs rw,nosuid,nodev,relatime,size=202812k,mode=700 0 0

tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=202812k,mode=700,uid=1000,gid=1000 0 0

/dev/sdb1 /mnt ext4 rw,relatime,data=ordered 0 0 #<==已挂载。

[root@oldboyedu ~]# touch /mnt/oldboy  #<==测试。

[root@oldboyedu ~]# ls /mnt

lost+found  oldboy

[root@oldboyedu /mnt]# umount /mnt

umount: /mnt: target is busy.

        (In some cases useful info about processes that use

        the device is found by lsof(8) or fuser(1))

[root@oldboyedu /mnt]# pwd

/mnt

You have new mail in /var/spool/mail/root

[root@oldboyedu /mnt]# umount -lf /mnt    #<==强制卸载

[root@oldboyedu /mnt]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G  18G  10% /

devtmpfs        980M  5.0M  975M  1% /dev

tmpfs          991M    0  991M  0% /dev/shm

tmpfs          991M  18M  973M  2% /run

tmpfs          991M    0  991M  0% /sys/fs/cgroup

/dev/sda1      253M  136M  118M  54% /boot

tmpfs          199M    0  199M  0% /run/user/0

tmpfs          199M    0  199M  0% /run/user/1000

[root@oldboyedu ~]# mount /dev/sdb2 /opt  #没有格式化没法挂载

mount: /dev/sdb2 is write-protected, mounting read-only

mount: unknown filesystem type '(null)'

[root@oldboyedu ~]# mkfs.xfs /dev/sdb2  #格式化xfs文件系统

meta-data=/dev/sdb2              isize=512    agcount=4, agsize=6400 blks

        =                      sectsz=512  attr=2, projid32bit=1

        =                      crc=1        finobt=0, sparse=0

data    =                      bsize=4096  blocks=25600, imaxpct=25

        =                      sunit=0      swidth=0 blks

naming  =version 2              bsize=4096  ascii-ci=0 ftype=1

log      =internal log          bsize=4096  blocks=855, version=2

        =                      sectsz=512  sunit=0 blks, lazy-count=1

realtime =none                  extsz=4096  blocks=0, rtextents=0

[root@oldboyedu ~]# mount -t xfs /dev/sdb2 /opt

You have new mail in /var/spool/mail/root

[root@oldboyedu ~]# df -h|grep opt

/dev/sdb2        97M  5.3M  92M  6% /opt

[root@oldboyedu ~]# touch /opt/oldgirl

[root@oldboyedu ~]# ls /opt

oldgirl

如何开机自动挂载?

/etc/fstab 开机自动挂载

几列? 6列

[root@oldboyedu ~]# cat /etc/fstab

UUID=3a3a295f-88f8-456d-94dc-1a3eeb517c02 /            xfs    defaults          0            0

UUID=fd2e0ca7-32be-425f-86a2-85c02b9ec5ea /boot        xfs    defaults          0            0

UUID=79a3924b-739e-48dc-ab0c-0444b9ac6591 swap        swap    defaults          0            0

设备                                      挂载点  文件系统类型  默认挂载选项  是否备份  是否开机磁盘检查

/dev/sdb2                                /opt        xfs    defaults          0      0

mount -t xfs /dev/sdb2 /opt

[root@oldboyedu ~]# blkid

/dev/sdb1: UUID="a45b004f-2322-4dc4-a281-2a212dd2ab79" TYPE="ext4"

/dev/sdb2: UUID="7daf8142-b641-4b60-a287-4e08dfa18611" TYPE="xfs"

/dev/sda1: UUID="fd2e0ca7-32be-425f-86a2-85c02b9ec5ea" TYPE="xfs"

/dev/sda2: UUID="79a3924b-739e-48dc-ab0c-0444b9ac6591" TYPE="swap"

/dev/sda3: UUID="3a3a295f-88f8-456d-94dc-1a3eeb517c02" TYPE="xfs"

[root@oldboyedu ~]# tail -1 /etc/fstab

/dev/sdb2                                /opt                    xfs    defaults        0 0

mount -a 可以将fstab里的信息挂载。

放入/etc/rc.local 实现自动挂载 但不推荐。

/sbin/mount -t xfs /dev/sdb2 /opt

查看:

[root@oldboyedu ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G  18G  10% /

devtmpfs        980M    0  980M  0% /dev

tmpfs          991M    0  991M  0% /dev/shm

tmpfs          991M  9.6M  981M  1% /run

tmpfs          991M    0  991M  0% /sys/fs/cgroup

/dev/sdb2        97M  5.3M  92M  6% /opt

/dev/sda1      253M  136M  118M  54% /boot

tmpfs          199M    0  199M  0% /run/user/0

tmpfs          199M    0  199M  0% /run/user/1000

[root@oldboyedu ~]# df -i

Filesystem      Inodes IUsed  IFree IUse% Mounted on

/dev/sda3      9960960 74572 9886388    1% /

devtmpfs        250820  390  250430    1% /dev

tmpfs          253514    1  253513    1% /dev/shm

tmpfs          253514  724  252790    1% /run

tmpfs          253514    16  253498    1% /sys/fs/cgroup

/dev/sdb2        51200    4  51196    1% /opt

/dev/sda1      131072  332  130740    1% /boot

tmpfs          253514    1  253513    1% /run/user/0

tmpfs          253514    1  253513    1% /run/user/1000

[root@oldboyedu ~]# blkid

/dev/sdb1: UUID="a45b004f-2322-4dc4-a281-2a212dd2ab79" TYPE="ext4"

/dev/sdb2: UUID="7daf8142-b641-4b60-a287-4e08dfa18611" TYPE="xfs"

/dev/sda1: UUID="fd2e0ca7-32be-425f-86a2-85c02b9ec5ea" TYPE="xfs"

/dev/sda2: UUID="79a3924b-739e-48dc-ab0c-0444b9ac6591" TYPE="swap"

/dev/sda3: UUID="3a3a295f-88f8-456d-94dc-1a3eeb517c02" TYPE="xfs"

查看文件系统内部细节:

[root@oldboyedu ~]# dumpe2fs /dev/sdb1 #查看ext文件系统内部细节

[root@oldboyedu ~]# dumpe2fs /dev/sdb1|egrep -i "size"

dumpe2fs 1.42.9 (28-Dec-2013)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize

Block size:              1024

Fragment size:            1024

Group descriptor size:    64

Flex block group size:    16

Inode size:           128

Journal size:            4096k

[root@oldboyedu ~]# xfs_

xfs_admin      xfs_db        xfs_fsr        xfs_io        xfs_metadump  xfs_quota     

xfs_bmap      xfs_estimate  xfs_growfs    xfs_logprint  xfs_mkfile    xfs_repair   

xfs_copy      xfs_freeze    xfs_info      xfs_mdrestore  xfs_ncheck    xfs_rtcp     

[root@oldboyedu ~]# xfs_

[root@oldboyedu ~]# xfs_info /dev/sda1

meta-data=/dev/sda1              isize=512    agcount=4, agsize=16384 blks

        =                      sectsz=512  attr=2, projid32bit=1

        =                      crc=1        finobt=0 spinodes=0

data    =                      bsize=4096  blocks=65536, imaxpct=25

        =                      sunit=0      swidth=0 blks

naming  =version 2              bsize=4096  ascii-ci=0 ftype=1

log      =internal              bsize=4096  blocks=855, version=2

        =                      sectsz=512  sunit=0 blks, lazy-count=1

realtime =none                  extsz=4096  blocks=0, rtextents=0

[root@oldboyedu ~]# fsck

fsck        fsck.btrfs  fsck.cramfs  fsck.ext2    fsck.ext3    fsck.ext4    fsck.minix  fsck.xfs   

[root@oldboyedu ~]# fsck

fsck 磁盘检查和修复

1、正常的磁盘不能操作。

2、卸载挂载点在操作

[root@oldboyedu ~]# fsck -a /dev/sdb1

fsck from util-linux 2.23.2

/dev/sdb1: clean, 12/25688 files, 8896/102400 blocks

[root@oldboyedu ~]# mount /dev/sdb1 /mnt

[root@oldboyedu ~]# fsck -a /dev/sdb1

fsck from util-linux 2.23.2

/dev/sdb1 is mounted.

e2fsck: Cannot continue, aborting.

[root@oldboyedu ~]# e2fsck /dev/sdb1

e2fsck 1.42.9 (28-Dec-2013)

/dev/sdb1: clean, 12/25688 files, 8896/102400 blocks

[root@oldboyedu ~]# fsck -a /dev/sdb1

fsck from util-linux 2.23.2

/dev/sdb1: clean, 12/25688 files, 8896/102400 blocks

[root@oldboyedu ~]# xfs_repair /dev/sdb2

xfs_repair: /dev/sdb2 contains a mounted filesystem

xfs_repair: /dev/sdb2 contains a mounted and writable filesystem

fatal error -- couldn't initialize XFS library

[root@oldboyedu ~]# umount /opt

[root@oldboyedu ~]# xfs_repair /dev/sdb2

Phase 1 - find and verify superblock...

Phase 2 - using internal log

        - zero log...

        - scan filesystem freespace and inode maps...

        - found root inode chunk

Phase 3 - for each AG...

        - scan and clear agi unlinked lists...

        - process known inodes and perform inode discovery...

        - agno = 0

        - agno = 1

        - agno = 2

        - agno = 3

        - process newly discovered inodes...

Phase 4 - check for duplicate blocks...

        - setting up duplicate extent list...

        - check for inodes claiming duplicate blocks...

        - agno = 0

        - agno = 1

        - agno = 2

        - agno = 3

Phase 5 - rebuild AG headers and trees...

        - reset superblock...

Phase 6 - check inode connectivity...

        - resetting contents of realtime bitmap and summary inodes

        - traversing filesystem ...

        - traversal finished ...

        - moving disconnected inodes to lost+found ...

Phase 7 - verify and correct link counts...

done

==============================指定块大小和inode大小格式===========================================

[root@oldboyedu ~]# mkfs -t ext4 -b 4096 -I 512 /dev/sdb3

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

38400 inodes, 38400 blocks

1920 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=39845888

2 block groups

32768 blocks per group, 32768 fragments per group

19200 inodes per group

Superblock backups stored on blocks:

32768

Allocating group tables: done                           

Writing inode tables: done                           

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

[root@oldboyedu ~]# dumpe2fs /dev/sdb3|egrep -i "size"

dumpe2fs 1.42.9 (28-Dec-2013)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

Block size:              4096

Fragment size:            4096

Group descriptor size:    64

Flex block group size:    16

Inode size:               512

Required extra isize:    28

Desired extra isize:      28

Journal size:            16M

文件删除原理

no space left on device.

swap作用,内存不够时候,用来充当内存,一般内存1.5倍。大于8G给8G

将来JAVA服务,内存泄漏。。。

swap就会占用。。。操作系统性能下降

[root@oldboyedu ~]# free -m

              total        used        free      shared  buff/cache  available

Mem:          1980        143        1689          9        146        1671

Swap:          767          0        767

增加swap分区 100M

[root@oldboyedu ~]# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Command (m for help): n

Partition type:

  p  primary (3 primary, 0 extended, 1 free)

  e  extended

Select (default e): p

Selected partition 4

First sector (718848-2097151, default 718848):

Using default value 718848

Last sector, +sectors or +size{K,M,G} (718848-2097151, default 2097151): +150M

Partition 4 of type Linux and of size 150 MiB is set

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk label type: dos

Disk identifier: 0x000006b6

  Device Boot      Start        End      Blocks  Id  System

/dev/sdb1            2048      206847      102400  83  Linux

/dev/sdb2          206848      411647      102400  83  Linux

/dev/sdb3          411648      718847      153600  83  Linux

/dev/sdb4          718848    1026047      153600  83  Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.

[root@oldboyedu ~]# partprobe /dev/sdb

[root@oldboyedu ~]# mkswap /dev/sdb4

Setting up swapspace version 1, size = 153596 KiB

no label, UUID=2d1ac352-4cc0-4727-8318-5526a3c309c2

[root@oldboyedu ~]# swapon -a /dev/sdb4

You have new mail in /var/spool/mail/root

[root@oldboyedu ~]# free -m

              total        used        free      shared  buff/cache  available

Mem:          1980        144        1673          19        162        1658

Swap:          917          0        917

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容