第四周学习总结

网络协议和管理

route、netstat、ip、ss、nmcli命令

网络接口配置-bonding

配置文件/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS= “miimon=100 mode=0”
配置文件/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no

网桥

用虚拟机创建网桥

nmcli con add con-name mybr0 type bridge con-name br0 ifname br0
nmcli con modify mybr0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
nmcli con add con-name br0-port0 type bridge-slave ifname eth0 master br0

进程和计划任务

进程(process)

task struct 内核存储进程信息的数据结构格式
task list 多个任务task struct组成的链表
fork();clone()写时复制
进程包含多个线程至少一个
尽可能减少进程切换来提升性能
内存是以页来存储数据:page 4K
MMU 负责转换线性的物理地址
TLB 保存虚拟地址和物理地址映射关系缓存
LRU 近期最少使用算法,释放内存
进程的基本状态:创建、就绪、执行、阻塞、终止状态
运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态
就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求
阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列
以下两种状态是不可能发生的:
阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取
就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态

系统管理工具:

ps、top、free、vmstat、iostat、pmap、htop(需要epel源安装)、glances(需要epel源安装)、dstat、iotop、nload(需要epel源安装)、lsof命令

计划任务:

at和batch一次性计划任务

1.at队列存放在/var/spool/at目录中
2.依赖与atd服务,需要启动才能实现at任务
3./etc/at.{allow,deny}控制用户是否能执行at任务
白名单:/etc/at.allow 默认不存在,只有该文件中的用户才能执行at命令
黑名单:/etc/at.deny 默认存在,拒绝该文件中用户执行at命令,而没有在at.deny 文件中的使用者则可执行
如果两个文件都不存在,只有 root 可以执行 at 命令

周期性任务计划cron

系统级计划任务(普通用户不能创建)

/etc/crontab系统级计划任务配置文件(不推荐使用)

用户级计划任务

/usr/bin/crontab 用户级计划任务配置文件
crontab
-u 以谁的身份来创建任务(默认为自己)
-e 创建计划任务(会自动生成一个计划任务文件/tmp/crontab.DkTbc7,再创建完成后会自动删除该文件)也能删除计划任务
-r 删除全部计划任务
***再任务中不能使用%,一定要用要需要转义
日志文件/var/log/cron
run-parts file 该命令能使该目录中脚本都运行一遍
推荐写计划任务写入脚本,让计划任务来启动脚本

SHELL脚本编程进阶

for循环(两种格式)

sum=0
for i in {1..100};do
    let sum+=i
done
echo sum=$sum

c语言风格

for((i=1;i<=9;i++));do
    for((j=1;j<=i;j++));do
        echo -e "${j}×${i}=$[j*i]\t\c"
    done
    echo
done

while循环

sum=0
i=1
while [ $i -le 100 ];do
    let sum+=i
    let i++
done
echo sum=$sum

while无限循环

N=$[RANDOM%10+1]
while true;do
    read -p "guess number [1-10]:" GUESS
    if [ "$N" -eq "$GUESS" ];then
        echo OK
        break
    elif [ "$N" -lt "$GUESS" ];then
        echo guess bigger
    else
        echo guess smaller
    fi
done

while 特殊用法

while read name;do
    useradd $name
    echo $name is created
done < student_name.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章