bigdata-03-Linux命令系统学习

本文涉及的产品
云防火墙,500元 1000GB
简介: bigdata-03-Linux命令系统学习

1.2-Linux上手

Linux目录简介

启动bigdata01

bin 存放二进制可执行文件(ls,cat,mkdir等)

boot 存放用于系统引导时使用的各种文件

dev 存放设备文件

etc 存放系统配置文件

home 存放所有用户文件的根目录

lib 存放跟文件系统中的程序运行所需要的共享库及内核模块

proc 虚拟文件系统,存放当前内存的映射

usr 存放系统应用程序,比较重要的目录/usr/local 管理员软件安装目录

var 存放运行时需要改变数据的文件

mnt 挂载目录

sbin 存储管理级别的二进制执行文件

root 超级用户主目录

opt 额外安装的可选应用程序包安装位置

->表示软链接,一个目录到另一个目录的映射

文件查看命令

pwd:查看当前所在的路径

ls:列出当前目录下的所有文件

ll:ll(ls -l缩写) 列出当前目录下的文件(带文件信息) 包含权限、用户属组、用户、时间等

ll -a:列出当前目录下的所有文件(包括隐藏文件)

文件/文件夹操作

mkdir :创建文件夹操作

mkdir -p:目标目录存在也不报错

mv: 重命名文件夹

touch 文件名 创建空文件

链接文件/切换目录操作

linux有两种链接:硬链接、符号(软)链接

软链接功能类似类似于windows的快捷方式,主要用于节省磁盘空间

首先看硬链接:硬链接相当于对原始文件的一个复制,不能对目录使用硬链接。

命令如下:

ln hello.txt hlink

再看符号(软)链接:

如果想使用软连接,需要添加-s,相当于快捷方式,不能删除原文件

命令如下:

ln -s hello.txt vlink

切换文件夹操作

cd . 当前目录

一个.表示当前目录

cd .. 去上一级目录

两个..表示上一级目录

cd / 去根目录

通过在cd后面指定目录,可以切换到指定目录

cd ~ 去当前用户主(家)目录

cd xxx/xxx 直接跳转到某个目录

复制粘贴

cp 复制&粘贴文件

复制hello.txt文件,复制后的文件名为hello-bak.txt

cp -r 复制&粘贴文件或目录

复制目录,需要指定r参数

远程复制

打开bigdata02

连接bigdata02

从本地:bigdata01 192.168.197.128 复制到 bigdata02 192.168.197.129

scp /root/hello.txt 192.168.197.129:/root

显示进度在scp后添加-v

复制目录在scp后添加-r

静默复制模式在scp后添加-q

登录bigdata02查看

文件属性简介

黑带七段

第一段:权限

第一个字符代表文件(-)、目录(d),链接(l)

其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

第一组:文件所有者的权限是读、写和执行

第二组:与文件所有者同一组的用户的权限

第三组:不与文件所有者同组的其他用户的权限

也可用数字表示为:r=4,w=2,x=1,如:权限6可以表示为r+w=6

第二段:目录/链接个数

对于目录文件,表示它的第一级子目录的个数

注意:此处的值要减2才等于该目录下的子目录的实际个数(目录下默认包含.和..这两个目录)

对于其他文件,默认是1

第三段:所属用户

第四段:所属组

第五段:文件大小(字节)

第六段:最后修改时间

第七段:文件\文件夹名称

权限分配

chmod u+x hello.txt 给当前所有者添加执行权限【x表示是执行权限】

chmod 777 hello.txt hello.txt添加777权限

查看内容

cat 显示文本内容

vi 编辑

cat -b 显示行号输出

压缩

常见用法:压缩和解压

参数:

-z 是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

-c 创建一个压缩文件的参数指令(create 的意思);

-x 解开一个压缩文件的参数指令!

-v 压缩的过程中显示文件!

-f 使用档案名字,这个参数是最后一个参数,后面只能接档案名!

注意:特别注意,在参数的下达中, c/x 仅能存在一个!不可同时存在!

压缩:

