Linux基础学习笔记

安装虚拟机

首先从阿里镜像官网下载centos6.5的ISO镜像文件,然后用VMware安装centos的虚拟机。

安装虚拟机

填写需要创建的虚拟机的基本配置信息,暂时把内存设为1GB,硬盘最大20GB。然后就是把刚刚下载的ISO镜像放入安装引导,进入centos6.5系统的安装步骤。安装步骤非常简单,就是一直填写一些配置信息即可。之后一直Xshell来连接虚拟机,因为它比自带的centos终端界面更加友好,功能更加强大。由于安装的centos6.5系统自带了图形化界面,但是图形化界面太消耗内容了,所以就关闭了开机启动图形化界面,在/etc/inittab将原先的"id:5:initdefault:"中的5修改为3即可。

配置虚拟机

  1. 网络配置

虚拟机的配置最主要的是网络,其目的是使得所有的虚拟机既可以访问到外网,也可以相

互之间ping得通。这里采用NAT+仅主机模式实现。

首先给出虚拟机网络通信的原理图

虚拟机网络结构图

在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。VMware Network Adapter VMnet8虚拟网卡主要是为了实现主机与虚拟机之间的通信。

配置子网和网关

子网和网关

因为虚拟机默认开机是不会加载网络服务的,所以还需要修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,使开机自动启动。

IP地址采用动态主机配置协议dhcp进行自动分配ip地址。

但是考虑到之后所用的一些组件(如zookeeper的配置文件)需要配置ip地址,如果采取动态分配ip地址的方法,ip地址改变后,配置就会随之失败,所以改为静态ip地址的配置方法。

静态ip地址需要修改/etc/sysconfig/network-scripts/ifcfg-eth0文件

首先将BOOTPROTP改为静态获取ip地址,然后填写和上面vmware网络处于一个网段的ip地址和对应的子网掩码,最后网关填写vmware填写的网关,DNS填写自己想要的DNS服务器。

因为改为了静态获取ip地址和网关等,还需要修改宿主机上VMware Network Adapter VMnet8的ip地址的网关,才能使得主机和虚拟机之间相互通信,最后需要注意的是要关闭虚拟机和宿主机的防火墙,不然会使得ping不通。

填写刚刚配置的网关。

然后就可以获得静态ip地址的虚拟机了。

  1. Java运行环境配置

虽然下载的centos系统中自带了openjdk的,但是openjdk和oracle的JDK之间有很多细节的东西不一样,而且oracle的JDK比openjdk也多了许多功能,所以先卸载openjdk再安装oracle的JDK。

使用rpm -qa | grep java命令先查看系统自带的jdk相关的内容,其中rpm是包管理工具,所以rpm -qa就是获取所有被安装的rpm package.而|符号是管道,意思是前者的输出作为后者的输入。Grep java意思是搜索出所有包含java字符的项目,所以这条命令合起来就是搜索出所有的java相关的包。得到了openjdk相关的包后并将其用rm命令删除。然后在oracle官网下载JDK的tar.gz包,放进新建的/export/server目录,因为linux的目录各有自己表示的意义,所以这里新建一个自己的目录。使用tar zxvf jdk-8u151-linux-x64.tar.gz命令进行解压。最后将Java添加至环境变量即可,在/etc/profile文件末尾添加如下内容并保存。

最后使用source /etc/profile命令使环境变量的配置文件重新加载,然后使用Java-version测试效果。

前几天在配置zookeeper过程中也配置了Java,当时顺便写了篇博客,里面有比较详细的配置过程:https://www.jianshu.com/p/a3ae0332d644

  1. python运行环境

由于linux操作系统自带python2,而且操作系统的一些命令依赖于python2,,所以不能卸载或者升级,所以选择安装python2和python3共存的环境。wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz下载python的压缩包,并使用tar xf命令进行解压。

1、准备编译环境,这是为了使后面的编译过程顺利

yum groupinstall 'Development Tools'

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel

2、下载 Python3.5代码包

wget <u>https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz</u>

3、编译

tar Jxvf Python-3.5.2.tar.xz

cd Python-3.5.2

./configure --prefix=/usr/local/python3 使用prefix指定python安装的位置,通过执行脚本./configure开始编译, 这一过程可以决定系统的配置并创建相应的Makefile和make文件

