day35-linux指令4

1、软件安装

    (1)yum安装(多)
        yum install -y 包名   中间一路yes
        yum remove -y 包名
        可以只下载安装包,不安装
        yum install -y --downloadonly --downloaddir=./ wget
        下载就是.rpm的包。
    (2)rpm安装
        不论你用的是yum还是用的rpm安装,其实安装的都是rpm包。在linux里面,安装软件的时候,不仅仅是安装这么一个软件,与之对应的要按照很多的依赖软件
        a ==》 b===》c==》d
        如果使用rpm安装,你要知道软件依赖关系才能安装,但是使用yum的话,不用知道依赖关系,yum自动为你解决
        比如  yum install -y --downloadonly --downloaddir=./ vim
            包含vim的包以及vim依赖的包,全部下载下来之后,估计10个包,这10个都是rpm,请问先装哪个后装哪个。
            yum install -y vim   依赖关系自动解决
        -ivh :安装     rpm -ivh 包.rpm
        -e :卸载       rpm -e wget
        -ql : 列出包安装路径   rpm -ql wget
        -qi : 列出指定包的详细信息  rpm -qi wget
    (3)编译安装(多)
        相对来说,编译安装是需要编译源码的,安装的软件更加适合你的电脑,你的软硬件环境,更加的稳定,相比较yum来说稳定
        编译安装3个步骤:
        (1)配置
            ./configure --prefix=你安装路径 --以及其它参数
        (2)编译
            linux里面的软件都是使用c、c++写的,所以你得有编译器
            gcc gcc-c++
            yum install -y gcc gcc-c++
            make 
        (3)安装
            make install
        走完一步之后,可以执行一个指令  echo $?  ,如果返回0,代表上面指令执行成功,如果返回其它,说明执行失败
        指令可以连写:   make && make install
        安装ntfs-3g
        安装python

2、服务和进程相关指令

    linux的启动等级,打开这个文件   vi /etc/inittab
    0 : 关机等级
    1 : 单用户模式
    2 : 多用户的无网络模式
    3 : 多用户模式,有网络
    4 : 保留模式
    5 : 界面模式
    6 : 重启模式

    切换等级   init 0   init 1   init 6
    查看当前等级  runlevel   who -r
    whoami  : 我是谁,查看当前用户

    查看随开机启动的服务
    chkconfig --list
    随开机启动的服务,我们给他们起了一个非常好听的名字,守护进程(daemon)
    sshd   httpd   mysqld  其实就是一个随机开机启动的服务

    开启、关闭服务
        要有控制开启、关闭服务的脚本,比如iptables(防火墙)
        /etc/init.d/iptables start | stop | restart
        /etc/init.d/network start | stop | restart
        经常找脚本,太不方便了,将服务脚本放到  /etc/init.d ,如果支持服务模式,那么就可以使用如下指令开启和关闭
        service iptables start | stop | restart
        service network start | stop | restart

        一般情况,安装服务的时候,控制服务的脚本在安装包就有,但是有的没有,比如nginx没有
        自己安装的服务,你就可以将脚本放到  /etc/init.d 里面,然后通过service控制它的开启和关闭  service nginx start
    
    自己安装的服务随开机启动
        chkconfig nginx on   默认设置的等级为2345
        chkconfig nginx off
        还得给脚本权限,权限一般设置为755
        通过chkconfig --list 查看有没有配置成功

    进程相关指令
        top : 实时查看系统的运行情况
        w :查看系统的当前用户的链接情况
        free : -h  内存的使用情况
        ps : 查看进程相关信息
            ps -ef | grep ssh
            ps aux | grep ssh
        kill : 杀死一个进程
            kill -9 进程id
        netstat -lnp : 查看网络和端口使用情况
            netstat -lnp | grep 80

3、shell简介(了解一下)

    shell编程   wget url    包.tar.gz
    python break : 终止循环
           continue : 结束当次循环,进入下一次循环
# 环境变量和shell编程

## 1. 环境变量

环境变量用来存储工作环境信息的变量,主要分为系统全局变量和用户级全局变量