tar -zcvf 打包及压缩(gzip方式)

将soft目录的内容打包压缩为soft.tar.gz

解压:

tar -zxvf 解压(gzip包)

先把soft目录删除,再解压缩soft.tar.gz

输出

echo:将内容输出到设备,类似java里面的system.out.println()

常见用法:

echo "hello\t\t world!" 不解析转义字符

echo -e "hello\t\t world!" 解析转义字符

echo $PATH 输出环境变量

注意:在打印变量信息的时候,使用echo ${PATH} 也可以,效果是一样的

查看操作历史

history N 显示最近N条命令

history -c 清除所有的历史记录

history -w xxx.txt 保存历史记录到文本xxx.txt

磁盘/内存使用

df:磁盘

内存

清屏/关机

clear:清屏

关机:

shutdown -h now 关机

reboot -h now 重启

exit 退出当前登录状态

1.3-Linux高级命令

文档编辑

vi

这个命令初学者在使用的时候很容易出现各种各样的问题,因为大家平时在windows下面搞开发已经很熟悉了,对windows中的文件操作也是得心应手,但是刚刚上手Linux系统,可能对于命令行还不了解的时候就会有点蒙

首先我们创建一个新文件

vi_test.txt

紧接着用vi 操作文件

此时处于不可编辑模式,按i键开启编辑模式

写入内容

a

b

c

d

esc退出编辑,:wq保存退出

查找特点行的内容

进入编辑模式 按下shift加冒号: 输入具体的行号回车,光标就会到指定行

复制粘贴:如果我们需要在文件中根据某一行内容快速复制几行,不用麻烦鼠标了,直接通过键盘操作就行,有研究表明,用键盘操作的效率比鼠标快10倍

使用vi命令打开hello.txt,把光标移动到希望复制的那一行内容上面,然后连按yy,这样就把这一行内容复制上了,然后按p就会把刚才复制的内容粘贴到下一行,按一次p粘贴一行,一直按到你喊停为止。

最后按shift和: 输入wq保存退出即可。

快速删除:如果我们想删除文件中的某几行内容,默认可以进入编辑模式使用退格键删除,按一次删一个字符,这样按的时间长了手指头肯定抽筋啊,所以我们选择更加快捷的方式。

进入命令模式,把光标定位到想要删除的那一行内容上面,连按dd,就可以删除当前行的内容。

快速跳到文件首行和末行

在命令模式下,通过大写的G可以快速将光标移动到最后一行。

当然了这个时候如果还要再回退到第一行,也很简单,在命令模式下输入小写的gg即可快速跳转到第一行。

文件内容统计

首先修改hello.txt  加上一些内容

wc:统计字数相关信息

-c 是表示获取文件内容的字节数量

-m 表示获取字符数量

-L 是获取最长的一行内容的长度

-w 表示文件中单词的个数,默认使用空白符切割

sort:排序

sort命令是对数据进行排序的,它后面也支持很多个参数,我们在这里只讲三个

我们创建一个新的文件 num.txt

用sort 直接排序

用sort -n 排序

用sort -r 排序

直接sort 是按字符串来排序

-n是按照数值

-r是倒序

uniq:检查重复的行列

head -n 取前几条数据

比如我们想取Top3数据,可以这样操作

也可以这样操作

日期相关的高级命令(重点)

date:获取系统时间

date --help获取时间帮助文档

date +"%Y-%m-%d %H:%M:%S"

通过%Y,%m,%d这些参数可以对日期进行格式化

注意:date后面的这些参数中间如果没有空格,可以省略双引

号。

date +%s

这里面的%s表示获取自1970-01-01 00:00:00以来的秒数

在工作中还有一个比较常见的需求,就是获取昨天的日期,这个需求也需要使用--date参数实现

date --date="1 days ago"

再对返回的结果进行格式化,只获取年月日

date --date="1 days ago" +%Y-%m-%d

后续其他需求,都可以在这上面进行扩展

进程

  • ps:显示进程信息
  • netstat:显示端口信息
  • jps:显示Java进程信息
  • top:动态监控进程信息