make && make install 最后执行相应的Makefile和make文件即可安装好python

4、设置环境变量

echo 'export PATH=$PATH:/usr/local/python3/bin' >> ~/.bashrc

echo是指定输入内容,>>是追加至目标文件

5、设置目录

ln -sv /usr/local/python3/bin/python3.5 /usr/bin/python

通过上面命令可以在/usr/bin/python3路径下创建一软链接文件python,当访问此链接文件,就可以间接地访问/usr/local/python3/bin/python3.5下的python程序了。这种方式与windows下的快捷方式类似。这是为了输入python3执行调用的是python3.5的命令

Python3安装完成。

Python的安装方式和Java有一定的差别。Python包中没有bin文件可以用来直接执行python文件,而需要对源码进行编译,然后创建软链接步骤才行。这个过程补充学习了编译过程:

1).configure 检查编译环境;

2)make对源代码进行编译;

3)make insall 将生成的可执行文件安装到当前计算机中

make和makefile作用,和创建软链接的相应命令ln以及软链接作用。顺带学习了使用echo来写入内容到指定文件,还有>和>>的区别,一个是覆盖,一个是追加。

4、mysql服务端

首先使用rpm -qa | grep mysql查询系统是否自带mysql,然后使用rpm -e mysql删除发现报错,查看错误信息得是因为依赖冲突,因为yum是可以将依赖关系自动解决,所以使用yum remove进行删除。

因为默认yum没有mysql5.7,所以添加第三方软件库

从mysql的官网下载mysql57-community-release-el6-5.noarch.rpm

wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm

安装rpm文件
yum install mysql-community-release-el6-5.noarch.rpm

查看mysql的安装源是否可用,如不可用请自行修改配置文件(/etc/yum.repos.d/mysql-community.repo)使mysql57下面的enable=1

若有mysql其它版本的安装源可用,也修改配置文件使其enable=0

使用yum安装mysql:

yum install mysql-community-server

启动mysql服务

修改mysql密码

首先修改mysql的配置文件vim /etc/my.cnf

意思是跳过密码可以直接登陆,然后就直接登陆进mysql数据库,接着进入名字为mysql的数据库修改控制用户密码的字段authentication_string(以前控制密码的字段为password,后来改名为authentication_string了)。

update MySQL.user set authentication_string=password('新密码') where user='root'

修改密码完成后重启数据库服务(service mysqld restart)就可以用密码登陆至数据库了

查看mysqld是否开机自启动,并设置为开机自启动:


修改字符集为UTF-8:

更改配置文件/etc/my.cnf

最后再把刚刚加进配置文件的表示跳过密码登陆的命令去掉。

虽然只是安装了mysql,但是这个过程也重新学习了centos安装软件的几种方式。

rpm:安装本地自己下载的rpm软件包,自己解决软件之间的依赖。 yum:在线安装,可以解决依赖问题。

源码安装:1.下载源代码 2.解压 3.进入解压目录 4../configure 5.make 6.make install

系统目录结构

Linux系统的目录结构整体呈现为树状结构

几个主要的目录作用

/bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev : dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib: 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media: linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt: 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root: 该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin: s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux: 这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv: 该目录存放一些服务启动之后需要提取的数据。

/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp: 这个目录是用来存放一些临时文件的。

/usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

/usr/bin: 系统用户使用的应用程序。

/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:内核源代码默认的放置目录。

/var: 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

文件操作

基本属性:

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

第一个字母d表示目录,-表示文件,l表示链接文档。接下来的字符中,以3个为一组,且均为rwx的三个参数的组合,分别表示读写执行,没有相应的权限则用-号表示。

1-3位表示该文件所有者拥有文件的权限,4-6位表示所有者的同组用户拥有的权限,7-9位表示其他用户的权限。若要更改文件的权限,有两种方法,数字和符号,其中rwx分别用421表示,而文件的权限分为3个组,每个组的权限用总和表示,例如4+2+1=7,所以最高权限就是3个组都为7的时候,此时可使用命令chmod 777 文件名。

目录管理:

绝对路径: 路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。

相对路径: 路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。

常用命令:

ls 列出目录

ll 列出目录和详细信息

cd切换目录

pwd显示目前的目录

mkdir创建一个新的目录

rmdir删除一个空的目录

cp 复制文件或目录

