Linux运维与架构工程实践

1 本章概览

介绍Linux系统Linux运维与架构工程实践的方方面面

2 Linux系统基础入门

  • 认识计算机和服务器核心硬件
  • Linux发展历史、系统组成、应用领域以及发行版
  • 搭建运维环境:VMWareWorkStation、SecureCRT的使用
  • Linux系统的基本使用
  • Shell入门以及命令概述

3 Linux系统管理

  • 文件目录管理
  • 用户管理
  • 权限管理
  • VIM编辑器的使用
  • 文档压缩打包
  • 程序包管理(安装、卸载)
  • 网络管理
  • 文件系统管理
  • 内存管理
  • 系统管理(监控、环境变量)
  • 安全管理(selinux,iptables)

4 企业级应用服务管理

  • 文件服务(Samba、NFS、SFTP)
  • Web服务(HTTP协议、Apache、Nginx)
  • LAMP/LNMP
  • DNS

5 Shell编程实战

  • Shell脚本入门
  • Shell变量、条件语句(if、case)、函数
  • Shell 循环(语句while、unit、for、select)
  • Shell 控制循环
  • Shell 数组
  • sed和gawk应用进阶
  • Shell 脚本开发范例
  • Shell脚本的调试
  • Shell脚本开发环境变量配置和优化实践
  • Expect自动化交互程序应用实践
  • 子Shell和Shell嵌套模式应用
  • Shell面试题实战

6 高性能、高可用MySQL

  • MySQL架构与历史
  • MySQL基准测试
  • 服务器性能剖析
  • Schema与数据类型优化
  • 创建高性能索引
  • 查询性能优化
  • MySQL高级特性
  • 优化服务器设置
  • 操作系统和硬件优化
  • MySQL复制及其原理
  • 可扩展的MySQL
  • 高可用性
  • 云端的MySQL
  • 应用层优化
  • 备份与恢复
  • MySQL工具集
  • MySQL Replicant库
  • 二进制日志
  • 高可用性复制
  • 横向扩展复制
  • 数据分片
  • MySQL集群
  • MySQL监控

7 负载均衡集群解决方案 HAProxy+LVS

8 高可用集群解决方案 Keepalived

9 高性能集群解决方案

10 运维工具使用

  • ansible 自动化部署管理工具
  • puppet 自动化配置管理工具
  • fabric 自动化运维工具
  • saltstack 自动化运维工具

11 运维监控

  • Zabbix

12 Python自动化运维

  • 构造B/S自动化运维平台
  • 构造Linux系统安全审计功能
  • 构建分布式质量监控平台
  • 构建桌面版自动化运维平台

13 云计算

  • OpenStack

14 大数据

  • Hadoop

    • Hadoop生态圈(HDFS,Hive,HBase,Zookeeper,Pig,Impala,Kudu,Flume)
  • Spark
  • Strom

15 企业级虚拟化

  • KVM

16 分布式消息中间件

  • RabbitMQ
  • RocketMQ

17 分布式MongoDB企业级应用

  • MongoDB介绍
  • MongoDB设计应用
  • MongoDB复制
  • MongoDB 分片
  • MongoDB 应用管理
  • MongoDB 服务管理

18 分布式Redis企业级应用

  • 初识Redis
  • API的理解与使用
  • Redis常用的小功能
  • Redis客户端
  • Redis持久化
  • Redis复制
  • Redis的噩梦:阻塞
  • 理解内存
  • 哨兵
  • 集群
  • 缓存设计
  • 开发运维的陷阱
  • Redis监控运维平台CacheCloud
  • Redis配置统计字典

19 分布式日志系统

  • E(elasticsearch)
  • L(Logstash)
  • K(Kibana)

20 分布式MySQL中间件

  • MyCat

21 分布式文件存储

  • MooseFS
  • GlusterFS
  • FastDFS

22 虚拟化容器

  • Docker
  • Kubernetes

23 Linux系统调优

  • Linux系统优化思路
  • Linux系统性能评估与优化案例
  • 内存、磁盘性能评估
  • 网络性能评估
  • 基于Web应用的性能评估

24 Java技术栈

  • Tomcat
  • Jenkins
  • Git/Gitlab
  • Maven
  • Jira

计算机系统硬件概述

1 本章概览

介绍计算机的分类和基本组成、服务器及其硬件的使用场景以及各组件的IO性能汇总和互联网应用场景的解决方案。

2 计算机分类和硬件组成

2.1 计算机的分类

按照不同的用途,计算机的类型可以分为笔记本,PC台式机和服务器以及移动终端,通常笔记本的使用场景用于便携办公,PC台式机用于开发,设计等等,服务器用于大型互联网公司的后台服务和数据处理,区别于笔记本和PC台式机的显著不同之处在于服务器要实现处理高可用,高并发,高性能的业务场景。

2.2 计算机硬件的组成

现代计算机(冯诺依曼计算机体系)主要由CPU(运算器和控制器),存储器(内存和外存),IO设备(网卡)等五大核心组件组成的,它们各司其职,完成计算机的数据计算数据存储数据传输的任务。

3 认识服务器及其硬件的使用场景

DELL,HP和IBM是互联网公司中使用最常用的服务器品牌。
其中互联网公司中使用最广泛的品牌DELL常见的服务器型号按照不同的用途分为2u的R730/R830和4U的R930,其中1U表示高度为4.45cm。

服务器中重要的组件包含电源(如果是单台服务器通常都是双路电源,集群场景不需要使用双路电源),主板(类似于人体的骨架),CPU,内存和磁盘,网卡等等。

