首页 > 其他分享 >第四周

第四周

时间:2023-07-02 17:33:07浏览次数:27  
标签:COUNT 10 6.3 linux 进程 四周 root

1. 自定义写出10个定时任务的示例:比如每周三凌晨三点执行date命令,要求尽量的覆盖各种场景

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
0 0 * * 6        /tmp/bak.sh                             #每周六的0点0分执行bak备份脚本
30 0 * * *       systemctl restart httpd                 ##每天的0点30分重启httpd服务
15 8 * * 1,3,5   mail -s "hello" [email protected] < /tmp/hello.txt  #每周一周三周五的8点15分给[email protected]发送邮件
0 4 * * *        rm -rf /data/*                          #每天的凌晨4点对data目录进行清理
0 2 1 5 *        tar -zcf /tmp/etc.tar.gz /etc/			 #5月1号的凌晨2点对etc目录进行打包压缩
0 9-18 * * 1-5   /tmp/test.sh							 #每周一到周五的9点到18点执行test脚本
* */1 * * *      ntpdate ntp1.aliyun.com				 #每隔一个小时进行ntp时间同步
31 10-23/2 * * * ping -c1 -W1 10.0.0.1 &> /tmp/ping.txt	 #从10点31分开始到23点31分每隔2小时ping测试
0 10,16 * * *    /tmp/disk.sh							 #每天的10点和16点执行disk脚本
0 8,9 * * 1-5    /tmp/mem.sh                             #每周一到周五的8点和9点执行mem脚本

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

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。

进程一般由程序、数据集合和进程控制块三部分组成。

程序用于描述进程要完成的功能,是控制进程执行的指令集;
数据集合是程序在执行时所需要的数据和工作区;
程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。

进程具有的特征:
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进程一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;
结构性:进程由程序、数据和进程控制块三部分组成。
内存:进程运行的空间,CPU运行的程序和待处理的数据暂时存储的空间

脚本

进程的基本状态:
1)创建状态:进程在创建时需要申请一个空白的PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态成为创建状态
2)就绪状态:进程已经准备好,已分配到所需资源,只要分配到CPU就能立即运行
3)执行状态:进程处于就绪状态被调度后,进程进入执行状态
4)阻塞状态:正在执行的进程由于某些时间(I/O请求,申请缓存区失败)而暂时无法运行,进程收到阻塞。在满足请求时进入就绪状态等待系统调用
5)终止状态:进程结束或出现错误,或被系统终止,进入终止状态,无法再执行


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

#centos6启动流程
1.加载BIOS的硬件信息,获取第一个启动设备

2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息

3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备

4.核心执行init程序,并获取默认的运行信息

5.init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统

6.启动核心的外挂模块

7.init执行运行的各个批处理文件(scripts)

8.init执行/etc/rc.d/rc.local

9.执行/bin/login程序,等待用户登录

10.登录之后开始以shell控制主机
#CentOS 7启动流程
1.UEFi或BIOS初始化,运行POST开机自检
2.选择启动设备
3.引导装载程序,Centos 7是grub2,加载装载程序的配置文件
/etc/grub.d
/etc/default/grub
/boot/grub2/grub.cfg
4.加载initramfs驱动模块
5.加载内核选项
6.内核初始化。centos 7使用systemd替代init
7.执行initrd.garget所有单元,包括挂载/etc/fatab
8.从initramfs根文件系统切换到磁盘根目录
9.systemd执行默认targe配置,配置文件/etc/systemd/system/defaylt.target
10.systemd执行sysinit.target初始化文件系统及basic.target准备操作系统
11.systemd启动multi-user.targe下的本机与服务器服务
12.systemd执行multi-user.target下的/etc/rc.d/rc.local
13.systemd执行multi-user.target下的getty.target及登录服务
14.systemd执行garphical需要的服务

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

创建一个文件检查脚本

