大数据面试之linux复习

Posted 藏在云层

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据面试之linux复习相关的知识,希望对你有一定的参考价值。

1. 常用的高级命令 
	top  		   实时显示系统的运行状态(类似于windows中的任务管理器)
	iotop   	   监视磁盘I/O状态
	ps -ef		   显示当前系统进程状态信息 -e:表示列出全部的进程 -f:显示全部的列(显示全字段)
	df -h          显示磁盘空间使用情况  -h: 以容易阅读的方式呈现出来
	netstat        显示网络状态
	jmap -heap     查看java堆的信息以及垃圾回收算法等  jmap -heap +进程号 查看该进程占用的内存
	tar            压缩和解压缩文件
	rpm			   RPM软件包管理器(用于linux系统下对软件包进行安装、卸载、查询、验证、升级等工作)

查看进程:ps-ef	查看端口号:netstat 查看磁盘使用情况:df -h 查看java堆的信息以及垃圾回收算法:jmap -heap

各个高级命令的详解:
	top: – 实时显示系统运行状态
	top命令的功能是用于实时显示系统运行状态,包含处理器、内存、服务、进程等重要资源信息。运维工程师们常常会把top命令比作是“加强版的Windows任务管理器”,因为除了能看到常规的服务进程信息以外,还能够对处理器和内存的负载情况一目了然,实时感知系统全局的运行状态,非常适合作为接手服务器后执行的第一条命令。
	语法格式:top [参数]
    常用参数:
    -d <秒>	改变显示的更新速度
    -c 	切换显示模式
    -s	安全模式,不允许交互式指令
    -i	不显示任何闲置或僵死的行程
    -n	设定显示的总次数,完成后将会自动退出
    -b	批处理模式,不进行交互式显示
    例子:以默认格式显示系统运行信息(提供完整的进程路径及名称):top -c
         以批处理模式显示程序信息:top -b
         设定每隔5秒刷新一次信息: top -d 5
         设定总显示次数为3回,随后自动退出命令 top -n 3
         
	iotop:-监视磁盘的I/O状态
	iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。
	
    Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使		用iotop命令可以很方便的查看。
    语法格式:iotop [参数]
    常用参数:
    -o	只显示有io操作的进程
    -b	批量显示,无交互,主要用作记录到文件
    -n NUM	显示NUM次,主要用于非交互式模式
    -d SEC	间隔SEC秒显示一次
    -p PID	监控的进程pid
    -u USER	监控的进程用户
	例子:使用-o参数只显示IO操作进程:iotop -o
	 	 使用-b参数批量显示,无交互:iotop -b
	 	 使用-u参数显示root用户的IO进程:iotop -u root
	 	 
	 ps: -显示当前系统的进程的状态信息

	ps命令来自于英文词组”process status“的缩写,其功能是用于显示当前系统的进程状态。使用ps命令可以查看到进程的所有信息,例如进程的号码、发起者、系统资源使用占比(处理器与内存)、运行状态等等。帮助我们及时的发现哪些进程出现”僵死“或”不可中断“等异常情况。

经常会与kill命令搭配使用来中断和删除不必要的服务进程,避免服务器的资源浪费。
[zhushouqing@hadoop177 ~]$ ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 10:30 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 10:30 ?        00:00:00 [kthreadd]

列的含义说明:
UID: 该进程执行的用户id
PID: 进程id
PPID: 该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程被称为僵尸进程
C: cpu的占用率,形式是百分数(%)
STIME: 进程的启动时间
TTY: 终端设备,发起该进程的设备识别符号,如果显示‘ ?’表示该进程并不是由终端发起
TIME: 进程的执行时间
CMD: 该进程的名称或对应的路径

常用的组合命令:
	ps -ef | grep 进程名称
	注意:执行该命令至少有一个进程(搜索该命令的进程)
[zhushouqing@hadoop177 ~]$ ps -ef | grep mysql
mysql      1548      1  0 10:30 ?        00:00:52 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
zhushou+  21133   1802  0 19:12 pts/0    00:00:00 grep --color=auto mysql

	df: -显示磁盘空间使用情况
	df命令来自于英文词组”Disk Free“的缩写,其功能是用于显示系统上磁盘空间的使用量情况。df命令显示的磁盘使用量情况含可用、已有及使用率等信息,默认单位为Kb,建议使用-h参数进行单位换算,毕竟135M比138240Kb更利于阅读对吧~
语法格式: df [参数] [对象磁盘/分区]
	df -h