如果我们是学Linux运维的,那么这几个命令深究起来是有很多用法的,但是我们是搞开发的,我们只需要掌握一些常见用法够我们工作使用即可。

ps -ef:显示系统内的所有进程

ps -ef | grep java 过滤java进程信息

目前我们还没有java相关的进程

我们先过滤下python信息

ps -ef | grep python

netstat -anp |grep 端口号 显示进程和端口信息

yum install -y net-tools 先安装网络工具

实践:过滤22端口信息

jps命令

jps类似于ps命令,不同的是ps显示所有进程,而jps只显示启动的java进程信息。

jps是java提供的命令,只有在装好jdk环境后才有,所以目前我们执行不了,会报错,后续的大数据组件启动后都会有相关的java进程,所以jps命令也非常关键。

top命令:动态显示系统消耗资源最多的信息

按q退出监控模式

kill命令:关闭进程

windows中如果我们想关闭一个进程,那么需要打开任务管理器点结束任务即可

但是针对linux而言,它没有图形化界面

我们首先通过ps命令获取进程的pid之后

kill pid即可

kill pid 相当于我告诉你一声让你自杀,然后你就自己挥刀自杀了

kill -9 pid 针对不自觉的,没有自杀成功的,那我就直接亲自出马了,这就算是它杀了。

Linux三剑客命令

这三个命令用法很多,也非常繁琐,可能几天也讲不完,但针对我们学习大数据,学会基本的,剩下去扩展即可

grep

grep:常用于查找文件里符合条件的字符串

grep -i:忽略大小写查找

grep +正则表达式

过滤以h开头 忽略大小写的信息

grep -n 快速定位位置

过滤所有Python进程信息

ps -ef | grep python

sed

接下来我们看一下Linux的第二个剑客,sed

之前我们修改文件是使用vi命令,大家可以想象一个场景,如果让你同时去修改上千个文件里面的某一行内容,你再使用vi去操作,是不是有点手软,虽然这个上千个文件有点夸张,但是在实际工作中类似这样同时修改10几个文件的场景还是有的,大家不要想着,就10几个文件,我使用vi命令不到10分钟就搞完了,如果你这样想,那就完了,程序员一定要懒,这个懒是指能用程序去做的,千万不要动手。

假设你花费5分钟写一个自动化程序,然后可以在秒级别内解决掉这十几个文件,这样是不是还剩下5分钟时间,把这5分钟时间花在陪女神聊天上面难道不香吗?

首先看一下,如何通过sed命令向文件中添加一行内容,

我的需求是这样的,我想要在hello.txt文件的第二行内容下面添加一行内容

添加数据

注意了,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据,最终把缓冲区内的数据输出到控制台

sed '1a\haha' hello.txt 此操作会将数据添加到第一行下面(也就是第二行的位置)

sed '0a\haha' hello.txt 此操作会报错,行号是从1开始的

a参数是在后面添加

i参数是在前面添加

我们可以通过一个特殊参数 $ 表示在最后一行添加

删除数据

删除文件中的第7行内容

$参数,,删除最后一行

替换操作

sed后面的参数格式为[address]s/pattern/replacement/flags

这里的address 表示指定要操作的具体行,是一个可选项

s 表示替换操作,pattern 指的是需要替换的内容,replacement 指的是要替换的新内容,flags有多种用法,我们挑两种说一下

第一种就是flags可以表示为1~512之间的任意一个数字,表示指定要替换的字符串在这一行中出现第几次时才进行替换

第二种就是flags可以直接表示为g,这样的意思就是对每一行数据中所有匹配到的内容全部进行替换

如果flags位置的值为空,则只会在第一次匹配成功时做替换操作

只替换指定内容:增加address参数即可

修改操作

加-i参数即可

举例:

awk

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑

awk的基本格式:awk [option] programe file

这里的option是一个可选项,一般在这里来指定文件中数据的字段分隔符

programe 是具体的处理逻辑

file表示我们要操作的文件

在具体使用awk之前我们还需要掌握awk的一个特性,就是awk在处理文本数据的时候,它会自动给每行中的每个字段分配一个变量

