一、linux常用命令
1.修改机器名称(实质上是机器的域名,相当于www.baidu.com):vim /etc/hostname
2.关闭机器:shutdown -h now 或者 reboot -h now来直接重启
3.查看ip地址:ifconfig
4.通过vim /etc/hosts修改域名和ip的映射关系:192.186.0.104 Master,访问的时候直接访问域名即可,如果要访问远程访问机器,可以直接访问当前机器的 /etc/hosts 文件中配置远程机器的域名IP地址的映射关系
5.pwd(print work directory)--查看当前所在的工作目录
6.cd(change directory)--切换到某个工作目录
7.ls(list)--查看当前目录下的文件的具体名称,通过ls -ll来查看当前目录下文件的详细信息
8.man+命令名称 --查看命令的用法
9.vim--打开文件,vim是linux文本编辑器,打开文件后可以有i进行插入编辑,“:wq”保存修改 “q!”不保存,强制退出,vim filename--如果filename存在打开文件,如果文件不存在则创建文件
10.查看文件内容,使用vim或者gedit图形化编辑器,cat--来显小文件中的所有内容,如果文件需要被一页一页的查看,此时可以用more命令来查看,enter间来翻页,tail--查看文件最后的内容,经典的使用场景是查看服务器日志内容,head--查看文件开头的内容
11.创建文件简洁方式:touch filename 例如touch linux.txt
12.目录的创建可以直接使用mkdir来创建,如果多级目录需要创建,可以用mkdir -p
13.删除空目录rmdir,rm -rf 强制删除当前文件夹的所有内容
14.移动文件 mv srcfile disfile
15.拷贝文件 cp srcfile disfile
二、文件压缩解压缩、文件用户权限、分布式ssh配置
1.文件压缩命令:tar -czvf 目标文档的名字 要压缩文档的名称
2.文件解压缩命令:tar -zxvf 要解压文件 可以去掉v这个option来隐藏具体的详情
3.
-rwxrw-r-- 1 hadoop hadoop 368 9月 15 16:23 start.sh
-rw-rw-r-- 1 hadoop hadoop 85 9月 14 10:49 start-worker2.sh
第1列:每一行最前面的内容代表文件类型:文件使用“-”,目录使用“d”,快捷方式“l”
第2-4列:代表当前用户对于该文件(夹)具体的操作权限,需要说明的是权限有:
a)可读 r 2^2 = 4
b)可写 w 2^1 = 2
c)可执行 x 2^0 = 1
如果从数字的角度考虑,对文件的最高权限为7
第5-7列:代表当前用户所在用户组对于该文件(夹)具体的操作权限
第8-10列:代表当前用户所在用户组以外其他用户对于该文件(夹)具体的操作权限
第11列:代表当前文件的链接数:
第12列:代表当前文件用户拥有者;
第13列:代表当前用户所在的用户组;
第14列:文件大小
第15大列:文件创建或者修改的时间
最后一列:文件名称
4.修改文件的用户和用户组:
创建用户:useradd spark
设置文件的拥有者:chown -R spark filename
使用chgrp来改变当前文件所属的用户组
也可以使用chown所属用户:所属用户组 文件名字
5.修改文件权限
chmod对文件的拥有者 文件组的拥有者 文件以外的其他人 设置权限,重点强调的x权限也就是执行;
6.ssh:远程免密登录
安装ssh:apt-get install ssh
启动ssh:service ssh start
三、shell中变量以及引用
1.变量分为三种
a)本地变量:只在当前shell生命周期有效
b)环境变量:在用户登录后到注销钱对于所有的编辑器、脚本、进程等都有效
c)位置参数:主要适用于向shell脚本产地参数,例如 spark-shell --master spark://Master:7077
2.${variablename}会具体提取出变量的内容,当然可以把{}去掉
例如:$HADOOP_CONF_DIR来提取出Hadoop配置文件具体所在路径的值
3.变量赋值的时候“=”两侧不能有空格,如果变量名称后有空格,则会被认为要执行command指令;如果要打印变量的内容,可以通过echo $variablename来打印 例如echo $val
4.在shell脚本中编写关于变量的基本使用:
#!/bin/bash #指定解释器
a=100 #赋值
let "a+=10" #把a的值加上10
echo "a=$a" #输出a的值
5.环境变量
使用export关键字来把变量变成环境变量
export JAVA_HOME=/usr/hadoop/java
可以通过使用“env”来查看系统中的环境变量的内容;
6.系统中核心的配置文件
常见的系统配置文件:
.bashrc--当前用户的用到的软件的环境变量
bash_profile(profile)
bash_logout--用户注销时执行
修改系统文件后一般要通过source命令使其立即生效
7.位置参数:主要用于从命令行向shell脚本传递参数
具体而言,$0代表脚本的名称,$1代表传入的第一个参数,$2代表传入的第二个参数,如果要代表全部参数,则需要使用$*,或$@表示从第一个位置的全部参数
$#: 代表传递到脚本中的参数的数量
$$: 脚本运行的进程号
$?:代表命令退出的状态,0表示没有错误,非0表示有错误
8.命令替换:将命令的输出作为值赋值给某个变量
例如export SPARK_HOME="$(cd "'dirname "$0"'"/..,pwd)"实际上使用pwd获得值来取代dirname,并且如果使用$()则会对其时间求值,对例子来说pwd的值为“/home/hadoop/docker”,$0 代表当前文件名称
四、Linux Shell实战条件判断,循环语句
条件判断
1.if条件语句
if ... then ... fi ;注意if条件判断后如果没有分号,则需要把then换行,如果if和then处于同一行,则需要在then前面加上“;”,要终止if语句使用fi
#!/bin/bash #添加解释器
echo "please type your content:" #输入提示
read content #读取输入
if [ "$content" -lt 10 ] #比较
then
echo "The content you typed id smaller then 10"
fi
2.复杂的if...then...else...fi
说明:case表达式用于多分支选择语句,根据表达书的值来选择要执行的语句,如果遇到匹配的值,就执行该值后面的语句,直到遇到双分号(;;)为止,可以使用*)来匹配所有未匹配的具体值的内容,实例:
#!/bin/bash
echo "Please enter your number (1-9):"
read number
case "$number" in
1)
echo "number = $number";;
2)
echo "number = $number";;
*)
echo "Other number = $number";;
esac
循环
1.循环的类型:for、while、until循环语句
2.循环控制语句:break、continue,工作机制和java、c等是一样的
for类型:
#!/bin/bash #解释器
for item in 0 1 2 3 4 5 6 7 8 9
do
echo "The current item is :$item"
done
#!/bin/bash
for item in {0..100}
do
echo "The current item is : $item"
done
求1+2+3..+100
#!/bin/bash
sum=0
for item in {0..100}
do
let "sum+=item"
done
echo "1+2..+100 = $sum"
循环打印出所有当前文件目录下的文件
#!/bin/bash
for file in $( ls )
do
echo "$file"
done
while循环
while循环会根据测试语句绝对是否循环及循环次数 while expression;do ... done
a)最简单的while循环
#!/bin/bash
item=0
while (( "$item"<=10 ))
do
echo "current value: $item"
let "item++"
done
b)有停止循环标志的while
#!/bin/bash #解释器
echo "Please enter your number:" #提示输入
read number #接收输入参数
while [[ "$number" != 5 ]] #while循环,5的时候退出
do
if [ "$number" -lt 5 ] #if判断
then
echo "So smaller,please try again"
read number #再次读入参数
elif [ "$number" -gt 5 ]
then
echo "So big,please try again"
read number
else
exit 0
fi
done
echo "Bravo!!!"
c)使用shift本身是使得变量的位置下移动一位,$5代替$4
exec代表具体的启动执行
exec和ssh配合会启动分布式系统!
exec命令可以通过文件标识符打开或者运行具体的文件,也可以将文件重定向到标准输入和输出文件中