运维人员需要重点关注服务器的CPU、内存、磁盘三大核心组件!

  • CPU
    CPU主要是负责数据的运算(算术,逻辑运算)和控制(协调其他计算机组件完成数据的存储、传输)等任务。
    常用的CPU品牌是英特尔和AMD。
    根据用途不同服务器的CPU通常是2-4颗,单颗CPU是4-8核,如果是做虚拟化宿主机则需要4-8颗CPU,虚拟6-10个虚拟机。

  • 内存
    内存是编址的存储设备,主要是负责小容量数据的暂时存储,程序运行时会将数据加载到内存计算,断电后数据会丢失。
    服务器的内存区间通常是16-256G(32G-64G更多),如果是做虚拟化的宿主机,内存总量一般是48-128G,用来虚拟6-10个虚拟机。
    32位系统最多寻址2的32次方也就是4G个内存空间,64位系统最高寻址内存可以达到2的64次方也就是4G*4G内存空间,但是实际使用不了那么多,64位Linux支持内存为16EB

  • 磁盘
    磁盘主要是负责永久性存储大容量(TB)数据(PB通过RAID来实现)。
    服务器的磁盘接口类型通常分为SATA(转速7200-10000转/分),SAS(转速15000转/分),SSD三种。
    通常不对外访问的业务(例如线下数据备份)采用SATA,STAT的特点是容量大,价格便宜但是速度比较慢。
    而常规正式的工作场景选用SAS硬盘,机械磁盘转速高的性能好。
    高并发,小数据量(TB)时选用SSD。
    考虑到经济效益,互联网公司通常根据不同的应用场景都是SATA,SAS和SSD混合使用。

磁盘阵列(RAID)主要是解决网站数据量非常大,一块磁盘存放不下时可以将多块磁盘整合成一块盘,而网站的重要数据通常需要冗余备份。常见的raid级别包含raid0,raid1,raid5,raid10,从冗余,性能,成本三个不同方面考虑各个raid级别的排名如下:
冗余从好到坏: raid1,raid10,raid5,raid0
性能从高到底:raid0,raid10,raid5 ,raid1
成本从低到高:raid0 ,raid5,raid1 raid10

重要数据(例如数据库主库)考虑冗余性选择raid1,性能要求高(web服务器)选择raid5,raid0

4 计算机硬件的IO各层次性能汇总

组件名称 延时、带宽
CPU
Cache L1,L2,L3 0.5-15ns、20-60GB/S
内存 30-100ns、2-12GB/S
SSD硬盘 10us-1ms、50MB-2GB/S
普通硬盘 5-20ms、50-200MB/S
网卡-网卡 100us-1ms、10MB-10GB/S

从该表格中可以看出CPU延时(最低)和带宽(最高),而普通硬盘是性能最差的,根据木桶效应,在性能优化时应该优先优化磁盘。

5 互联网应用场景的解决方案

在面对高并发场景(例如抢红包,秒杀,淘宝的双11),通常都是将数据写入到内存(例如Memcache,Redis),当达到一定的量以后将数据定时定量的写入到磁盘,最终通过程序加载到内存对外提供访问。

将数据写入内存性能更高,速度快,然而可能断电会造成部分数据来不及写入磁盘,可以通过服务器主板安装蓄电池,或者选择双电路的机房来避免该情况。

而面对并发数据量不是很大,读多写少(99%的网站面对的场景都是读多写少)的场景通常是将数据写入到磁盘,再通过程序将磁盘的数据加载到内存对外提供访问。

写入数据到内存里,这个数据的内存空间称为缓冲区(Buffer)
从内存中读取数据,这个数据的内存空间称为缓存区(Cache)

Linux系统概述

1 本章概述

介绍计算机系统架构、Linux系统历史、系统组成、GNU组织和GPL协议、发行版以及应用场景和版本的选择

2 计算机系统架构

计算机系统架构主要是由硬件系统和软件系统组成,之前的文章中已经详细介绍了计算机硬件及其应用场景。
这里主要聊软件系统
软件主要由系统软件和应用软件组成,最典型的系统软件就是操作系统(OS)了。
操作系统介于系统硬件(CPU、内存、磁盘)和应用软件之间,主要是用于管理和分配硬件资源,给应用软件提供必要的运行环境。
提供硬件驱动管理,进程管理,内存管理,网络管理和安全管理的通用功能。
而最常见的操作系统(基于Intel X86)包括Windows,Unix/Linux,MacOS。
其中Windows,Linux(Ubuntu),MacOS主要运行在PC台式机,笔记本。
而Unix/Linux(RedHat,CentOS)主要是运行在服务器之上给用户提供服务。

3 Linux系统概述

3.1 Unix系统介绍

Unix系统于1969年诞生于AT&T的贝尔实验室,20世纪70年代后逐步流行,在这期间产生了一个重要的分支BSD,从BSD系统开始,各大产商和商业公司开始根据自己公司的硬件架构,并以BSD系统为基础进行Unix系统的研发,从而产生了各个不兼容的Unix。
目前主流的三大分支:IBM的AIX,Oracle的Solaris,HP公司的HP Unix。

Unix系统的主要特点

  • 技术成熟、可靠性高:通常超大型银行、金融公司等可靠性要求性极高的公司会采用Unix作为服务器操作系统,但是Unix通常是随着硬件捆绑销售的。
  • 支持主流CPU的架构:Intel/AMD,PowerPC,UltraSPARC
  • 支持主流的数据库:Oracle,DB2,Informix
  • 强大的开发功能:Unix促使C语言的诞生,而TCP/IP,XML,WWW都是诞生在Unix之上

3.2 Linux系统发展的历程

我们通常所说的Linux通常指的是内核(kernel),而从Linux系统架构图中看出如果只有内核,就不是一个完整的操作系统,还需要许多能够解决问题的应用程序。

由于Unix面临商业化版权制约以及源码面临闭源的问题,Ritchard Stallman发起了开发自由软件的运动,并成立自由软件基金会(FSF)和GNU项目以及GPL,最终开发了Linux系统的重要组件,包括GCC编译器,Emacs编辑器,bash命令解释程序和编程语言,gawk。

自由不代表免费,例如RedHat是自由但是不免费的操作系统
GPL是保证任何人有共享和修改自由软件的自由,任何人有权获取、修改、发布自由软件的源代码的权利,但同时给出具体的修改的源码。

而最早期的Linux内核是由Linus Torvalds在大学教授Andrew Tanenbaum开发的Minix基础之上开发的,1991年年底发布了Linux内核的0.02版本,自那以后全世界的开源爱好者们共同推进着Linux系统的发展,使其在服务器端,嵌入式和PC桌面得到了广泛的运用。

Linux系统=Linux内核+GNU项目组件+各种应用程序(Apache,Nginx,Zabbix)

完整的Linux系统架构图
Linux运维与架构工程实践_第1张图片内核主要是实现系统内存管理,软件程序管理,硬件设备管理,文件系统管理

