Linux基础

Linux基础

1.网络配置

1.正常启动

2.进入虚拟机删除两个文件

a)    rm /etc/udev/rules.d/70-persistent-net.rules
b)    rm /etc/sysconfig/network-scripts/ifcfg-eth0


4.启动虚拟机 reboot

 
5.查看网络设备信息
    a)    cat /etc/udev/rules.d/70-persistent-net.rules
    

6.复制网卡配置信息

在这里插入图片描述

7.新建一个网卡的配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0


8.填写以下信息
DEVICE=eth0
HWADDR=00:50:56:36:ee:a8 需要修改(粘贴网卡)
ONBOOT=yes
BOOTPROTO=dhcp

9.重启网卡
service network restart

10.查看分配的ip    ifconfig

11.这时候,建议CRT连接ip,并修改网卡为静态ip
DEVICE=eth0
HWADDR=00:50:56:3E:1B:6E
ONBOOT=yes
BOOTPROTO=static
NETMASK=255.255.255.0
IPADDR=192.168.140.137
GATEWAY=192.168.140.2

GATEWAY(网关地址):

在这里插入图片描述

2.Linux基本命令

1. 创建用户
# useradd scy 创建用户-会在系统的家目录下创建一个自己的用户目录并给我们创建一个用户组
# passwd scy 设置密码
# su scy	切换用户
2.Linux系统的主机名称
	查看主机名称:# hostname 
	临时设置主机名称:# hostname scy (仅在当前生效,重启无效)
	永久设置主机名称:vi /etc/sysconfig/network (永久生效)
3.重启系统
4.主机名与IP地址映射
centos:/etc/hosts	
win10:C:\Windows\System32\drivers\etc\hosts
 
		IP		主机名		域名
192.168.91.131 centos6  hadoop-scy.com
检查:win10上ping域名
5.Linux下文件类型
	a:文件(用“-”表示)
	b:目录(相当于文件夹用“d”表示)
	c:链接(相当于快捷方式用“l”表示)
				文件类型 拥有者(u) 所属组(g) 其他人(o)
drwxr-xr-x. --->  d      rwx      r-x      r-x
     		 (二进制表示)	  7        5        5

6.设置文件的权限
chmod
# chmod u/g/o -/+ r/w/x  文件名
7.改变文件拥有者和所属组
chown
	# chown scy /home/xxx.txt
chgrp
	# chgrp scy /home/xxx.txt
可以使用一条语句完成上面的操作:
	# chown scy:scy /home/xxx.txt
	如果针对的是目录则需要使用递归进行改变 -R
8.查看文件的几种方式
	# cat 查看全部内容
	# more 翻页查看
	# tail -f 查看实时日志文件
		eg: tail -200f xxx.log
	# head 开头文件,文件格式/样式
	
	



# clear 清屏
# pwd  打印当前目录的绝对路径
# cat 查看文件内容
# vi 编辑
	快捷键:
		查看模式:
			dd(删除光标所在行)
			ZZ(保存文件内容)
			x(删除光标所在字符)
			o(表示在光标所在字符下一行输入)
# ls -a
# man + 命令  查看命令帮助文档
# cp 拷贝
	cp -R source destination
# mv 重命名/移动
# rm 删除
	rm -rf  xxx递归删除
# 创建目录:mkdir -p /../..  创建多级目录
# 文件创建:touch 和 vi
# 链接(快捷方式)
	软链接:ln -s readme.txt rm.txt  (有箭头)
	硬链接:ln  readme.txt rm.txt  (无箭头)
	区别:硬链接相当于拷贝,软链接相当于同步共用一个文件(一致性)。
# 文件内容追加: echo ' ' >> xxx.txt
# 文件搜索:find ~/ -name file || find ~/ -name scy\*

3.Linux系统管理

