介绍Linux系统Linux运维与架构工程实践的方方面面
Hadoop
介绍计算机的分类和基本组成、服务器及其硬件的使用场景以及各组件的IO性能汇总和互联网应用场景的解决方案。
按照不同的用途,计算机的类型可以分为笔记本,PC台式机和服务器以及移动终端,通常笔记本的使用场景用于便携办公,PC台式机用于开发,设计等等,服务器用于大型互联网公司的后台服务和数据处理,区别于笔记本和PC台式机的显著不同之处在于服务器要实现处理高可用,高并发,高性能的业务场景。
现代计算机(冯诺依曼计算机体系)主要由CPU(运算器和控制器),存储器(内存和外存),IO设备(网卡)等五大核心组件组成的,它们各司其职,完成计算机的数据计算,数据存储和数据传输的任务。
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
组件名称 | 延时、带宽 |
---|---|
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延时(最低)和带宽(最高),而普通硬盘是性能最差的,根据木桶效应,在性能优化时应该优先优化磁盘。
在面对高并发场景(例如抢红包,秒杀,淘宝的双11),通常都是将数据写入到内存(例如Memcache,Redis),当达到一定的量以后将数据定时定量的写入到磁盘,最终通过程序加载到内存对外提供访问。
将数据写入内存性能更高,速度快,然而可能断电会造成部分数据来不及写入磁盘,可以通过服务器主板安装蓄电池,或者选择双电路的机房来避免该情况。
而面对并发数据量不是很大,读多写少(99%的网站面对的场景都是读多写少)的场景通常是将数据写入到磁盘,再通过程序将磁盘的数据加载到内存对外提供访问。
写入数据到内存里,这个数据的内存空间称为缓冲区(Buffer)
从内存中读取数据,这个数据的内存空间称为缓存区(Cache)
介绍计算机系统架构、Linux系统历史、系统组成、GNU组织和GPL协议、发行版以及应用场景和版本的选择
计算机系统架构主要是由硬件系统和软件系统组成,之前的文章中已经详细介绍了计算机硬件及其应用场景。
这里主要聊软件系统
软件主要由系统软件和应用软件组成,最典型的系统软件就是操作系统(OS)了。
操作系统介于系统硬件(CPU、内存、磁盘)和应用软件之间,主要是用于管理和分配硬件资源,给应用软件提供必要的运行环境。
提供硬件驱动管理,进程管理,内存管理,网络管理和安全管理的通用功能。
而最常见的操作系统(基于Intel X86)包括Windows,Unix/Linux,MacOS。
其中Windows,Linux(Ubuntu),MacOS主要运行在PC台式机,笔记本。
而Unix/Linux(RedHat,CentOS)主要是运行在服务器之上给用户提供服务。
Unix系统于1969年诞生于AT&T的贝尔实验室,20世纪70年代后逐步流行,在这期间产生了一个重要的分支BSD,从BSD系统开始,各大产商和商业公司开始根据自己公司的硬件架构,并以BSD系统为基础进行Unix系统的研发,从而产生了各个不兼容的Unix。
目前主流的三大分支:IBM的AIX,Oracle的Solaris,HP公司的HP Unix。
Unix系统的主要特点
我们通常所说的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系统架构图
内核主要是实现系统内存管理,软件程序管理,硬件设备管理,文件系统管理
GNU组件主要包含处理文件(gawk)、操作文本、管理进程的工具以及shell,gcc等等
常见的应用程序包含不同的图形化界面(KDE,GNOME,XFace),运行于桌面端的Firefox,Chrome和运行于服务端Nginx,Zabbix,Tomcat等等。
Linux系统的特点(继承Unix之外的)
为了便于Linux系统的安装和使用,诞生了诸如RedHat公司的Linux发行商,将Linux内核和各种系统组件以及应用组件组合成一个完整的操作系统。
目前主流的Linux发行版主要由三个,分别是RedHat,Debian和Slackware,后续主流的RHEL,Ubuntu,Open SUSE都是基于前面三个分支演进而来的。
关于RHEL和CentOS的关系:CentOS是基于RHEL源码编译而来,仅仅去除了RHEL源码的商标以及非自由软件部分。
经过20多年的发展,如今的Linux在服务器领域、桌面领域、移动嵌入式领域和云计算、大数据领域占据了广阔的市场。
其中服务器领域在全球占据了75%的市场份额
而Ubuntu也作为最流行的桌面版Linux,基本可以满足日常办公需要,但是普及远远不及Windows。
通过Linux系统架构图可以得知手机操作系统Android的内核就是基于Linux修改而来的。
如果你想从事Linux系统运维与架构设计的工作,推荐使用CentOS7.3系统。
如果仅仅是想尝试下Linux的桌面版,推荐可以使用Open SUSE LEAP 42.3或者Ubuntu17.10
如果对系统稳定性、安全性有更高的要求可以使用FreeBSD
主要是介绍虚拟机使用以及硬件要求,同时介绍VMware Workstation的下载和安装。
还使用了VMware Workstation根据物理机的硬件创建虚拟机,为后期的安装CentOS7.3做准备。
虚拟机(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
目前VMWareWorkStation的最新版本为VMware Workstation 12.5.7 Pro,谷歌自行搜索下载即可。
VMware Workstation的安装非常简单,只需要在安装时选择路径,同意条款以及提供密钥即可,因为是收费软件,如果条件可以的话建议购买正版软件。
接下来将以图文的形式展示64位Windows10上VMware Workstation安装过程
接下来将使用VMWare Workstation创建一台完整的电脑,说明下物理机的配置。
CPU :i5
内存: 16G
磁盘:128SSD+1T STAT
因为VMware Workstation在创建虚拟机时,根据物理机的不同配置会有不同的设置参数,读者可以根据自己物理机的配置进行调整。
第五步 命名虚拟机以及指定安装位置
虚拟机名称:CentOS7.3
位置:D:\Linux\CentOS
第六步 设置CPU
i5处理器设置2颗CPU,双核即可
i7处理器可以选择2颗CPU,4核
第九步 设置I/O控制器类型
选择推荐类型:LSI Logic(L)
到这里虚拟机的创建工作就完成了,如果向修改之前的配置(以添加网卡为例子)可以通过如下图所示的操作来进行
编辑设置
使用VMware Workstation安装CentOS7.3操作系统,介绍其基本使用,并完成系统的基本设置
目前国内的阿里云、网易等提供了开源操作系统的镜像下载,推荐使用阿里云的服务来下载CentOS7.3的完整镜像。
通常CentOS的安装方式采用U盘安装系统,当服务器数量达到成百上千台式通常采用Cobbler无人值守安装,搭建学习环境采用虚拟机安装操作系统即可。
第一步 在安装操作系统之前,必须指定CentOS7.3安装镜像的位置
第三步 选择Install CentOS Linux 并安回车键
第六步 进入安装设置
Linux系统的安装主要包含本地化安装、软件安装和系统安装
第八步 选择安装源
因为是采用光驱镜像安装操作系统,保持默认选项即可
第九步 选择软件安装包
因为我们是要搭建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
第十步 选择磁盘手动分区
主要是创建根分区,swap分区和/boot分区
创建/boot分区,大小为500M
/boot分区是Linux系统的引导分区,用于存放系统引导文件,如Linux内核等等,通常设置200MB-500MB即可
创建swap分区,内存大小为8GIB
swap相当于windows的虚拟内存,swap大小是物理内存大小的1.5倍,当物理内存大于8GB时,swap分区配置8-16GB即可。
到这里分区的工作就结束了
安装过程根据自身硬件等待20-40分钟不等。。。
第十四步 安装完成 重启系统
到这里CentOS7.3的安装就基本完成了
首先要想使用系统,必须使用账号和密码登录系统
这里Linux会读取非root用户,例如之前创建的用户guanglei
在登录系统之后只要权限允许,就可以做你想做的一切事情了。
在安装完系统后的首次登录时,还需要完成一些初始化设置的操作。
进行到这里就可以做你想做的事情了。
通过使用快照可以存储虚拟机的状态,以便日后系统在使用的过程中有任何异常可以返回到指定的快照。
克隆就是复制系统,可以将系统复制多份。
不同的IP意味着两者是不同的机器,到这里就完成克隆了。
生产环境下的CentOS实际上是不带之前看到的GNome桌面,绝大多数任务都是使用终端通过命令行来实现,而要想实现命令的输入和执行也是非常简单,关于命令和终端不做详细的说明,只需要会使用GNome桌面自带的Terminal来输入命令执行即可,如下图所示。
[guanglei
@ittimeline
~]
$
su root
#切换用户
Password
:
#输入密码 出于安全考虑 不会回显
[root
@ittimeline
guanglei]
# vim /etc/sysconfig
etwork-scripts/ifcfg-ens33 #编辑网卡配置文件
如果CentOS系统开机后,远程连接不上。首先确保网络是否开机启动
修改ONBOOT的值
为什么要关闭防火墙呢?因为防火墙开着可能会造成远程服务连接失败,例如远程登录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是一个基于字符(命令行)的操作系统,而Shell就是介于用户和内核之间的应用程序,它负责读取用户输入的指令并查找指令所在的路径对应的程序然后提交给内核执行,最后将执行的结果返回给用户。当然除此之外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
通配符主要是方便用户对文件或者目录的描述,通过特殊字符来匹配多个任意字符或者单个任意字符
*表示匹配多个字符,例如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允许将一个命令的执行结果输出到一个文件,使用重定向即可,通过>符号完成,该重定向会将之前文件的内容清空,如果想追加内容到文件,可以使用>>来完成。
[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
管道的作用就是将一个命令的输出通过管道作为另外一个命令的输入,通过管道可以实现多个命令组合使用,完成更加复杂的功能,例如下面的命令就是用来演示使用管道和more命令实现分配查看/etc下的文件和目录列表。
[root@ittimeline apache-maven-3.5.0]# ls -al /etc/ |more ##分页查看系统配置信息
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
1 功能说明:用于查看当前用户所处的目录的绝对路径
2 应用案例
[root@ittimeline Downloads]# pwd
/home/guanglei/Downloads
1 功能说明:用于切换不同的目录
2 命令格式:cd [目录]
3 应用案例
[root@ittimeline guanglei]# cd ##不加路径默认就是家目录
[root@ittimeline ~]# pwd
/root
[root@ittimeline ~]#
[root@ittimeline ~]# cd ../ ##..表示返回上一级目录
[root@ittimeline /]# pwd
/
[root@ittimeline /]# cd ~ ##返回上次目录
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
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
1 功能说明:用于删除目录,只能是空目录。
2 命令格式 rmdir 目录
3 应用案例
[root@ittimeline parent]# rmdir child/
[root@ittimeline parent]# ls
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
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
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
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
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]#
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开头的行
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
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
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
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的会话选项中设置
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
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
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
1 功能描述:用于动态显示运行中的进程所消耗的CPU,内存等信息
2 常用快捷键
快捷键名称 | 功能描述 |
---|---|
M | 根据内存来排序 |
P | 根据CPU来排序 |
T | 根据进程运行的时间长短来排序 |
K | 可以根据后面输入的PID来杀死进程 |
q | 退出 |
h | 获得帮助 |
3 应用案例
[root@ittimeline bin]# top
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
1 功能说明:用于查看当前登录的用户
2 应用案例
[root@ittimeline Desktop]# whoami
root
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)
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