GNU组件主要包含处理文件(gawk)、操作文本、管理进程的工具以及shell,gcc等等

常见的应用程序包含不同的图形化界面(KDE,GNOME,XFace),运行于桌面端的Firefox,Chrome和运行于服务端Nginx,Zabbix,Tomcat等等。

3.3 Linux系统的特点

Linux系统的特点(继承Unix之外的)

  • 开放源代码、自由传播的类Unix
  • 基于Intel X86系列CPU
  • 支持多任务、多线程、多CPU、多用户
  • 完善的图形用户界面:GNOME,KDE
  • 完善的开发平台:Java/C/C++/Pythton
  • 支持主流数据库:MySQL,Oracle,PostgreSQL
  • 完善的网络服务:HTTP、WWW,SFTP,DNS,SSH等等

3.4 Linux系统的主流发行版

为了便于Linux系统的安装和使用,诞生了诸如RedHat公司的Linux发行商,将Linux内核和各种系统组件以及应用组件组合成一个完整的操作系统。
目前主流的Linux发行版主要由三个,分别是RedHat,Debian和Slackware,后续主流的RHEL,Ubuntu,Open SUSE都是基于前面三个分支演进而来的。

关于RHEL和CentOS的关系:CentOS是基于RHEL源码编译而来,仅仅去除了RHEL源码的商标以及非自由软件部分。

3.5 Linux系统的应用领域

经过20多年的发展,如今的Linux在服务器领域、桌面领域、移动嵌入式领域和云计算、大数据领域占据了广阔的市场。
其中服务器领域在全球占据了75%的市场份额
而Ubuntu也作为最流行的桌面版Linux,基本可以满足日常办公需要,但是普及远远不及Windows。
通过Linux系统架构图可以得知手机操作系统Android的内核就是基于Linux修改而来的。

3.6 Linux系统的版本选择

如果你想从事Linux系统运维与架构设计的工作,推荐使用CentOS7.3系统。
如果仅仅是想尝试下Linux的桌面版,推荐可以使用Open SUSE LEAP 42.3或者Ubuntu17.10
如果对系统稳定性、安全性有更高的要求可以使用FreeBSD

搭建Linux系统运维与架构环境(一)

1 本章概览

主要是介绍虚拟机使用以及硬件要求,同时介绍VMware Workstation的下载和安装。
还使用了VMware Workstation根据物理机的硬件创建虚拟机,为后期的安装CentOS7.3做准备。

2 虚拟机介绍

虚拟机(Virtual Machine)是指通过软件模拟的具有完整的硬件系统功能,运行在一个完全隔离环境中的完整计算机系统。

通过使用虚拟机,可以实现节省成本、安全便捷和简单高效的搭建系统运维和架构设计环境,当然你的物理机(宿主机)性能要足够的强悍。推荐笔记本配置如下:

CPU:Intel i7-7820HK
内存:32G/64G
磁盘:512 SSD+1T SATA

目前主流的虚拟机软件有Windows/Linux(Ubuntu)上的WMWare Workstation,VirtualBox和MacOS上的Paralles Desktop。

不推荐笔记本安装双系统,因为有些特殊软件没有Linux版本,例如PowerDesigner等等。
推荐在Windows上安装VMWare Workstation,然后安装CentOS7.3

3 VMware Workstation的下载和安装

3.1 VMware Workstation的下载

目前VMWareWorkStation的最新版本为VMware Workstation 12.5.7 Pro,谷歌自行搜索下载即可。

3.2 VMware Workstation的安装

VMware Workstation的安装非常简单,只需要在安装时选择路径,同意条款以及提供密钥即可,因为是收费软件,如果条件可以的话建议购买正版软件。

接下来将以图文的形式展示64位Windows10上VMware Workstation安装过程

第一步 启动安装
Linux运维与架构工程实践_第2张图片

第二步 同意许可
Linux运维与架构工程实践_第3张图片

第三步 选择安装路径
Linux运维与架构工程实践_第4张图片

第四步 用户体验设置
Linux运维与架构工程实践_第5张图片

第五步 设置快捷方式
Linux运维与架构工程实践_第6张图片

第六步 开始安装
Linux运维与架构工程实践_第7张图片

Linux运维与架构工程实践_第8张图片

第七步 输入许可证
Linux运维与架构工程实践_第9张图片

Linux运维与架构工程实践_第10张图片

第八步 完成安装
Linux运维与架构工程实践_第11张图片

4 使用VMware Workstation创建虚拟机

接下来将使用VMWare Workstation创建一台完整的电脑,说明下物理机的配置。

CPU :i5
内存: 16G
磁盘:128SSD+1T STAT

因为VMware Workstation在创建虚拟机时,根据物理机的不同配置会有不同的设置参数,读者可以根据自己物理机的配置进行调整。

预览VMware Workstation界面
Linux运维与架构工程实践_第12张图片

第一步 使用新建虚拟机向导(快捷键Ctrl+N)
Linux运维与架构工程实践_第13张图片

第二步 选择虚拟机兼容性
Linux运维与架构工程实践_第14张图片

第三步 安装客户机操作系统
这里选择稍后安装
Linux运维与架构工程实践_第15张图片

第四步 选择客户机操作系统
这里选择CentOS6.4位
Linux运维与架构工程实践_第16张图片

第五步 命名虚拟机以及指定安装位置
虚拟机名称:CentOS7.3
位置:D:\Linux\CentOS
Linux运维与架构工程实践_第17张图片
第六步 设置CPU
i5处理器设置2颗CPU,双核即可
i7处理器可以选择2颗CPU,4核
Linux运维与架构工程实践_第18张图片

第七步 设置内存
内存推荐4G以上
Linux运维与架构工程实践_第19张图片

第八步 设置网路类型
选择NAT或者桥接模式都可以
Linux运维与架构工程实践_第20张图片

第九步 设置I/O控制器类型
选择推荐类型:LSI Logic(L)
Linux运维与架构工程实践_第21张图片

第十步 选择磁盘类型
Linux运维与架构工程实践_第22张图片

第十一步 创建磁盘
Linux运维与架构工程实践_第23张图片

第十二步 设定磁盘容量
根据自身的磁盘容量设定
Linux运维与架构工程实践_第24张图片

第十三步 指定磁盘文件
总览刚才的配置
Linux运维与架构工程实践_第25张图片