变量从1开始,

$1表示是文本中的第1个数据字段

$2表示是文本中的第2个数据字段

以此类推。

还有一个特殊的 $0 它代表整个文本行的内容

我们来用awk操作 hello.txt

option里面指定字段分隔符,通过-F 参数

awk -F: '{print $1}' /etc/passwd

awk '/hello/ {print $1}' hello.txt

这种写法表示对每次读取到的那一行数据进行匹配

awk '($1 ~ /hello/) {print $1}' hello.txt

在这里面可以通过$来指定具体是哪一列,需要把具体的对比逻辑放到小括号里面

1.4-Linux练习

分配身份证:静态ip设置

在使用Linux虚拟机的过程中可能会遇到这个问题,当我们重启虚拟机之后,可能会发现使用xshell连接不上虚拟机了,我们通过ip addr查看虚拟机的ip信息发现虚拟机的ip地址发生了变化,什么鬼,其实ip发生变化也是正常的,因为现在的ip地址是自动获取的,理论上来说,Linux虚拟机每次重启之后都可能会重新获取到新的ip地址,这样就麻烦了,之前配置好的连接信息又不能用了,怎么解决呢?

解决方式:

设置静态ip

修改文件/etc/sysconfig/network-scripts/ifcfg-ens33参数

原始内容:

首先修改BOOTPROTO参数,将之前的dhcp改为static

然后在文件末尾增加三行内容【注意,我现在使用的是nat网络模式,不同的网络模式在这里填写的ip信息是不一样的】

IPADDR=192.168.197.100

GATEWAY=192.168.197.2

DNS1=192.168.197.2

注意:IPADDR的值,192.168.197都是取自虚拟机中虚拟网络编辑器中子网地址的值,最后的100是我自己取的,这个值可以取3~254之间的任意一个数值,建议大家也按照我这个取值为100,这样方便统一,后期和我在课堂中使用的都是一样的。

GATEWAY的值是取自虚拟网络编辑器中NAT设置里面的网关的值。

编辑->虚拟网络编辑器 查看vnet8子网地址

上述三行内容加入/etc/sysconfig/network-scripts/ifcfg-ens33文件

修改好是这样的

重启网卡

service network restart

重新编辑

静态ip修改成功

修改另外两台作为静态ip修改练习

重启网卡后,一切ok,地址修改完成

Linux起名(hostname操作)

分别打开三台机将bigdata01、bigdata02、bigdata03分别改名

重启即可生效

reboot -h now

关闭防火墙

具体防火墙的概念我就不再赘述了,在windows中也有防火墙的概念,这个防火墙也不是真用来防火的,而是一个安全系统,防止网络攻击的,我们在学习阶段,建议关闭防火墙,因为在后面我们会使用到多台机器,如果不关闭防火墙,会遇到机器之间无法通信的场景,比较麻烦,在实际工作中这块工作是由运维负责管理的,我们不需要关注这块。

注意:在实际工作中一般是不需要关闭防火墙的,大家可千万别到时候,上去就把防火墙给关闭了,那样的话针对线上的服务器是有很大安全风险的,我们现在学习阶段是使用的自己本地搭建的虚拟机,不会出现任何安全风险,你们现在遇到的风险都是来源于你们自己。

在这里我们只需要掌握关闭防火墙的命令即可

针对防火墙的关闭也分为两种方式,临时关闭和永久关闭,

临时关闭的特性是立刻生效,重启失效

永久关闭的特性是重启生效,永久有效

那在这里使用的时候还是要结合这两种方式,

首先实现临时关闭

永久关闭

习阶段我们关闭防火墙、避免后续用一些奇怪的问题产生

