Hadoop大数据基础入门教程-(2)linux基础增强

本文详细介绍了Linux中的查找命令,如grep、find、locate、whereis和which,以及用户与用户组管理、su与sudo的使用。同时,讲解了Linux的权限管理,包括chown和chmod。此外,还提到了系统服务管理和网络管理的基础知识,如主机名和IP地址配置,以及网络端口监听。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一节:Hadoop大数据基础入门教程-(1)环境搭建

一.查找命令

grep命令

grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来
格式: grep [option] pattern [file] ,可使用 —help 查看更多参数。
使用实例:

ps -ef | grep sshd 查找指定 ssh 服务进程
ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除 gerp 本身
ps -ef | grep sshd –c 查找指定进程个数
cat a.txt | grep -f b.txt 从文件中读取关键词进行搜索
输出 a.txt 文件中含有从 b.txt 文件中读取出的关键词的内容行
cat a.txt | grep –nf b.txt 从文件中读取关键词进行搜索,显示行号
grep -n 'hello' a.txt  从文件中查找关键词,并显示行号
cat test.txt |grep ^u 找出以 u 开头的行内容
cat test.txt |grep ^[^u] 输出非 u 开头的行内容
cat test.txt |grep hat$ 输出以 hat 结尾的行内容
cat test.txt |grep -E "ed|at" 显示包含 ed 或者 at 字符的内容行

find命令

find 命令在目录结构中搜索文件,并对搜索结果执行指定的操作。
find 默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
实际参数很多,可使用 —help 查看。
使用实例:

find . -name "*.log" -ls 在当前目录查找以.log 结尾的文件, 并显示详细信息。
find /root/ -perm 777 查找/root/目录下权限为 777 的文件
find . -type f -name "*.log" 查找当目录,以.log 结尾的普通文件
find . -type d | sort 查找当前所有目录并排序
find . -size +100M 查找当前目录大于 100M 的文件

Locate命令

locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库。之后当寻找时就只需查询这个数据库( /var/lib/locatedb)。
Linux 系统自动创建这个数据库, 默认每天自动更新一次,所以使用 locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。
如果是精简版 CentOS 系统需要安装 locate 命令

yum -y install mlocate

updatedb 命令来创建 locate 命令依赖的数据库

updatedb

使用实例:

locate /etc/sh       搜索 etc 目录下所有以 sh 开头的文件  
locate pwd      查找和 pwd 相关的所有文件  

whereis命令

whereis 命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。
whereis 和下 locate 一样,会从数据库中查找数据,而不是像 find 命令那样,通过遍历硬盘来查找。
使用实例:

whereis ls 将和 ls 文件相关的文件都查找出来  
样例输出:ls: /bin/ls /usr/share/man/man1/ls.1.gz  
whereis -m ls 查找 ls 命令说明文档路径  
whereis -s ls 查找 ls 源文件  

which命令

which 命令的作用是在 PATH 变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
使用实例:

which pwd 查找 pwd 命令所在路径
样例输出:/bin/pwd
which java 查找 path 中 java 的路径
样例输出:/root/apps/jdk1.8.0_65/bin/java

which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档, 所以,
不同的 PATH 配置内容所找到的命令会不一样

二.用户与用户组

添加普通用户

useradd   hadoop    #   这个就表示我们创建了一个普通用户  
passwd   hadoop    # 表示我们需要给hadoop这个普通用户分配一个密码,密码需要自己设置  

在这里插入图片描述
添加用户组:

groupadd  storm  表示我们自己添加了一个storm的组  

三.su与sudo

su的使用

切换用户:linux当中可以使用su来切换不同的用户角色
su root 表示我们需要切换成其他用户,需要使用密码
添加用户组:groupadd storm 表示我们自己添加了一个storm的组
su 用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是 root向普通或虚拟用户切换不需要密码, 反之普通用户切换到其它任何用户都需要密码验证。
su 在不加任何参数,默认为切换到 root 用户,但没有转到 root 用户根目录下;
su 加参数 - ,表示默认切换到 root 用户,并转到 root 用户根目录下。
在这里插入图片描述
在这里插入图片描述
su 不足: 如果某个用户需要使用 root 权限、则必须要把 root 密码告诉此用户。
退出返回之前的用户
在这里插入图片描述

sudo使用

sudo 是为所有想使用 root 权限的普通用户设计的。可以让普通用户具有临时使用 root 权限的权利。只需输入自己账户的密码即可。当然这个普通用户必须在/etc/sudoers 文件中有配置项、才具有使用 sudo 的权利。没有配置权限之前,普通用户无法进行 root 权限操作
在这里插入图片描述
使用 root 用户编辑/etc/sudoers 文件,给普通用户授权
命令行输入 visudo,打开/etc/sudoers 文件,加入如下的内容,保存。

hadoop ALL=(ALL) ALL