第十四步 完成创建虚拟机
Linux运维与架构工程实践_第26张图片

到这里虚拟机的创建工作就完成了,如果向修改之前的配置(以添加网卡为例子)可以通过如下图所示的操作来进行
编辑设置
Linux运维与架构工程实践_第27张图片

添加网卡
Linux运维与架构工程实践_第28张图片

选择桥接模式
Linux运维与架构工程实践_第29张图片

查看新增的网卡
Linux运维与架构工程实践_第30张图片

搭建Linux系统运维与架构环境(二)

1 本章概览

使用VMware Workstation安装CentOS7.3操作系统,介绍其基本使用,并完成系统的基本设置

2 CentOS7.3下载

目前国内的阿里云、网易等提供了开源操作系统的镜像下载,推荐使用阿里云的服务来下载CentOS7.3的完整镜像。

3 VMware WorkStation安装CentOS7.3

通常CentOS的安装方式采用U盘安装系统,当服务器数量达到成百上千台式通常采用Cobbler无人值守安装,搭建学习环境采用虚拟机安装操作系统即可。

第一步 在安装操作系统之前,必须指定CentOS7.3安装镜像的位置

Linux运维与架构工程实践_第31张图片

第二步 启动虚拟机
Linux运维与架构工程实践_第32张图片

第三步 选择Install CentOS Linux 并安回车键
Linux运维与架构工程实践_第33张图片

第四步 镜像检查
Linux运维与架构工程实践_第34张图片

第五步 选择安装语言
选用美式英语安装
Linux运维与架构工程实践_第35张图片

第六步 进入安装设置
Linux系统的安装主要包含本地化安装、软件安装和系统安装
Linux运维与架构工程实践_第36张图片

第七步 设置时区和时间
选择亚洲上海
Linux运维与架构工程实践_第37张图片

第八步 选择安装源
因为是采用光驱镜像安装操作系统,保持默认选项即可
Linux运维与架构工程实践_第38张图片

第九步 选择软件安装包
因为我们是要搭建Linux系统运维环境,所以选择Service with GUI,同时还包含了一些其他的服务组件,主要包括

Backup Server
DNS Name Server
E-mail Server
FTP Server
File and Storage Server
Hardware Monitoring Utilities
High Availability
KDE
Load Balancer
Network File System Client
Performance Tools
Compatibility Libraries
Developments Tools

Linux运维与架构工程实践_第39张图片

第十步 选择磁盘手动分区
主要是创建根分区,swap分区和/boot分区
Linux运维与架构工程实践_第40张图片

选择分区类型为标准分区
Linux运维与架构工程实践_第41张图片

创建/boot分区,大小为500M
/boot分区是Linux系统的引导分区,用于存放系统引导文件,如Linux内核等等,通常设置200MB-500MB即可
Linux运维与架构工程实践_第42张图片

创建swap分区,内存大小为8GIB
swap相当于windows的虚拟内存,swap大小是物理内存大小的1.5倍,当物理内存大于8GB时,swap分区配置8-16GB即可。
Linux运维与架构工程实践_第43张图片

创建根分区
根分区(/)用来存放系统文件和程序
Linux运维与架构工程实践_第44张图片

分区配置总览
Linux运维与架构工程实践_第45张图片

确认分区
Linux运维与架构工程实践_第46张图片

到这里分区的工作就结束了

第十一步 修改网络和主机设置
Linux运维与架构工程实践_第47张图片

设置总览
Linux运维与架构工程实践_第48张图片

安装时完成root账号的密码设置以及普通用户的创建
Linux运维与架构工程实践_第49张图片

第十二步 root账号的密码设置
Linux运维与架构工程实践_第50张图片

第十三步 普通账号创建
Linux运维与架构工程实践_第51张图片

安装过程根据自身硬件等待20-40分钟不等。。。
第十四步 安装完成 重启系统
Linux运维与架构工程实践_第52张图片

到这里CentOS7.3的安装就基本完成了

4 CentOS7.3的首次登录初始化设置

首先要想使用系统,必须使用账号和密码登录系统
这里Linux会读取非root用户,例如之前创建的用户guanglei
Linux运维与架构工程实践_第53张图片

输入密码即可登录系统
Linux运维与架构工程实践_第54张图片

在登录系统之后只要权限允许,就可以做你想做的一切事情了。

在安装完系统后的首次登录时,还需要完成一些初始化设置的操作。

设置语言
Linux运维与架构工程实践_第55张图片

选择输入法
Linux运维与架构工程实践_第56张图片

登录账号
Linux运维与架构工程实践_第57张图片

开始使用
Linux运维与架构工程实践_第58张图片

查看CentOS7.3的桌面
Linux运维与架构工程实践_第59张图片

进行到这里就可以做你想做的事情了。

5 VMware Workstation的快照和克隆的使用

5.1 VMware Workstation快照的使用

通过使用快照可以存储虚拟机的状态,以便日后系统在使用的过程中有任何异常可以返回到指定的快照。

第一步 新建快照
Linux运维与架构工程实践_第60张图片
第二步 设置快照名称描述内容
Linux运维与架构工程实践_第61张图片

返回到某个快照
Linux运维与架构工程实践_第62张图片

5.2 VMware Workstation的克隆使用

克隆就是复制系统,可以将系统复制多份。

第一步 选择克隆系统
Linux运维与架构工程实践_第63张图片

第二步 使用克隆虚拟机向导
Linux运维与架构工程实践_第64张图片

第三步 选择虚拟机或者快照的状态进行克隆
Linux运维与架构工程实践_第65张图片

第四步 选择克隆类型
Linux运维与架构工程实践_第66张图片

第五步 选择克隆系统名称和系统存放路径
Linux运维与架构工程实践_第67张图片

第六步 执行克隆
Linux运维与架构工程实践_第68张图片

Linux运维与架构工程实践_第69张图片

第七步 查看克隆后的系统IP
Linux运维与架构工程实践_第70张图片
查看源系统IP
Linux运维与架构工程实践_第71张图片

不同的IP意味着两者是不同的机器,到这里就完成克隆了。

6 基于命令行实现网络和防火墙管理