[root@rocky8 ~]#cat count.sh 
#!/bin/bash
# **********************************************************
# * Author        : douxijie
# * Email         : [email protected]
# * Create time   : 2023-06-27 21:07
# * Filename      : count.sh
# * Description   : 
# **********************************************************

# 远程服务器的用户名和地址
USER="root"
HOST="10.0.0.77"

# 上次的文件数量
LAST_COUNT_FILE="/var/log/last_count.txt"
CURRENT_COUNT=$(ssh $USER@$HOST "ls /tmp | wc -l")

# 如果上次的文件数量文件不存在,创建它
if [ ! -f $LAST_COUNT_FILE ]; then
    echo $CURRENT_COUNT > $LAST_COUNT_FILE
fi

# 读取上次的文件数量
LAST_COUNT=$(cat $LAST_COUNT_FILE)

# 如果文件数量有变化,记录到日志文件中
if [ $CURRENT_COUNT -ne $LAST_COUNT ]; then
    echo "$(date): 文件数量已经由$LAST_COUNT 更新为$CURRENT_COUNT" >> /var/log/file_count.log
fi

# 更新上次的文件数量文件
echo $CURRENT_COUNT > $LAST_COUNT_FILE

创建service文件

[root@rocky8 ~]#cat /lib/systemd/system/check_files.service 
[Unit]
Description=Check file count on remote server

[Service]
ExecStart=/root/count.sh

[Install]
Wantedby=multi-user.target

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

#下载源代码:从官方网站或其他可信来源下载所需版本的Linux内核源代码压缩包
[root@rocky9 ~]#yum -y install gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel bc perl

#解压源代码:使用tar命令下载解压源代码文件。
[root@rocky9 ~]#tar xf linux-6.3.10.tar.xz -C /usr/local/src/

#进入目录:切换到解压源码后的内核源码目录。
[root@rocky9 linux-6.3.10]#cd /usr/local/src/linux-6.3.10

#配置内核,拷贝当前内核的配置文件,并进行对应修改,然后使用 menuconfig 命令来做任何必要的更改
[root@rocky9 linux-6.3.10]#cp /boot/config-5.14.0-162.6.1.el9_1.x86_64 .config
[root@rocky9 linux-6.3.10]#vim .config
#修改下面三行

# CONFIG_MODULE_SIG=y #注释此行

CONFIG_SYSTEM_TRUSTED_KEYS="" #修改此行

# CONFIG_DEBUG_INFO_BTF=y     #linux-5.8.5版本后需要注释此行

##配置内核选项:可以选择使用默认配置或自定义配置来启用/禁用特定功能
[root@rocky9 linux-6.3.10]#make menuconfig

##编译内核,-j后面代表CPU核数,根据你机器的核数决定,数字越大编译速度越快
[root@rocky9 linux-6.3.10]#make -j 8

##安装,安装过程分为两部分,首先对内核模块进行安装,这个过程会将刚刚编译内核模块时生成的内核模块复制到/lib/modules/6.3.10dxj-linux目录下,其中6.3.10为对应的内核版本。
[root@rocky9 linux-6.3.10]#make modules_install

#安装内核:执行以下命令来安装编译后的内核。
[root@rocky9 linux-6.3.10]#make install

#更新引导记录:运行以下命令来更新引导记录。
update-grub          # 如果使用GRUB作为引导加载程序(适用于大多数Linux发行版)
grub2-mkconfig -o /boot/grub2/grub.cfg   # 如果使用GRUB 2

#重启系统:重新启动计算机并选择刚刚安装的新内核进行启动。
[root@rocky9 linux-6.3.10]#reboot

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

#取出系统中的用户名和UID
[root@rocky8 ~]#awk -F: 'BEGIN{printf "%-20s%-10s\n","USER","UID"}{printf "%-20s%-10s\n",$1,$3}' /etc/passwd

#取出ip地址
[root@rocky8 ~]#ifconfig eth0|awk 'NR==2{print $2}'

