一、定时任务:
1)每隔十分钟检查一次磁盘使用率,当超过80时发邮件提示磁盘将满!
WARNING=80
df -h | awk -F ' +|%' '/^\/dev\/sd/{print $1,$5}'| while read DISK USE;do
if [ $USE -gt $WARNING ]; then
echo $DISK will be full,use:$USE | mail -S DISK_WARNING 162##7#75@qq.com
fi
done
[root@os7 ~]# crontab -e
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
*/10 * * * * /root/check_disk.sh
2)每天凌晨4点钟拷贝 /var/lib/mysql到指定目录下;
pwd=`date +%F_%T.MySQL`
mkdir /data/$pwd
cp -a /var/lib/mysql/ /data/$pwd/
[root@os7 ~]# crontab -e
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
* 4 * * * /root/back_up.sh
3)每天凌晨4点40分将/data目录下的所有目录和文件归档并压缩为文件backup.tar.gz
[root@os7 ~]# crontab -e
40 4 * * * tar czf /data/$(date +%F_%T).backup.tar.gz /data &>/dev/null
4.)每月15号凌晨3点钟重启mysql服务
[root@os7 ~]# crontab -e
* 3 15 * * systemctl restart mysqld
二、图文并茂说明Linux进程和内存概念
1)进程
进程(process)概念:运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位。
- 程序的一个执行实例
- 正在执行的程序。
- 能分配处理器并由处理器执行的实体。
- 内核观点:担当分配系统资源(CPU时间,内存)的实体。
进程的特点:
1.进程ID(Process ID,PID)号码被用来标记各个进程 2.UID、GID、和SELinux语境决定对文件系统的存取和访问权限 3.通常从执行进程的用户来继承 4.存在生命周期
进程创建:
init:第一个进程,从 CentOS7 以后为systemd 进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write
进程包括:应用的代码、文件、数据、地址空间、线程(有的进程为单线程、有的进程为多线程)等。
进程的状态:
运行态:running
就绪态:ready
睡眠态:可中断:interruptable,不可中断:uninterruptable
停止态:stopped
僵死态:zombie
2)内存概念:
为了充分利用和管理系统内存资源,Linux采用虚拟内存管理技术,利用虚拟内存技术让每个进程都有互不干涉的虚拟地址空间。进程初始化分配和操作的都是基于这个「虚拟地址」,只有当进程需要实际访问内存资源的时候才会建立虚拟地址和物理地址的映射,调入物理内存页。
进程使用内存问题
- 内存泄漏:Memory Leak 指程序中用malloc或new申请了一块内存,但是没有用free或delete将内存释放,导致这块内存一直处 于占用状态
- 内存溢出:Memory Overflow 指程序申请了10M的空间,但是在这个空间写入10M以上字节的数据,就是溢出
- 内存不足:OOM OOM 即 Out Of Memory,“内存用完了”,在情况在java程序中比较常见
三、图文并茂说明Linux启动流程
- 加载BIOS的硬件信息,获取第一个启动设备
- 读取第一个启动设备MBR的引导加载程序(grub)的启动信息
- 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
- 核心执行init程序,并获取默认的运行信息
- init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统
- 启动核心的waigua模块
- init执行运行的各个批处理文件(scripts)
- init执行/etc/rc.d/rc.local
- 执行/bin/login程序,等待用户登录
- 登录之后开始以Shell控制主机
四、自定义一个systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中。
五、 写Linux内核编译安装博客
六、总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。"
1)AWK有多个版本
- AWK:原先来源于 AT & T 实验室的的AWK
- NAWK:New awk,AT & T 实验室的AWK的升级版
- 目前linux中使用的awk为 GNU AWK ,它与AWK和NAWK完全兼容
2)gawk:模式扫描和处理语言,可以实现下面功能
- 文本处理
- 输出格式化的文本报表
- 执行算数运算
- 执行字符串操作
3)awk的优势
- gawk自身属于一种语言,也属于文本处理工具三剑客之一,其功能强大,可以利用正则表达式进行搜索特定行,打印特定列,也可以利用内置函数或者自定义函数,进行其它操作。接下来我以几个例子展示:
- 提取出/etc/passwd 中的第一 三列,使其左对齐并像个20个字段,并在前面加上自定义文字段。
[root@OS ~]# awk -F: '{printf "username :%-20sUUID: %d\n",$1,$3}' /etc/passwd
username :root UUID: 0
username :bin UUID: 1
username :daemon UUID: 2
username :adm UUID: 3
username :lp UUID: 4
username :sync UUID: 5
username :shutdown UUID: 6
username :halt UUID: 7
username :mail UUID: 8
username :operator UUID: 11
username :games UUID: 12
username :ftp UUID: 14
username :nobody UUID: 65534
username :dbus UUID: 81
username :systemd-coredump UUID: 999
username :systemd-resolve UUID: 193
username :tss UUID: 59
username :polkitd UUID: 998
username :unbound UUID: 997
username :sssd UUID: 996
username :sshd UUID: 74
username :postfix UUID: 89
username :chrony UUID: 995
username :mysql UUID: 306
# %-20s默认右对齐,-转为左对齐 %d 数字显示整数值 \n换行
- 查看磁盘使用率的值和对应的硬盘名称
[root@OS ~]# df -h | awk -F ' +|%' '/^\/dev\/sd/{print $1,$5}'
/dev/sda2 7
/dev/sda3 2
/dev/sda1 19
- 利用awk提取出ss.log文档中他人访问的ip地址数量并进行排名。
[root@centos8 ~]# head -20 ss.log
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 123.57.218.140:80 210.21.36.228:17036
ESTAB 0 0 127.0.0.1:55388 127.0.0.1:27017
ESTAB 0 0 123.57.218.140:22 101.200.188.230:42002
ESTAB 0 96 123.57.218.140:22 61.149.193.234:50314
ESTAB 0 0 127.0.0.1:27017 127.0.0.1:55381
ESTAB 0 0 127.0.0.1:55448 127.0.0.1:27017
ESTAB 0 0 123.57.218.140:80 144.76.4.41:31908
ESTAB 0 0 127.0.0.1:27017 127.0.0.1:55507
ESTAB 0 0 123.57.218.140:80 113.234.28.244:49447
ESTAB 0 0 123.57.218.140:80 113.234.28.244:49452
ESTAB 0 0 123.57.218.140:80 116.227.232.42:4586
[root@centos8 ~]# awk -F ' +|:' ' NR!=1{print $(NF-2)}' ss.log |sort|uniq -c|sort -nr|head -3
44 127.0.0.1
10 113.234.28.244
8 124.64.18.135
##(以空隔或者:号为分隔符,打印不是第一行的倒数第二列的字符)——————统计的是连接的ip
NR NF为 awk的内置变量,NR表示的是行号,NF表示的是这一行的列数
- awk的优势就在于它能将复杂的操作,以简单的命令执行出来,主要还是其内在功能强大,所以更方便简单,甚至可以搭配函数 if语句 for while语句等。