目录
相关文章
|
1天前
|
关系型数据库 MySQL Linux
Linux命令systemctl详解
`systemctl`是Linux系统用于管理systemd服务的核心命令,它与systemd守护进程交互,实现启动、停止、重启服务及查看服务状态等功能。主要参数包括`start`、`stop`、`restart`、`status`、`enable`和`disable`等。例如,启动Apache服务使用`systemctl start httpd.service`,查看服务状态用`systemctl status <service>`。使用时需注意权限,服务名通常以`.service`结尾,但命令中可省略。最佳实践包括利用tab键补全、定期查看服务状态和合理配置服务自启。
|
1天前
|
存储 安全 Linux
Linux命令sync详解
`sync`命令在Linux中用于将内存缓冲区的数据强制写入磁盘,保证数据持久性和一致性。它在关机、重启或重要文件操作前后使用,以防数据丢失。工作原理是强制将内存中的数据同步到磁盘,特点是阻塞式执行且通常无需参数。常见用法包括安全关机、数据备份和配置文件修改后确保更改生效。应注意,过度使用可能影响性能,应适时使用`fsck`检查文件系统一致性。
|
1天前
|
存储 算法 安全
Linux命令sum详解
`sum`命令在Linux中用于计算文件的校验和与磁盘块数,确保文件传输或存储时的完整性。它使用加法运算生成校验和,可与文件内容比较验证变化。支持不同算法(如CRC),能处理多个文件。基本用法包括:`sum file.txt`来计算校验和,`sum -c checksum.txt`来验证文件完整性。但要注意,更强的校验算法如MD5或SHA家族可能更适合安全性需求。结合`find`和`xargs`可用于目录的递归校验。定期校验和记录校验和是最佳实践。
|
1天前
|
安全 数据管理 Shell
Linux命令su详解
`su`命令在Linux中用于切换用户身份,常用于权限管理。它允许用户无须注销当前会话就切换到另一个用户,尤其是root。`su`有多种选项,如`-`或`--login`加载目标用户环境,`-c`执行指定命令后返回。使用时需注意权限安全,建议用`sudo`以减少风险。通过限制`/etc/pam.d/su`可加强访问控制。`su`在系统维护和数据管理中扮演角色,但不直接处理数据。
|
1天前
|
Unix Linux 数据处理
Linux命令stty详解
`stty`是Linux命令,用于设置和查看终端参数,如波特率、字符处理和控制字符。它直接与终端驱动交互,支持多种选项以适应不同的配置需求。例如,`stty -a`显示当前设置,`stty -echo`关闭回显,`stty 115200 cs8`调整波特率和字符大小。注意修改设置可能影响终端行为,建议先备份(`stty -g`)并谨慎操作。查阅手册页以获取详细信息。
|
1天前
|
安全 Linux 数据处理
Linux命令strip详解
`strip`命令在Linux中用于移除可执行文件和库的符号表及调试信息,减小文件大小,提升运行效率。它的工作原理是删除文件中包含的函数名、变量名等信息。主要参数包括`-s`(移除所有符号)、`-g`(仅移除调试信息)等。在应用时要注意文件备份,因为该操作不可逆。最佳实践是在发布版本中使用,并结合构建流程自动化。
|
1天前
|
安全 Linux 数据安全/隐私保护
Linux命令strings详解
`strings`是Linux工具,用于从二进制文件中提取可打印字符串,常用于文件分析、安全审计和逆向工程。它可以识别至少4个连续可打印字符的序列,并支持多种参数,如`-n`调整最小长度,`-f`显示文件名。示例用法包括`strings /bin/ls`和`strings -n 6 /usr/bin/uptime | grep GLIBC`。注意敏感信息泄露,结合其他命令可增强分析能力。
|
2月前
|
缓存 Linux 测试技术
安装【银河麒麟V10】linux系统--并挂载镜像
安装【银河麒麟V10】linux系统--并挂载镜像
798 0
|
2月前
|
关系型数据库 MySQL Linux
卸载、下载、安装mysql(Linux系统centos7)
卸载、下载、安装mysql(Linux系统centos7)
133 0
|
10天前
|
Linux 虚拟化 数据安全/隐私保护
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD
部署05-VMwareWorkstation中安装CentOS7 Linux操作系统, VMware部署CentOS系统第一步,下载Linux系统,/不要忘, CentOS -7-x86_64-DVD