#统计nginx日志中访问次数最多的IP
[root@rocky8 ~]#awk '{print $1}' nginx.log |sort|uniq -c|sort -nr|head -5

#统计nginx日志中各个IP访问的次数
[root@rocky8 ~]#awk '{ip[$1]++} END {for (i in ip)print i,ip[i]}' nginx.log 

#取出磁盘分区利用率
[root@rocky8 ~]#df -h|awk -F " +|%" '/^\/dev\/sd/{print $5}'


标签:COUNT,10,6.3,linux,进程,四周,root
From: https://www.cnblogs.com/Dxj01/p/17521072.html

相关文章

  • 十四周
    5、利用接口实现动态的创建对象[选做题]•5.1创建4个类:•苹果•香蕉•葡萄•园丁•5.2在三种水果的构造方法中打印一句话.•以苹果类为例•classapple•{•publicapple()•{•System.out.println(―创建了一个苹果类的对象‖);}•}课后作业•类......
  • 第四周总结
    本周我继续进行个人作业,这次我写出了要求的1/3的内容,具体思路如下: 用户身份注册与登录 用户登录:deflogin(username,password):  #判断用户名和密码是否正确  ifcheck_username(username)andcheck_password(password):    #登录成功,返回用户信息......
  • 第四周周测题
    第四周测试1.异常捕获完整语法结构在Python中,我们可以使用try…except…语句来捕捉和处理异常。其完整语法结构如下:try:#可能抛出异常的代码块#...exceptException1:#处理Exception1异常的代码块#...exceptException2:#处理Exce......
  • 第四周总结
    完成代码--返回一个整数数组中最大子数组的和(三)--环形这次,在上次的要求中又多了一个条件——要求这个数组是环形的。 在上次的基础上,将这个代码进行改进,得到以下结果。下面把代码贴出来。packageyiweishuzu;importjava.util.Scanner;publicclassshuzu_3{priv......
  • 每周总结第四周
    本周完成了算法作业: 课堂练习01题目:计算最长英语单词链。一、题目内容:大家经常玩成语接龙游戏,我们试一试英语的接龙吧:一个文本文件中有N个不同的英语单词,我们能否写一个程序,快速找出最长的能首尾相连的英语单词链,每个单词最多只能用一次。最长的定义是:最多单词数量,和单词......
  • 第四周第一次学习
    第十九课时字符串转义字符串格式化内建函数转义字符用一个特殊的…不同的系统对换行有不同的理解用特殊的字符表示出一些列不方便写出的内容In[1]:ss=“ilove\r\naaaa”print(s)iloveaaaa字符串的格式化把字符按照一定的格式打印或者填充格式化百......
  • 第十四周学习总结
    这是第十四周,距离考试周也进了,同时在大多数课程的结束阶段,我们的大多数课程都进入了实验阶段,这也意味着我们有活要干了,工程数学,python,数据库的报告堆积如山,还有形势与政策,社会实践等一些与思修方面的的报告,这注定不能太过于轻松。学科方面,庆幸我们的系主任没有给我们布置太过具有......
  • 周报_第四周
    学习时间:2023.5.29-2023.6.4一、完成内容1.学习《动手学深度学习Pytorch版》的3,4,5,6,7章,以及部分代码的复现.2.完成了matplotlib的学习。二、问题以及解决措施问题1:书中的代码是基于pytorch的,对于里面的一些类不了解,代码理解起来有些问题。有些是理解了设计理念,但是代码写不......
  • 第四周总结
    时间androidstudio个控件可以以一个时钟的方式显示计数,也可以是日历形式 <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools&q......
  • 云原生第四周--kubernetes组件详解(下)
    ConfigmapConfigMap是一种API对象,用来将非机密性的数据保存到键值对中。使用时,Pods可以将其用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap将你的环境配置信息和容器镜像解耦,便于应用配置的修改。使用场景:通过Configmap给pod定义全局环境变量通过Confi......