在这里插入图片描述
这样普通用户就可以使用 sudo 执行 root 权限的命令了。
在这里插入图片描述
sudo 的工作过程如下:
1.当用户执行 sudo 时,系统会主动寻找/etc/sudoers 文件,判断该用户是否有执行 sudo 的权限
2. 确认用户具有可执行 sudo 的权限后,让用户输入用户自己的密码确认
3. 若密码输入成功,则开始执行 sudo 后续的命令
如果想要更加精准的控制,就需要理解配置中的含义。
hadoop ALL=(ALL) ALL
第一个 ALL 是指网络中的主机, 我们可以指定主机名, 这样 hadoop 只可以在此主机上执行后面的命令。
第二个括号里的 ALL 是指目标用户,也就是以谁的身份去执行命令。最后一个 ALL 是指命令名了。
例如,我们想让 hadoop 用户在 node-23 主机上以 allen 的身份执行 kill 命令, 就这样编写配置文件:

hadoop node-23=(allen) /bin/kill

案例:只允许 hadoop 用户以 root 身份在 node-23 上执行 ls 、 cat 命令,并且执行时候免输入密码。
配置文件中:

hadoop node-23=NOPASSWD: /bin/ls, /bin/cat

在这里插入图片描述
执行非 ls 、 cat 命令也会禁止。

在这里插入图片描述
而 cat 命令就可以执行。
在这里插入图片描述

四.linux的权限管理

修改hdfs上的指定文件夹的权限:hadoop fs -chmod 777 /user/hive  
修改hdfs上的指定文件夹下所有文件及文件夹的权限:hadoop fs -chmod -R 777 /user  

在这里插入图片描述
chown -R hadoop:hadoop abc.txt 改变某个文件或者文件夹的所属的用户以及用户组

第一个参数  -R   表示我们递归的进行改变  
第二个参数 hadoop:hadoop  表示我们的用户以及用户组  
第三个参数:我们需要改变的文件或者文件夹  

chmod 改变文件的执行权限

chmod 777 abc.txt    表示给某个文件赋予所有人的所有权限  

chmod(change mode) 功能:变更文件或目录的权限。
语法:chmod [参数] [<权限范围><符号><权限代号>]
-R或–recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

	权限范围的表示法如下:   
		u:User,即文件或目录的拥有者。   
		g:Group,即文件或目录的所属群组。   
		o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。   
		a:All,即全部的用户,包含拥有者,所属群组以及其他用户。  
	符号:  
		+ 添加权限  
        -取消权限  
	有关权限代号的部分,列表于下:   
		r:读取权限,数字代号为"4"。   
		w:写入权限,数字代号为"2"。   
		x:执行或切换权限,数字代号为"1"。   
		-:不具任何权限,数字代号为"0"。   

在这里插入图片描述

五.系统服务管理

ervice iptables status  #查看防火墙状态
service  iptables stop  #关闭防火墙
service --status-all # 查看系统所有的后台服务进程
service sshd status # 查看指定的后台服务进程的状态
service sshd stop
service sshd start
service sshd restart
配置后台服务进程的开机自启或关闭
chkconfig iptables on  #配置防火墙开机开启
chkconfig iptables off #配置防火墙开机关闭
chkconfig httpd on ## 让 httpd 服务开机自启
chkconfig httpd off ## 让 httpd 服务开机不要自启

六.网络管理

主机名配置

hostname  查看主机名  
hostname hadoop  修改主机名(重启后无效)  
vi /ect/sysconfig/network  HOSTNAME=node01.hadoop.com  修改主机名(重启后永久生效)  

IP 地址配置

方式一: setup(强烈不建议使用)

用 root 输入 setup 命令,进入交互式修改界面
Minimal 安装的系统没有安装 setuptool 软件,可 yum 安装后使用。

yum install setuptool ntsysv system-config-securitylevel-tui  
yum install system-config-network-tui system-config-keyboard  

方式二:修改配置文件(重启后永久生效,强烈建议使用)

修改IP地址:

vi /etc/sysconfig/network-scripts/ifcfg-eth0  
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.52.100
NETMASK=255.255.255.0
GATEWAY=192.168.52.1
DNS1=8.8.8.8

修改mac地址:

vim /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:3a:57:a5", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

在这里插入图片描述

域名映射

/etc/hosts 文件用于在通过主机名进行访问时做 ip 地址解析之用。
所以,你想访问一个什么样的主机名,就需要把这个主机名和它对应的 ip 地址配置在/etc/hosts 文件中

vim /etc/hosts
127.0.0.1   localhost 
192.168.52.100 node01.hadoop.com node01

网络端口监听

netstat 是一款命令行工具, 用于列出系统上所有的网络 socket 连接情况,包括 tcp, udp 以及 unix socket,另外它还能列出处于监听状态(即等待接入请求)的 socket。 如想确认 Web 服务有没有起来,可查看 80 端口有没有打开。
示例:
常见参数:

-a (all)显示所有选项,默认不显示 LISTEN 相关
-t (tcp)仅显示 tcp 相关选项
-u (udp)仅显示 udp 相关选项
-n 禁用域名反向解析功能,只显示 ip
-l 仅列出有在 Listen (监听) 的服务状态
-p 显示建立相关链接的进程信息
-ep 可以同时查看进程名和用户名
netstat –nlpt 获取进程名、进程号以及用户 ID