生产环境下的CentOS实际上是不带之前看到的GNome桌面,绝大多数任务都是使用终端通过命令行来实现,而要想实现命令的输入和执行也是非常简单,关于命令和终端不做详细的说明,只需要会使用GNome桌面自带的Terminal来输入命令执行即可,如下图所示。
Linux运维与架构工程实践_第72张图片

6.1 基于命令行实现网络管理

[guanglei
@ittimeline
 ~]
$ 
su root 
#切换用户 
Password
:
#输入密码 出于安全考虑 不会回显


[root
@ittimeline
 guanglei]
# vim /etc/sysconfig
etwork-scripts/ifcfg-ens33  #编辑网卡配置文件

如果CentOS系统开机后,远程连接不上。首先确保网络是否开机启动
修改ONBOOT的值
Linux运维与架构工程实践_第73张图片

6.2 基于命令行实现防火墙管理

为什么要关闭防火墙呢?因为防火墙开着可能会造成远程服务连接失败,例如远程登录Linux,远程操作Linux上的服务(Redis,Tomcat)等等。

[root
@ittimeline
 guanglei]
# firewall-cmd --state #查看防火墙

running
[root
@ittimeline
 guanglei]
# systemctl stop firewalld.service #关闭防火墙服务

[root
@ittimeline
 guanglei]
# systemctl disable firewalld.service #禁止firewall开 机启动

Removed 
symlink
 /etc/systemd/
system
/dbus-org.fedoraproject.FirewallD1.service.
Removed 
symlink
 /etc/systemd/
system
/basic.target.wants/firewalld.service.

>

Linux系统常用命令及其使用技巧

Linux Shell

Linux Shell介绍

Linux是一个基于字符(命令行)的操作系统,而Shell就是介于用户和内核之间的应用程序,它负责读取用户输入的指令并查找指令所在的路径对应的程序然后提交给内核执行,最后将执行的结果返回给用户。当然除此之外Shell还是强大的解释型程序设计语言,利用它可以编写脚本程序,实现自动化运维。

Linux Shell提示符

Linux(CentOS7) Shell提示符有如下所示两种表示方法,分别是系统用户root和普通用户guanglei,可以通过#和$符号来区分系统用户和普通用户。

[root@ittimeline ~]#
[guanglei@ittimeline root]$

提示符的格式为username@host,如果想修改命令提示符的hostname,可以通过hostnamectl set-hostname命令来实现

[root@ittimeline ~]# hostnamectl set-hostname tony
[root@ittimeline ~]# reboot

Linux Shell 通配符

通配符主要是方便用户对文件或者目录的描述,通过特殊字符来匹配多个任意字符或者单个任意字符

*表示匹配多个字符,例如ls -al *.tar.gz表示查看当前目录下所有的压缩文件
?表示匹配单个字符,例如ls -al a?

[root@ittimeline Downloads]# ls a*
apache-maven-3.5.0-bin.tar.gz  apache-tomcat-8.5.23.tar.gz

同时还可以通过中括号[]表示指定的区间

[1-9] 匹配1-9之间的任意数字

[a-z] 匹配a-z之间的任意字母

如果想查找通配符(*?)的文件,需要使用转义字符,例如\*

Linux Shell 重定向

linux允许将一个命令的执行结果输出到一个文件,使用重定向即可,通过>符号完成,该重定向会将之前文件的内容清空,如果想追加内容到文件,可以使用>>来完成。

[root@ittimeline Downloads]# ls -al >file.txt
[root@ittimeline Downloads]# cat file.txt ##查看重定向输出到文件的内容
total 460836
drwxr-xr-x. 10 guanglei guanglei      4096 Oct 29 03:55 .
drwx------. 17 guanglei guanglei      4096 Oct 29 03:10 ..
drwxr-xr-x.  6 root     root            99 Oct 24 23:12 apache-maven-3.5.0
-rwxrwxrwx.  1 root     root       8534562 Aug 24 17:06 apache-maven-3.5.0-bin.tar.gz
drwxr-xr-x.  9 root     root           160 Oct 24 22:57 apache-tomcat-8.5.23
-rwxr--r--.  1 root     root       9472492 Oct 24 10:13 apache-tomcat-8.5.23.tar.gz
drwxrwxr-x.  2 guanglei guanglei      4096 Oct 25 00:39 config
-rw-r--r--.  1 root     root             0 Oct 29 03:55 file.txt
drwxrwxr-x. 24 root     root         12288 Oct 23 13:44 git-2.14.3
-rwxr--r--.  1 root     root       6999465 Oct 24 15:27 git-2.14.3.tar.gz
drwxr-xr-x.  7 root     root           160 Oct 24 23:02 hbase-1.3.1
-rwxr--r--.  1 root     root     105718722 Oct 23 11:06 hbase-1.3.1-bin.tar.gz
drwxr-xr-x.  8       10      143       255 Sep 14 17:27 jdk1.8.0_152
-rwxr--r--.  1 root     root     189784266 Oct 23 18:49 jdk-8u152-linux-x64.tar.gz
drwxr-xr-x.  2 root     root             6 Oct 25 00:55 maven_repository
drwxr-xr-x. 26 root     root          4096 Oct 25 02:07 pinpoint
-rwxr--r--.  1 root     root       8307917 Oct 23 18:31 pinpoint-agent-1.6.2.tar.gz
-rwxr--r--.  1 root     root      44704087 Oct 23 18:29 pinpoint-collector-1.6.2.war
-rwxr--r--.  1 root     root      75598293 Oct 23 18:40 pinpoint-web-1.6.2.war
-rwxr--r--.  1 root     root      22724574 Oct 24 10:23 zookeeper-3.4.9.tar.gz

Linux Shell 管道

管道的作用就是将一个命令的输出通过管道作为另外一个命令的输入,通过管道可以实现多个命令组合使用,完成更加复杂的功能,例如下面的命令就是用来演示使用管道和more命令实现分配查看/etc下的文件和目录列表。

[root@ittimeline apache-maven-3.5.0]# ls -al /etc/ |more ##分页查看系统配置信息

文件目录篇

ls 命令

1.命令格式

ls [选项] [目录或者文件]

2.功能说明

ls是用于查看指定目录下的内容,列出目录的文件和子目录信息。

3 常用选项

