虚拟网络编辑:
1.先配置虚拟机的ip.网关.子网掩码.域名
2.在配置windows:更改适配器--->VMnet8--->ip.网关.子网掩码.域名
3.输入命令 vi /etc/sysconfig/network-scripts/ifcfg-ens33(写错进入空白)
进入编辑模式BOOTPROTO=static ONBOOT=yes 最后面跟上下面的ip.网关.子网掩码.域名
IPADDR=192.168.133.3
GATEWAY=192.168.133.1
NETMASK=255.255.255.0
DNS1=192.168.133.1
4.重新启动linux: reboot
5.关掉windows的防火墙
关掉linux防火墙:systemctl stop firewalld
禁用linux防火墙:systemctl disable firewalld
6.检查:ping www.baidu.com(有回应正常) ctrl+c停止回应
ping 192.168.133.2(windows的ip) (有回应)
打开windows的cmd命令再次ping ww.baidu.com
JAVA_HOME配置+解压jdk
1.Alt+p: 进入sftp然后进入/opt/apps把压缩包拉进sftp中
2.回到主页面进行解压: tar -zxvf 压缩包名
3.进入解压后的文件: cd 文件名
4.查看文件的路径并复制: pwd(/opt/apps/jdk1.8.0_141)
5.配置JAVA_HOME: vi /etc/profile
行尾添加:
export JAVA_HOME=/opt/apps/jdk1.8.0_141
exprot PATH=$PATH:$JAVA_HOME/bin
6.将整个环境的作用域作用到整个系统中: source /etc/profile
7.查看一下版本号: java -version
tomcat安装
1.Alt+p: 进入sftp然后进入/opt/apps把压缩包拉进sftp中
2.回到主页面进行解压: tar -zxvf 压缩包名
3.进入解压后的文件: cd 文件名,再进入bin目录:cd bin
4.打开tmocat: ./startup.sh ,进入浏览器输入linux的ip地址访问tomcat页面
4.查看java进程: jps
5.关闭tomcat: ./shutdown.sh
注意:如果访问不到tomcat页面,检查linux防火墙有没有关闭,检查ip地址和端口号是否正确.
如果没有配置环境变量可以使用绝对路径和相对路径访问浏览器页面
主机名和域名映射
主机名修改:1.hostname: 查看主机名
2.vi /etc/hostname: 进入编辑模式修改主机名,旧主机名删掉,添加新的主机名
3.cat /etc/hostname: 查看有没有修改成功
4.reboot: 成功之后重启生效
5.
域名映射修改:1.直接ping windows报错,需要修改
2.vi /etc/hosts:进入编辑模式修改域名,尾部添加
192.168.133.2 windows
192.168.133.3 linux01
192.168.133.4 linux02
......
3.cat /etc/hosts: 查看有没有修改成功
4.reboot: 成功之后重启生效
5.ping linux01(windows):检查是否成功
集群的搭建
1. 知道所有机器的ip地址
2. 修改主机名域名映射
3.机器上需要安装ssh的客户端 java环境 mysql
4. 配置机器之间的免密机制 安全认证
虚拟机的克隆(所有的虚拟机都要拍照,操作错误可以回到操作之前的状态)
1.linux右击找到克隆按钮
2.克隆方法: 创建完整克隆
3.克隆成功之后修改ip地址和主机名 不然虚拟机之间冲突
4.最后重新启动一下reboot ping百度 ip检查是否能够连接上
路径
绝对路径: 带盘符的
相对路径: 不带盘符的
useradd : 创建用户
cd /home/zss : 进入zss用户 绝对路径
cd ../home/zss : 进入zss用户 相对路径
查看目录下的文件文件夹(ll)
ls: 只列出文件夹名和文件名
ll: 是ls-l的简写 列出内容比较详细 包括时间等信息
ls ./: 查看当前目录下的所有文件文件夹名
ls /: 查看根目录下的所有文件文件夹名
ls /home: 查看home 目录下的所有文件文件夹名
clear:清屏
CD命令
cd /: 返回根目录
cd ./: 进入当前目录 cd ./a.txt----->cd a.txt
cd ../: 返回上一级目录
cd ../../: 返回上上级目录
cd ~: 返回root目录
cd -: 返回上一次进入的目录
cd /a/b: 进入多级目录
PWD命令
pwd: 查看当前目录下的绝对路径
创建文件夹(mkdir)
mkdir a : 创建a文件夹
mkdir ./b : 在当前目录创建b文件夹
mkdir /doit19 : 在根目录下创建doit9文件夹
mkdir a b c : 在当前目录下同时创建a b c三个文件夹
mkdir ./a /b /home/x : 同时在当前目录创建a 根目录b home下创建x
java -cp : java -cp jar包的绝对路径 jar包里其中一个jar的绝对路径
java -jar: java -jar jar包的绝对路径
创建文件(touch)
touch 1.txt : 当前目录创建1.txt文件
touch 2.doc : 当前目录创建2.doc文件
touch 1.doc 2.doc 3.doc : 当前目录同时创建三个文件
touch /a.txt ./1.doc /home/3.mp4 : 同时在当前目录创建a.txt 根目录1.doc home下创键3.mp4
注意:在linux中判断是文件还是文件夹 根据文件的第一位
d: 文件夹
-: 文件
L: 快捷方式
删除文件/文件夹(rm)
rm -rf : 强制删除 文件 文件夹
rm -rf : a.txt 删除a.txt
rm -rf a.txt b.doc c.mp4 : 同时删除
rm -rf a b ../c : 同时删除a b 和上一级的c
rm -rf /a : 删除根目录下的a 也可同时删除根目录下的多个文件/a/b/c
rm -rf *.txt : 删除当前目录下文件以.txt结尾的
rm -rf * : 删除当前目录下的所有文件 注意:不要在根目录下使用
移动(mv)
mv a / : 移动a到根目录下
mv 1.txt ./a/ : 把1.txt移动到当前文件夹下的a目录中
mv 1.txt a/b/c.doc : 要保证目标路径存在 把1.txt移动到多级目录下的b目录中并重命名
复制(cp)
cp 1.txt a/ : 把1.txt复制到a目录下
cp -r a b/ : 把a文件夹复制到b文件夹下
cp ./1.txt ../b/1.toc : 把1.txt复制到上一级的b目录下 并重命名
cp ../1.txt b : 把上一级的1.txt复制到b目录下
vi命令 + esc到命令行模式
vi 文件: 编辑一个文件 这个文件可以存在也可以不存在 不存在就会自动创建
vi 1.txt---(命令行)----i(a)---编辑模式---esc---退出到命令行模式---:wq!(保存退出)
ctrl+c: 复制 鼠标右键粘贴
:q!(不保存退出)
vi /etc/hostname: 更改lochost名字
cat 1.txt : 查看文件里的内容 //用来查看小文件
less 1.txt: 查看文件内容,可以查看全部内容 //查看大文件内容多
:(换行) j:上一行 k:下一行
PgUp:键上一页 PgDn:下一页
q:退出
shift+zz: 保存退出(注意不要按到ctrl)
i: 光标的前面插入
I: 行首
a: 光标的后面
A: 行尾
o: 下一行
O: 上一行
gg: 光标跳转到行首
G: 光标跳转到行尾
nG: 光标跳转到第n行
:set nu: 显示行号
:set nonu: 隐藏行号
:/文中任意一段内容 搜索 n下一个 (重要)
yy: 复制当前行
nyy: 复制n行
p: 粘贴
ndd: 剪切n行
u: 取消上一步操作
最小化(后台挂起)
ctrl+z: 后台挂起
ll -a: 查看当前目录下所有文件文件夹(包括隐藏文件文件夹 .1.txt)
方法: rm 删除
打印输出(echo 默认打印到控制台)
echo "hello world": 输出hello world
echo "hello world" > 1.txt: 输出到1.txt中,如果有内容会被覆盖
echo "hello world" >> 1.txt: 往1.txt中追加内容,续写,不会覆盖
echo `ll`(`命令`) >> 1.txt:将ll命令输出到1.txt中,可执行命令
特殊符号: `飘 将命令的结果转义成字符串
echo `cat /`: 打印根目录下的所有内容
tail(查看文件的后几行)(监控)
tail -n /etc/profile: 查看profile文件的后n行(程序报错查看日志的时候使用,从尾部看起,常用)
tail -F /etc/profile: 监控profile文件的内容,监控时删除文件报错,
但是再创建同名文件后会继续监控.
tail -f /etc/profile: 监控profile文件的内容,监控时删除文件不会报错,
但是不会再继续监控.
ctrl+c: 结束监控
head(查看文件的前几行)
head -n /etc/profile: 查看profile文件的前n行
find(查找文件)
find / -name java: 查找根目录下的名字为java的文件
find / -name ??va: 查找根目录下以va结尾的文件(一个?代表一个字母)
find / -size -2048:查找根目录下小于2048k的文件(默认k为单位)
-name:参数 以名字作为参数查找
-size:参数 以文件大小作为参数查找 +是大于 -是小于 不写是等于 1KB=2K
grep(文件中查找内容)
grep "hello world" ./1.txt: 查看1.txt文件中的所有hello world内容
grep "hello world" ./1.txt -n: 查看1.txt文件中的所有hello world内容,显示行号
-ni: 显示行号并且忽略大小写
-c: 查看有多少条"hello world",计数
-vn: 反选, 除了"hello world",所有的都打印到控制台,显示行号
ll / | grep bin: 从 | 前面的输出命令中查找bin 查找根目录下的bin目录文件或文件夹
ps | grep java: 查看java进程 ps查看进程 jps查看java进程
whereis(搜索命令所在目录 配置文件所在目录 及帮助文档路径 )
whereis java: 查看java在哪里
which(显示系统命令所在目录)
which java: 查看java的绝对路径和别名
防火墙+进程
ip addr: 查看ip地址
netstat -nltp | grep 8080: 查看网络端口是否被占用
systemctl stop firewalld: 关闭防火墙
systemctl disable firewalld: 禁用防火墙
systemctl start firewalld: 启动防火墙
systemctl status firewalld: 查看防火墙服务状态
systemctl restart firewalld: 重新启动防火墙
systemctl enable firewalld: 启用防火墙
systemctl stop network: 停止网络
systemctl disable network: 禁用网络
systemctl start network: 启动网络
systemctl status network: 查看网络状态
systemctl restart network: 重新启动网络
systemctl enable network: 启用网络
du(查看文件或文件夹大小) df(查看系统存储) fire(查看内存)
du 1.txt -h: 查看1.txt文件的总占有量 (h 以合适的单位显示大小)
df -h: 查看系统的存储情况
fire -h: 查看内存的占用情况
top(任务管理器)
top: 查看任务管理器
kill -9 PID号: 强制杀死这个pid号代表的进程程序
ps -aux: 查看系统中的进程信息(a用户进程 u用户名和启动时间 x显示没有控制中断的进程)
ps -aux | grep init: 搜索系统进程中有没有lnit这个程序
cource /root/1.txt: cource的作用将1.txt中的变量拉取到当前进程中来echo $=name
权限(不同的用户对不同的文件或文件夹有不同的操作权) Permission denied:权限被拒绝
文件的权限修改
r:读的权限 cat less more tail
w:写的权利 vi echo
x:执行权 startup.sh
-(文件类型)+rwx(当前用户)+r(组)+r-x(其他人)
权限第一种修改方式
chmod o+w a.sh: 在a.sh文件给其他人加一个写的权限
chmod u-wr a.sh: 给当前用户减去读写的权利
chmod g+xr a.sh: 给组加上读和执行的权利
权限第二种修改方式(二进制)
chmod 777 a.sh: 当前用户和组和其他人都拥有RWX权利
chmod 345 a.sh: 当前用户(WXR) 组(R) 其他人(x)
文件夹的权限修改(递归)
wxr:读+写+执行权
xr:读+执行权 ls
wx:写+执行权 rm mv cp mkdir touch
x :执行权 cd
注意:文件夹的权限控制一定有执行权(X)
chmod 777 -R doit19: 设置doit19的权限都是WXR,
其子目录以及文件也会是一样的权限.
注意:root属于超级管理员,不受权限的控制
软件的安装
yum list: 列举出系统中所有可安装的安装包
yum list | grep rz: 搜索文件上传的命令
yum -y 安装包名称: 安装软件 -y(省略下载中需要自己执行的操作) Complete(下载成功)
rz: 从windows中往linux中上传软件等
sz: 从linux中下载东西到windows中
tar -zcvf 要压缩的几个文件名 压缩到的路径: 文件的压缩
tar -zxvf 要解压的文件名称: 解压文件 z代表要解压文件的类型(gzip类型)
时间命令(Date)
date: 控制台显示(Thu Nov 12 03:45:51 CST 2020)
date -s "2020-11-11 19:47:50": 手动设置时间
date +%Y-%m-%d: 日期的格式化
mkdir `date +%Y-%m-%d`: 创建一个以今天为日期的文件夹
集群间的时间同步:快捷键,自己百度
远程连接(麻烦 次次需要输入密码)
1. ssh linux02
2. yes
3.输入密码
4.exit
免密连接
1.ssh keygen: 获取一个公钥
2.ssh-copy-id linux02: 公钥发送到公屏 linux获取到公钥
3.输入密码
4.ssh linux02: 连接linux02
5.exit:退出到linux01
5.两两之间都要连接,也需要连接一下自己
(连接好之后快照保存一下)
安全认证查看(了解)
ll -a:查看隐藏文件
cd .ssh: 进入.ssh文件找到authorized_keys
cat authorized_keys: 查看认证
远程复制
scp 1.txt linux01:/root/doit19/: 文件的远程复制
scp -r 1.txt linux02:/doit9/a: 文件夹的远程复制(先创建文件夹要拷贝的位置)
scp 1.txt linux02:/$PWD/: 文件夹的远程复制($PWD复制到当前所在的文件夹,要保证远程有这个文件夹)
shell脚本(命令解析器,也是一门编程语言)
脚本格式: 脚本以#!/bin/bash开头(指定解析器)
执行方式: sh 绝对路径(相对路径) bash也是可以的
变量
set: 显示系统当前所有的变量
name=zss:添加一个变量 再次赋值会被覆盖
echo "$name": name对应的值打印到控制台 echo ${name}
echo "$name"hello: 字符串拼接 中间没有+号
source和export
source 1.sh: 将1.sh中定义的变量作用域作用到当前
export name=zss: 在1.sh脚本中可以获取变量
算术表达式
echo $(( (2*3)+(3*6) ))
方便写法: echo $[ (2*3)+(3*6) ]
条件判断式
整数
if [ -e /doit19/a.sh ] then echo "true": 如果a.sh存在返回true (注意[]与内容之间的空格)
if格式: (支持嵌套) #!/bin/bash
if [条件表达式] name=$1
then echo... age=$2
elif [条件表达式] if[]...
then echo...
else
echo...
fi
test 1 -eq 1 && echo "true" || echo "false"; 如果1=1 返回true,不成立返回false
-eq:测试整数是否相等
-ne:测试整数是否不相等
-ge:测试整数是否大于等于
-gt:测试整数是否大于
-le:测试整数是否小于等于
-lt:测试整数是否小于
字符串
test -n(可省略) $name && echo "true": 判断name是否不等于空,不为空返回true
test $name == zss && echo "true" || echo "false": 判断name的值是不是zss
test -z $name && echo "true": 判断name是否为空,为空返回ture
文件文件夹
test -e a.sh && echo "true" || echo "true":判断文件a.sh是否存在
test -d a && echo "true" || echo "true":判断文件夹a是否存在
test [ -r a.sh -a(and) -x a.sh -a -w a.sh ] $$ echo "true" || echo "true":判断文件a.sh是否有读写执行权
test [ -r a.sh -o(or) -x a.sh -o -w a.sh ] $$ echo "true" || echo "true":判断文件a.sh是否有读或写或执行权
test -L a.sh $$ echo "true" || echo "true":判断a.sh是否是一个超链接
硬连接(不受原文件的控制,原文件修改会跟着变化)
ln /etc/sysconfig/network-scripts/ifcfg-ens33 ./my-ens33: 创建快捷方式
case
#!/bin/bash
arg=$1
case $arg in
zss)
echo ""
;;
lss)
echo ""
;;
*)
echo ""
esac
for
#!/bin/bash
for i in {1..100}
do
echo "hello $i"
done
for hostname in `cat hostname` ;do echo $hostname ;done(转义,控制台直接打印出hostname里的内容)
tomcat脚本一键启停 命令(sh hostname.sh start/stop)
#!/bin/bash
brg=$1
for hostname in `cat /doit19/demo01/name`
do
if [ $brg ]
then
if [ $brg == start ]
then
echo "正在打开tmocat"
ssh $hostname "source /etc/profile ;/opt/apps/apache-tomcat-7.0.47/bin/startup.sh ;exit"
echo "成功启动tomcat"
elif [ $brg == stop ]
then
echo "正在关闭tomcat"
ssh $hostname "source /etc/profile :/opt/apps/apache-tomcat-7.0.47/bin/shutdown.sh ;exit"
echo "成功关闭tomcat"
else
echo "您输入错误"
fi
else echo "要输入参数"
fi
done
echo $?
命令echo $:返回0代表上一次的执行结果是正确的
命令echo $:返回127代表上一次执行的结果是错误的
命令echo $:上一次是判断命令如果是成立的返回0,不成立返回1
function方法(tomcat一件启停)
#!/bin/bash
function start () {
for aaa in `cat /doit19/demo01/tomcat`
do
echo "tomcat正在$aaa启动"
ssh $aaa "source /etc/profile ;/opt/apps/apache-tomcat-7.0.47/bin/startup.sh ;exit"
echo "tmocat成功关闭"
done
}
function stop () {
for aaa in `cat /doit19/demo01/tomcat`
do
echo "tomcat正在$aaa关闭"
ssh $aaa "source /etc/profile ;/opt/apps/apache-tomcat-7.0.47/bin/shutdown.sh ;exit"
echo "tmocat成功关闭"
done
}
$1
while循环(一定不要忘记循环出来的条件)
#!/bin/bash
i=1
while [ $i -le 10 ]
do
echo $(( i*i ))
#i=expr $i+1
#i=$(( $i+1 ))
let i++
done
定时器
* * * * *
分 时 日 月 周
创建一个定时任务: 命令(crontab -e)
* * * * * echo Ok >> /OK.ok: 每分钟追加写一次ok
0 8 * * * /bin/bash /opt/apps/apache-tomcat-7.0.47/bin/startup.sh: 每天早上8点整启动startup.sh
* * * * (1,3,5) : 周一周三周五
* * * 1-10 * : 1-10月份