1.查看系统信息
	uname 查看系统是什么操作系统
	uname -r 查看系统内核版本
	cat /proc/cpuinfo 查看cpu信息
	cat /proc/meminfo 查看内存信息
	date 查看系统日期时间  -R查看区时
	设置系统日期与时间:#date -s 2020-3-25 
				#date -s 18:20:00
	cal + 2018 查看日历表
	cal 12 2020 查看2020年12月的日历
2.磁盘相关:
	df -lh 显示已经挂载的分区磁盘使用情况
	du -sh /home/scy/ 查看目录磁盘使用大小	
	修复磁盘,自动修复
		fsck /dev/sda3
	查看挂载磁盘信息
		mount
		mount /dev/sda1 /data01 挂载磁盘
		umount dev/sda1 卸载磁盘
3.内存相关:
		free -m 以M为单位查看系统内存
		top 查看各个进程的使用情况
4.Linux下的软件安装
	1.rpm
		rpm -qa | grep java (查询)
		rpm -e --nodeps	xxx xxx xxx(卸载多个空格隔开)
		rmp -ivh xxx.rpm
	2.tar
		源码-->编译(不推荐)
	3.zip软件
		unzip xxx.zip(解压)
		zip xx.zip file (压缩)
	4.tar软件
		tar -zxvf  xxx.tar.gz -C dir(解压到指定目录)
		tar -zcvf xxx.tar.gz dir(压缩)
jdk安装:解压->修改/etc/profile->设置JAVA_HOME->添加到系统PATH
## JAVA_HOME
export JAVA_HOME=/home/scy/softwares/jdk1.8.0_141
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
echo $PATH;echo $JAVA_HOME
	5.yum(需要配置源)--->解决了软件包的依赖关系与安装顺序
5.设置普通用户的sudo权限
	$ su
	# vi /etc/sudoers 或者visudo
	第一行添加如下命令
	scy ALL=(root)NOPASSWD:ALL(最常用)
	scy    ALL=(ALL)       ALL (不常用)
6.查看防火墙是否关闭
	sudo service iptables status
	sudo service iptables stop(关闭防火墙)
	sudo service iptables start(开启防火墙)
	sudo chkconfig iptables off/on(永久关闭/开启防火墙)
	*sudo chkconfig --list | grep iptables 查看iptables服务是否在3中为off
7.httpd服务开启
	sudo yum install httpd
	sudo service httpd status
	sudo service httpd start
	sudo chkconfig httpd on
	* sudo chkconfig --list | grep httpd 查看httpd服务是否在3中为on
8.selinux禁用
	sudo vi /etc/sysconfig/selinux
	令SELINUX=disabled
9.调度功能crontab
	针对用户:
		每个用户都可以调度自己的任务
		crontab -e 编辑定时任务
		crontab -l 查看所有定时任务
		crontab -r 删除所有定时任务
		*/1 * * * * /bin/date >> /home/scy/scy.txt 每分钟写一次日期
			* 		 *  	  *   	    *     	  	 	*
		分(1-59)  时(0-23)  日(1-31)  月(1-12)   星期(0-6;0表示周日)
		例子: 1.每天21:30执行(30 21 * * * cmd)
			  2.每个月1,11,21号的2:30执行(30 2 1,11,21 * * cmd)
			  3.每周六或者每周日:1:45(45 1 * * 6,0 cmd)
			  4.每天20点到23点每半个小时执行一次(0,30 20-23 * * * cmd)
			  5.每一个小时执行一次(* */1 * * * cmd)

Linux基础增强

1.查找命令:
	grep 命令:查看某个系统进程
		ps -ef | grep xxx
		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 / -name hello.txt
		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 /etc/sh
	whereis命令: 主要用于定位所有关于文件的路径 whereis ls
	which命令: 主要用于定位可执行文件的路径
	
2.查看端口
	netstat -nltp 查看所有正在运行的端口
3.时间同步
	yum -y install ntpdate
	crontab -e
	*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com

实验前规划三台主机