选项名称 功能说明
-a 查看所有文件,包含隐藏文件(.开头的就是隐藏文件)
-l 查看文件的详细信息(文件的类型、权限、硬链接次数、所属用户信息、用户组信息、大小(默认为字节)、修改日期和文件名。)
-d 只显示目录,不显示文件
-R 列出所有子目录下的文件

4 应用案例

[root@ittimeline /]# ls -l /home/ ##查看当前系统的普通用户
total 4
drwx------. 17 guanglei guanglei 4096 Oct 29 03:10 guanglei
drwx------.  3 redis    redis      78 Oct 29 04:26 redis
[root@ittimeline /]# ls -alF /home/guanglei/ ##查看普通用户guanglei的目录和文件的详细信息,并显示文件标记类型
[root@ittimeline Downloads]# ls -al *.gz  ##查看当前目录下的压缩文件
[root@ittimeline Downloads]# ls -al /etc|more ##分屏查看系统配置文件目录详细信息
[root@ittimeline Desktop]# ls -al
total 166012
drwxr-xr-x.  3 guanglei guanglei        90 Oct 31 01:11 .
drwx------. 17 guanglei guanglei      4096 Oct 30 18:33 ..
-rw-r--r--.  1 root     root            14 Oct 30 23:27 hello.txt
-rw-r--r--.  1 root     root         10240 Oct 30 23:28 helloworld.tar
-rw-r--r--.  1 root     root     169971490 Aug 24 16:53 jdk8.rpm
drwxr-xr-x.  2 root     root             6 Oct 31 01:11 test
-rw-r--r--.  1 root     root            14 Oct 30 23:27 world.txt
[root@ittimeline Desktop]# ls -al|grep '^d' ##只查看目录,过滤文件
drwxr-xr-x.  3 guanglei guanglei        90 Oct 31 01:11 .
drwx------. 17 guanglei guanglei      4096 Oct 30 18:33 ..
drwxr-xr-x.  2 root     root             6 Oct 31 01:11 test

pwd命令

1 功能说明:用于查看当前用户所处的目录的绝对路径

2 应用案例

[root@ittimeline Downloads]# pwd
/home/guanglei/Downloads

cd命令

1 功能说明:用于切换不同的目录

2 命令格式:cd [目录]

3 应用案例

[root@ittimeline guanglei]# cd  ##不加路径默认就是家目录
[root@ittimeline ~]# pwd
/root
[root@ittimeline ~]#
[root@ittimeline ~]# cd ../ ##..表示返回上一级目录
[root@ittimeline /]# pwd
/
[root@ittimeline /]# cd ~ ##返回上次目录

mkdir命令

1 功能说明:用于创建目录

2 命令格式 mkdir 目录

3 常用选项

选项名称 功能描述
-p 创建多级目录

4 应用案例

[root@ittimeline guanglei]# mkdir -p parent/child
[root@ittimeline guanglei]# cd parent/child/
[root@ittimeline child]# pwd
/home/guanglei/parent/child

rm命令

1 功能描述:用于删除目录或者文件

2 命令格式 rm directory

3 命令选项

选项名称 功能说明
-i 交互式删除,y确认删除,n取消删除
-r 递归删除目录下的内容
-f 强制删除,忽略不存在的文件,无需提示

4 应用案例

[root@ittimeline Downloads]# rm file.txt
[root@ittimeline Downloads]# rm -rf / ##自杀命令,永远都不要使用
[root@ittimeline Desktop]# mkdir -p parent/child
[root@ittimeline Desktop]# echo "this is test content" >helloworld.txt
[root@ittimeline Desktop]# ls
helloworld.txt  parent
[root@ittimeline Desktop]# cp helloworld.txt parent/child/
[root@ittimeline Desktop]# rm -rf parent/
[root@ittimeline Desktop]# ls
helloworld.txt

rmdir命令

1 功能说明:用于删除目录,只能是空目录。

2 命令格式 rmdir 目录

3 应用案例

[root@ittimeline parent]# rmdir child/
[root@ittimeline parent]# ls

mv命令

1 功能描述:用于文件或者目录的移动和重命名

2 命令格式 mv [options] source target

3 命令选项

选项名称 功能描述
-i 询问用户是否覆盖文件
-f 强制覆盖

4 应用案例

[root@ittimeline Desktop]# mv helloworld.txt  rename.txt
[root@ittimeline Desktop]# ls
copy  parent  rename.txt
[root@ittimeline Desktop]# mv rename.txt  ../Downloads/
[root@ittimeline Desktop]# ls -al ../Downloads/ |grep rename.txt
-rw-r--r--.  1 root     root            21 Oct 30 21:23 rename.txt

cp命令

1 功能描述 :用于复制文件或者目录

2 命令格式 cp [options] source target

3 命令选项

选项名称 功能描述
-r 复制目录
-f 删除已经存在的文件,而不提示
-i 覆盖目标文件前提示要求用户确认
-a 复制目录时保留文件的链接、属性,并递归复制目录

应用案例

[root@ittimeline Desktop]# mkdir -p parent/child
[root@ittimeline Desktop]# cd parent/child
[root@ittimeline child]# echo "this is test content" >content.txt
[root@ittimeline child]# cd ../../
[root@ittimeline Desktop]# pwd
/home/guanglei/Desktop
[root@ittimeline Desktop]# cp -r parent /home/guanglei/Desktop/copy 
[root@ittimeline Desktop]# ls -alR copy/
copy/:
total 0
drwxr-xr-x. 3 root     root     19 Oct 30 21:31 .
drwxr-xr-x. 4 guanglei guanglei 54 Oct 30 21:31 ..
drwxr-xr-x. 2 root     root     25 Oct 30 21:31 child

copy/child:
total 4
drwxr-xr-x. 2 root root 25 Oct 30 21:31 .
drwxr-xr-x. 3 root root 19 Oct 30 21:31 ..
-rw-r--r--. 1 root root 21 Oct 30 21:31 content.txt

cat命令

1 命令格式:cat file 或者 cat file1 file2 >file3

2 功能说明:用于查看文件,如果文件超过一屏幕,不会分屏显示。同时可以通过重定向的功能实现文件的合并

3 命令选项

选项名称 功能描述
-n 显示行号

3 应用案例

[root@ittimeline parent]# cat -n test.txt 
     1  this is test context
     2  this is append context
     3  this is soft link context
