第四周作业

目录

1.自定义10个定时任务

2.图文并茂说明Linux进程和内存概念

3.图文并茂说明Linux启动流程

 4.自定义一个systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中。

5. 写Linux内核编译安装博客

6. 总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。


1.自定义10个定时任务

#将/etc备份至/backup目录中,保存的文件名称格式为“etcbak-yyyy-mm-ddHH.tar.xz”,其中日期是前一天的时间
#!/bin/bash
tar Jcvf etcbak-`date -d "1 days ago" +%Y-%m-%d-%H`.tar.xz /etc /backup

#取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中
#!/bin/bash
awk '/^[S|M]/' /proc/meminfo >> /tmp/meminfo.txt

#硬盘使用情况检测脚本
#!/bin/bash
warning=80
df|awk -F "[ %]+" '/^\/dev\//{print $5}'|while read use;do
[ $use -gt $warning ]&&echo "device will be full,user:${use}%"|mailx -s diskfull root
done

#清除缓存,避免旧的yum源数据干扰新的软件包安装脚本
#!/bin/bash
du -sh /var/cache/dnf | awk -F "M" '{if($1 > 100){print $1}}'&>/dev/null && dnf clean all 

#检测数据库是否正常,出现异常自动重启
#!/bin/bash
mysqladmin -uroot -p123456 ping || systemctl start mysql

#计划任务
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#工作日1点30分把/etc备份到/backup
30 1 * * 1-5       /data/scripts/backup.sh

#每两个小时取出/proc/meminfo到/tmp/meminfo    
* */2 * * *       /data/scripts/get_info.sh

#工作日每十分钟检测一次硬盘    
*/10 * * * 1-5      /data/scripts/disk_check.sh

#工作日9点30分检测缓存   
30 9 * * 1-5        /data/scripts/cache_check.sh

#12月每天的6点8点10点12点整执行text.sh  
0 6-12/2 * 12 *     /data/scripts/text1.sh

#每月1日10日20日或者周六日2点每隔10分钟执行一次      
*/10 2 1,10,20 * 0,6  /data/scripts/text2.sh

#每隔10分钟检查一次数据库,出现异常重启服务
*/10 * * * *          /data/scripts/mysql_check.sh

2.图文并茂说明Linux进程和内存概念

什么是进程?

进程:磁盘文件加载到内存中的一个副本,占内存空间。是资源分配的单元。如果一个程序在系统中运行多次,那就是多实例。

什么是线程?

线程:线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一 个进程可以有一个或多个线程。

怎么判断是单线程还是多线程?

(1)种方法:

 (2)种方法:

[root@Rocky8 ~]# cat /proc/1030/status

    Threads:  5     #5个线程

 怎么找到一个进程对应的磁盘文件?

[root@Rocky8 ~]#ll /proc/901/exe
lrwxrwxrwx 1 root root 0 Dec  5 11:42 /proc/901/exe -> /usr/sbin/sssd

 进程使用内存问题

内存泄漏:指应用程序申请了一块内存空间,使用完后并没有及时用free或delete将内存释放,导致这块内存一直处于占用状态。

内存溢出:指应用程序申请了10M空间,但是在这个空间写入了10M以上字节的数据,这就是溢出。

内存不足:“内存用完了”,系统会选一个进程将之杀死, 在日志messages中看到类似下面的提示

Jul 10 10:20:30 kernel: Out of memory: Kill process 9527 (java) score 88 or sacrifice child

进程更多状态

运行态(R):running

就绪态:ready

睡眠态:可中断S(interruptable);不可中断D(uniterruptable)

停止态(T):stopped

僵死态(Z):父进程由于某些原因无法处理子进程,导致子进程出现僵死态。杀死父进程或恢复父进程就可以关闭僵死态的子进程了。

孤儿进程:子进程在退出前,父进程先退出,这是子进程成为孤儿进程。孤儿进程就会被systemd回收成为它的子进程。注意:孤儿进程还会继续运行,而不会随父进程退出而终止,只不过其父进程发生了改变。

查找正在运行的进程编号:pidof  process

负载查询:uptime;平均负载(1,5,15分钟的平均负载)

显示cpu相关统计:mpstat 

查看进程实时状态:top和htop

内存空间 free

进程对应的内存映射:pmap

虚拟内存信息:vmstat

统计CPU和设备IO信息:iostat

显示网络带宽使用情况:iftop

查看网络实时吞吐量:nload

查看进程网络宽带的使用情况:nethogs

系统资源统计:dstat

查看进程打开文件:lsof

3.图文并茂说明Linux启动流程

 4.自定义一个systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中。

5. 写Linux内核编译安装博客

6. 总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。

(1)从大到小取出磁盘使用率

[root@Rocky8 ~]#df|awk -F "[ %]+" '/^\/dev\//{print $(NF-1)}'|sort -nr
21
4
1
[root@Rocky8 ~]#df|awk -F "[ %]+" '/^\/dev\//{print $5}'|sort -nr
21
4
1

 (2)取出IP 地址和网段

[root@Rocky8 ~]#ip address show eth0|awk 'NR==3{print $2}'
10.0.0.128/24
[root@Rocky8 ~]#ip address show eth0|awk -F "[ /]+" 'NR==3{print $3}'
10.0.0.128
[root@Rocky8 ~]#IP=`ip address show eth0|awk 'NR==3{print $2}'`
[root@Rocky8 ~]#Net_sgt=${IP:0:6}   #也可用[root@Rocky8 ~]#Net_sgt=${IP%.*}
[root@Rocky8 ~]#echo $Net_sgt
10.0.0

 (3)计算1+..100的总和

[root@Rocky8 ~]#awk -v sum=0 'BEGIN{for(i=0;i<=100;i++){sum+=i}print sum}'
5050
[root@Rocky8 ~]#awk -v sum=0 -v i=0 'BEGIN{while (i<=100){sum+=i;i++}print sum}'
5050

(4)统计ss -ntl中state状态出现的次数

[root@Rocky8 ~]#ss -ntl|awk 'NR!=1{print $1}'|uniq -c|tr -s ' '
 4 LISTEN


[root@Rocky8 ~]#ss -ntl|awk 'NR>=2{state[$1]++}END{for(i in state){print state[i],i}}'
4 LISTEN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值