博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop04---shell
阅读量:7026 次
发布时间:2019-06-28

本文共 4604 字,大约阅读时间需要 15 分钟。

Linux上的mysql安装之后卸载是卸载不干净的,ping服务器ping不通就是把icmp协议关闭了,ping使用的是icmp协议。Export是全局变量,所有用户登录进来都可以使用。
1.iptables防火墙简介Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入、流出、流经服务器的数据包进行精细的控制。iptables是Linux2.4及2.6内核中集成的模块。2.Iptables服务相关命令1.查看iptables状态service iptables status2.开启/关闭iptablesservice iptables startservice iptables stop3.查看iptables是否开机启动chkconfig iptables --list4.设置iptables开机启动/不启动chkconfig iptables onchkconfig iptables off
1.iptables原理简介1.1.iptables的结构在iptables中有四张表,分别是filter、nat、mangle和raw每一个表中都包含了各自不同的链,最常用的是filter表。
filter表:filter是iptables默认使用的表,负责对流入、流出本机的数据包进行过滤,该表中定义了3个链:    INPOUT     负责过滤所有目标地址是本机地址的数据包,就是过滤进入主机的数据包。    FORWARD    负责转发流经本机但不进入本机的数据包,起到转发的作用。    OUTPUT    负责处理所有源地址是本机地址的数据包,就是处理从主机发出去的数据包。
Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash ShellShell也是一门编程语言
<解释型的编程语言>
,即shell脚本一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支持的命令语法是不相同的Shell脚本的执行方式:第一种:输入脚本的绝对路径或相对路径首先要赋予+x权限 /root/helloWorld.sh ./helloWorld.sh或者,不用赋予+x权限,而用解释器解释执行sh helloworld.sh第二种:bash或sh +脚本 sh /root/helloWorld.sh sh helloWorld.sh第三种:在脚本的路径前再加". " . /root/helloWorld.sh . ./helloWorld.sh区别:第一种和第二种会新开一个bash,不同bash中的变量无法共享Shell中的变量:Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看那系统变量系统变量:$HOME、$PWD、$SHELL、$USER等等显示当前shell中所有变量 : set定义变量:变量=值 (例如STR=abc)等号两侧不能有空格变量名称一般习惯为大写双引号和单引号有区别,双引号仅将空格脱意,单引号会将所有特殊字符脱意STR="hello world"A=9unset A 撤销变量 Areadonly B=2 声明静态的变量 B=2 ,不能 unsetexport 变量名 可把变量提升为全局环境变量,可供其他shell程序使用将命令的返回值赋给变量:A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量AA=$(ls -la) 等价于反引号Shell中的特殊变量:$? 表示上一个命令退出的状态$$ 表示当前进程编号$0 表示当前脚本名称$n 表示n位置的输入参数(n代表数字,n>=1)$# 表示参数的个数,常用于循环$*和$@ 都表示参数列表 $*与$@区别:$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以$1 $2 … $n 的形式输出所有参数当它们被双引号" "包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数运算符:格式 :expr m + n 或$((m+n)) 注意expr运算符间要有空格例如计算(2 +3 )×4 的值1 .分步计算 S=`expr 2 + 3` expr $S \* 42.一步完成计算 expr `expr 2 + 3 ` \* 4 echo `expr \`expr 2 + 3\` \* 4` 或 $(((2+3)*4))for循环:第一种:for N in 1 2 3do echo $Ndone或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"; donewhile循环:第一种while expressiondocommand…done第二种i=1while ((i<=3))do echo $i let i++Donecase语句:格式case $1 instart) echo "starting" ;;stop) echo "stoping" ;;*) echo "Usage: {start|stop} “esacread命令:read -p(提示语句)-n(字符个数) -t(等待时间)  read -p "please input your name: " NAME使用示例:if判断语法if condition then     statements [elif condition     then statements. ..] [else     statements ] fiif例子#!/bin/bashread -p "please input your name:" NAME#printf '%s\n' $NAMEif [ $NAME = root ] then echo "hello ${NAME}, welcome !" elif [ $NAME = itcast ] then echo "hello ${NAME}, welcome !" else echo "SB, get out here !"fi判断语句:[ condition ] (注意condition前后要有空格)#非空返回true,可使用$?验证(0为true,>1为false)[ itcast ]#空返回false[ ]判断语句:[ condition ] && echo OK || echo notok 条件满足,执行后面的语句常用判断条件:= 字符串比较-lt 小于-le 小于等于-eq 等于-gt 大于-ge 大于等于-ne 不等于常用判断条件:-r 有读的权限-w 有写的权限-x 有执行的权限-f 文件存在并且是一个常规的文件-s 文件存在且不为空-d 文件存在并是一个目录-b文件存在并且是一个块设备-L 文件存在并且是一个链接Shell自定义函数:语法 [ function ] funname [()]{    action;    [return int;]}function start() / function start / start()注意1.必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译2.函数返回值,只能通过$? 系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值,返回值只能是int。 return后跟数值n(0-255)脚本调试:sh -vx helloWorld.sh或者在脚本中增加set -x

Linux里面硬件都是文件(网卡,cpu,光驱),

 

安装jdk脚本:#!/bin/bashBASE_SERVER=172.16.203.100yum install -y wgetwget $BASE_SERVER/soft/jdk-7u45-linux-x64.tar.gztar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/localcat >> /etc/profile << EOF                  #EOF是文件的开始和结束,把文本内容追加到/etc/profile文件中去。export JAVA_HOME=/usr/local/jdk1.7.0_45export PATH=\$PATH:\$JAVA_HOME/binEOF免密ssh登陆:#!/bin/bashSERVERS="node-3.itcast.cn node-4.itcast.cn"PASSWORD=123456BASE_SERVER=172.16.203.100auto_ssh_copy_id() {    #expect -c是等着系统的提示,提示yes/no输入yes,提示password输入第二个参数,expect -c后面跟着字符串    #set timeout -1是永不超时,eof没输入就退出    expect -c "set timeout -1;             spawn ssh-copy-id $1;        expect {            *(yes/no)* {send -- yes\r;exp_continue;}            *assword:* {send -- $2\r;exp_continue;}            eof        {exit 0;}        }";}ssh_copy_id_to_all() {    for SERVER in $SERVERS  #要安装机器的列表    do        auto_ssh_copy_id $SERVER $PASSWORD   #第一个参数是遍历的每一个server,    done}ssh_copy_id_to_allfor SERVER in $SERVERSdo    scp install.sh root@$SERVER:/root    ssh root@$SERVER /root/install.shdone

 

转载地址:http://laoxl.baihongyu.com/

你可能感兴趣的文章
Python时间和日期
查看>>
uchome中模糊搜索的实现
查看>>
五子棋AI的思路
查看>>
AtomicInteger和count++的比较
查看>>
JS删除数组条目中重复的条目
查看>>
Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用
查看>>
pat 1014 1017 排队类问题
查看>>
常见负载均衡的优点和缺点对比(Nginx、HAProxy、LVS)
查看>>
Mac电脑C语言开发的入门帖
查看>>
洛谷P4242 树上的毒瘤
查看>>
JQ实现树形菜单点击高亮
查看>>
函数动态参数
查看>>
华为机试题 -- 明明的随机数
查看>>
一道简单的数学题
查看>>
为什么 执行typeof null时会返回字符串“object”?
查看>>
JavaScript关于闭包的理解和实例
查看>>
jquery-ui-widget
查看>>
VC Error spawning cl.exe
查看>>
IIS连接数据库:数据库连接出错,请检查连接字串
查看>>
centos7救援模式--rescue模式
查看>>