[root@ittimeline parent]# echo "hello" >hello.txt
[root@ittimeline parent]# echo  "world" >world.txt
[root@ittimeline parent]# cat hello.txt world.txt  >helloworld.txt
[root@ittimeline parent]# cat helloworld.txt 
hello
world

file命令

1 功能说明:linux不用文件的扩展名来判断文件类型,因此需要使用file命令来查看具体的文件类型

2 命令格式:file file

3 应用案例

[root@ittimeline Desktop]# cd parent/child/
[root@ittimeline child]# ls
content.txt
[root@ittimeline child]# file content.txt 
content.txt: ASCII text

ln命令

1 功能说明:用于创建类似于Windows系统文件的快捷方式,分为硬链接和软链接。

软链接是指向真正文件或者目录位置的符号链接,当真正文件或者目录删除之后,软连接文件也就不存在了。

硬链接是在多个路径下存在同一个文件,这样可以防止误删除操作,但是硬链接文件占据磁盘空间。

2 命令格式 ln source target

3 常用选项

选项名称 功能描述
-s 进行软链接

4 应用案例

硬链接

[root@ittimeline parent]# touch test.txt
[root@ittimeline parent]# echo "this is test context" >test.txt 
[root@ittimeline parent]# cat test.txt 
this is test context
[root@ittimeline parent]# ln test.txt  test.ln
[root@ittimeline parent]# cat test.ln
this is test context
[root@ittimeline parent]# echo "this is append context" >>test.txt 
[root@ittimeline parent]# cat test.txt 
this is test context
this is append context
[root@ittimeline parent]# cat test.ln 
this is test context
this is append context

硬链接

[root@ittimeline parent]# ln -s test.txt test.sl
[root@ittimeline parent]# ls -al
total 12
drwxr-xr-x.  2 root     root       52 Oct 29 18:58 .
drwx------. 15 guanglei guanglei 4096 Oct 29 18:46 ..
-rw-r--r--.  2 root     root       44 Oct 29 18:49 test.ln
lrwxrwxrwx.  1 root     root        8 Oct 29 18:58 test.sl -> test.txt
-rw-r--r--.  2 root     root       44 Oct 29 18:49 test.txt

硬链接和软链接相同之处:当修改源文件后,硬链接文件和软链接文件都内容都随着改变

[root@ittimeline parent]# echo "this is soft link context">> test.txt 
[root@ittimeline parent]# cat test.sl
this is test context
this is append context
this is soft link context
[root@ittimeline parent]# cat test.ln
this is test context
this is append context
this is soft link context
[root@ittimeline parent]#

三剑客篇

grep命令

1 功能说明:过滤或者查找文件中指定的内容匹配的行

2 命令格式 grep content file

3 命令选项

选项名称 功能描述
-v 过滤指定的内容
-n 显示匹配内容的行号
-i 忽略大小写

4 特殊字符的应用

特殊字符名称 含义
^ 从行首开始匹配
$ 至行尾
. 任意单个字符

5 应用案例

[root@ittimeline include]# grep printf /usr/include/stdio.h
[root@ittimeline include]# grep -v printf /usr/include/stdio.h|more
[root@ittimeline include]# grep -n printf stdio.h
[root@ittimeline include]# grep '^e' /usr/include/stdio.h  ##查找以e开头的行

wc命令

1 功能说明 计算文件的行数、字数

2 使用格式 wc file

3 命令选项

选项名称 功能说明
-l 显示行数
-w 显示字数
-c 显示字符数

4 应用案例

[root@ittimeline include]# wc -l /usr/include/stdio.h 
947 /usr/include/stdio.h
[root@ittimeline include]# wc -w /usr/include/stdio.h 
4449 /usr/include/stdio.h
[root@ittimeline include]# wc -c /usr/include/stdio.h 
31641 /usr/include/stdio.h
[root@ittimeline include]# wc  /usr/include/stdio.h 
  947  4449 31641 /usr/include/stdio.h

文件查找篇

find命令

1 功能说明:用于指定路径下的文件查找

2 命令格式 find directory [options] file

3 命令选项

选项名称 功能说明
-name 按文件名称查找文件
-perm 按文件权限查找文件
-user 按文件所属用户查找文件
-type 按文件类型查找文件

4 应用案例

[root@ittimeline include]# find / -name stdio.h
[root@ittimeline Downloads]# ls -al /etc/  >config.txt
[root@ittimeline Downloads]# find  / -name config.txt -type f -user root
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/share/doc/git-1.8.3.1/config.txt
/home/guanglei/Downloads/config.txt

文件打包压缩上传和下载篇

tar命令

1 功能说明:tar主要是用于将多个文件打包为一个大文件,也可以将一个大文件解压在指定的目录

2 命令格式 tar[options] file.tar traget

3 命令选项

选项名称 功能描述
-c 生成归档文件
-v 列出压缩解压的详细过程
-f 指定档案文件的名称
-x 解压归档文件

4 应用案例

[root@ittimeline Desktop]# echo "this is hello" >hello.txt
[root@ittimeline Desktop]# echo "this is world" >world.txt
[root@ittimeline Desktop]# tar -cvf helloworld.tar hello.txt world.txt 
hello.txt
world.txt
[root@ittimeline Desktop]# ls -la
total 24
drwxr-xr-x.  2 guanglei guanglei    62 Oct 30 23:28 .
drwx------. 17 guanglei guanglei  4096 Oct 30 18:33 ..
-rw-r--r--.  1 root     root        14 Oct 30 23:27 hello.txt
-rw-r--r--.  1 root     root     10240 Oct 30 23:28 helloworld.tar
-rw-r--r--.  1 root     root        14 Oct 30 23:27 world.txt
[root@ittimeline Desktop]# rm -f hello.txt  world.txt 
[root@ittimeline Desktop]# tar -xvf helloworld.tar 
hello.txt
world.txt
[root@ittimeline Desktop]# ls 
hello.txt  helloworld.tar  world.txt

gzip命令

1 功能描述:gzip常常用于和tar命令结合使用,显示归档压缩

2 命令格式 gzip [options] target

3 命令选项

选项名称 功能说明
-d 解压
-r 压缩所有的子目录

4 应用案例