主机hostnamedomain
192.168.124.110node1.hadoop.comnode1
192.168.124.120node2.hadoop.comnode2
192.168.124.130node2.hadoop.comnode3
在Linux与windows实现域名映射
统一路径:
	mkdir -p /export/softwares	存放软件的压缩包
	mkdir -p /export/servers    存放软件解压后的路径
	cd servers --> mkdir shells 存放脚本
(1)三台虚拟机关闭防火墙(✔)
(2)三台机器关闭selinux(✔)
(3)三台机器更改主机名(✔)
(4)三台机器做主机名与IP地址的映射(✔)
(5)三台机器机器免密码登录
	第一步:在三台机器执行以下命令,生成公钥与私钥
		ssh-keygen -t rsa
	第二步:拷贝公钥到同一台机器
		ssh-copy-id node01.hadoop.com
	第三步:复制第一台机器的认证到其他机器
		scp /root/.ssh/authorized_keys node02.hadoop.com:/root/.ssh
		scp /root/.ssh/authorized_keys node03.hadoop.com:/root/.ssh
(6)三台机器时钟同步

4.Shell基础编程

概述:Shell脚本放入了批量的Linux命令集合
运行shell脚本方式
第一种:bash/sh ./test.sh
第二种: chmod 777 test.sh  --->  ./test.sh

1.变量

(1)变量命名:
	注意:变量名和等号之间不能有空格,同时,变量名的命名须遵循如下规则:
	首个字符必须为字母( a-z, A-Z)
	中间不能有空格,可以使用下划线( _)
	不能使用标点符号
	不能使用 bash 里的关键字(可用 help 命令查看保留关键字)
(2)变量类型
	根据变量的作用于,分为本地变量和环境变量
	本地变量:/home/scy/.bash_profile	
	环境变量(全局变量):/etc/profile
	环境变量需要大写 export LANG
	注意:可被所有的shell环境下访问
	如果父shell进程产生了子shell进程,则环境变量可被继承并复制
(3)变量赋值
	特点:等号两边不能有空格
	如果要给变量赋空值,可以在等号后面跟一个换行符
	显示变量值 echo ${variable} 或"$variable"
	命令可以将变量定义为只读变量  $readonly variable
	清除变量 $unset variable
	显示所有变量 $set
(4)参数传递
	在执行 Shell 脚本时, 可以向脚本传递参数。
	脚本内获取参数的格式为: $n。 n 代表一个数字, 1 为执行脚本的第一个参
	数, 2 为执行脚本的第二个参数,以此类推…… $0 表示当前脚本名称。
(5)位置参量
	通过命令行来进行传递参数
	$./test.sh beijing
	如果参数中有空格需要用引号" "包裹
	如: $./test.sh "beijing duck"
# !/bin/bash
echo "hello $1"
echo $0 不同执行方式脚本文件名不一样
echo $? 判断上一个命令是否执行成功(0成功-1失败)
#!/bin/bash
echo "第一个参数为: $1";
echo "参数个数为: $#";
echo "传递的参数作为一个字符串显示: $*";
第一个参数为: 1
参数个数为: 3
传递的参数作为一个字符串显示: 1 2 3

2.特殊字符

	$# 	传递到脚本的参数个数
	$* 	以一个单字符串显示所有向脚本传递的参数。
	$$ 	脚本运行的当前进程 ID 号
	$! 	后台运行的最后一个进程的 ID 号
	$@ 	与$*相同,但是使用时加引号,并在引号中返回每个参数。
	$? 	显示最后命令的退出状态。 0 表示没有错误,其他任何值表明有错误。

3.运算符

	Shell 和其他编程语音一样,支持包括:算术、关系、 布尔、字符串等运
	算符。 原生 bash 不支持简单的数学运算,但是可以通过其他命令来实现,例如
	expr。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如加,减,乘,除等操作
	*注意:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2。
	完整的表达式要被 ` ` 包含,注意不是单引号,在 Esc 键下边。
	例如,以下表示一些数据的运算
	注意:
		此外,还可以通过$(())、 $[]进行算术运算。
		count=1
		((count++))
		echo $count
		a=$((1+2))
		a=$[1+2]