[zhushouqing@hadoop177 ~]$ df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   45G   18G   28G   39% /
devtmpfs                 2.0G     0  2.0G    0% /dev
tmpfs                    2.0G     0  2.0G    0% /dev/shm
	
	netstat: -显示网络状态
	netstat命令来自于英文词组”network statistics“的缩写,其功能是用于显示各种网络相关信息,例如网络连接状态、路由表信息、接口状态、NAT、多播成员等等。
    netstat命令不仅应用于Linux系统,而且在Windows XP、Windows 7、Windows 10及Windows 11中均已默认支持,并且可用参数也相同,有经验的运维人员可以直接上手。
    语法格式:netstat [参数]
	常用参数:
    -a	显示所有连线中的Socket
    -p	显示正在使用Socket的程序识别码和程序名称
    -l	仅列出在监听的服务状态
    -t	显示TCP传输协议的连线状况
    -u	显示UDP传输协议的连线状况
    -i  显示网络界面信息表单
    -r	显示路由表信息
    -n	直接使用IP地址,不通过域名服务器
    例子:
    	显示系统网络状态中的所有连接信息:netstat -a
    	显示系统网络状态中的UDP连接信息:netstat -nu
    
    jmap  -打印指定Java进程的共享对象内存映射或堆内存细节
    jmap,Java Memory Map。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。
    jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。可以使用jmap生成Heap Dump。
     简单来说—>监控内存内的Java对象
	jmap -heap: 打印Java堆概要信息,包括使用的GC算法、堆配置参数和各代中堆内存使用情况;
	
	tar  -压缩和解压缩文件
    tar命令的功能是用于压缩和解压缩文件,能够制作出Linux系统中常见的.tar、.tar.gz、.tar.bz2等格式的压缩包文件。对于RHEL7、CentOS7版本以后的系统,解压时可以不加压缩格式参数(如z或j),系统能自动进行分析并解压。
    把要传输的文件先进行压缩再进行传输,能够很好的提高工作效率,方便分享。
    
