比如每周三凌晨三点执行data命令
要求尽量的覆盖各种场景
1、10个定时任务的示例
echo "/path/to/script.sh" | at now + 1 hour
echo "your_command" | at 10am tomorrow
echo "your_command" | at 2023-07-24 15:30
echo "your_command" | at now + 1 minute
echo "your_command" | at 4:30pm + weekday
echo "your_command" | at reboot
echo "your_command" | at now + 10 minutes
for i in {0..1}; do echo "your_command" | at 3:00pm + $((i * 30)) minutes; done
echo "your_command" | at 8am 1st day
echo "your_command" | at 8am 15th day
for i in {0..23}; do echo "your_command" | at $i:15am + weekday; done
使用cron计划任务示例:
crontab -e 编辑任务
0 12 * * * your_command
15 * * * * your_command_1
45 * * * * your_command_2
0 10 * * 1 your_command
0 3 1 * * your_command
*/5 * * * * your_command
*/30 9-17 * * * your_command
0 * * * 2,4,6 your_command
0 0 * * 0 [ "$(date +%d -d 'last sun')" != "$(date +%d)" ] && your_command
0 12 25 12 * your_command
* * * * * your_command$((RANDOM%10))
2、Linux进程和内存概念
进程:process运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
进程具有三种基本状态:
1、就绪状态。某些进程“万事俱备”(必要资源),只差CPU。(就绪队列)
2、执行状态。某进程占有CPU并在CPU上执行其程序。
3、阻塞状态。某些进程由于某种原因不能继续运行下去,等待处 理问题。也称为等待状态或封锁状态。如:请求I/O。(多个等待队列)
进程具有特征:
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行。
独立性:进程是系统进行资源分配和调度的一个独立单位。
结构性:进程是由程序、数据和进行控制块三部分组成。
状态之间转换六种情况
状态之间转换六种情况
运行——>就绪:
1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;
2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态
就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发 生了I/O请求
阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列
以下两种状态是不可能发生的:
阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取。
就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态
线程:线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成。而进程由内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。
进程和线程的区别
线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进 程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见; 调度和切换:线程上下文切换比进程上下文切换要快得多。
3、Linux启动流程
电脑通电之后,首先加载BIOS(basic input output system,基本输入输出系统)。而BIOS程序首先检查计算机能否满足运行的基本条件,这个叫做“硬件自检(Power On Self Test)”。
主要检查:主板,CPU,内存,磁盘,网卡,声卡,显卡,鼠标,键盘,显示器等
1、开机自检 (POST, Power On Self Test)
电脑通电之后,首先加载BIOS(basic input output system,基本输入输出系统)。而BIOS程序首先检查计算机能否满足运行的基本条件,这个叫做“硬件自检(Power On Self Test)”。
主要检查:主板,CPU,内存,磁盘,网卡,声卡,显卡,鼠标,键盘,显示器等
2、启动顺序
硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。这是,BIOS需要知道,“下一阶段的启动程序”具体存放在哪个设备里(磁盘,光盘,移动硬盘等)。也就是说,BIOS需要有一个外部存储设备的排序,排在前面的设备就是优先转交控制权的设备。这种排序叫做“启动顺序”(Boot Sequence)
3、主引导记录 MBR( master boot record)
主引导记录只有512个字节,位于0柱面,0磁道,1扇区,放不了太多东西。它的主要作用是,告诉计算机到硬盘的那一个位置去找操作系统
4、启动管理器 Grub
在这种情况下,计算机读取”主引导记录”前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的”启动管理器”(boot loader),由用户选择启动哪一个操作系统。
5、 操作系统
控制权转交给操作系统后,操作系统的内核首先被载入内存。开始运行第一个程序systemd,执行默认target配置文件/etc/systemd/system/default.target
6、用户登录
登录shell
首先读取/etc/profile配置文件,加载/etc/profile.d/*.sh,再去用户的家目录,读取~/.bash_profile,然后去~/.bashrc,最后读取/etc/bashrc。进行初始环境变量
非登录shell
首先读取~/.bashrc文件,再读取/etc/bashrc
4、自定义一个systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中。
下图为服务将要运行的脚本代码。目的为自动连接IP地址为10.0.0.131的目的机器,每20秒检查一次/tmp/下文件的个数并将个数打印输出到文件中。
以下为service的内容
开启服务,查看服务状态,可以看到服务已被开启。再次查看指定的日志文件就可以看到结果。
5、写Linux内核编译安装博客
下载Linux内核 www.kernel.org/
将下载的内核包上传到Linux
安装软件包:
yum -y install gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel bc perl
解压Linux内核源代码:
tar xf linux-5.18.9.tar.xz -C /usr/local/src
进入Linux内核源代码目录:
cd /usr/local/src/linux-5.18.9
复制当前内核配置文件:
cp /boot/config-$(uname -r) .config
编辑内核配置:
vim .config
修改下面三行:
> # CONFIG_MODULE_SIG=y # 注释此行
> CONFIG_SYSTEM_TRUSTED_KEYS="" # 修改此行 #
> CONFIG_DEBUG_INFO_BTF=y # 更改内核版本名称
这里列出了三行配置项。第一行CONFIG_MODULE_SIG=y
被注释掉,意味着该功能将被禁用。第二行CONFIG_SYSTEM_TRUSTED_KEYS=""
被修改为空字符串,可能是为了清除之前的信任密钥配置。第三行CONFIG_DEBUG_INFO_BTF=y
的配置被更改为启用某个内核版本名称(此处并没有给出具体的名称)。
使用make命令编译内核模块:
make modules_install
使用make命令安装内核:
make install
重新启动系统:
reboot
6. 总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。
AWK是一种强大的文本处理工具,适用于各种情况下的文本处理。以下是5个比较有用的AWK使用场景,并附上相应的案例:
1.数据提取与过滤:
使用AWK可以轻松从大量文本数据中提取所需信息或过滤出特定条件的行。例如,假设有一个包含学生信息的CSV文件,我们可以使用AWK提取其中数学成绩大于90分的学生的姓名和成绩:
cat students.csv | awk -F',' '3 > 90 {print 1, $3}'
2.数据统计与计算:
AWK提供了强大的数学计算功能,可以用于对文本数据进行各种统计和计算操作。例如,假设有一个包含销售订单的文本文件,我们可以使用AWK计算总销售额:
cat sales.txt | awk '{total += $2} END {print "Total Sales: " total}'
3.格式化输出:
AWK可以根据需要对输出进行格式化,使数据更易于阅读。例如,假设有一个包含服务器信息的文本文件,我们可以使用AWK按照特定格式输出服务器名称和IP地址:
cat servers.txt | awk '{printf "Server: %-20s IP: %sn", 1,1, 1,2}'
4.多文件处理:
AWK可以同时处理多个文件,并根据需要进行数据合并和分析。例如,假设有两个包含学生数学和英语成绩的文件,我们可以使用AWK计算学生的平均分:
awk 'FNR==NR {math[1]=1] = 1]=2; next} {print 1,(math[1, (math[1,(math[1] + $2)/2}' math_scores.txt english_scores.txt
5.文本格式转换:
AWK可以用于将文本数据从一种格式转换为另一种格式。例如,假设有一个包含逗号分隔的数据文件,我们可以使用AWK将其转换为制表符分隔的格式:
cat data.csv | awk -F',' '{print 1"t"1 "t" 1"t"2 "t" $3}'
总之,AWK是一款功能丰富且灵活的文本处理工具,它适用于从简单的数据提取到复杂的文本分析和处理。根据不同的需求,结合AWK的强大功能,可以快速高效地处理文本数据。