rm 移除文件或目录

vim创建文件

cat 查看文件内容

tac 从最后一行开始显示

nl 显示的时候,顺道输出行号

more 一页一页的显示文件内容

less 与 more 类似,但是比 more 更好的是,他可以往前翻页

head 只看头几行

tail 只看尾巴几行

Linux链接概念

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。

硬连接

硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软连接

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

1).删除符号连接f3,对f1,f2无影响;

2).删除硬连接f2,对f1,f3也无影响;

3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;

4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

wc命令可以用来查看文件的大致信息 -c显示Bytes数

用户和用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

添加新用户使用useradd命令

更改li用户的密码 passwd li

删除用户

userdel -r li

/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

增加用户组 groupadd 选项 用户组

删除用户组 groupdel 选择 用户组

与用户组相关的信息都存放在/etc/group中

Linux系统资源管理

磁盘管理

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

df 一般配置参数-h使用,因为-h表示以GBytes等格式显示,比较容易阅读

du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。

进程查看与管理

Linux操作系统和windows一样,都存在着进程机制。

Ps命令查看进程,有几种常用参数

a 显示所有用户的所有进程(包括其它用户); u 按用户名和启动时间的顺序来显示进程; x 显示无控制终端的进程; e 显示所有进程,包括没有控制端的进程; f 用树形格式来显示进程; l 长格式输出; w 为了避免详细参数被截断,可以用多个w来让其显示完整(比如说ww或者是www); o 需要查看的选项


USER:进程的属主;

PID :进程的ID;

%CPU :进程占用的CPU百分比;

%MEM :占用内存的百分比;

VSZ :进程虚拟大小;

RSS :驻留中页的数量;

TTY :终端ID。问号表示是无终端的,也就是系统本身。

STAT :进程状态

    R 正在运行可中在队列中可过行的;

    S 处于休眠状态;

    T 停止或被追踪;

    W 进入内存交换(从内核2.6开始无效);

    X 死掉的进程(从来没见过);

    Z 僵尸进程;

    N 优先级较低的进程

    L 有些页被锁进内存;

    s 进程的领导者(在它之下有子进程);

    l 多线程

    + 位于后台的进程组;

WCHAN :正在等待的进程资源;

START : 启动进程的时间;

TIME : 进程消耗CPU的时间;

COMMAND: 启动进程的命令的名称和参数;

表示进程httpd的进程属主为root,PID为2644,cpu和内存使用率为0,处于休眠状态的后台进程,消耗cup的时间为0。

top命令会在当前终端全屏显示系统运行信息,实时跟踪系统资源的使用情况,显示内容包括CPU、内存占用情况,系统运行进程的列表和每一个进程运行的状态等信息,对于分析系统运行中的问题很有帮助。


这里遇到个小BUG,发现时间有问题,应该是因为这里的系统时间取的是硬件时间,这里是虚拟硬件,也就是供电时间。解决办法是将时间与网络时间同步:

  1. 安装ntpdate工具 yum -y install ntp ntpdate

  2. 设置系统时间与网络时间同步 ntpdate cn.pool.ntp.org

  3. 将系统时间写入硬件时间 hwclock --systohc

Top命令

第一行表示当前时间 系统运行时间 当前登录用户数 load average系统负载

第二行表示Tasks: 86 total :系统总的进程数1 running :正在运行的进程数84 sleeping:休眠状态的进程数1 stopped :停止的进程数 0 zombie :僵尸进程数

第三行表示cup的各种使用率

第四行表示 total: 物理内存总量 used :已使用的物理内存 free :未使用的物理内存 buffers :内核缓存占用的物理内存

第五行表示 total :交换分区总容量used:已使用的交换分区容量free:未使用的交换分区容量cached :缓存的总容量

后面各进程的信息意思就是头部字段的表面意思了。

启动进程的方式是根据各程序开始的命令启动程序对应的进程

杀进程是根据进程的ID执行命令kill -9 进程ID

服务添加与管理

Linux系统中的服务和windows系统的服务在概念和作用上是差不多的,只是相关的配置方式发生了改变。

CentOS 6上的服务管理工具为chkconfig,Linux系统所有的预设服务都可以通过查看/etc/init.d/目录得到。


