您的位置:首页 > 运维架构 > Linux

CentOS的基本配置 与 shell的基本语法

2020-06-21 11:35 29 查看

设置ip和Mac地址

每台虚拟机更改mac地址:

vim /etc/udev/rules.d/70-persistent-net.rules

每台虚拟机更改IP地址:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

程序重启

service network restart

每台虚拟机修改对应主机名

vi /ect/sysconfig/network

HOSTNAME=node01

每台虚拟机设置ip和域瓴映射

vim /etc/hosts

4:虚拟机关团防火墙和SELinux

4.1 关闭防火墙

三台机器执行以下命令(root用户来执行)

service iptables stop  # 关闭防火墙
chkconfig iptables off  # 禁 止开机启动

4.2 三台机器关闭selinux

SELinux的工作模式

  • enforcing 强制模式
  • permissive宽容模式
  • disable 关闭
#修改selinux的配置文件
vim /etc/sysconfig/selinux

虚拟机的免密登录

第-步:三台机器生成公钥与私钥

在三台机器执行以下命令,生成公钥与私钥

ssh-keygen-t rsa

执行该命令之后,按下三个回车即可

第二步:拷贝公钥到同- -台机器

三台机器将拷贝公钥到第一台机器

三台机器执行命令:

ssh-copy-id node01

第三步:复制第一台机器的认证到其他机器

将第一台机器的公钥拷贝到其他机器上

在第一天机器上面指向以下命令

scp /root/.ssh/authorized_keys node02:/root/.ssh
scp /root/.ssh/authorized_ keys node03:/root/.ssh

然后就可以实现三台虚拟机免密登陆

# ssh 主机名
ssh node2

exit  # 退出

三台机器时钟同步

为什么需要时间同步

  • 因为很多分布式系统是有状态的,比如说存储一个数据,A节点记录的时间是1,B节点记录的时间是2,就会出问题

方式1:

所有主机和同一-台主机的时间保持同步

方式2:

通过网络,所有主机和时钟同步服务器保持同步

# 安装
yum install -y ntp

# 启动定时任务
crontab -e

随后在输入界面键入

*/1 * * * * sr/sbin/ntpdate ntp4.aliyun.com;

三台机器安装jdk

1.1查看自带的openjdk并卸载

rpm -qa | grep java
rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.e16_8.x86_64 tzdata-java-
2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.e16_8.x86_64 --
nodeps

1.2创建安装目录

mkdir -p /export/softwares #软件包存放目录
2
mkdir -p /export/servers  #安装目录

1.3.上传并解压

# 上传文件时用到一个包
um -y install lrzsz

# 通过 rz -E 上传文件
rz -E

# 上传jdk到/export/softwares路径下去,并解压
mv jdk-8u141-linux-x64.tar.gz /export/softwares/

cd /export/softwares/

tar zxvf jdk-8u141-linux-x64.tar.gz  -C ../servers/

1.4配置环境变量

vim /etc/profile

添加如下内容

export JAVA_HOME=/export/servers/jdk1.8.0_141
export PATH=:$JAVA_HOME/bin:$PATH

让文件生效

source /etc/profile

将jdk文件发送给node02和node03

scp -r jdk1.8.0_141/ node02:/export/servers/
# 或
scp -r jdk1.8.0_141/ node02:$PWD  # PWD就指的当前node01所在的路径

邮箱报告

# You have new mail in /var/spool/mail/root

vim /etc/profile# 加一句
unset CHECKMAIL
# 文件生效
source /etc/profile

mysql的安排

第一步:在线安装mysq|相关的软件包

yum install mysql mysql-server mysql-devel

第二步:启动mysql的服务

/etc/init.d/mysqld start

第三步:通过mysql安装自带脚本进行设置

/usr/bin/mysql_secure_installation

第四步:进入mysql的客户端然后进行授权

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;  # 任何一台机器都可以root的方式登录的这个数据库中,并可以访问任意表
flush privileges;  # 刷新

Shell编程增强

Shell编程-般指编写shell脚本

1:基本语法:

使用vi编辑器新建一个文件hello.sh

#!/bin/bash   # #!是固定,后面选择解释器
echo "Hello World !"  # 打印输出
执行方式:

方式1:

sh hello.sh

方式2

chmod +X ./hello.sh  # 使脚本具有执行权限
./hello.sh  # 执行脚本 ./ 是相对路径
/export/servers/shells/hello.sh  # 通过绝对路径运行

2:变量:

局部变量

#!/bin/bash
str="hello"
echo ${str}world

环境变量

echo SPATH
echo SHOME

env 查看环境变量
3:特殊字符

$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参宿
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误
#!/bin/bash
echo "第一个参数为:  $1";
echo "参数个数为:   $#";
echo "传递的参数作为一个字符串显示:  $*";

执行: ./demo02.sh 123

4:运算符

#!/bin/bash
a=1;
b=2;
echo `expr $a + $b`;  # 反引号,即Tab键上面那个~键
echo $((a+b));
echo $[a+b];

乘法中的 * 需要转义 \ *

5:if语句

#!/bin/bash
read -p "please input your name:" NAME  ## read命令用于从控制台读取输入数据
## printf '%s\n' $NAME
if [ $NAME = root ]
then
echo "hello ${NAME}, welcome !"
elif [ $NAME = itcast ]
then
echo "hello ${NAME}, welcome !"
else
echo "Get out Please!"
fi  # fi 结束

6: for语句

方式1:

#!/lib/bash
for N in 1 2 3
do
echo $N
done

方式2:

#!/bin/bash
for ((i = 0; i <= 5; i++))
do
echo "welcome $i times"
done

7:函数

#!/bin/bash
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "辅入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为$aNum和$anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: