linux考试题100道

linux考试题
1.在登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么()B: pid是1
A.NID B.PID C.UID C.CID

2.下面那个文件夹存放用户密码信息()B /etc/passwd /etc/shadow ?
A./boot B./etc C./var D./dev

/etc/passwd

  • 用户名
  • 密码占位符
  • uid
  • gid
  • 用户描述信息
  • 用户家目录
  • 登陆后使用的shell

/etc/shadow

3.用于自动补全功能时,输入命令或文件的前1个或后几个字母按什么键()B
A.ctrl B.tab C.alt D.esc

4.vim退出不保存的命令是()D
A.:q B.q C.:wq D.:q!

5.文件权限读、写、执行三种符号的标志依次是() 421
A.rwx B.xrw C.rdx D.rws

6.某文件的组外成员的权限是只读、属主是全部权限、组内权限是可读可写、该文件权限为()D
A.467 B.674 C.476 D.764

7.改变文件的属主的命令是() C ?
A.chmod B.touch C.chown D.cat

chmod change mode

chown change owner

chgrp change group

8.解压缩文件mydjango.tar.gz,我们可以用() AD
A.tar -zxvf mydjango.tar.gz
B.tar -xvz mydjango.tar.gz
C.tar -czf mydjango.tar.gz
D.tar - xvf mydjango.tar.gz

9.检查linux是否安装了nginx,可用哪些命令()B ???
A.rpm -ivh nginx
B.rpm -q nginx
C.rpm -U nginx
D.rpm -x nginx

10.Linux配置文件一般放在什么目录() A
A.etc B.bin C.lib D.dev

11.linux中查看内存,交换内存的情况命令是() AC
A.top B.last c.free D.lastcomm

12.观察系统动态进程的命令是(b)
A.free B.top C.lastcomm D.df

13.如果执行命令,chmod 746 file.txt ,那么该文件的权限是()A
A.rwxr—rw-
B.rw-r—r—
C.—xr—rwx
D.rwxr—r—

r 4 100

w 2 010

x 1 001

14.找出当前目录以及其子目录所有扩展名为”.txt”的文件,那么命令是() D
A.ls .txt
B.find /opt -name “.txt”
C.ls -d .txt
d.find -name “*.txt”

15.什么命令常用于检测网络主机是否可达? C ICMP
A.ssh B.netstat C.ping D.exit

16.退出交互式shell,应该输入什么? D
A:q! B.quit C.; D.exit

17.在父目录不存在的时候,添加的参数是? D
A.-P B.-d C.-f D.-p

18.下列文件中,包含了主机名到IP地址映射关系的文件是? B
A./etc/hostname
B./etc/hosts
C./etc/resolv.conf
D./etc/networks

19.请问你使用的linux发行版是什么?如何查看linux发行版信息?

centos7 cat /etc/redhat-release

20.请问你公司的服务器环境是物理机还是虚拟化?

500人企:
26台dell power r720服务器,托管在世 纪互联
通过vmware esxi虚拟化的280+linux服务器,有100+centos 100+redhat
分为三个环境
测试服务器、预生产服务器、生产服务器
技术栈:
svn 、java、apache、tomcat、oracle、nagios、redhat、centos、weblogic
初创企业:
5台阿里云

实体硬件服务器+虚拟化的回答方式

个人虚拟化 是 vmware workstation
企业版 vmware vsphere ,在服务器上,直接安装vmware vsphere的操作系统,然后提供了一个web管理界面,在web控制台,增删改查虚拟机

8台阿里云即可

21.vim有几种工作模式

  • 编辑模式
  • 命令模式
  • 末行模式(命令扩展模式)

22.nginx的主配置文件是?如何实现多虚拟主机?nginx反向代理参数是?

nginx.conf

server

proxy_pass

upstream 负载均衡

23.如何解压缩后缀是.gz文件?

tar 用来做归档

压缩方式

  • gzip z
  • bzip2 j
  • xz J

24.如何解压缩后缀是.tar文件?