[root@ittimeline Desktop]# gzip -r helloworld.tar 
[root@ittimeline Desktop]# ls
hello.txt  helloworld.tar.gz  world.txt
[root@ittimeline Desktop]# gzip -d helloworld.tar.gz 
[root@ittimeline Desktop]# ls
hello.txt  helloworld.tar  world.txt

Linux系统的文件上传下载可以使用lrzsz程序来实现

[root@ittimeline Desktop]# yum install lrzsz ##

使用rz命令上传如下图所示

[root@ittimeline Desktop]# ls ##查看上传文件
hello.txt  helloworld.tar  jdk8.rpm  world.txt

使用sz命令下载文件命令如下

[root@ittimeline Desktop]# sz jdk8.rpm 
rz
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring jdk8.rpm...
  100%  165987 KB    33197 KB/sec    00:00:05       0 Errors

文件下载的路径可以在SecureCRT的会话选项中设置

软件管理

权限管理

磁盘管理

网络管理

系统管理篇

cal命令

1 功能说明:查看系统日历

2 应用案例

[root@ittimeline parent]# cal
    October 2017    
Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

date命令

1 功能说明:显示或者修改系统日期,只有root用户才能修改日期,普通用户只能查看日期

2 常用选项

选项名称 功能描述
-s 设置日期
-d 显示描述的日期

3 日期格式说明

格式名称 表示含义
%H 显示小时,表示范围00-23
%M 显示分钟,表示范围00-59
%S 显示秒钟,表示范围00-59
%x mm/dd/yyyy

4 应用案例

[root@ittimeline parent]# date
Sun Oct 29 19:04:07 CST 2017

ps命令

1 功能说明:ps用于查看系统运行中的进程(pid)信息

2 命令格式: ps [options]

3 命令选项

选项名称 功能描述
-a 显示终端商的所有进程,包括其他用户的进程
-u 显示进程的详细状态
-x 显示没有控制终端的进程

4 应用案例

[root@ittimeline bin]# pwd
/home/guanglei/Downloads/apache-tomcat-8.5.23/bin
[root@ittimeline bin]# ./startup.sh 
Using CATALINA_BASE:   /home/guanglei/Downloads/apache-tomcat-8.5.23
Using CATALINA_HOME:   /home/guanglei/Downloads/apache-tomcat-8.5.23
Using CATALINA_TMPDIR: /home/guanglei/Downloads/apache-tomcat-8.5.23/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_152
Using CLASSPATH:       /home/guanglei/Downloads/apache-tomcat-8.5.23/bin/bootstrap.jar:/home/guanglei/Downloads/apache-tomcat-8.5.23/bin/tomcat-juli.jar
Tomcat started.
[root@ittimeline bin]# ps -aux|grep java
root       4853 61.2  1.5 7169688 122620 pts/0  Sl   22:36   0:03 /usr/java/jdk1.8.0_152/bin/java -Djava.util.logging.config.file=/home/guanglei/Downloads/apache-tomcat-8.5.23/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /home/guanglei/Downloads/apache-tomcat-8.5.23/bin/bootstrap.jar:/home/guanglei/Downloads/apache-tomcat-8.5.23/bin/tomcat-juli.jar -Dcatalina.base=/home/guanglei/Downloads/apache-tomcat-8.5.23 -Dcatalina.home=/home/guanglei/Downloads/apache-tomcat-8.5.23 -Djava.io.tmpdir=/home/guanglei/Downloads/apache-tomcat-8.5.23/temp org.apache.catalina.startup.Bootstrap start
root       4909  0.0  0.0 112660   972 pts/0    S+   22:36   0:00 grep --color=auto java

top命令

1 功能描述:用于动态显示运行中的进程所消耗的CPU,内存等信息

2 常用快捷键

快捷键名称 功能描述
M 根据内存来排序
P 根据CPU来排序
T 根据进程运行的时间长短来排序
K 可以根据后面输入的PID来杀死进程
q 退出
h 获得帮助

3 应用案例

[root@ittimeline bin]# top

kill 命令

1功能说明:用于终止进程

2 命令格式 kill [-signal] pid,信号值从0-15,其中9为绝对终止,可以处理一般信号无法终止的进程

3 应用案例

[root@ittimeline bin]# ps -aux|grep java
root       4853  0.9  1.9 7169688 156720 pts/0  Sl   22:36   0:04 /usr/java/jdk1.8.0_152/bin/java -Djava.util.logging.config.file=/home/guanglei/Downloads/apache-tomcat-8.5.23/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /home/guanglei/Downloads/apache-tomcat-8.5.23/bin/bootstrap.jar:/home/guanglei/Downloads/apache-tomcat-8.5.23/bin/tomcat-juli.jar -Dcatalina.base=/home/guanglei/Downloads/apache-tomcat-8.5.23 -Dcatalina.home=/home/guanglei/Downloads/apache-tomcat-8.5.23 -Djava.io.tmpdir=/home/guanglei/Downloads/apache-tomcat-8.5.23/temp org.apache.catalina.startup.Bootstrap start
root       5004  0.0  0.0 112660   976 pts/0    S+   22:44   0:00 grep --color=auto java
[root@ittimeline bin]# kill 4853
[root@ittimeline bin]# ps -aux|grep java
root       5012  0.0  0.0 112660   976 pts/0    S+   22:44   0:00 grep --color=auto java

whoami命令

1 功能说明:用于查看当前登录的用户

2 应用案例

[root@ittimeline Desktop]# whoami
root

who命令

1 功能说明:查看当前登录系统的用户信息

2 应用案例

 [root@ittimeline Desktop]# who
root     pts/0        2017-10-30 19:47 (192.168.102.1)
root     pts/1        2017-10-31 01:15 (192.168.102.1)
redis    :0           2017-10-31 01:16 (:0)
redis    pts/2        2017-10-31 01:17 (:0)

w命令

1 功能说明:查看当前系统登录用户的详细信息

2 应用案例

[root@ittimeline bin]# w
 07:16:14 up 11:29,  4 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.102.1    19:47    6.00s 48.96s  0.07s w
root     pts/1    192.168.102.1    01:15    5:57m  0.15s  0.04s -bash
redis    :0       :0               01:16   ?xdm?   7:38   0.37s /usr/libexec/gnome-session-binary --session gnome-classic
redis    pts/2    :0               01:17    5:58m  0.12s  0.12s bash

你可能感兴趣的:(Linux)