二、Centos软件安装
2.1、rpm包管理器
- 指的是RH系列的包管理器(Red-Hat Package Manager),也是RH安装的软件包后缀名。当下已经扩大了行业标准。
- RPM指的是使用rpm命令进行软件的查看、安装、卸载。
- 弊端
- 提前下载rpm包,手动安装
- 自己解决包之间的依赖
- 命令
#查询 [root@node1 ~]# rpm -qa | grep ssh openssh-clients-7.4p1-21.el7.x86_64 libssh2-1.8.0-4.el7.x86_64 openssh-server-7.4p1-21.el7.x86_64 openssh-7.4p1-21.el7.x86_64 [root@node1 ~]# rpm -qi openssh-server-7.4p1-21.el7.x86_64 Name : openssh-server Version : 7.4p1 Release : 21.el7 Architecture: x86_64 Install Date: Sat 28 Jan 2023 10:24:55 PM CST Group : System Environment/Daemons Size : 993586 License : BSD Signature : RSA/SHA256, Fri 23 Aug 2019 05:37:29 AM CST, Key ID 24c6a8a7f4a80eb5 Source RPM : openssh-7.4p1-21.el7.src.rpm Build Date : Fri 09 Aug 2019 09:40:49 AM CST Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.openssh.com/portable.html Summary : An open source SSH server daemon Description : OpenSSH is a free version of SSH (Secure SHell), a program for logging into and executing commands on a remote machine. This package contains the secure shell daemon (sshd). The sshd daemon allows SSH clients to securely connect to your SSH server. #rpm安装软件 rpm -ivh rpm 包的全路径 #rpm卸载软件 注意 通常采用忽略依赖的方式进行卸载 rpm -e --nodeps 软件包名称 因为在卸载的时候 默认会将软件连同其依赖一起卸载 为了避免影响其他软件的正常使用 通常建议使用--nodeps参数忽略依赖的存在 只卸载程序自己
我的软件安装目录规范
/export/server #软件安装目录 /export/software #安装包的目录 /export/data #软件运行数据保存的目录 /export/logs #软件运行日志 mkdir -p /export/server mkdir -p /export/software mkdir -p /export/data mkdir -p /export/logs
2.2、yum包管理器
- 介绍
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
- 特点
- 自动下载rpm包 进行安装 前提是联网 不联网就凉凉
- 解决包之间的依赖关系
- 原理
#yum之所以强大原因在于有yum源。里面有很多rpm包和包之间的依赖。 yum源分为网络yum源和本地yum源。 #其中网络yum源在centos默认集成了镜像地址 只要联网就可以自动寻找到可用的yum源。 前提联网 #也可以自己搭建本地yum源。实现从本地下载安装。
命令
#列出当前机器可用的yum源信息 yum repolist all #清楚yum源缓存信息 yum clean all #查找软件 rpm list | grep 软件包名称 #yum安装软件 -y表示自动确认 否则在安装的时候需要手动输入y确认下载安装 yum install -y xx软件名 yum install -y mysql-* #yum卸载软件 yum -y remove 要卸载的软件包名
2.3、JDK的安装
- 简单:解压即可使用 但是通常配置环境变量,以便于在各个路径下之间使用java。
- 要求:JDK1.8版本。
- 步骤
#上传安装包到/export/server下 jdk-8u65-linux-x64.tar.gz #解压到当前目录 tar zxvf jdk-8u65-linux-x64.tar.gz #删除红色安装包(可选) rm -rf jdk-8u65-linux-x64.tar.gz #配置环境变量 vim /etc/profile #G + o export JAVA_HOME=/export/server/jdk1.8.0_65 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #重新价值环境变量文件 让配置生效 source /etc/profile [root@node1 ~]# java -version java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
将node1的JDK安装包scp给其他机器
#scp安装包 cd /export/server/ scp -r jdk1.8.0_65/ root@node2:$PWD #scp环境变量文件 scp /etc/profile node2:/etc/ #别忘了 其他机器source哦 source /etc/profile
三、了解shell编程
3.1、shell介绍
- 指的是一种程序,往往是使用C语言开发,功能是访问操作系统内核获取操作系统信息。
- 指的是shell脚本语言,使用什么样的命令语法格式去控制shell程序访问内核。
- 通常情况下,所说shell编程指的shell脚本编程,学习shell语法规则。
3.2、shell编程开发
- 在哪里编写?
只要能进行文本编辑的地方都可以写 linux上常使用vim编辑器开发
- 需要编译?
不需要编译
- 如何执行?
需要语法解释器 不需要安装 Linux系统中集成了很多个同种类的shell解释器 [root@node1 linux02]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh
默认shell解释器 bash shell = shell
因为很多linux发行版都以bash作为默认的解释器 所以说市面上大多数shell编程都是基于bash开展的 bash shell免费的。
shell的快速入门
- shell脚本文件 后缀名没有要求 通常以.sh结尾
- 格式
#!/bin/bash echo 'hello shell' #第一行 指定解释器的路径
给脚本授予执行权限
chmod a+x hello.sh
执行shell脚本
- 绝对路径指定shell脚本
[root@node1 linux02]# /root/linux02/hello.sh hello shell
相对路径
[root@node1 linux02]# hello.sh #默认去系统环境变量中寻找 错误 -bash: hello.sh: command not found [root@node1 linux02]# ./hello.sh #从当前目录下找 hello shell
把shell脚本交给其他shell程序执行 比如sh
[root@node1 linux02]# sh hello.sh hello shell
探讨:后缀名 解释器 执行权限是必须的吗? 不是必须的
[root@node1 linux02]# vim bye.hs echo "bye bye" [root@node1 linux02]# sh bye.hs bye bye #文件不是sh结尾 没有授权 没有指定bash解释器路径 但是却可以执行 #此时这个文件是作为参数传递给sh来执行的 此时解释器是sh 只要保证文件中语法正确就可以执行
shell 命令、shell 脚本
- 都是属于shell的东西
- shell命令倾向于交互式使用,适合逻辑简单场景
- shell脚本适合复杂逻辑 理解结合函数、条件判断、流程控制 写出更加丰富的程序。
- shell命令和shell脚本之间可以互相换行。
#编写shell脚本 执行脚本 [root@node1 linux02]# cat hello.sh #!/bin/bash echo 'hello shell' [root@node1 linux02]# sh hello.sh hello shell #以shell命令执行 [root@node1 linux02]# echo 'hello shell' hello shell
shell变量
- 语法格式
变量=值 #注意等号两边不能有空格 [root@node1 linux02]# name = allen -bash: name: command not found [root@node1 linux02]# name=allen
变量的使用
[root@node1 linux02]# name=allen [root@node1 linux02]# echo name name [root@node1 linux02]# echo $name allen [root@node1 linux02]# echo ${name} allen [root@node1 linux02]# echo $namewoon [root@node1 linux02]# echo ${name}woon allenwoon #建议提取变量的时候 使用{}标识变量的边界范围 #unset 删除变量 #readonly 只读变量 不能修改 相当于java中final修饰的 [root@node1 linux02]# name=allen [root@node1 linux02]# echo ${name} allen [root@node1 linux02]# name=james [root@node1 linux02]# echo ${name} james [root@node1 linux02]# readonly name=allen [root@node1 linux02]# echo ${name} allen [root@node1 linux02]# name=james -bash: name: readonly variable [root@node1 linux02]# unset name -bash: unset: name: cannot unset: readonly variable #只读变量不能够进行删除 只会随着生命周期结束而结束 #对应shell命令来说 生命周期就是窗口关闭 #对应shell脚本来说 生命周期就是shell执行结束
shell字符串使用
- 定义字符串
- 可以使用单引号 可以使用双引号 可以不使用引号
- 推荐使用双引号 实现变量的提取
[root@node1 linux02]# name=allen [root@node1 linux02]# echo $name allen [root@node1 linux02]# name1='allen1' [root@node1 linux02]# echo $name1 allen1 [root@node1 linux02]# name2="allen2" [root@node1 linux02]# echo $name2 allen2 [root@node1 linux02]# echo my name is ${name} my name is allen [root@node1 linux02]# echo 'my name is ${name}' my name is ${name} [root@node1 linux02]# echo "my name is ${name}" my name is allen
反引号
- `
- 英文状态下输入ESC下面
- 功能:表示执行反引号的命令
#需求:把date命令执行的结果赋值给nowtime变量 [root@node1 linux02]# date Sun Jan 29 20:14:15 CST 2023 [root@node1 linux02]# nowtime=date #如果没有反引号 理解为字符串 [root@node1 linux02]# echo $nowtime date [root@node1 linux02]# nowtime=`date` #使用反引号 理解为执行命令 把命令的结果进行赋值 [root@node1 linux02]# echo $nowtime Sun Jan 29 20:14:49 CST 2023