tar xf

25.如何解压缩后缀是.xz文件?

tar xf

26.www服务在internet最为广泛,采用的结构是? B/S

27.如何给linux添加dns服务器记录? /etc/resolv.conf

28.每月的5,15,25的晚上5点50重启nginx

crontab -e

50 17 5,15,25 * * nginx -s reload

29.每分钟清空/tmp/内容

* * * * * rm -rf /tmp/*

30.每天早上6.30清空/tmp/的内容

30 6 * * * rm -rf /tmp/*

31.每个星期三的下午6点和8点的第5到15分钟之间备份mysql数据到/opt/

5-15 18,20 * * 3 mysqldump -uroot -p1234 > /opt/mysql.sql

32.某文件权限是drw-r—rw-,请解读该权限?

文件夹:

​ 属主:读写

属组:只读

其他:读写

d:目录文件
rw- 属主:可读可写
r— 属组:可读 4
rw- other:可读可写

33.centos版本系统服务管理命令是?

systemctl

service nginx stop/start/restart centos6
systemctl stop/start/restart nginx

34.如何远程登录阿里云123.206.16.61?

ssh

ssh root@123.206.16.61

35.备份mariadb的命令是? mysqldump -uroot -p -A(--all-databases) > mysql.sql

36.简述特殊符号的含义?

# 超级用户的身份标识符
. 当前目录
.. 上级目录
$PATH 环境变量

37.如果你发现在公司无法使用rm,使用提示’禁止你使用rm’,是为什么?别名alias

38.如何修改test.py属组为alex? chgrep alex test.py

chown 更改属主
chgrp 更改属组 (chmod也可以i)

39.如何在windows和linux传输文件?有哪些方法? rz sz

xftp 第三方工具

lrzsz 第三方工具

scp linux的命令 windows没有

40.如何杀死mariad进程? pkill -9 mariadb killall -9 mariadb

pkill mariadb

ps -ef|grep mysql
kill pid

killall mariadb

41.简述dns解析流程?访问www.pythonav.cn的解析流程

-  查找本地hosts文件
-  去dns查找

42.linux如何安装软件?有几种方式?

yum

编译

rpm

43.出于安全角度,简述如何安装启动redis服务端?

  • 设置密码 redis-server redis.conf
  • ip地址
  • 端口
  • 开启protomode yes安全模式

44.如何保证本地测试环境和线上开发环境一致性?思路?

  • docker 打包镜像,通过dockerfile进行打包
  • pip freeze > requiment.txt 手动解决环境问题 pip3 freeze导出依赖
  • pip install -r requiment.txt

45.virtualenv是什么?简述如何使用

虚拟环境

pip install virualenv

virtualenv --no-site-package django1.11

在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。

如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?

这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

1.安装 pip3 install virtualenv
2.创建虚拟环境 virtualenv —no-site-packages —python=python3 env1
3.激活虚拟环境 sourcce /opt/MyVirtualenv/venvDjango1/bin/activate
4.测试 python3 或者 pip3 list

46.virtulevnwrapper是什么?简述使用

virtualenv 的一个最大的缺点就是,每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录。
Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环
1.安装虚拟环境 pip3 install virtualenvwrapper
2.创建并进入虚拟环境 mkvirtualenv env1
3.切换虚拟环境 workon 虚拟环境名

管理虚拟环境的工具

mkvirtualenv

workon

deativate

rmvirtualenv

lsvirtualenv

cdvirtualenv

cdsitepackage

lssitepackage

redis是什么?

Redis是一个开源的基于内存的,key-value数据结构的缓存数据库,支持数据持久化rdb aof  ,m-s复制,常用数据类型有string set hash list,
最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。
例如:股票价格、数据分析、实时数据搜集、实时通讯。
Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)

其他nosql数据库?
Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。
只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。
无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。

MongoDB
更高的写负载,MongoDB拥有更高的插入速度,支持高可用性,支持索引高速查询,占用磁盘空间较大,支持持久化

47.redis哨兵是什么?作用是

Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案
redis哨兵是监控redis主从服务,不存储数据的,作用是用于自动切换reidis服务主从关系,即当主库服务停止后,会将其中一个从库变为主库

48.redis-cluster是什么?

redis集群

即使使用哨兵,redis每个实例也是全量数据存储,每个redis存储的内容都是完整的数据。
为了最大化利用内存,可以采用cluster群集,就是分布式存储。即每台redis存储不同的内容。
采用redis-cluster架构正是满足这种分布式存储要求的集群的一种体现。redis-cluster架构中,被设计成共有16384个hash slot。每个master分得一部分slot,其算法为:hash_slot = crc16(key) mod 16384 ,这就找到对应slot。采用hash slot的算法,实际上是解决了redis-cluster架构下,有多个master节点的时候,数据如何分布到这些节点上去。key是可用key,如果有{}则取{}内的作为可用key,否则整个可以是可用key。群集至少需要3主3从,且每个实例使用不同的配置文件。

49.什么是静态资源,什么是动态资源?

静态资源 不需要和数据库打交道(指定的是网站的CSS/JS/HTML/JPG/GIF等等文件)

动态资源 需要和数据库打交道(一般指的是数据,即后端给前端提供的数据)

50.配置linux软连接的命令?

ln -s 源文件 目标文件

ln -s /opt/python3/bin/python3.6 /usr/bin/python3

51.如何永久添加/opt/python36/的环境变量?

echo "PATH=/opt/python36/bin:$PATH" >> /etc/profile.d/python.sh

vim /etc/profile #系统全局变量文件 


添加PATH=
source /etc/profile

1.获取python3解释器的bin目录,绝对路径  /opt/python3/bin/python3.6

2.打开/etc/profile 永久生效path配置

PHAT="/opt/python3/bin/python3.6:$PATH"

52.给如下代码添加注释
server{
listen 80;
server_name 192.168.11.11;
location / {
root html;
index index.html; #默认访问页面
}
}

server{
listen 8080;
server_name 192.168.11.11;
location / {
include uwsgi_params; #导入
uwsgi_pass 0.0.0.0:8000; #转发到uwsgi
}
}

server{ # 一个虚拟主机
listen 80; # 监听的端口,访问的端口80
server_name 192.168.11.11; # 访问的域名192.168.11.11

location /pic { # 访问的路径 192.168.11.11:80/pic
		root html; # 定义虚拟主机的网页根目录
		index index.html # 指定网页,访问/就是访问index.html
	}
}

server{ #虚拟主机
listen 8080; #nginx监听端口
server_name 192.168.11.11; #nginx访问域名
location / { #location匹配url
include uwsgi_params; #将uwsgi参数添加进nginx
uwsgi_pass 0.0.0.0:8000; #反向代理转发请求给uwsgi
}
}

53.supervisor是什么?如何使用?

使用:
1.安装 easy_install supervisor
2.生成配置文件 echo_supervisord_conf > /etc/supervisor.conf
3.写入自定义的配置

[program:crm] ; 项目名称
command=/root/Envs/knight/bin/uwsgi —ini /opt/knight/uwsgi.ini ;启动项目的命令
stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程


4.启动supervisor服务
supervisord -c /etc/supervisor.conf
5.启动所有项目
supervisorctl -c /etc/supervisor.conf start all

54.简述项目部署流程?如何部署路飞,uwsgi+nginx+supervisor+nginx

部署路飞:
1.安装python3 环境
2.安装 mysql,redis,nginx
3.部署前端
1.安装node.js的环境
2.安装依赖包
3.修改axios的发送的端口接口
4.打包
4.部署后端
1.安装virtualenv
2.创建虚拟环境
3.安装django和uwsgi,以及项目的依赖包
4.修改uwsgi的配置文件
5.通过uwsgi -ini 配置文件启动django项目
5.配置nginx
1.创建两个虚拟主机,分别监听80和8000端口
2.访问80端口是访问呢vue
3.访问8000端口是vue发起的8000端口请求,反向代理到9000的uwsgi
6.启动nginx,mysql,redis
7.通过supervisor来管理

55.docker是什么?简述docker优势

linux容器软件
docker应用于快速构建应用

  • 环境一致
  • 启动快
  • 占用资源少
  • 一次封装到处运行
  • 持续交付

56.你常用的docker常用命令有哪些?操作镜像、容器、仓库的命令

docker image

docker ps

docker ps -a

docker ps -q

docker log

docker log -f

docker rm

docker rmi

docker load

docker save

docker search

docker pull

docker push

docker login

docker logout

docker build

docker run

docker stop

docker start

docker tag

docker ports

docker exec -ti /bash

docker images # 查看本地镜像
docker serach 镜像 # 通过docker hub搜索镜像
docker rmi 镜像 # 删除镜像
docker save 镜像 > 路径 # 导出镜像
docker load < 路径 # 导入镜像
docker build -t . # 打包生成镜像

操作容器命令:
docker run -d 镜像 解释器 # 根据镜像生成容器,后台允许
docker run -it 镜像 解释器 # 根据镜像生成并进入容器
docker start/stop 容器id # 启动/停止容器
docker ps # 查看当前运行的容器
docker rm 容器id # 删除容器
docker exec 容器id # 进入当前正在运行的容器
docker commit 容器id 镜像名 # 将容器提交为镜像
docker contain ls # 查看当前运行的容器
docker tag 当前的镜像名   你要改成什么名字   
操作仓库的命令:
docker pull 镜像 # 下载镜像
docker push 镜像 # 推送镜像

57.哪个命令无法查看linux文件内容?D
A.tac B.more C.head D.man

man(man帮助手册)
tail  -f   实时监测文件内容变化 

58.使用rm -i 系统会提示什么信息?B
A.命令所有参数
B.是否真的删除
C.是否有写的权限
D.文件的路径

59.为何说rm -rf 慎用? -r递归删除 -f强制删除

a60.python操作linux的模块是?

  • os
  • sys
  • subprocess(command)

61.如果端口8080被占用,如何查看是什么进程?

ss -tnlp|grep 8080

netstat -tunlp | grep 8080

62.redis是如何做持久化的?

rdb
Redis会定期保存数据快照至一个rdb文件中,并在启动时自动加载rdb文件,恢复之前保存的数据,通过save指令触发持久化,redis单独开启一个子进程进行数据持久化。
rdb缺点,定期执行,可能会丢失数据,并且数据量特别大时候,如果服务器cpu性能较低,rdb开启子进程持久化性能影响很大,影响redis对外提供服务的能力。



aof
Redis会把每一个写请求都记录在一个日志文件里。在Redis重启时,会把AOF文件中记录的所有写操作顺序执行一遍,确保数据恢复到最新。
随着AOF不断地记录写操作日志,因为所有的操作都会记录,所以必定会出现一些无用的日志。大量无用的日志会让AOF文件过大,也会让数据恢复的时间过长。
优先:数据安全,不怕数据损坏,如断电灯问题,还可以用redis-check-aof修复数据,AOF文件人为可读
缺点:占磁盘,性能损耗高,数据恢复慢



怎么用rdb和aof
如果既配置了RDB,又配置了AOF,则在进行数据持久化的时候,都会进行,但是在根据文件恢复数据的时候,以AOF文件为准,RDB文件作废

63.简述mysql主从复制原理?

(1) master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
(2) slave将master的binary log events拷贝到它的中继日志(relay log);
(3) slave重做中继日志中的事件,将改变反映它自己的数据。

64.创建mysql用户alex,并且授予权限select权限,命令是什么?

create user 'alex'@'%' identified by 'alex3714'

grant select on *.* to 'alex'@'%'

flush privileges;

grant select on *.* to alex@’%’;

65.nginx如何实现负载均衡?

upstream  myserver {
server  x.x.x.x
server  x.x.x.x
} 

定义服务器地址池

然后通过 转发参数即可 proxy_pass  http://myserver ;

66.nginx的负载均衡调度算法有几种?是什么?

  • 轮询
  • 权重
  • ip——hash
  • url——hash
  • 最少连接数
调度算法    概述
轮询     按时间顺序逐一分配到不同的后端服务器(默认)
weight    加权轮询,weight值越大,分配到的访问几率越高
ip_hash    每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
url_hash   按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn 最少链接数,那个机器链接数少就分发
fail

67.linux下载软件包的方法有?

wget

curl

wget curl

wget  http://baidu.com/xiaocang.jpg

68.windows和linux常用远程连接工具有哪些?

xshell

Securecrt

putty

69.如何给与一个脚本可执行权限

chmod +x

70.过滤出settings.py中所有的空白和注释行

grep -v '^$' /etc/ssh/sshd_config |grep -v "^#" ##找出有益的信息

71.过滤出file1中以abc结尾的行
grep 'abc$'

72.容器退出后,通过docker ps查看不到,数据会丢吗?

不会 不会丢,因为容器停止了,并没有被删除 docker ps -a可以看到

73.如何批量清理后台停止的容器

docker rm docker ps -a -q #只会删除停止的容器记录

74.如何查看容器日志?

docker log

docker logs -f

75.服务器被攻击,吃光了所有的CPU资源,怎么办?禁止重装系统

top

ps aux --sort=%cpu

1.找到吃资源的进程信息  top    glances(资源监控工具)
2.强制 kill -9 杀死     cxk.avi
3.检查定时任务
4.全局搜索病毒文件    find /  -name  cxk.avi
5. 强制删除 病毒文件

75.wsgi是什么?
WSGI是Web服务器网关接口。它是一个协议,描述了Web服务器如何与Web应用程序通信。

76.Django中使用的是?
答:Django中实现wsgi的是:wsgiref和uwsgi,wsgiref是开发测试用的,uwsgi是线上用的。
Flask中实现wsgi的是:werkzurg
Tornado中实现wsgi的是:tornado和gevent

76.绘制下python web部署图

77.在centos7.2中用一句话杀死所有的test.py进程

pkill -9 test.py killall -9 test.py

78.在centos7.2中如何查看程序执行所消耗的cpu,内存等硬件信息

top

ps aux

79.unix查询环境变量的命令是

echo $PATH

80.查询脚本定时任务的命令是

crontab

81.saltstack、ansible、fabric、puppt工具的作用

批量管理远程服务器

82.uwsgi、wsgi是什么?

83.supervisor是什么?

84.解释PV,UV的含义?

pv page v

uv user v

85.解释QPS是什么?

每秒数据访问量

86.解释什么是静态资源?动态资源?

87.saltstack如何采集服务器静态数据?

slat '*' grains.items

88.请用yaml语法表示如下python数据结构
{
“老男孩”:[{“老师”:[“太白”,”女神”,”吴老板”]},{“学生”:[“20期佳增同学”]}]
}

{
“老男孩”:[{“老师”:[“太白”,”女神”,”吴老板”]},{“学生”:[“20期佳增同学”]}]
}

老男孩:
    - 老师:
      - 太白
      - 女神
      - 吴超
    - 学生:
      - 小黑
      - 程宇

89.消息队列作用?

1)程序解耦
2)数据冗余,例如rabbitmq的ack机制,消息确认机制
3)削峰能力
4)可恢复性,就算系统中部分组件挂掉,消息在队列也不丢失,待组件恢复后继续处理消息。
5)异步通信,如发红包,短信等流程丢入队列,可以优先级很低的去处理。

90.什么是docker生命周期?

91.docker容器有哪些状态?

92.dockerfile常用指令?

  • FROM : 基础镜像
  • LABEL:定义一些参数
  • RUN:执行命令
  • COPY:将本地文件复制到容器内
  • ADD:解压tar文件
  • CMD:运行命令
  • EXPOSE:容器启动的端口 -p -P
  • WORKDIR:工作目录
  • ENV: 环境变量
  • VOLUME:数据目录 -v

93.dockerfile中copy和add的区别

copy是 拷贝宿主机的文件 到容器中,仅此而已
add是 拷贝宿主机的文件 到容器中,并且有解压缩的作用

94.常用docker命令?

94.交互式进入正在运行的docker容器中

docker exec -it  容器id  /bin/bash  

95.如何退出一个交互式的容器终端,而不终止它?

ctrl+q

exit #会回退到宿主机系统中

96.容器如何端口映射?数据卷映射?

-p

-v

97.redis如何实现队列?

98.redis可以生产一次,消费多次吗?

消息持久化

# durable=True 开启持久化,必须新开启一个队列,原本的队列已经不支持持久化了
'''
实现rabbitmq持久化条件
delivery_mode=2

99.nginx的access.log能够统计哪些信息?

100.rabbitmq如何实现队列,消息持久化?

mode = 2

97.redis实现队列的方法

利用list数据类型的特性 ,双向队列
可以用 lpush 往左边插入数据,再利用rpop从右边取出数据

git常用命令
1:git init—————————初始化
2:git add .————————-从工作区,添加到版本库
3:git commit -m”xxx”————从暂存区,添加到分支
4:git status————————查看状态
5:git log —————————查看版本库的日志
6:git reflog————————查看所有日志
7:git reset —head 版本号—-切换
8:git stash————————-保存
9:git stash————————-将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash list——————————————————————————查看“某个地方”存储的所有记录
git stash clear—————————————————————————-清空“某个地方”
git stash pop——————————————————————————-将第一个记录从“某个地方”重新拿到工作区(可能有冲突)
git stash apply —————————————————————————编号,将指定编号记录从“某个地方”重新拿到工作区(可能有冲突)
git stash drop —————————————————————————编号 ,删除指定编号的记录
10:git branch dev—————创建分支
11:git branch -d dev———-删除分支
12:git checkout dev————切换分支
13:git merge dev—————-合并分支
14:git branch———————查看所有分支
15:git clone https:xxx——-克隆
16:git add origin https:xxx-起个别名
17:git push origin dev ——添加到dev分支
18:git pull origin master—拉代码
19:git fetch origin master-去仓库获取
20:git merge origin/master-和网上下的master分支合并
协同开发:
默认是master分支——————————master
开发的分支—————————————dev
做代码review————————————reciew
程序员自己的分支——————————…….
1:每个员工创建自己的分支
2:将自己的代码提交的到自己的分支—————xxx,sss,wwww…….
3:由组长或老大做代码的review,——————-代码提交的review分支
4:再提交到dev.
5: 再合并到master分支

熟悉 Linux常用操作。
1:man rm———————————————查看命令帮助
2:mkdir———————————————-创建目录
3:touch———————————————-创建文件
4:cd—————————————————切换。
5:ls—————————————————查看目录
6:ls -lh————————————————查看目录详细
7:pwd————————————————-查看当前目录
8:vim————————————————-添加内容
9:echo————————————————追加内容
10:cat————————————————查看文件内容
11:mv————————————————-移动
12:cp————————————————-拷贝
13:mv————————————————重命名
15:find———————————————-搜索
16:rm————————————————-删除数据
17:ping———————————————-查看能不能上网
19:tar cf ————————————————打压缩
20:tar xf——————————————-解压缩
安装:
yum install
rpm包安装
编译安装
快捷键:
1:Tab键—————————————-自动补全命令或路劲。
2:ctrl+l—————————————清屏
3: ctrl+c—————————————取消当前操作
4:vi/vim 快捷键:
复制当前行 ——————————yy
粘贴—————————————-p
剪切—————————————-dd
撤销—————————————-u
恢复—————————————-ctrl + r

posted @ 2019-09-02 22:07  learnacode  阅读(24936)  评论(0编辑  收藏  举报