- 全局变量

  ~~~shell
  常见的全局环境变量 : 
    PATH    指令的搜索路径
    HOME     用户的工作目录
    LOGNAME  用户的登录名
    SHELL    当前系统shell类型
  #使用全局变量
  echo $PATH  #显示单个全局变量,注意使用全局变量,必须加$
  export name='hello' #设置新的全局变量
  
  #系统级全局变量
  这类变量对系统内的所有用户都生效,所有用户都可以使用这类变量。
  这类变量在/etc/profile文件中设置,只有root用户才能设置
  vim /etc/profile
  export a=100
  :wq #存盘退出,这个时候a不会立即生效,应该是有
  source  /etc/profile
  
  #单用户级全局变量
  在用户主目录内有三个文件 ~/.bash_profile、~/.bashrc和~/.profile 在这个文件中定义变量只针对当前用户,添加方式同系统级全局变量
  ~~~

- 添加PATH环境变量

  ~~~
  echo $PATH  #x显示全局PATH环境变量
  #1 临时设置
  PATH=$PATH:/home/csl  #将/home/csl添加到系统环境变量,只针对当前登录有效
  #2 对所有用户永久有效
  vi /etc/profile
  export PATH=$PATH:/usr/local/sysbench/bin 
  source /etc/profile
  
  # 3.对登录用户有效
  # vi ~/.bashrc 在里面加入:
  export PATH=$PATH:/usr/local/mysql/bin
  source ~/.bashrc
  ~~~

## 2. shell编程

### 2.1 什么是shell

shell是一个命令解释器,将用户输入的命令解释给操作系统内核。

Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它类似于Windows下的cmd.exe,可以交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,但是Shell是不需要进行编译的,它是从脚本程序中一行一行的读取并执行命令。

Shell有两种执行命令的方式:交互式(Interactive),用户输入一条命令,Shell就解释执行一条;批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

### 2.2 常见的shell类型

Linux 的 Shell 种类众多,常见的有:

(1) **BourneShell(sh)**:是由AT&T Bell实验室的 Steven Bourne为AT&T的Unix开发的,它是Unix的默认Shell,也是其它Shell的开发基础。Bourne Shell在编程方面相当优秀,但在处理与用户的交互方面不如其它几种Shell。

(2) **BourneAgain Shell (即bash)**:是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个**默认**的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点。

(3) **ash**:ash Shell是由Kenneth Almquist编写的,是Linux 中占用系统资源最少的一个小Shell,它只包含24个内部命令,因而使用起来很不方便。

(4) **CShell(csh)**:是加州伯克利大学的Bill Joy为BSD Unix开发的,共有52个内部命令,与sh不同,它的语法与C语言很相似。它提供了Bourne Shell所不能处理的用户交互特征,如命令补全、命令别名、历史命令替换等。但是,C Shell与BourneShell并不兼容。该Shell其实是指向/bin/tcsh这样的一个Shell,也就是说,csh其实就是tcsh。

(5) **KornShell(ksh)**:是AT&T Bell实验室的David Korn开发的,共有42 条内部命令,它集合了C Shell和Bourne Shell的优点,并且与Bourne Shell向下完全兼容。Korn Shell的效率很高,其命令交互界面和编程交互界面都很好。

(6) **zch**:是Linux 最大的Shell之一,由Paul Falstad完成,共有84 个内部命令。如果只是一般的用途,没有必要安装这样的Shell。

- 可以使用系统变量SHELL查看当前使用的shell:echo $SHELL
- 也可以到/etc/shells文件里查看系统可以使用的shell

### 2.3 shell的交互方式

- 命令行

- 脚本执行

  - 编写脚本,文件后缀名一般为.sh
  - 文件必须以#!/bin/bash开头
  - 添加脚本的可执行权限`chmode +x 脚本名`
  - 执行脚本:
    - 在当前目录里执行:`./脚本名`
    - 在其他目录中执行:使用绝对路径

  ~~~
  #!/bin/bash
  #使用#注释,第一行是特殊存在
  cd /
  ls -al
  
  :wq #存退出盘
  chmod +x 1.sh  #修改权限,添加可执行权限
  ./1.sh   #执行当前目录下的shell脚本
  ~~~