#!/bin/bash
echo "hello world"
a=4
b=20
#加法运算
echo `expr $a + $b`
#减法运算
echo `expr $b - $a`
#乘法运算,注意*号前面需要反斜杠
echo `expr $a \* $b`
#除法运算
echo `expr $b / $a`

4.流程控制

 	if  else  语句
 	
	if condition1
	then
	command1
	elif condition2
	then
	command2
	else
	commandN
	fi
	条件表达式写法:
	EQ 就是 EQUAL等于
	NQ 就是 NOT EQUAL不等于 
	GT 就是 GREATER THAN大于  
	LT 就是 LESS THAN小于 
	GE 就是 GREATER THAN OR EQUAL 大于等于  
	LE 就是 LESS THAN OR EQUAL 小于等于
#!/bin/bash
a=10
b=20
if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
   echo "$a -ne $b: a 不等于 b"
else
   echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
   echo "$a -gt $b: a 大于 b"
else
   echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
   echo "$a -lt $b: a 小于 b"
else
   echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
   echo "$a -ge $b: a 大于或等于 b"
else
   echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
   echo "$a -le $b: a 小于或等于 b"
else
   echo "$a -le $b: a 大于 b"
fi
	1.for循环
	方式一
		for N in 1 2 3
		do
		echo $N
		done
	或
		for N in 1 2 3; do echo $N; done
	或
		for N in {1..3}; do echo $N; done
	方式二
		for ((i = 0; i <= 5; i++))
		do
		echo "welcome $i times"
		done
	或
		for ((i = 0; i <= 5; i++)); do echo "welcome $i times"; done
	2.while
		#!/bin/bash
		i=1
		while (( i <= 3))
		do 
		 let i++
		 echo $i
		done
	3.case语句
		case 值 in
		模式 1)
		command1
		command2
		...
		commandN
		;;
		模式 2)
		command1
		command2
		...
		commandN
		;;
		esac
使用case语句实现交互会话
#!/bin/bash
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

5.函数

1.所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至
shell 解释器首次发现它时,才可以使用。 调用函数仅使用其函数名即可。
[ function ] funname [()]
{
action;
[return int;]
} 
、可以带 function fun()定义,也可以直接 fun() 定义,不带任何参数。
2、参数返回,可以显示加 return ,如果不加,将以最后一条命令运行结
果,作为返回值。 return 后跟数值 n(0-255)。
#!/bin/bash
hello(){
 echo "hello world"
 echo "第一个参数为 $1"
 echo "第二个参数为 $2"
}
hello abc 123
hello $1 $2 #外部输入
(5)数组
	定义一个数组:
	$arr=(zhangsan lisi wangwu)
	$echo ${arr[0]}  查看数组中的元素
	$echo ${arr[*]}  查看所有元素
	$echo ${#arr[*]} 查看数组个数
(6)日期
	date
	$date +%Y/%m/%dT%H:%M:%S  2020/03/25T08:06:30
	例子test.sh:
	# !/bin/bash
	date1=$(date +%Y-%m-%d) 当前日期
	echo $date1
	date2=$(date --date='2 days ago' +%Y-%m-%d) 两天前
	echo ${date2}
	date3=$(date --date='-1 days ago' +%Y-%m-%d) 一天后
	echo ${date3}
(7)条件判断
	[]相当于test

在这里插入图片描述
在这里插入图片描述

#!/bin/bash

#!/bin/bash
for var in 1 2 3 4 5
do
        echo ${var}
done
echo "--------"
num=10
s=0
for((i=0;i<${num};i=i+1))
do
        s=$((${s}+${i}))
done
echo ${s}
echo "--------"
echo ${date}
echo "--------"
SLAVE_FILE = /opt/app/hadoop-2.5.0/etc/hadoop/slaves
cat ${SLAVE_FILE } | while read line
do
	echo ${line}
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值