- **桥接模式:**虚拟系统可以和外部系统通讯,但是容易造成IP冲突
- **NAT模式:**网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突。但是外部系统无法和虚拟系统通讯
- **主机模式:**独立的系统,不和外部系统通讯
级层式的树状目录结构
“在Linux世界里,一切皆文件”
Linux会把硬件映射成文件来进行管理
[root@Jomo01 ~]# useradd jack
[root@Jomo01 ~]# userdel -r jacksu jomo #切换到jomo用户
exit #退出jomo用户到root
exit #再exit就是退出shell回话了案例:
[root@Jomo01 home]# groupadd police && groupadd bandit
[root@Jomo01 home]# useradd -g police jack && useradd -g police jerry
[root@Jomo01 home]# useradd -g bandit xh && useradd -g bandit xq
[jack@Jomo01 home]$ cd ~
[jack@Jomo01 ~]$ vim jack.txt
[jack@Jomo01 ~]$ ll
总用量 4
-rw-r--r--. 1 jack police 6 4月 16 15:16 jack.txt
[jack@Jomo01 ~]$ chmod 640 jack.txt
[jack@Jomo01 ~]$ ll
总用量 4
-rw-r-----. 1 jack police 6 4月 16 15:16 jack.txt
[jack@Jomo01 ~]$ chmod o=r,g=r jack.txt
[jack@Jomo01 ~]$ ll
总用量 4
-rw-r--r--. 1 jack police 6 4月 16 15:16 jack.txt
[jack@Jomo01 ~]$ chmod o=r,g+w jack.txt
[jack@Jomo01 ~]$ ll
总用量 4
-rw-rw-r--. 1 jack police 6 4月 16 15:16 jack.txt[root@Jomo01 home]# groupadd sx
[root@Jomo01 home]# groupadd yg
[root@Jomo01 home]# useradd ts
[root@Jomo01 home]# useradd wk
[root@Jomo01 home]# useradd bj
[root@Jomo01 home]# useradd ss
[root@Jomo01 home]# passwd ts
[root@Jomo01 home]# passwd wk
[root@Jomo01 ~]# passwd bj
[root@Jomo01 ~]# passwd bj
[root@Jomo01 ~]# usermod -g yg wk
[root@Jomo01 ~]# usermod -g yg bj
[root@Jomo01 ~]# usermod -g sx ts
[root@Jomo01 ~]# usermod -g sx ss
[root@Jomo01 ~]# su wk
[wk@Jomo01 root]$ cd ~
[wk@Jomo01 ~]$ vim monkey.java
[wk@Jomo01 ~]$ ll
总用量 4
-rw-r--r--. 1 wk yg 12 4月 16 15:41 monkey.java
[wk@Jomo01 ~]$ chmod g+w monkey.java
对文件夹的rwx:
r:可以使用ls指令展示目录
w:可以对文件夹增删
x:bj和wk是同一个组,如果wk对同组人只开启执行权限x,那么bj进入wk目录后,无法展示目录文件,但是依然可以读写文件应用实例
案例1:
#编辑crond任务调度
crontab -e
#每隔1分钟就将date重定义输出到mydate文件里,内容如下
*/1 * * * * date >> /tmp/mydate
案例2:
#1.写一个shell脚本my.sh,内容如下:
date >> /home/mycal
cal >> /home/mycal
#2.目前没有my.sh的执行权限,手动添加,x就是执行权限
chmod u+x my.sh
#3.执行my.sh,home目录下出现mycal文件
./my.sh
#4.目标:每隔一分钟执行一次my.sh
crontab -e
#内容如下:
*/1 * * * * /home/my.sh
案例3:
#1.编辑crond
crontab -e
#2.内容如下:(0 2)->(2时0分,24h制)
0 2 * * * mysqldump -u root -proot testdb > /home/db.bak#检测atd是否在运行
ps -ef | grep atd应用实例
案例1:
at 5pm + 2 days
#输入
at> /bin/ls /home
#输入后,连续输入ctrl+d两次!!
#输出
at> /bin/ls /home<EOT>
job 1 at Wed May 3 17:00:00 2023
案例2:
#查询
atq
#输出
1 Wed May 3 17:00:00 2023 a root
案例3:
at 5pm tomorrow
#输入
at> date > /root/date.log
#输出
at> date > /root/date100.log<EOT>
job 3 at Tue May 2 17:00:00 2023
案例4:
at now + 2 minutes
#输入
at> date > /root/date200.log
#输出
at> date > /root/date200.log<EOT>
job 4 at Mon May 1 10:49:00 2023
案例5:
#删掉编号是1的任务
atrm 1总结:
- crond任务调度是周期性的
- at任务调度是一次性的
Linux_增加磁盘应用实例
磁盘情况查询
终止指定进程输入进程ID后,还需要输入信号量,输入9强制终止
如果用户退出后,连接不会立马断掉,因为TCP协议下,外部端口可能会认为是网络延迟导致没有信息收发,所以会从ESTABLISHED转成TIME_WAIT,超时了才会断开
搭建JavaEE环境
9.注意后面还要加上原先的PATH,即¥PATH
10.注意需要让新的环境变量失效
安装mysql注意事项:
1.解压后,会出现一系列rpm安装包,但是centos有自带的默认数据库mariadb,需要先删掉
2.手动启动mysqld服务
3.root默认密码是随机的,输入grep "password" /var/log/mysqld.log获取默认密码
#!/bin/bash
#案例1:定义变量A,等号左右不能有空格
A=100
#输出变量需要加上$
echo A=$A
echo "A=$A"
#案例2:撤销变量A
unset A
echo "A=$A"
#案例3:声明静态的变量B=2,不能unset
readonly B=2
echo "B=$B"
unset B
#./var.sh输出如下:
[root@Jomo100 shcode]# vim var.sh
[root@Jomo100 shcode]# ./var.sh
A=100
A=100
A=
B=2
./var.sh: 第 15 行:unset: B: 无法反设定: 只读 variable#~/bin/bash
echo "0=$0 1=$1 2=$2"
echo "所有的参数$*"
echo "$@"
echo "参数的个数=$#"
[root@Jomo100 shcode]# ./myshell.sh 100 200
0=./myshell.sh 1=100 2=200
所有的参数100 200
100 200
参数的个数=2#!/bin/bash
echo "当前执行的进程id=$$"
#以后台的方式运行一个脚本,并获取它的进程号
/root/shcode/myshell.sh &
echo "最后一个后台方式运行的进程id=$!"
echo "执行的结果是=$?"
[root@Jomo100 shcode]# ./preVar.sh
当前执行的进程id=9219
最后一个后台方式运行的进程id=9220
执行的结果是=0
0=/root/shcode/myshell.sh 1= 2=
所有的参数
参数的个数=0#!/bin/bash
#案例1:计算(2+3)×4的值
#使用第一种方式
RES1=$(((2+3)*4))
echo "RES1=$RES1"
#使用第二种方式,推荐使用
RES2=$[(2+3)*4]
echo "RES2=$RES2"
#使用第三种方式expr
TEMP=`expr 2 + 3`
RES3=`expr $TEMP \* 4`
echo "RES3=$RES3"
#案例2:请求出命令行的两个参数[整数]的和 20 50
SUM=$[$1+$2]
echo "SUM=$SUM"
[root@Jomo100 shcode]# ./oper.sh 20 50
RES1=20
RES2=20
RES3=20
SUM=70#!/bin/bash
if [ "ok" = "ok" ]
then
echo "equal"
fi
if [ 23 -ge 22 ]
then
echo "ge"
fi
if [ -f /root/shcode/aaa.txt ]
then
echo "exist"
fi
[root@Jomo100 shcode]# ./ifdemo.sh
equal
ge
[root@Jomo100 shcode]# touch aaa.txt
[root@Jomo100 shcode]# ./ifdemo.sh
equal
ge
exist#!/bin/bash
if [ $1 -ge 60 ]
then
echo "及格了"
elif [ $1 -lt 60 ]
then
echo "不及格"
fi
[root@Jomo100 shcode]# ./ifCase.sh 70
及格了
[root@Jomo100 shcode]# ./ifCase.sh 50
不及格#!/bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
[root@Jomo100 shcode]# ./testCase.sh 1
周一
[root@Jomo100 shcode]# ./testCase.sh 2
周二
[root@Jomo100 shcode]# ./testCase.sh 3
other
[root@Jomo100 shcode]# ./testCase.sh 4
other#!/bin/bash
#$*是把输入的参数当作一整个,所以只会输出一句话
for i in "$*"
do
echo "num is $i"
done
echo "====================================="
#$@是把输入的参数区别对待,有几个参数就输出几句
for i in "$@"
do
echo "num is $i"
done
[root@Jomo100 shcode]# ./testFor1.sh 100 200 300
num is 100 200 300
=====================================
num is 100
num is 200
num is 300
#!/bin/bash
SUM=0;
for((i=1;i<=100;i++))
do
SUM=$[$SUM+$i]
done
echo "SUM=$SUM"
[root@Jomo100 shcode]# ./testFor2.sh
SUM=5050
#!/bin/bash
SUM=0;
for((i=1;i<=$1;i++))
do
SUM=$[$SUM+$i]
done
echo "SUM=$SUM"
./testFor2.sh 100
SUM=5050#!/bin/bash
i=1;
SUM=0;
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "SUM=$SUM"
[root@Jomo100 shcode]# ./testWhile.sh 100
SUM=5050Linux_read获取输入
#!/bin/bash
#案例1:读取控制台输入一个NUM1值
read -p "请输入一个数NUM1=" NUM1
echo "你输入的NUM1=$NUM1"
#案例2:读取控制台输入一个NUM2值,在10秒内输入
read -t 10 -p "请输入一个数NUM2=" NUM2
echo "你输入的NUM2=$NUM2"Linux_系统函数
#!/bin/bash
function getSum(){
SUM=$[$n1+$n2]
echo "SUM=$SUM"
}
#输入两个值
read -p "请输入一个数n1=" n1
read -p "请输入一个数n2=" n2
#调用自定义函数
getSum $n1 $n2Linux_定时备份数据库
mysql_back_db.sh
#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME
#数据库的地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=12onetwo
#备份的数据库名
DATABASE=jomoedu
#创建备份目录,如果不存在就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
#将文件处理成tar.gz
cd ${BACKUP}
tar -zcvf $DATETIME.tar.gz ${DATETIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}
#删除10天欠的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库${DATABASE}成功~"crontab -e
30 2 * * * /usr/sbin/mysql_db_backup.sh通过提取日志信息的关键字来分类不同日志的记录文件
第一题:
第二题:
第一题,忘记mysql登录密码:
输入空密码就可以进入
接下来,注销第一步my.cnf里的跳过mysql登录验证权限,然后继续重启mysqld
第二题:
第三题:



























































































































































