### 2.4 定义变量

  - 变量类型

    - 局部变量:只在本shell中使用
    - 环境变量 : 使用整个系统,一般大写

  - 局部变量的使用

    ~~~
    #1 定义局部变量
    a=10 #注意等号两边不要留空格,否则会看成多个命令
    b=$a
    
    #2显示局部变量
    echo $b
    echo ${b}
    echo "a=$a"  #双引号中的变量解释
    
    #3.销毁变量
    unset a #干掉一个变量,不要带$符
    #注意反引号,反引号引起来的是命令,可以执行,将执行结果给变量
    d=`date`
    
    【注】:等号两边不要留空格
    ~~~

    - 位置变量

      ~~~
      $0 表示脚本的名称
      $1-$9表示传递给脚本的的参数
      
      #test.sh脚本
      #!/bin/bash
      echo 'hello world'
      echo $0 $1 $2
      
      执行输出:
      hello world
      ./test.sh lala dudu
      ~~~

    - 特殊变量

      ~~~
      $#表示传递给脚本的参数个数
      $*表示传递给脚本的所有参数
      $?表示上一个命令执行的返回值,返回值为0表示成功执行,否则命令执行错误
      ~~~

    - 常量

    ~~~
    readonly a=10  #定义常量
    echo $a
    a='ll'  #-bash: name: 只读变量,不能修改
    ~~~

### 2.5 引号

- 双引号中解释变量,解释转义字符
- 单引号不解释变量、不解释转义字符
- 反引号会执行当中的内容
- 特殊字符要用反斜线转义:&  * ?| $  ^

### 2.6 字符串

- 计算字符串长度`${#字符串名}`
- 提取子串:`${字符串名:start:len}`从下标为start开始,提取len个字符

### 2.7 数组

- 数组定义:a=(1 2 3)  #千万注意,数值之间用空格分隔
- 获取数组元素:${a[0]}
- 赋值$a[0]=100
- 获取数组长度:${#a[@]}或者${#a[*]}

### 2.8 seq

- 生成连续整数
- 示例:`seq 1 10`,生成1-10的连续整数

### 2.9 运算

- 数学运算

~~~
shell默认所有变量都是字符串,执行数学计算需要用[]括起来
a=100
echo $[$a+10]
echo $[$a/2]
echo $[$a*2]
echo $[$a-80]
echo $[10%2]

echo $((3+5))
echo $((10/2))
echo $((10/3))  #3 整除
echo $((10*3))
echo $((10%3))

let a=5+6
echo $a
let a+=10
echo $a

echo `expr 3 + 5`  #也可以用expr进行计算
~~~

- 关系运算

  | 运算符 | 说明                        | 举例                       |
  | ------ | --------------------------- | -------------------------- |
  | -eq    | ==,相等返回 true。         | [ $a -eq $b ] |
  | -ne    | !=,不相等返回 true。       | [ $a -ne $b ]  |
  | -gt    | `>`,如果是,则返回 true。  | [ $a -gt $b ] |
  | -lt    | <,如果是,则返回 true。    | [ $a -lt $b ]  |
  | -ge    | `>=`,如果是,则返回 true。 | [ $a -ge $b ] |
  | -le    | `<=`,如果是,则返回 true。 | [ $a -le $b ]  |

- 逻辑运算

  | 运算符 | 说明       | 举例                                       |
  | ------ | ---------- | ------------------------------------------ |
  | &&     | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false  |
  | \|\|   | 逻辑的 OR  | [[ $a -lt 100 \|\| $b -gt 100 ]] 返回 true |

- 字符串判断

  | 运算符 | 说明                                      | 举例                     |
  | ------ | ----------------------------------------- | ------------------------ |
  | =      | 检测两个字符串是否相等,相等返回 true。   | [ $a = $b ] 返回 false。 |
  | !=     | 检测两个字符串是否相等,不相等返回 true。 | [ $a != $b ] 返回 true。 |
  | -z     | 检测字符串长度是否为0,为0返回 true。     | [ -z $a ] 返回 false。   |
  | str    | 检测字符串是否为空,不为空返回 true。     | [ $a ] 返回 true。       |

- 文件判断

  | 操作符  | 说明                                                         | 举例                      |
  | ------- | ------------------------------------------------------------ | ------------------------- |
  | -d file | 检测文件是否是目录,如果是,则返回 true。                    | [ -d $file ] 返回 false。 |
  | -f file | 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 | [ -f $file ] 返回 true。  |
  | -r file | 检测文件是否可读,如果是,则返回 true。                      | [ -r $file ] 返回 true。  |
  | -w file | 检测文件是否可写,如果是,则返回 true。                      | [ -w $file ] 返回 true。  |
  | -x file | 检测文件是否可执行,如果是,则返回 true。                    | [ -x $file ] 返回 true。  |
  | -s file | 检测文件是否不为空(文件大小是否大于0),不为空返回 true。     | [ -s $file ] 返回 true。  |
  | -e file | 检测文件(包括目录)是否存在,如果是,则返回 true。          | [ -e $file ] 返回 true。  |

### 2.10 分支语句

- if-else

  ~~~
  a=100
  if [ $a -gt 90 ]
  then
      echo "a>90"
  else
      echo "a<=90"
  fi
  ~~~

- case

  ~~~
  case $变量名 in
   模式1)
   命令序列1
   ;;
   模式2)
   命令序列2
   ;; 
   *)
   默认执行的命令序列     
   ;; 
  esac
  ~~~

  ~~~
  1 #!/bin/bash
    2 case $1 in
    3     start | begin)
    4         echo "start"
    5         ;;
    6     stop | end)
    7         echo "stop"
    8         ;;
    9     *)
   10         echo "I don't know"
   11 esac
  ~~~

  

