一、回顾
1.用户管理(用户创建,删除,修改密码)
1).超级用户root 0
2).普通用户 500
3).伪用户 1~499
4).新增用户:# useradd [username]
5).设置或修改密码
第一种:# passwd [username]
第二种:# echo '12346' | passwd --stdin [username]
6).删除用户:# userdel -r [username]
2.用户文件目录权限
1)用户文件的目录权限
修改权限命令: chmod
--> # chmod u+x test
--> # chmod u+x,g+w,o+r test
--> # chmod u-x test
--> # chmod 764 file5
选项: -R, 递归修改
用法: # chmod 777 -R test/
2)修改所有者的命令: chown user01:user01 test/
3、管道符、追加/覆盖符号
1) | grep 表示将前一个命令的输出结果传递给后面的命令处理,两边都是命令
2)>> echo "今天时星期四" 1 >> /dev/null
3) >
4.sudo 权限
user01 ALL=(root) NOPASSWD:ALL
5、磁盘管理(添加硬盘、分区、挂载)
1)磁盘的管理:
如何磁盘进行分区
如何对磁盘进行格式化
如何对磁盘进行挂载
添加一块新硬盘的步骤:
第一步:添加一块硬盘
第二步:开机,在/dev目录下已经识别到新的硬盘
# fdisk -l
第三步:分区
1.主分区 primary partition
2.扩展分区 extended partition
# fdisk /dev/sdb
第四步:格式化分区
mkfs.ext4 /dev/sdb1
第五步:挂载分区
# mount /dev/sdb1 /mnt/system
# df -l
第六步 永久挂载
# vi /etc/fstab //启动时按fstab文件描述内容
二、linux 软件包管理(安装,卸载,升级,查询)
1、针对服务器
2、windows中所有的软件包不能直接Linux中使用
3、软件包:
-> 源码包(脚本)--》特点:免费、开源 .src
->二进制包(rpm包,系统默认包) 相当于windows中.exe
-> rpm (获取rpm包的方式:可以网上下载,安装镜像ISO文件)
->yum(依赖问题需要借助网络,会自动解析依赖)
三、rpm命令
1、centos主要管理包的方式
2、rpm管理以rpm结尾的包
3、挂载光驱
# mount /dev/cdrom /media/
【扩展】
软件包的命名方式:
zlib-devel-1.2.3-29.el6.x86_64.rpm
软件名(zlib) 版本类型(devel:开发版 ;client:客户端)版本号(1.2.3) 发行号(29.el6) 硬件平台(x86_64:64位;i386:32位)
软件全名:sudo-1.7.2p1-5.el5.i386.rpm
软件名(sudo),版本号(1.7.2pl),发行号(5.el5),和硬件平台(i386)。
注意:64位的应用或软件是无法在32位系统上运行,而64位系统则可以兼容32位的应用
4、安装: # rpm -ivh tree-1.5.3-3.el6.x86_64.rpm
用法: rpm -ivh 软件名(.rpm)
选项:-i install 代表安装
-vh 显示详细的进度
5、查询:# rpm -qa 查询当前系统中安装了哪些软件(已经安装好的rpm包)
选项: -q(--query)代表查询 a
# rpm -qa | grep jdk
# rpm -qa | grep mysql
$ sudo rpm -qa | grep tree
6、卸载:# rpm -e xcb-util-0.3.6-1.el6.i686
选项: -e 代表卸载 --erase
用法: rpm -e 软件名(.rpm) --nodeps (不验证依赖卸载)
--nodeps
Don’t do a dependency check before installing or
upgrading a package.
rpm -e --nodeps 软件名(.rpm)
$ sudo rpm -e tree-1.5.3-3.el6.x86_64
【注意】:先查询再卸载
7、查看某个文件属于哪个rpm包安装的
# rpm -qf /etc/ntp.conf
四、yum命令 .rpm 安装 查询 更新 卸载
1、前提是必须连接外网
2、用来解决rpm依赖性问题
3、方便、快捷、自动解析依赖
4、查询:
# yum list //查看yum源上拥有的软件
# yum list installed | more //查看系统中已经安装好的rpm包 等同于 rpm -qa
$ sudo yum list installed | grep tree
# yum list updates | more //查询可以更新的软件
5、安装:
# yum install httpd-devel.x86_64
选项:install 后缀不需要加.rpm 可以直接使用命令
选项:-y , 表示直接自动确认
# yum -y install httpd-devel.x86_64
$ sudo yum install tree
6、卸载
# yum -y remove httpd-devel.x86_64
$ sudo rpm -qa | grep tree
常见问题:
1.ping (检测网络质量和网络连接) 不同外网
检查网卡设置,DNS
2、包无法下载
检查配置仓库是否正确包
推荐做法:使用yum安装,然后rpm做查询和卸载
五、系统管理命令
1.top 查看系统资源 -->相当于任务管理器
每隔3秒更新一次
按q退出浏览状态
2.free 查看内存信息 --》yuan 可能会用到
选项:-m, 就是以MB格式显示
3.df -l 查看硬盘分区信息
4.ps -ef 查看系统进程
ps -ef | grep crond
jps 查看系统正在运行的java进程
5.kill 杀死正在进行的进程 -》结合jps一起使用
选项:-9
kill -9 【pid】
6.ifconfig
7.ping 检测网络质量和网络连接
ping 主机名
ip地址
域名
8、netstat 查看网络端口
选项:
-t #监控tcp协议的进程
-l #listenning
-n #显示端口号信息
-p # 显示进程的PID
netstat -antp | grep
hive --metastore 9083
--hiveserver2 10000
9、jps 查看正在运行的java进程
六、克隆虚拟机
1.关闭Linux系统
2. 虚拟机--》快照管理器--克隆
虚拟机--》管理 --》克隆
选择完整克隆而非克隆链接
3.克隆出来的虚拟机 要修改主机名还有ip地址,关键是要修改网卡信息
4. # vi /etc/hosts
修改主机映射:个人的配置为:
192.168.7.11 Linux03
# vi /etc/sysconfig/network
修改主机名 个人的配置为:apache(原)--》apche clone(克隆)
5.修改网卡名称:将Auto_eth1 修改为System eth0
6.重命名网卡配置名称
# mv /etc/sysconfig/network-scripts/ifcfg-Auto_eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
# service network restart
7.网卡的信息(mac地址HWADD)
# vi /etc/udev/rules.d/70-persistent-net.rules
删除原来的网卡信息通过mac地址来区分,删除原来的信息
并将新的网卡的name信息改为eth0
# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:8f:24:b5", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
6。# reboot 重启虚拟机(因为修改了主机名)
同时修改windows中主机映射,增加:
C:\Windows\System32\drivers\etc\hosts
192.168.7.55 java.apache.com
[服务器类型]:
塔式服务器: CPU( E3 E5 E7 “至强”)
机架式服务器: 机柜(55U) 1U - 4U 电源(双电源) 双网卡(千M) 4-12 块 1T -4T raid 磁盘矩阵
内存:32G内存 64G 128G 256G
刀片式服务器(扩展型号): 支持热插拔
云计算(云主机)
shell 编程 (自动化运维 )
第一部分:
shell脚本的规范
1.第一行:#!/bin/sh开头 或 #!/bin/bash开头
2.注释:#
3.shell脚本以.sh结尾
4.执行shell基本的两种方式:
1)sh hello.sh #执行shell脚本
2)./hello.sh #这种方式要求这个脚本拥有执行权限
第二部分
shell的变量
定义变量没有数据类型
引用变量需要在变量前面添加$符号
1.shell变量类型
-》环境变量
保存系统运行时使用的变量
-》用户变量
.bash_profile 每个用户主目录下都有这么这个文件,用来保存每个用户的环境变量
-》系统变量
/etc/profile:系统全局生效的配置文件
-》位置变量
将传递给脚本的参数保存在位置变量中
以便于在脚本中引用这些变量
Bash 定义9个位置变量:$1 ... $9
$0:代表的是当前脚本的名称
#!/bin/sh
echo $2
echo $1
echo $3
执行shell脚本传递参数时,每个参数要以空格隔开
-》预定义变量
$0:脚本名称
$!:进程的PID号,每个进程都有一个编号
$$:当前进程的ID号
$#:当前shell的参数个数
$*:显示所有的参数内容(整体)
$@:显示所有的参数内容(逐个读取)
$?:判断,表示程序退出的代表(返回0代表成功,非0代表失败)
#!/bin/sh
echo $0
echo $#
echo $*
echo $@
echo $?
-》自定义变量
语法格式:
name=[vlaue]
等号两边不能有空格
变量对大小写敏感
定义以后使用/引用($变量名),调用变量的值
$name
变量的赋值
分三种情况
1.直接赋值 tag1=112
2.将变量值赋值给另一个变量 tag2=$tag1
3.将命令赋值给变量 szie=`ls ~/ `
shell的字符串/命令(echo ):
echo 可以不加引号 #可以正常输出的输出变量
echo 加单引号 #可以将单引号中的内容原样输出
echo 加双引号 #可在双引号中输出变量或者使用转义符“\”
value=100
$ echo the value is $value
the value is 100
$ echo the value is "$value"
the value is 100
$ echo the value is '$value'
the value is $value
$ echo the valeu is "'#value'"
the valeu is "#value"
$ echo the valeu is "\"#value"\"
the valeu is "#value"
shell的字符串拼接
字符串拼接不能使用+号;把要添加的字符串变量添加{},并且需要把$放到外面。
第三部分:shell运算
第一种写法 $(( ))
第二种写法 $ []
第三种写法 expr
expr 3 + 5 注意:在expr表达式中,必须添加空格
如果:expr3+5 则报错
如果:expr 3+5 则直接输出3+5
注意:因为expr本身是一个shell命令,所以在输出的时候需要使用反引号(~,1,2,键的左边)
1.算术运算
echo $((a+b))
echo $(($a*$b))
a=10
b=15
echo $((a+b))
echo $(($a+$b))
echo $((3+5))
echo $[ a + b ]
echo $[ $a * $b ]
echo $[ 10 + 15 ]
echo `expr $a + $b`
echo `expr $a - $b`
echo `expr 9 \* 3`
echo `expr 9 / 3`
echo `expr 9 * 3` -》expr: syntax error 乘法运算符需要加转义
echo `expr a - b` -》expr: non-numeric argument 非数值参数
注:expr 表达式只能接受数值
2.逻辑运算
-》 && 逻辑与 (命令控制符)
cmd1 && cmd2 //前面的命令执行成功才会执行后面的命令
-》 || 逻辑或
cmd1 || cmd2 //前面的命令执行失败才会执行后面的命令
-》 ;无逻辑符号
cmd1 ; cmd2
第四部分:内置测试判断
分两种:
第一种:test 测试表达式
if test 6 -gt 9
then
echo bigger
fi
第二种:[测试表达式]
a=6
b=9
if [ $a -lt $b ]
then
echo smaller
fi
->第一种比较:数值比较
-eq #equal 等于
-ne #not equal 不等于
-gt #greater than 大于
-ge #greater equal 大于等于
-lt #little than 小于
-le #little equal 小于等于
注意:在数值的比较中,不能使用”>“ "<"等符号来进行比较
在test 或 [] 进行测试的时候,必须要有空格
可以用逻辑操作符将两个测试表达式结合起来。仅需要用到一对方括号,而不能用两个, 否则将返回错误信息“too many arguments”。
$ [ "990" -le "995" ] -a [ "123" -gt "33" ]
-bash: [: too many arguments
-》第二种比较:字符串的比较
分为5种比较方式
= 等于
!= 不等于
-z 长度为0则为true(返回0) 不为0为false(返回非0)
-n 长度不为0则为true
$string 字符串不为空则为true(返回0)
#!/bin/sh
str1="abc"
str2="abc"
str3="cde"
str4=
if [ $str1 = $str2 ]
then
echo str1和str2相等
fi
if [ $str1 != $str3 ]
then
echo str1和str3不相等
fi
if [ -z $str1 ]
then
echo str1长度为0
fi
if [ -n $str3 ]
then
echo str3长度不为0
fi
if [ $str1 ]
then
echo str1不为空
fi
if [ $str4 ]
then
echo str4不为空
fi
》第三种:文件的测试或比较
-d (directory) 如果是目录则为true
-f (file) 如果是文件则为true
-r 如果是可读则为true
-w 如果是可写则为true
-x 如果是可执行则为true
注意:可读可写可执行是针对于执行脚本的用户而言的权限
#!/bin/sh
if [ -d $1 ]
then
echo 是目录
fi
if [ -f $1 ]
then
echo 是文件
fi
if [ -r $1 ]
then
echo 是可读的
fi
if [ -w $1 ]
then
echo 是可写的
fi
if [ -x $1 ]
then
echo 是可执行
fi
逻辑表达式:
三种:
1.非 !
2.与 -a
3.或 -o
if [ -f $1 -a $2 -gt 5]
then
echo \$2 is $2
echo "\$2 is bigger than 5 "
fi
总结:
shell 编程规范:头 # 执行(两种)
shell 变量:
1.环境变量(用户变量和全局变量)
2.位置变量($1---$9)->相当于形式参数 一个脚本可以认为是java中一个方法
3.预定义变量:($0 $$ $* #@ $?)
4.自定义变量:
直接赋值
间接
把命令传给变量
*取变量值
运算表达式:$(())
$[]
expr
1.算术运算 + - \* /
2. 命令控制符 && || ;
测试表达式:
test
[ ]
1.数值关系: eq ne lt
2.字符串测试: = != -n -z
3.文件测试: -d -f -r -w -x