大数据开发之学习Linux高级配置(第三篇)

158 阅读2分钟

一、Linux高级配置

1.1、Linux分配身份证号码(ip)静态ip设置

cat /etc/sysconfig/network-scripts/ifcfg-ens33

image-20220901215218701

这里的dhcp默认是动态获取。

image-20220901215912062

IPADDR=192.168.234.101(根据自己实际情况填写)
GATEWAY=192.168.234.2 (根据自己实际情况填写)
DNS1=192.168.234.2 (根据自己实际情况填写)

重启网络 service network restart

1.2、Linux起名字(hostname):临时设置+永久设置

临时设置就是:临时生效,重启后无效

hostname bigdata01 设置名称为bigdata01

永久设置就是:需要重启后生效

vi /etc/hostname

1.3、Linux的金钟罩铁布衫(防火墙):临时关闭+永久关闭(这边主要演示的是centos 7。其他版本请查阅资料)

systemctl status firewalld 查看防火墙运行状态

在学习阶段,把防火墙关闭是没有任何问题的,但是在实际工作中,这个是需要谨慎操作,一般由运维来管理

临时设置就是:临时生效,重启后无效

systemctl stop firewalld

永久设置就是:需要重启后生效

systemctl disable firewalld

systemctl list-unit-files|grep firewalld

image-20220901222101218

二、Linux Shell编程

2.1、编写shell脚本

shell是用户与Linux操作系统沟通的桥梁。而shell编程就是开发一个shell脚本

  1. shell脚本文件名后缀通常是.sh
  2. shell脚本第一行内容是: #!/bin/bash(含义:相当于是一个导包语句,将shell的执行环境引入进来)
  3. 第一行的#开头的不是注释,其他行是注释
#!/bin/bash
# frist command
echo hello world
2.2、执行shell脚本
  • bash hello.sh
  • sh hello.sh
  • bash -x hello.sh 单步执行脚本

上面两种无需给脚本添加执行权限

chmod u+x hello.sh (u代表用户 x代表执行权限)

image-20220901223621735

  • ./hello.sh
  • hello.sh(会到path环境变量中去查找)echo $PATH 查看环境变量

image-20220901223857804

修改环境变量:vi /etc/profile

export PATH=.:PATH(获取PATH (获取PATH的值,然后在其值前面加个点(.))点代表当前路径

source /etc/profile 生效修改的内容。然后就可以执行hello.sh

image-20220901224858134

2.3、shell脚本的四种变量
  1. 本地变量

    格式:VAR_NAME=VALUE

    应用场景:在shell脚本中定义一些临时变量时使用,对当前shell进程的子shell进程及其他shell进程无效

    image-20220901225804230

  2. 环境变量

    格式:export VAR_NAME=VALUE

    应用场景:用于设置临时环境变量,对子shell进程有效,对其他shell进程无效

    image-20220901225838957

    注意:

    设置永久环境变量,需要添加到配置文件/etc/profile中,然后执行source /etc/profile可立即生效

  3. 位置变量

    00、1、$2

    格式:location.sh abc xyz

    位置变量相当于java中main函数的args参数,可以在shell脚本中动态获取外部参数

    #! /bin/bash
    echo $0
    echo $1
    
  4. 特殊变量

    $? 上一条命令的返回状态码,状态码在0~255之间

    $# shell脚本所有参数的个数

2.4、变量和引号的特殊使用
  1. '' 单引号不解析变量

    image-20220901231003496

  2. "" 双引号解析变量

    image-20220901231052341

  3. `` 反引号是执行并引用命令的执行结果 。下面就是把hah当成命令来执行了

    image-20220901231233609

    image-20220901231338392

  4. $()是``的另一种写法,效果一样

三、shell编程的循环和判断

3.1、for循环
#! /bin/bash
for((i=0;i<10;i++))
do
循环体..
done
#! /bin/bash
for i in 1 2 3
do
循环体..
done
3.2、while循环

适用于循环次数未知,或不便于使用for直接生成较大列表时

while 测试条件
do
循环体...
done

测试条件为真,则进入循环,测试条件为假,则退出循环

整型测试:-gt(大于)、-lt(小于)、-ge(大于等于)、-le(小于等于)、-eq(等于)、-ne(不等于)

字符串测试:=(等于)、!=(不等于)

3.3、if判断
  1. 单分支
  2. 双分支
  3. 多分支
if 测试条件
then 
   选择分支
fi

四、shell脚本扩展

4.1、后台模式运行脚本

nohup sh xx.sh &

日志默认存在:nohup.out

  1. nohup 就是不挂起(no hang up)用于在系统后台不挂断运行命令,退出终端不会影响程序的运行
  2. &是后台运行脚本
4.2、标准输出(1)、标准错误输出(2)、重定向(>或者>>)

是追加输出信息

nohup hello.sh > /dev/null 2>&1 &

/dev/null是linux的黑洞,也就是上面的案例就是不会保留任意的日志。想要保留把/dev/null替换成正常的路径

五、Linux中的定时器crontab

周期性被执行的命令

格式:* * * * * user-name command

  1. 第一个是分钟(0-59)
  2. 第二个是小时(0-23)
  3. 第三个是月中第几天(1-31)
  4. 第四个是月份(1-12)
  5. 第五个是星期中的第几天(0-6)

查看crontab服务状态:systemctl status crond

启动/停止crontab服务:systemctl start/stop crond

添加定时任务 vi /etc/crontab

五、在Linux上安装配置JDK

5.1、下载jdk8

www.oracle.com/java/techno…

5.2、在虚拟机上创建目录

mkdir software

然后把下载的jdk上传到software目录,这边直接使用的是前文提到的软件:FinalShell软件

  1. cd到software目录

  2. 解压jdk压缩包:tar -zxvf jdk-8u341-linux-x64.tar.gz

  3. 获取java解压的目录:/root/software/jdk1.8.0_341

  4. 进行配置profile : vi /etc/profile

    export JAVA_HOME=/root/software/jdk1.8.0_341
    export PATH=.:$JAVA_HOME/bin:$PATH
    
  5. 使用source生效配置

    source /etc/profile

  6. 校验java环境是否配置ok

    java -version

image-20220902222510247