大数据学习第4天

纵然是瞬间 提交于 2020-03-09 07:44:36

大数据学习第四天

pstree 查看当前进程结构

source 加载文件 在当前bash

. 在当前bash运行脚本

bash 相当于浏览器加cmd

chomd +x 把文件变为可执行文件

#! /路径 在文件首行指定运行编译/解释器 不写时默认bash

#! 注释的行会在第一次读取时直接运行

yum serch 查询yum情况

文件输出类型

0 标准输入

1 标准输出

2 错误输出

可以用于多种结果的不同输出 正常结果 1>/路径

错误结果 2>/路径

配置service服务文件

/etc/init.d/

chkconfig nn 运行模式 1-6 nn 运行优先级 nn 关机级别

 

vi 模式下 末行 set ts设置缩进距离

在脚本中'命令行' 变量名='cat 文件名'赋值 获取文件内容赋值变量

bash -x debug运行

ps -aux 查看所有进程

 

chkconfig 所有服务的配置情况

--list 查看所有服务的配置启用情况

$(变量名)字符串 变量字符串拼接

子bash执行指令时直接继承父bash环境(变量 运行环境...)

子bash执行文件时不会继承父bash的值

& 后台运行

| 管道创建子进程时会全部继承父bash的值

' ' 强引用 完全引用

"" 弱引用

while 后面必须跟一个命令 比如test

du -h 查看文件夹下文件大小

$IFS 输出默认换行符

IFS=$'\n' 强制写法

改值之后需要回滚值

IFS = oldIFS(自定义变量)

bash的变量类型:

环境变量 :export

本地变量:shell脚本在运行时启动一个子bash来解释的。

局部变量

位置变量

特殊变量:bash内置的用来保存某些特殊数据的变量。(也叫系统变量)

本地变量:只属于某一个shellscript的变量。

var_name=值

作用域:整个bash进程

局部变量:

local var_name =值,

作用域:当前代码段。

环境变量:

export 名字=值

作用域:当前的shell和其子shell。

注意:脚本在执行时都会启动一个子shell进程:

命令行中启动的脚本会继承当前shell环境变量。

系统自动启动脚本(非命令行启动):则需要自我定义环境变量。

位置变量: 用于 脚本执行的参数,$1 表示第一个参数,以此类推

$0,$1,$2….

$0:表示脚本本身的文件名

特殊变量:

$? :上一个命令的执行状态返回值。

$# 传递到脚本的参数个数

$* 传递到脚本的参数,与位置变量不同,此选项参数可超过9个

$$ 脚本运行时当前进程的ID号,常用作临时变量的后缀,如 haison.$$

$! 后台运行的(&)最后一个进程的ID号

$@ 与$#相同,使用时加引号,并在引号中返回参数个数

$- 上一个命令的最后一个参数

$? 最后命令的退出状态,0表示没有错误,其他任何值表明有错误

 

程序有两类返回值:

1、 执行结果 :标准,错误 :标准输出,错误输出

2、 执行状态,$? : 0:表示正确,1-255:错误

输出重定向:

>覆盖重定向

>> 追加重定向

2> 错误覆盖重定向

2>>错误追加重定向

&> 全部重定向

&>> 全部信息追加重定向

撤销变量:

unset 变量名

 

查看shell中变量:

set 命令

查看shell中的环境变量

printenv

env

export

引用变量:${变量名},一般可以省略{}​

单引号:强引用,不作变量替换

双引号:弱引用,做变量替换

反引号:``命令替换

脚本:命令的堆砌。

 

练习:写一个脚本,完成以下任务。

1、 添加5个用户,user1,,,,user5

2、 每个用户的密码同用户名,要求:添加密码完成后不显示passwd执行结果。

3、 显示添加成功信息

练习2:写一个脚本,完成以下任务。

1、 使用一个变量保存一个用户名

2、 删除此变量中的用户,且一并删除其家目录

3、 显示“用户删除成功”信息。

 

 

 

条件判断:

条件表达式:

1、 [ expression ]

2、 test expression

3、 任何一个命令都可以作为条件表达式

整数比较:

-eq : 比如:[ $A –eq $B ]

-ne , -gt ,-lt,-ge,-le

命令的逻辑关系:

在linux 中 命令执行状态:0 为真,其他为假

 

逻辑与: &&

第一个条件为假时,第二条件不用再判断,最终结果已经有;

第一个条件为真时,第二条件必须得判断;

逻辑或: ||

逻辑非: !

命令执行的状态 的逻辑关系

1、如果用户user6不存在则添加用户6

! id user6 && useradd user6

Id user6 || useradd user6

 

2、如果用户不存在,添加用户并显示添加成功,否则显示其已存在

 