在这里插入图片描述
只列出监听中的连接

netstat –tnl 可以看到处于监听状态的 TCP 端口和连接  
netstat -nltp查看所有的监听的端口  

crontab 配置

crontab 是 Unix 和 Linux 用于设置周期性被执行的指令。 通过 crontab 命令,可以在固定间隔时间执行指定的系统指令或 shell 脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。
在这里插入图片描述
crontab 安装:

yum install crontabs

服务操作说明:

service crond start ## 启动服务
service crond stop ## 关闭服务
service crond restart ## 重启服务
service crond reload ## 重新载入配置
service crond status ## 查看 crontab 服务状态:
chkconfig crond --list ## 查看 crontab 服务是否已设置为开机启动
chkconfig crond on ## 加入开机自动启动

通过crontab配置虚拟机时钟同步

crontab  -e
*/1 * * * * /usr/sbin/ntpdate us.pool.ntp.org;

命令格式

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
参数说明:

-u user:用来设定某个用户的 crontab 服务
file: file 是命令文件的名字,表示将 file 做为 crontab 的任务列表文件
并载入 crontab。
-e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前
用户的 crontab 文件。
-l:显示某个用户的 crontab 文件内容。 如果不指定用户,则表示显示当前
用户的 crontab 文件内容。
-r:删除定时任务配置,从/var/spool/cron 目录中删除某个用户的 crontab
文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
-i:在删除用户的 crontab 文件时给确认提示。

命令示例:

crontab file [-u user] ## 用指定的文件替代目前的 crontab。
crontab -l [-u user] ## 列出用户目前的 crontab.
crontab -e [-u user] ## 编辑用户目前的 crontab

配置说明、实例

 * * * * * command  
分 时 日 月 周 命令  
第 1 列表示分钟 1~59 每分钟用*或者 */1 表示  
第 2 列表示小时 0~23( 0 表示 0 点)  
第 3 列表示日期 1~31  
第 4 列表示月份 1~12  
第 5 列标识号星期 0~6( 0 表示星期天)  
第 6 列要运行的命令  

配置实例:

*/1 * * * * date >> /root/date.txt  
每分钟执行一次 date 命令  
30 21 * * * /usr/local/etc/rc.d/httpd restart  
每晚的 21:30 重启 apache。  
45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart  
每月 1、 10、 22 日的 4 : 45 重启 apache。  
10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart  
每周六、周日的 1 : 10 重启 apache。  
0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart  
每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 apache。  
* 23-7/1 * * * /usr/local/etc/rc.d/httpd restart  
晚上 11 点到早上 7 点之间,每隔一小时重启 apache  

附录

top命令

top命令经常用来监控Linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。
输入top命令
在这里插入图片描述

1.系统运行时间和平均负载

在这里插入图片描述
top命令的顶部显示与uptime命令相似的输出
这些字段显示:

  • 当前时间
  • 系统已运行的时间
  • 当前登录用户的数量
  • 相应最近5、10和15分钟内的平均负载。

可以使用’l’命令切换uptime的显示。
21:45:11 — 当前系统时间
0 days, 4:54 — 系统已经运行了4小时54分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average:0.24, 0.15, 0.19 — load average后面的三个数分别是5分钟、10分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

2.任务

在这里插入图片描述
Tasks — 任务(进程),系统现在共有144个进程,其中处于运行中的有1个,143个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。这些进程概括信息可以用’t’切换显示

3 CPU 状态

在这里插入图片描述
这里显示不同模式下所占cpu时间百分比,这些不同的cpu时间表示:
us, user: 运行(未调整优先级的) 用户进程的CPU时间
sy,system: 运行内核进程的CPU时间
ni,niced:运行已调整优先级的用户进程的CPU时间
wa,IO wait: 用于等待IO完成的CPU时间
hi:处理硬件中断的CPU时间
si: 处理软件中断的CPU时间
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。
可以使用’t’命令切换显示。
1.3% us — 用户空间占用CPU的百分比。
1.0% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
97.3% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.3% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了。

4 内存使用

在这里插入图片描述
接下来两行显示内存使用率,有点像’free’命令。第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。
物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存。相似地:交换部分显示的是:全部、已使用、空闲和缓冲交换空间。
内存显示可以用’m’命令切换。
509248k total — 物理内存总量(509M)
495964k used — 使用中的内存总量(495M)
13284k free — 空闲内存总量(13M)
25364k buffers — 缓存的内存量 (25M)
swap交换分区
492536k total — 交换区总量(492M)
11856k used — 使用的交换区总量(11M)
480680k free — 空闲交换区总量(480M)
202224k cached — 缓冲的交换区总量(202M)
这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器“危矣”:8G的内存总量只剩下530M的可用内存。Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:
13284+25364+202224 = 240M。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行是空行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值