Linux软件包管理


一、回顾
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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值