3、如果/etc/inittab文件的行数大于50,就显示好大的文件;

练习:

1、 添加3个用户user1.user3,并且设置密码和用户名相同,如果用户已经存在,显示:已存在

2、 添加完成之后计算系统一共有多个用户。

 

 

练习:给定一个用户,

1、 如果其UID=0,就显示其为管理员,否则显示其为普通用户

 

备注:

passwd默认是要用终端作为标准输入,加上--stdin表示可以用任意文件做标准输入 于是这里用管道作为标准输入

 

条件判断,控制结构:

 

If 条件 ;then

语句

elif 条件 ; then

语句

else

语句

fi

 

-a : 逻辑与,并且 : if [ $# -gt 1 –a $# -lt 3 –o $# -eq 2 ] ; then

-o :或者 比如:

练习:判断命令历史中历史命令的总条目大于500,如果大于,则显示“Some command is done.”,否则显示:“OR”。

练习:给定三个整数,判断其中的最大值和最小数。并显示出来

 

bash -n shell文件 :检查文件是否有语法错误。

bash –x shell 文件 :debug 执行文件

Shell 中如何算术运算

1、 let 算术运算表达式

let C=$A + $B

2、$[算术表达式]

C = $[$A+$B]

3、$((算术表达式))

C=$(($A+$B))

3、 expr 算术表达式 ,注意:表达式中各操作数及运算符之间要有空格。而且要使用命令引用

C=expr $A + $B

练习:给定一个用户,获取其密码警告期限,然后判断用户密码使用期限是否已经小于警告期限,如果小于,则是显示“WARN” ,否则显示密码还有多少天到期。

提示:date +%s :今天的秒数

Cat /etc/shadow 密码时间。

 

exit : 退出脚本

退出脚本可以指定脚本执行的状态:exit 0 。

复习:

测试方法:

[ 表达式 ]

[[ 表达式 ]]

test 表达式

INT1=33

INT2=32

[ $INT1 -eq $INT2 ]

[[ $INT1 -eq $INT2 ]]

test $INT1 -eq $INT2

文件测试: [ ] 需要中括号

-e FILE :测试文件是否存在

-f FILE :测试文件是否为普通文件

-d FILE :测试文件是否为目录

-r 权限

-w

-x

特殊变量:

$# $@

字符串测试:

== 等号两端需要空格

!=

-n string : 判断字符串是否为空

-s string : 判断字符串是否不空

练习:指定一个用户名,判断此用户的用户名和它的基本组 组名是否相同.

#!/bin/bash

if ! id $1 &>/dev/null ; then

echo “No such user.”

exit 12

fi

if [ $1 == id –n –g $1 ] ;then

echo “xiangtong”

else

echo “bu xiangtong”

fi

 

练习: 判断当前主机的CPU生产商,(其信息保存在/proc/cupinfo文件中)。

如果是:AuthemticAMD ,就显示其为AMD公司

GenuineIntel ,就显示其为 Intel公司

否则,就显示其为非主流公司。

 

练习:将那些可以登录的用户查询出来,并且将用户的帐号信息提取出来,后放入/tmp/test.txt文件中,并给定行号。在行首。

 

循环:进入条件,退出条件

for 变量 in 列表 ; do

语句

done

比如: for I in 1 2 3 4 5 ;do

语句

done、

如何生成列表:

1、{1..100}

2、seq 起始数 结束数

3、ls /etc 文件列表

练习:依次向/etc/passwd中的每个用户问好:hello 用户名,并显示用户的shell:

Hello ,root ,your shell :/bin/bash。

2、 只向默认shell为bash的用户问好。

 

 

While 循环

格式一

while 条件;do

语句

[break]

done

格式二 死循环

while true

do

语句

done

格式三 死循环

while :

do

语句

done

格式四 死循环

while [ 1 ]

do

语句

done

格式五 死循环

while [ 0 ]

do

语句

done

练习:计算100以内所有能被3整除的整数的和

 

 

练习:使用echo输出10个随机数,并且一行显示。提示:$RANDOM

练习:传给脚本一个参数:目录,找到该目录中文件最大的,文件名和文件大小:

比如:1.txt 100KB

ls -l | awk '{print $5,$9}' | sort -nr

2、查看该目录下是否有大小为0的文件,如果有则删除。同时显示删除信息。

练习:查询当前192.168.10.x网段内,那些IP被使用了,输出这些IP到一个文件中。

练习:请根据一个关键字,杀掉系统进程中包含此关键字的进程。

echo –n $RANDOM

 

函数:

Function 名字()

 

case 语句

case 变量 in

value1)

语句

;;

value2)

语句

;;

*)

语句

;;

esac

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!