语法:tar [选项] [fileName]
    作用:将多个文件或目录打包

    常用格式:
    ]$  tar -cv  -f newfile.tar  filename.....   <= 将多个文件进行打包
    ]$  tar [-z|-j|-J] [cv] [-f  新文档名]  filename......               <==打包并压缩 
    ]$  tar [-z|-j|-J] [tv] [-f  已有tar文档名]                          <==查看压缩
    ]$  tar [-z|-j|-J] [xv] [-f 已有tar文档名] [-C pathname]   	      <==解压缩


    -z  : 通过gzip指令进行压缩或解压缩,此时最好命名为*.tar.gz。
    -j  : 通过bzip2指令进行压缩或解压缩,此时最好命名为*.tar.bz2。
    -J  : 通过xz指令对进行压缩或解压缩,此时最好命名为*.tar.xz。

    -c  : 创建打包文档,可以使用-v来查看过程中被打包的文件名。
    -x  : 用于解包或解压缩,可以使用-C配合解到特定目录下。
    -t  : 用于查看打包文档内有哪些文件名。

    -v  : 在压缩/解压缩过程中,显示正在被处理的文件或目录名。 
    -f  : 在打包或解包时用于指定要处理的文档名称。建议单独一项,避免忘记。格式:-f   filename
    -C  : 用于指定解压缩到特定目录下。 格式: -C  path
    -p  : 保留文件的原本权限和属性,常用于备份文件
	例子:
		注释:newfile.* 将要创建的压缩文件(不存在)  oldfile.*将要被解压/包的文件(已经存在)
		使用gzip压缩格式对某个目录进行打包操作、显示压缩过程、压缩包规范后缀为.tar.gz
			tar -zcvf newfile.tar.gz /etc(也可以传入多个文件)
		使用bzip2压缩格式对某个目录进行打包操作、显示压缩过程、压缩包规范后缀为.tar.bz2
        	tar -jcvf newfile.tar.bz2 /etc(也可以传入多个文件)
        把当前工作目录内所有以.cfg为后缀的文件打包、不进行压缩
        	tar -cvf newfile.tar ./*.cfg
        把当前工作目录内的所有以.cfg为后缀的文件打包,不进行压缩、并删除原始文件
        	tar -cvf newfile.tar ./*.cfg --remove-files
        解压某个压缩包到当前工作目录:
        	tar -xvf oldfile.tar
        解压某个.gz的压缩包到/etc目录:
        	tar -zxvf oldfile.tar.gz -C /etc
        查看某个压缩包内文件信息(无需解压)
        	tar -tvf oldfile.tar
        
    rpm -RPM软件包管理器
    	rpm命令来自于英文词组”RedHat Package Manager“的缩写,中文译为红帽软件包管理器,其功能是用于在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作。

    语法格式:rpm [参数] 软件包
    常用参数:
    -a	查询所有的软件包
    -b或-t	设置包装套件的完成阶段,并指定套件档的文件名称;
    -c	只列出组态配置文件,本参数需配合”-l”参数使用
    -d	只列出文本文件,本参数需配合”-l”参数使用
    -e	卸载软件包
    -f	查询文件或命令属于哪个软件包
    -h	安装软件包时列出标记
    -i	安装软件包
    -l	显示软件包的文件列表
    -p	查询指定的rpm软件包
    -q	查询软件包
    -R	显示软件包的依赖关系
    -s	显示文件状态,本参数需配合”-l”参数使用
    -U	升级软件包
    -v	显示命令执行过程
    -vv	详细显示指令执行过程
    例子:
    	安装软件包:rpm -ivh xxx.rpm
    	显示系统已经安装过的全部的rpm软件包:rpm -qa
    	查询某个软件的安装路径:rpm -ql xxx
    	卸载某个通过RPM软件包安装的服务:rpm -evh xxx
    	升级某个软件包: rpm -Uvh xxx

linux目录结构:
/bin        二进制文件,系统常规命令
/boot       系统启动分区,系统启动时读取的文件
/dev        设备文件
/etc        大多数配置文件
/home       普通用户的家目录
/lib        32位函数库
/lib64      64位库
/media      手动临时挂载点
/mnt        手动临时挂载点
/opt        第三方软件安装位置
/proc       进程信息及硬件信息
/root       临时设备的默认挂载点
/sbin       系统管理命令
/srv        数据
/var        数据
/sys        内核相关信息
/tmp        临时文件
/usr        用户相关设定

linux系统命令行含义:
示例:root@app00:~# 
root    //用户名,root为超级用户
@       //分隔符
app00   //主机名称
~       //当前所在目录,默认用户目录为~,会随着目录切换而变化,例如:(root@app00:/bin# ,当前位置在bin目录下)
#       //表示当前用户是超级用户,普通用户为$,例如:("yao@app00:/root$" ,表示使用用户"yao"访问/root文件夹)

2.基础命令详解
	2.1 三个最常用的命令
	cd	ls	pwd
	
	2.2 帮助命令组  man、help、info
	man:	可以查询命令或者配置文件的帮助文档
			用法 :man 命令||配置文件
			例子 :man find
	help:	查询内置命令的帮助信息(help命令的功能是用于显示帮助信息,能够输出Shell内部命令的帮助内容,但对于外部命令则无法使用,需要用man或info命令进行查看了。)
			用法:help 命令
			例子:help cd
	info: 	查看命令帮助文档(info命令可以阅读info格式的文件,用来查看帮助信息。info文档可以支持链接跳转功能。info文档都存放在/usr/share/info目录中,该目录提供了整个软件包的帮助文档。)
			用法:info 命令
			例子 info ls 
			
	2.3 文件处理命令 mkdir、touch、mv、cp、ln、rm、echo
		mkdir
		创建文件夹(mkdir命令来自于英文词组“make directories”的缩写,其功能是用来创建目录文件。使用简单,但需要注意若要创建的目标目录已经存在,则会提示已存在而不继续创建,不覆盖已有文件。而目录不存在,但具有嵌套的依赖关系,例如a/b/c/d/e/f,要想一次性创建则需要加入-p参数,进行递归操作。)
		
		touch
		touch命令的功能是用于创建空文件与修改时间戳。如果文件不存在,则会创建出一个空内容的文本文件;如果文件已经存在,则会对文件的Atime(访问时间)和Ctime(修改时间)进行修改操作,管理员可以完成此项工作,而普通用户只能管理主机的文件。
		
		mv
		mv命令来自于英文单词move的缩写,其功能与英文含义相同,用于对文件进行剪切和重命名。
这是一个高频使用的文件管理命令,我们需要留意它与复制命令的区别。cp命令是用于文件的复制操作,文件个数是增加的,而mv则为剪切操作,也就是对文件进行移动(搬家)操作,文件位置发生变化,但总个数并无增加。

		cp
		cp命令来自于英文单词copy的缩写,用于将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。-r参数用于递归操作,复制目录时若忘记加则会直接报错,而-f参数则用于当目标文件已存在时会直接覆盖不再询问,这两个参数尤为常用。
		
		echo
		echo是用于在终端设备上输出指定字符串或变量提取后值的命令,能够给用户一些简单的提醒信息,也可以将输出的指定字符串内容同管道符一起传递给后续命令作为标准输入信息再来进行二次处理,又或者同输出重定向符一起操作,将信息直接写入到文件中。
		
		ln
		ln命令来自于英文单词link的缩写,中文译为“链接”,其功能是用于为某个文件在另外一个位置建立同步的链接。Linux系统中的链接文件有两种形式,一种是硬链接(hard link),另一种是软链接(symbolic link)。软连接相当于Windows系统中的快捷方式文件,原始文件被移动或删除后,软连接文件也将无法使用,而硬链接则是通过将文件的inode属性块进行了复制 ,因此把原始文件移动或删除后,硬链接文件依然可以使用。
		软链接与硬链接:
		命令: 硬链接: ln 源文件 目标文件
			  软链接: ln -s 源文件 目标文件
		我们可以把符号链接,也就是软连接,当做是 Windows系统里的快捷方式。
        硬链接 就好像是 又复制了一份,举例说明:
        ln 3.txt 4.txt 这是硬链接,相当于复制,不可以跨分区(不能对目录进行操),但修改3,4会跟着变,若删除3,4不受任何影响。
        ln -s 3.txt 4.txt 这是软连接,相当于快捷方式。修改4,3也会跟着变,若删除3,4就坏掉了,不可以用了。
		软链接:
			1. 是单独的文件(是一个新文件),有自己的inode,文件大小不变,若删除源文件,链接文件失效
			2. 可以对目录进行软链接
		硬链接:
			1. 和原文件共用一个inode,就是原名的别名,和文件大小一致(指向同一个数据块),删除源文件,链接文件不受影响
			2. 不能对目录进行硬链接
	
	   rm
	   rm命令来自于英文单词remove的缩写,其功能是用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。
       rm也是一个很危险的命令,使用的时候要特别当心,尤其对于新手更要格外注意,如执行rm -rf /*命令则会清空系统中所有的文件,甚至无法恢复回来。所以我们在执行之前一定要再次确认下在哪个目录中,到底要删除什么文件,考虑好后再敲击回车,时刻保持清醒的头脑。
       
	2.4 文件查看命令 cat、more、vi、less、head、tail
        vi文件名 #编辑方式查看,可修改
        cat文件名 #显示全部文件内容
        more文件名 #分页显示文件内容
        less文件名#与 more 相似,更好的是可以往前翻页
        tail 文件名 #仅查看尾部,还可以指定行数
        head 文件名 #仅查看头部,还可以指定行数
        
		cat
		cat命令来自于英文单词concatenate的缩写,其功能是用于查看文件内容。在Linux系统中有很多用于查看文件内容的命令,例如more、tail、head……等等,每个命令都有各自的特点。cat命令适合查看内容较少的、纯文本的文件。
对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+c键中断命令的执行,所以对于大文件,干脆用more命令吧~
		例子: 查看某个文件的内容,并显示行号:cat -n filename
			  搭配空设备文件(黑洞)和输出重定向操作符,将某个文件内容清空:cat /dev/null > 要清楚内容的文件名
	    more
	    more命令的功能是用于分页显示文本文件内容。如果文本文件中的内容较多较长,使用cat命令读取后则很难看清,这时使用more命令进行分页查看就更加合适了,可以把文本内容一页一页的显示在终端界面上,用户每按一次回车即向下一行,每按一次空格即向下一页,直至看完为止。
	    vi
	    vi命令的功能是用于编辑文本内容,是Linux系统字符界面下最常用的文本编辑工具,能够编辑任何的ASCII格式文件,对内容进行创建、查找、替换、修改、删除、复制、粘贴等操作。编写文件时,无需担心目标文件是否存在,若不存在则会自动在内存中创建,随保存操作输出到硬盘中。
	    less
	    less命令的功能是用于分页显示文件内容。分页显示的功能与more命令很相像,但more命令只能从前向后浏览文件内容,而less命令则不仅能从前向后(PageDown键),还可以从后向前(PageUp键)浏览文件内容,更加灵活。
	    
	    head
	    head命令的功能是显示文件开头的内容,默认为前10行。
	    
	    tail
	    tail -f 常用来看日志的最新状态
	    tail命令的功能是用于查看文件尾部内容,例如默认会在终端界面上显示出指定文件的末尾十行,如果指定了多个文件,则会在显示的每个文件内容前面加上文件名来加以区分。
高阶玩法的-f参数作用是持续显示文件的尾部最新内容,类似于机场候机厅的大屏幕,总会把最新的消息展示给用户,对阅读日志文件尤为适合,而不需要手动刷新。

	2.5 文件查找命令 which、whereis、find、locate、grep(前两个用来查找命令所在路径的,find既可以用来查找文件也可以查找命令)
		which:显示系统命令所在目录(绝对路径及别名)
		which命令的功能是用于查找命令文件,能够快速搜索二进制程序所对应的位置。如果我们既不关心同名文件(find与locate),也不关心命令所对应的源代码和帮助文件(whereis),仅仅是想找到命令本身所在的路径,那么这个which命令就太合适了。
        [zhushouqing@hadoop177 ~]$ which ls
        alias ls='ls --color=auto'
        /usr/bin/ls
        
		whereis:搜索命令所在目录 配置文件所在目录及帮助文档路径
		[zhushouqing@hadoop177 ~]$ whereis ls
		ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
		
		find: 查找文件命令,可以在整个磁盘进行查找,因此尽量要缩小范围查找,而不应该指定/
		find命令的功能是根据给定的路径和条件查找相关文件或目录,可以使用的参数很多,并且支持正则表达式,结合管道符后能够实现更加复杂的功能,是系统管理员和普通用户日常工作必须掌握的命令之一。
    	find命令通常进行的是从根目录(/)开始的全盘搜索,有别于whereis、which、locate……等等的有条件或部分文件的搜索。对于服务器负载较高的情况,建议不要在高峰时期使用find命令的模糊搜索,会相对消耗较多的系统资源。
		语法:find [搜索路径] [匹配条件]
			如果没有指定搜索路径,默认从当前目录查找
		例子:按照名称查找 -name
				find /etc -name "init"
				find /etc -name "init*"
			 按照文件类型查找:-type
			 	find /etc -type d
			 		d:表示目录
			 		l:表示软链接
			 		f:表示普通文件
			 按照文件大小进行查找:-size 
			 	+表示大于某一个值 -表示小于某一个值 -a 表示连接条件and -o表示连接条件or
			 	find /etc -size +1K -a -size -2M
			 如果不指定单位,那么就是按照block进行查找,一个block为512个字节
			 	find /etc -size -2048
		
		locate:
            locate命令的功能是用于快速查找文件或目录。与find命令进行全局搜索不同,locate命令是基于了数据文件	(/var/lib/locatedb)进行的定点查找,由于缩小了搜索范围,因此快速快很多。
    		Linux系统需定期执行下updatedb命令对数据库文件进行更新,然后再使用locate命令进行查找,这样才会更加准确。
    		语法格式:locate 文件
		
		grep:用于过滤指定文件中符合条件的字符串 注意用来搜索文件中的内容的
		grep来自于英文词组“global search regular expression and print out the line”的缩写,意思是用于全面搜索的正则表达式,并将结果输出。人们通常会将grep命令与正则表达式搭配使用,参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵活。
		语法:grep [参数] [关键字] [目标文件]
		常用参数:-i 忽略大小写
				-n 输出行号
				-v 反向选择
				-c 表示符合条件的行数
		例子:搜索某个文件中,包含某个关键词的内容:grep 关键词 目标文件1 (目标文件2)
			 搜索某个文件中,以某个关键词开头的内容:grep ^关键词 目标文件
			 搜索某个文件中,不包含某个关键字的内容:grep -v 关键词 目标文件
	  	
	  	扩展内容:管道符号 |
	  			command | command | command
	  			前一个命令的结果会通过管道教给下一个命令继续处理
	  		
	  			
	2.6 打包压缩命令 gzip/gunzip bzip2/bunzip2 zip/unzip tar (注意前两者只能用来压缩文件,但zip既可以压缩文件也可压缩目录,前三者用于单一文件或者目录,tar用于多个文件或目录)
		gzip/gunzip
			语法:gzip [选项] [filename]
			只能压缩文件,不保留源文件(即用来压缩或者解压缩的文件,默认会删除,新文件在当前目录下,如需保留源文件 -k),压缩格				式:*.gz
			常用选项(参数):
				-v 可以显示压缩比,文件名等信息
				-# #为数字,表示压缩等级,-1 最快,但是压缩比最差,-9 最慢,但是压缩比最好!默认是-6
				-d 解压缩参数 gzip -d *.tar.gz 
				
		bzip2/bunzip2
            语法:bzip2 [选项] [fileName]...    
            只能压缩文件
            默认不保留源文件
            压缩格式:*.bz2
            常用选项:
            -v  :可以显示压缩比,文件名等信息
            -#  :#为数字,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
            -d  :解压缩参数			-k  : 压缩后,保留源文件
           注意:minimal版本 bzip2命令是没有安装,需要自行安装
               yum -y install bzip2.x86_64    

  
       zip/unzip
           命令路径:/usr/bin/zip       格式:*.zip
           功能描述:压缩文件或目录
           语法:   zip   选项   [压缩后文件名称]   [文件或目录]
           选项:	-r	压缩目录
           Ex:	zip  services.zip /etc/services
           zip  -r test.zip /test
           注意:minimal版本 zip命令是没有安装,需要自行安装
           yum -y install zip.x86_64
        
        
       	语法:tar [选项] [fileName]
        	作用:将多个文件或目录打包

       		常用格式:
            ]$  tar -cv  -f newfile.tar  filename.....   <= 将多个文件进行打包
            ]$  tar [-z|-j|-J] [cv] [-f  新文档名]  filename......               <==打包并压缩 
            ]$  tar [-z|-j|-J] [tv] [-f  已有tar文档名]                          <==查看压缩
            ]$  tar [-z|-j|-J] [xv] [-f 已有tar文档名] [-C pathname]   	      <==解压缩


            -z  : 通过gzip指令进行压缩或解压缩,此时最好命名为*.tar.gz。
            -j  : 通过bzip2指令进行压缩或解压缩,此时最好命名为*.tar.bz2。
            -J  : 通过xz指令对进行压缩或解压缩,此时最好命令为*.tar.xz。

            -c  : 创建打包文档,可以使用-v来查看过程中被打包的文件名。
            -x  : 用于解包或解压缩,可以使用-C配合解到特定目录下。
            -t  : 用于查看打包文档内有哪些文件名。

            -v  : 在压缩/解压缩过程中,显示正在被处理的文件或目录名。 
            -f  : 在打包或解包时用于指定要处理的文档名称。建议单独一项,避免忘记。格式:-f   filename
            -C  : 用于指定解压缩到特定目录下。 格式: -C  path
            -p  : 保留文件的原本权限和属性,常用于备份文件
            
	2.7 date
		功能描述:可以用来显示或设定系统的日期与时间
		语法: date [参数] [+格式]
		常用格式::%Y(年) %m(月) %d(日) %H(时) %M(分) %S(秒) %p(上下午) %Z(时区) %W(第几周) %w(周几)
		常用指令:
			获取当前日期的前一天日期:date -d "-1 day" +%F  || date -d "-1 day" +%Y-%m-%d
			获取当前日期的前一年日期:date -d "+1 year" +%F
	
	2.8 关机重启指令
			立刻关机:shutdown -h now 或者 poweroff
			两分钟后关机: shutdowm -h 2
			立刻重启: shutdown -r now 或者 reboot
			两分钟后重启: shutdowm -r 2
    2.9 用户和用户组命令
           useradd:  创建用户      useradd   michael
           passwd:   修改密码
           usermod: 修改用户
           userdel: 删除用户
           groupadd:创建用户组
           groupmod:修改用户组
           groupdel:删除用户组
    2.11 权限管理指令:
            chmod:  修改第一列  
            chown:  修改第三列或第四列
            chgrp:  修改第四列
      
		 ls -l 
		 [zhushouqing@hadoop177 bin]$ ls -l
            -rwxrwxrwx  1 zhushouqing zhushouqing  1021 1月   5 21:24 azkaban.sh
            -rwxrwxrwx  1 zhushouqing zhushouqing   337 12月 12 18:32 cluster.sh
            -rwxrwxrwx  1 zhushouqing zhushouqing 29580 12月 31 20:22 dwd_to_dws_init.sh

            第一列       第二列     第三列     第四列    第五列        第六列          第七列
            -rw-r--r--    1        root     root      27       6月  27 09:50    file2.gz
              第一列:文件权限简介:'r' 代表可读(4),'w' 代表可写(2),'x' 代表执行权限(1),括号内代表"8421法"
                      ##文件权限信息示例:-rwxrw-r--
                      -第一位:-就是普通文件 d:目录 s:套接字文件 l:链接文件
                      -第一组三位:拥有者的权限
                      -第二组三位:拥有者所在的组,组员的权限
                      -第三组三位:代表的是其他用户的权限
             第二列:链接数
             第三列:所有者
             第四列:所有者所在的组
             第五列:指定文件大小(以字节为单位) 
             第六列:上次修改的日期
             第七列:文件名
        使用ls -lh以人类可读格式显示文件大小
        ls -lh(h代表人类可读形式):以易于阅读的格式显示文件大小。即,M表示MB,K表示KB,G表示GB。
        
     2.12 vi/vim
       vi 文件名              //打开需要编辑的文件
      --进入后,操作界面有三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
      命令模式
      -刚进入文件就是命令模式,通过方向键控制光标位置,
      -使用命令"dd"删除当前整行
      -使用命令"/字段"进行查找
      -按"i"在光标所在字符前开始插入
      -按"a"在光标所在字符后开始插入
      -按"o"在光标所在行的下面另起一新行插入
      -按":"进入底行模式
      插入模式
      -此时可以对文件内容进行编辑,左下角会显示 "-- 插入 --""
      -按"ESC"进入底行模式
      底行模式
      -退出编辑:      :q
      -强制退出:      :q!
      -保存并退出:    :wq
      ## 操作步骤示例 ##
      1.保存文件:按"ESC" -> 输入":" -> 输入"wq",回车     //保存并退出编辑
      2.取消操作:按"ESC" -> 输入":" -> 输入"q!",回车     //撤销本次修改并退出编辑
      ## 补充 ##
      vim +10 filename.txt                   //打开文件并跳到第10行
      vim -R /etc/passwd                     //以只读模式打开文件
      
	2.13 常用配置命令
      ##centos7 防火墙操作
      systemctl status firewalld.service     //查看防火墙状态
      systemctl stop firewalld.service       //关闭运行的防火墙
      systemctl disable firewalld.service    //永久禁止防火墙服务
      
      修改主机名:vim /etc/hostname
      修改IP:   vim /etc/sysconfig/network-scripts/ifcfg-ens33 
      配置主机名-->IP地址映射:vim /etc/hosts
      
3.常用快捷键
    ctrl+c:结束正在进行的进程
    ctrl+z: 将正在进行的进程挂起到后台
    ctrl+l:相当于clear命令,用于清屏操作
    ctrl+a:表示将命令的光标移至句首
    ctrl+e:表示将命令的光标移至句尾
    ctrl+w: 删除光标前的单词
    ctrl+k:删除光标后的内容

4.linux常考面试题:
	1.如何查看所有java进程 grep搜索关键字
        ps -ef | grep java
        显示所有状态
        ps -aux | grep java
        
	2. 如何杀掉某个服务的进程
	 	kill -9 [PID] 
	 	如果PID未知,可以使用 ps -ef | grep java 显示出来结果的第二列就是PID 或者可以使用jps,这里mysql的PID为1470
		[zhushouqing@hadoop177 bin]$ ps -ef | grep mysql
        mysql      1470      1  0 09:25 ?        00:00:25 /usr/sbin/mysqld --daemonize --pid-	
        
	3.如何查看测试项目的日志
		一般测试的项目里面有个logs的目录文件,会存放日志文件,有个xxx.out的文件,可以用tail -f 动态实时查看后端日志
		tail -f 要监控的日志文件名     参数说明 -f 持续显示文件最新追加的内容
		这时屏幕会动态实时当前的日志,ctrl+c 停止
		查看最近1000行日志  tail -1000 xxx
	
	4.如何查看端口
	查看所有端口:netstat -a
	查看某个端口是否被占用:netstat -anp | grep 3306
	结果:
	[zhushouqing@hadoop177 logs]$ netstat -anp | grep 3306
    (No info could be read for "-p": geteuid()=1000 but you should be root.)
    tcp6       0      0 :::3306                 :::*                    LISTEN      -   
    结果 :看监控状态为LISTEN表示已经被占用
    
    查看82端口的使用情况,如图
    netstat -anp | grep 82
    结果:
    [zhushouqing@hadoop177 logs]$ netstat -anp | grep 82
    unix  2      [ ACC ]     STREAM     LISTENING     26824    -                    private/smtp
    unix  2      [ ACC ]     STREAM     LISTENING     26827    -                    private/relay
    unix  3      [ ]         STREAM     CONNECTED     18261    -                    
    unix  3      [ ]         STREAM     CONNECTED     18201    -                    
    unix  3      [ ]         STREAM     CONNECTED     29182    -                    
	可以看出并没有LISTEN那一行,所以就表示没有被占用。此处注意,上述显示的LISTENING并不表示端口被占用,不要和LISTEN混淆。
	查看具体端口的时候,必须要看到tcp ,端口号,LISTEN,才表示端口被占用
	
	查看当前所有已经被占用的端口的使用情况:netstat -anptu
	
	5.如何查找文件
	如何查找一个文件大小超过5M的文件
	find / -type f -size +100M
	如果知道一个文件的名称,怎么查找这个文件在linux下的哪个目录,
	find / -name xxx
	locate xxx
	
	6.常用的文件操作命令有哪些
	创建目录命令 : mkdir 
	创建文件命令 :touch、vi,其实只要向一个不存在的文件的输出,都会创建文件
	复制文件:cp [参数] 源文件 目标文件
	移动/重命名: mv 源文件 目标文件
	删除文件: rm -rf 目录名字 -r 就是向下递归,不管有多少级的目录,一并删除 -f 就是直接强行删除,不作任何提示的意思
	
	7.终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
	终端:/dev/tty
	黑洞文件:/dev/null
	
	8.Linux下命令有哪几种可使用的通配符?分别代表什么含义?
	?可代替单个字符
	* 可替代任意多个字符
	[charset] 可替代charset集合中任何的单个字符,如[a-z] [abAd]
    
    9.用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
    wc 文件名  wc -l filename 行数,wc -w filename 字数,wc -c filename 字节数
    [zhushouqing@hadoop177 bin]$ wc myhadoop.sh 
      34    101   1131 myhadoop.sh
      行数   字数   字节数
      
    10.怎么使一个命令在后台运行?
	一般都是使用 & 在命令结尾来让程序自动运行。(命令后不可追加空格)
	
	11.查看各类环境变量用什么命令?
	查看所有 :env
	查看某个,如home : env $HOME

	12.du与df的区别
	du -h 文件名 查看文件或目录的大小
	df -h 查看系统的磁盘使用情况
	du命令来自于英文词组“Disk Usage”的缩写,其功能是用于查看文件或目录的大小。人们经常会把df和du命令混淆,df是用于查看磁盘或分区使用情况的命令,而du命令则是用于按照指定容量单位来查看文件或目录在磁盘中的占用情况。
	
	13.awk详解
	awk命令来自于三位创始人”Alfred Aho,Peter Weinberger, Brian Kernighan “的姓氏缩写,其功能是用于对文本和数据进行处理的编程语言。使用awk命令可以让用户自定义函数或正则表达式对文本内容进行高效管理,与sed、grep并称为Linux系统中的文本三剑客。
	awk 参数 文件
	例子:仅显示指定文件中第1、2列的内容(默认以空格为间隔符)
			awk 'print $1,$2' 文件名
		 以冒号为间隔符,仅显示指定文件中第1列的内容:
		 	awk -F : 'print $1' 文件名
		以冒号为间隔符,显示系统中所有UID号码大于500的用户信息(第3列)
		    awk -F : '$3>=500' /etc/passwd
	
	14.怎样一页一页的查看一个大文件的内容呢?
	cat filename | more
	
	15.数据字典属于哪一个用户的?
	数据字典属于SYS用户的,用户SYS和SYSEM是由系统默认自动创建的
	
	16.问题:Linux 查看内存、磁盘存储、io 读写、端口占用、进程等命令
    答案:
    1、查看内存:top
    2、查看磁盘存储情况:df -h
    3、查 看磁盘 IO 读写情况:iotop(需要安装一下:yum install iotop)、
    iotop -o(直接查看输出比较高的磁盘读写程序)
    4、查看端口占用情况:netstat -tunlp | grep 端口号
    5、查看进程:ps -ef
	

以上是关于大数据面试之linux复习的主要内容,如果未能解决你的问题,请参考以下文章

学了1年大数据,来测测你大数据技术掌握程度?大数据综合复习之面试题15问(思维导图+问答库)

《LeetCode之每日一题》:94.面试题 10.02. 变位词组

大数据常见面试算法题复习

11月大数据面试题复习

11月大数据面试题复习

大数据学长面试之华为面试题