在centos6和7中都可以通过命令service 服务名 start|stop|restart来实现服务的控制。这里的服务名就是/etc/init.d/目录下的这些文件了。启动network除了可以使用命令service network start外,还可以使用/etc/init.d/network start。

我们可以使用命令chkconfig --list列出所有的服务及每个级别的开启状态


这里的级别(数字0~6)为系统启动级别(CentOS 7之前版本的用法,而CentOS 7已经不再严格区分级别的概念了),运行级别0、1和6被系统保留。其中0作为shutdown动作,1作为重启至单用户模式,6为重启。在一般的Linux系统实现中,都是用了2、3、4、5几个级别。在CentOS系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示图形登录方式。

查看服务状态

开启服务

停止服务运行

重新启动服务

使得服务开机自启

查看服务开机自启动状态

服务添加

如果采用yum安装方式完成后一般会自动在系统添加相应的服务,但是如果采取源码安装方式的话,默认是不会添加系统服务的,所以需要手动添加相应的服务。因为服务都存放在/etc/init.d/下的,所以需要创建一个文件,文件名即为服务名,文件具体内容根据服务的工作定义得到。然后修改刚刚创建的文件的权限为755并用命令chkconfig xx on设置开机自启,最后用chkconfig --list检查服务是否成功创建。

最后是Vim的学习,虽然vim在平常使用过程中用得非常多,也很习惯了,但是还有很多非常好的快捷键不知道,用上了可以节约大部分开发时间。比如Ctrl+f可以翻一页之类的。由于快捷键非常的用,不能全部记住,所以在使用的时候再去查询,在多次使用中形成记忆,快捷键查询

Linux端口监控

lsof -i:端口号

netstat -tunlp|grep 端口号

两种都可以查看指定端口被哪个进程占用

如果后面不跟grep可以查看所有tcp udp端口的占用情况

IDEA

在Java开发环境的选择上,我选择了IDEA,因为IDEA几乎包括了Eclipse的所有功能,并且IDEA的代码补全功能更是十分的强大。由于以前使用IDEA开发过很多Java服务端项目,所以IDEA得使用已经比较熟悉了,就暂时不用再学习了。

复制虚拟机

为了更加方便的得到3台虚拟机,在需要的基本组件安装好后,直接从已有的复制更加方便快捷。复制过程中虽然非常简单,但是特别需要注意的是要修改复制后的虚拟机的MAC地址,因为两台虚拟机的MAC地址一样的话违背了计算机网络中的MAC地址的定义,会出现网络问题。还有就是需要进入/etc/sysconfig/network修改主机名至新的主机名,修改hosts文件内容。

测试得此时三台虚拟机可以相互ping通和ping外网baidu.com


免密登录配置

环境设置

首先根据各虚拟机的主机名配置hosts文件,这样以后就可以直接访问主机名,不用输入ip地址了,3台主机的配置过程相同。

修改sshd的配置文件,去掉以下行的注释。

重启ssh服务

本机生成公钥和私钥

把公钥导入到认证文件

先将自己的公钥导入到本机的认证文件进行测试

将每台虚拟机的公钥文件导入其它两台虚拟机中导入到目标主机(用scp命令)

把公钥加入到授权列表文件中

对node2个node3重复同样的操作

修改权限


最后得到理想的结果,3台虚拟机可以两两免密登录

最后去看了一下免密登录的原理,它的原理大致是将自己的公钥写入目标主机的信任列表中,免密登录目标主机时,目标主机用它的公钥加密一个随机字符串发送给登陆者,登陆者因为有私钥可以解密,所以能识别登录者。

补充常用命令

最后补充一些漏掉的linux常用命令

command > file
将输出重定向到 file,会覆盖文件。

command < file
将输入重定向到 file。

command >> file
将输出以追加的方式重定向到 file。

n > file
将文件描述符为 n 的文件重定向到 file。

n >> file
将文件描述符为 n 的文件以追加的方式重定向到 file。

n >& m
将输出文件 m 和 n 合并。

n <& m
将输入文件 m 和 n 合并。

<< tag
将开始标记 tag 和结束标记 tag 之间的内容作为输入。

find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 find / -user user1 搜索属于用户 'user1' 的文件和目录

在top动态查看进程时,然后按下大写M按照memory排序,按下大写P按照CPU排序。

time命令用于测试一个命令的运行时间

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

推荐阅读更多精彩内容