### 2.11 循环语句

shell
for 变量 in 列表
do
    command1
    command2
    ...
    commandN
done

示例:
for i in 1 2 3 4 5;do
    echo $i
done

#从命令读取值
for line in `cat 1.txt`;do 
    echo $line
done

#读取目录列表
for file in ~/*;do 
    echo $file; 
done

for i in `seq 1 100`;do
    let sum+=$i
done

#遍历数组
for x in ${a[*]};do 
    echo $x; 
done


- while

~~~
#当型循环
while condition
do
    command
done

sum=0
i=0
while [ $i -lt 10];do
   let sum+=$i
   let i+=1
done
~~~

- until

~~~
#直到型循环
#condition为假执行循环,为真停止
until condition  
do
    command
done

until [ ! $i -lt 10 ];do 
    echo $i; 
    let i+=1; 
done
~~~

### 2.12 break和continue

和以前的用法一模一样

### 2.13 函数

- 函数必须先定义后使用

~~~
#函数定义
test()
{
    echo "简单函数"
}
#函数调用
test()
~~~

4、ftp服务搭建

    ftp是什么?文件传输协议,用在将本地文件上传到服务器
1、ftp搭建
    关闭防火墙和selinux
    依赖  gcc和openssl-devel和perl
    0、yum install -y gcc openssl-devel perl
    1、去pureftp官网    
        download==》releases==》pure-ftpd-1.0.41.tar.gz
    2、下载
        wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.43.tar.gz
    3、解压
        tar -zxvf 文件名
    4、配置
        ./configure                    #进行配置  -h 查看配置参数
        --prefix=/usr/local/pureftpd   #安装目录
        --without-inetd                #不使用ineted 超级服务器管理
        --with-altlog                  #采用alt日志
        --with-puredb                  #采用puredb来存储ftp虚拟用户信息
        --with-throttling              #开启带宽控制
         --with-tls                    #开启ftps支持
         
         ./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-tls

         echo $?  如果是0说明上一步成功,其它为错误
         
         make && make install
         
         
    5、修改配置文件
        cd configuration-file/
        mkdir /usr/local/pureftpd/etc   创建目录
        cp pure-ftpd.conf  /usr/local/pureftpd/etc/
        修改:vi /usr/local/pureftpd/etc/pure-ftpd.conf 如下
            在文件最后添加如下两行
            PureDB      /usr/local/pureftpd/etc/pureftpd.pdb
            PIDFile     /var/run/pure-ftpd.pid
    6、拷贝控制文件
        cp pure-config.pl /usr/local/pureftpd/sbin/
        chmod 755 /usr/local/pureftpd/sbin/pure-config.pl
    7、启动服务
        cd /usr/local/pureftpd
        ./sbin/pure-config.pl  ./etc/pure-ftpd.conf
        检查:ps -ef | grep ftp
        
        
    8、添加管理用户
        useradd  test
        mkdir -p /var/www/html/
        chown -R test:test /var/www/html/
        ./bin/pure-pw useradd ftp_user1 -u test -d /var/www/html
        ftp_user1:ftp登录用户名
        -u:指定系统中存在的用户
        -d:指定访问的目录
    9、创建虚拟的用户数据库
        ./bin/pure-pw mkdb
        
        /usr/local/pureftpd/bin/pure-pw list            #查看用户列表

        /usr/local/pureftpd/bin/pure-pw userdel  用户名    #删除用户
    10、通过ftp链接工具(FileZilla)测试
    

5、nfs搭建

    nfs是什么?可以实现linux之间的文件共享
    nfs客户端还有服务端
nfs搭建教程
服务器上操作
    关闭防火墙   service iptables stop
    关闭selinux  setenforce 0
    1、yum install -y nfs-utils
    2、编辑配置文件
        vi /etc/exports
        /nfstest         10.0.144.0/24(rw,sync)
        要共享的目录     网段
    3、创建目录
        mkdir /nfstest
        vi /nfstest/lala.txt
    4、启动服务
        nfs是基于rpc协议的,所以首先启动rpc
        service rpcbind start
        service nfs start
客户端上操作
    1、yum install -y nfs-utils
    2、查看对应ip地址上面共享的目录
        showmount -e 10.0.144.156
    3、挂载nfs
        mount -t nfs 10.0.144.156:/nfstest /mnt/usb
        mount -t nfs 10.7.181.94:/nfstest /mnt/usb
    4、配置开机挂载
        vi /etc/fstab
        10.0.142.34:/test/   /root/nfs   nfs   defaults  0   0

6、nginx服务搭建

    nginx是什么? web服务器   apache打交道
    nginx服务器的根目录(www)在   /usr/local/nginx/html
    ip:端口     域名(jd.com   baidu.com   taobao.com   mi.com)  sb.com
    DNS服务商,阿里云、腾讯云都有

    一个服务器是否能放多个网站呢?可以的,配置虚拟主机

nginx安装
1、关闭防火墙和selinux
2、安装依赖软件
    yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
3、tar -zxvf nginx-1.11.5.tar.gz
4、创建www用户,不允许以www用户登录系统
    useradd www -s /sbin/nologin
5、./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www   --with-http_stub_status_module --with-http_ssl_module
6、make && make install
7、cp nginx /etc/init.d/
8、开启服务
    service nginx start
9、设置开机启动
    chkconfig nginx on
    chkconfig --list      查看是否开机启动
10、查看网络和端口使用情况
    netstat -lnp | grep nginx
    nginx默认监听的端口为80端口



虚拟主机配置步骤
(1)修改nginx配置文件
    vi /usr/local/nginx/conf/nginx.conf
    在第116行加一行代码
    include vhost/*.conf;
(2)新建一个vhost文件夹
    mkdir /usr/local/nginx/conf/vhost
(3)来到vhost下,新建一个虚拟主机配置文件
    vi /usr/local/nginx/conf/vhost/www.lala.com.conf
    server
    {
        server_name www.lala.com;
        root html/lala;
        index index.html;
    }

    [说明]:
    server_name : 域名
    root : 网站的根目录
    index : 网站的默认首页
(4)新建虚拟主机根目录
    mkdir /usr/local/nginx/html/lala
    vi /usr/local/nginx/html/lala/index.html

    service nginx restart   重启服务
(5)编辑本机的hosts文件
    C:\Windows\System32\drivers\etc\hosts
    10.9.151.154  www.lala.com

7、各系统指令区别总结

CentOS和Ubuntu的区别
    1. centos中新建的非root用户是没有sudo的权限的,如果需要使用sudo权限必须在/etc/sudoers 中加入账户和权限,所以切换到root账号的时候只需要输入:su,加入root账号的密码即可。 在Ubuntu中,一般使用sudo+命令,如果是第一次使用会提示输入当前用户的密码(而不是root的密码)
    2. 在线安装软件中,centos使用的是yum命令,而ubuntu中使用的是apt-get命令。除此之外yum中还有一个从软件源中搜索摸个软件的方法:yum search + 软件名


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

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,719评论 0 10
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,707评论 0 10
  • 观其大纲 第1部分Linux的基础知识第1章Linux概述第2章Linux系统的安装KickStart开始自动安装...
    周少言阅读 1,457评论 1 10
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,894评论 2 89
  • 最近几日,脑袋有点不太安生。每天午睡过后便开始疼,脖子也有点直不起来,可能偏头疼想念我了,来折腾折腾我。虽然不是不...
    文小辉cool阅读 148评论 0 0