Linux基础(三)

一、shell编程

1.基础操作

    1)"#!"代表shell脚本的起始符号,通过"#!"来指定具体文本类型的特殊标记。在其之后指定Linux系统中解释执行当前shell文件的具体的解释器,一般是#!/bin/bash
    2)当执行shell文件的时候需要有执行权限,例如chmod 744  who.sh
    需要说明的是,一般情况下回采用形如 chmod u+x who.sh 的方式来增加执行。
    3)在shell文件中可以通过“#”后面直接加上注释内容来增加shell的可读性和可维护性
    4)Shell脚本中其实是基本命令的组合,在交互式终端中可以写入什么内容,那么在shell脚本中就可以写入什么内容
    5)同一行如果有多条指令的话,我们使用“;”来分割开不同的指令,例如 ls -l;who

2.Shell中变量及引用的实战
    1)本地变量:只在当前Shell生命周期内有效
    2)环境变量:
    使用export关键字来把变量编程环境变量,例如:
        export JAVA_HOME=/usr/local/jdk/jdk1.8.0_60
        export SCALA_HOME=/usr/local/scala/scala-2.10.4
        export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0
        export HADOOP_CONF_DIR=/usr/local/hadoop/hadoop-2.6.0/etc/Hadoop
    可以通过使用“env“命令来查看系统中的环境变量的内容
    3)位置参数
        a.主要适用于向Shell脚本传递参数,例如./spark-shell –master spark://Master:7077
        b.具体而言,$0代表脚本的名称,$1代表传入shell的第一个参数,$2代表传入shell的第二个参数,
        如果要代表全部参数则需要使用$*或者$@
        c.$#:代表传到脚本中的参数的数量;
          $$: 脚本运行的进程号;
          $?:  代表命令退出状态, 0表示没有错误,非0表示有错误;
    4)${variablename}会具体提取出变量的内容,当然可以把{}去掉;例如:$HADOOP_CONF_DIR来提取出Hadoop配置文件具体所在的路径的值
    5)变量赋值的时候“=“两侧不能有空格,变量名称后如果有空格则会被认为要执行Command;如果要打印变量的内容,可以通过echo $variable来打印;例如:echo $usage
#!/bin/bash
a=100
let "a+=10"
echo "a=$a"
3.系统中核心的配置文件
    大家常见的一些系统配置文件.bashrc、bash_profile(.profile)、bash_logout,修改了系统文件后一般要通过source命令使其立即生效

4.命令替换
    例如export SPARK_HOME="$(cd "`dirname "$0"`"/..; pwd)" 实际上会使用pwd获得的值来取代dirname,并且如果使用$()则会对其进行实际求值,对我们例子来说,pwd的值为“/usr/local/spark/spark-1.6.0-bin-hadoop2.6/bin”,$0代表当前文件名称“spark-shell”

5.逻辑符号
    逻辑与&&:cmd1&&cmd2
    $ cat /etc/passwd && mkdir /tmp/hdfs
    逻辑或||
    $ cat /etc/passwddd || mkdir /tmp/hdfss
    无逻辑关系;
    $ [ "$Yn" = "Y" -o "$Yn" = "y" ] ; ehco ....

6.条件判断
    1)if
        使用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 type is small than 10"
fi
    2)复杂的if..then…else…fi
        补充说明:case表达式用于多分支选择语句,会根据表达式的值来选择要执行的语句,如果遇到匹配的值,就执行该值后面的语句,直到遇到“;;”为止,你可以使用*)来匹配所有未匹配到具体值的内容,示例如下所示
#!/bin/bash
echo "please enter number(0-9)"
read number
case "$number" in
1)
        echo "number:1" ;;
2)
        echo "number:2" ;;
*)
        echo "other number:$number"
esac
7.for循环语句
#!/bin/bash
sum=0
for item in {0..10}
do
        echo "the numbers:$item"
        let "sum+=item"
done
echo "1+2+...+10=$sum"
8.while循环语句
    1)最简单的while循环
#!/bin/bash
item=0
while (("$item" <= 10))
do
        echo "value:$item"
        let "item++"
done
    2)复杂while循环
#!/bin/bash
echo "piease enter your number!"
read number
while [[ "$number" != 5 ]]
do
        if [ "$number" -lt 5 ]
        then
                echo "number is too little,please enter again!"
                read number
        elif [ "$number" -gt 5 ]
        then
                echo "number is too big,please enter again!"
                read number
        else
                exit 0
        fi
done
echo "Bravo!!"

二、Linux环境下配置JDK环境变量

$ sudo vi /etc/profile
##JAVA_HOME
export JAVA_HOME=/opt/modoules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
$ java -version

三、SSH 远程无密码登陆

1.下载安装ssh服务:apt-get install ssh

2.安装自动同步服务:apt-get install ssh rsync

3.启动服务:service sshd restart

4.生成秘钥对:
    ssh-keygen –t rsa –P ''  -->直接回车生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

6.修改授权key的权限:
    chmod 600 ~/.ssh/authorized_keys

7.修改SSH配置文件:
    su -  -->登陆root用户修改配置文件
    vim /etc/ssh/sshd_config -->去掉下图中三行的注释
    8.测试连接:
    service sshd restart -->重启ssh服务,
    exit   -->退出root用户,回到普通用户
    ssh localhost -->连接普通用户测试

8.把我们的钥匙(公钥)送给服务器:
    scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/  -->将公钥复制到远程服务器的~/目录下
    如: scp ~/.ssh/id_rsa.pub hadoop@192.168.1.134:~/
    可以看到我们复制的时候需要我们输入服务器的密码,等我们把SSH配置好之后这些步骤就可以不用输入密码了

9.把公钥追加到授权key中:
    上一步把公钥发送到192.168.1.134服务器上去了,我们去134机器上把公钥追加到授权key中去。(注意:如果是第一次运行SSH,那么.ssh目录需要手动创建,或者使用命令ssh-keygen -t rsa生成秘钥,它会自动在用户目录下生成.ssh目录。特别注意的是.ssh目录的权限问题,记得运行下chmod 700 .ssh命令)

    在134机器上使用命令:
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys  -->追加公钥到授权key中
    rm ~/id_rsa.pub  -->保险起见,删除公钥
    同样在134机器上重复第四步和第五步,
    service sshd restart  -->重启ssh服务

10.连接
    回到客户机来,输入:
    ssh 192.168.1.134   -->应该就能直接连接服务器咯。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泪痕残

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值