1. 自定义写出10个定时任务的示例:
- /command #每分钟执行一次任务
0,30 * * * * /command #每30分钟执行一次任务
30 3 * * * /command #每天3点30执行一次任务
5,40 * * * * /command #每小时的5,40分钟时执行任务
0 3 * * 3 /command #每周三3点执行任务
0 8,11 15 * * /command #每月15日上午8点和11点执行任务
0 8 */2 * * /command #每各2天的8点执行一次任务
0 8 5,10,15 * * /command #每月的5日10日15日上午8点执行一次任务
0 8 5 * 6 /command #每月5日和每周6上午8点执行一次任务
0 5-18 * * * /command #每天早上5点到下午6点每小时执行一次任务
- /command #每分钟执行一次任务
2. 图文并茂说明Linux进程和内存概念
进程概念:
“进程”是正在运行中的程序所产生的副本,是被载入内存的一个指令合集,是资源分配的单位,简单来说,进程就是一个正在运行的程序。
“进程”一般是由程序、数据集合和进程控制这三部分组成。
内存概念
1.内存是CPU能直接寻址的储存空间,由半导体器件制成。
2.内存的特点是存取速率块。
内存的作用:
1.暂时存放CPU的运算数据。
2.硬盘等外部储存器交换的数据。
3.保障CPU计算的稳定性和高性能。
进程和内存的关系和进程相应的状态:
进程状态:
创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配,如资源无法满足,就无法被调度运行,把此时的进程所处的状态称为创建状态;
就绪状态:当进程已分配到除CPU以外所有必要的资源后,只要能再分配到CPU就可以立即运行;
执行状态:进程处于就绪状态被调度后,进程进入执行状态;
阻塞状态:正在执行的进程由于某种事件(如:I/O请求,申请缓存失败等等事件)而展示无法运行,进程受到阻塞。在满足请求时进入就绪状态等待调用;
终止状态:进程结束,或出现错误,又或被系统终止,进入终止状态。无法再执行。
运行态:running
就绪态:ready
睡眠态:可中断:interruptable
不可中断:uninteruptable
停止态:stopped ,暂停于内存,但是不会被调度,除非手动启动
僵尸态:zombie,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵尸态的子进程。
3. 图文并茂说明Linux启动流程
CentOS 6
CentOS 7
4. 自定义一个systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中。
创建远程监控10.0.0.140机器上的/tmp 下的文件数量shell脚本(基于KYE免密登录)
[root@xyjroot ~]# cat check-tmp.sh
#!/bin/bash
server="10.0.0.140"
file=$(ssh $server "ls -l /tmp |wc -l ") #基于KEY
echo "$(date) 文件数量:$file" >> /root/cheak.txt
创建systemd服务脚本
[root@xyjroot /lib/systemd/system]# cat checktmp.service
[Unit]
Description=Check 10.0.0.140 tmp changes
[Service]
TimeoutStartSec=0
Type=simple
ExecStart=/bin/sh -c "while true; do /root/check-tmp.sh; sleep 60; done"
ExecStop=/bin/kill -s QUIT ${MAINPID}
[Install]
WantedBy=multi-user.target
[root@xyjroot /lib/systemd/system]# systemctl daemon-reload
[root@xyjroot /lib/systemd/system]# systemctl start checktmp
[root@xyjroot /lib/systemd/system]# systemctl status checktmp
● checktmp.service - Check 10.0.0.140 tmp changes
Loaded: loaded (/usr/lib/systemd/system/checktmp.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2023-09-02 21:32:05 CST; 2s ago
Main PID: 3891 (sh)
Tasks: 2 (limit: 10944)
Memory: 572.0K
CGroup: /system.slice/checktmp.service
├─3891 /bin/sh -c while true; do /root/check-tmp.sh; sleep 60; done #每一分钟监测一次
└─3898 sleep 60
9月 02 21:32:05 xyjroot systemd[1]: Started Check 10.0.0.140 tmp changes.
查看相应文件数量导出到的文件
[root@xyjroot ~]# cat cheak.txt
2023年 09月 02日 星期六 20:32:26 CST 文件数量:4
2023年 09月 02日 星期六 21:32:05 CST 文件数量:4
2023年 09月 02日 星期六 21:33:05 CST 文件数量:4
2023年 09月 02日 星期六 21:34:05 CST 文件数量:4
2023年 09月 02日 星期六 21:35:05 CST 文件数量:4
2023年 09月 02日 星期六 21:36:06 CST 文件数量:4
2023年 09月 02日 星期六 21:37:06 CST 文件数量:4
2023年 09月 02日 星期六 21:38:06 CST 文件数量:4
2023年 09月 02日 星期六 21:39:06 CST 文件数量:4
2023年 09月 02日 星期六 21:40:06 CST 文件数量:4
2023年 09月 02日 星期六 21:41:07 CST 文件数量:4
5. 写Linux内核编译安装博客
[root@xyjroot ~]# uname -r
4.18.0-477.15.1.el8_8.x86_64
1.安装Development Tools 开发包组
[root@xyjroot ~]# yum -y groupinstall "Development Tools"
2.下载稳定版本内核
3将下载的内核文件拷贝到linux指定文件路径然后解压
[root@xyjroot /usr/local/src]# rz -E
rz waiting to receive.
[root@xyjroot /usr/local/src]# ls
httpd-2.4.57 httpd-2.4.57.tar.bz2 linux-6.4.14.tar.xz tree-2.1.1 tree-2.1.1.tgz
[root@xyjroot /usr/local/src]# tar -xf linux-6.4.14.tar.xz
[root@xyjroot /usr/local/src]# ll
总用量 141980
drwxr-xr-x 14 501 games 4096 8月 3 13:50 httpd-2.4.57
-rw-r--r-- 1 root root 7457022 4月 6 22:46 httpd-2.4.57.tar.bz2
drwxrwxr-x 26 root root 4096 9月 2 15:14 linux-6.4.14
-rw-r--r-- 1 root root 137851916 9月 3 12:20 linux-6.4.14.tar.xz
drwxr-xr-x 3 root root 4096 8月 3 11:59 tree-2.1.1
-rw-r--r-- 1 root root 60515 6月 1 04:18 tree-2.1.1.tgz
4.从/boot 目录下复制.config文件,后开始编译安装
[root@xyjroot /boot]# cp /boot/config-4.18.0-477.10.1.el8_8.x86_64 /usr/local/src/linux-6.4.14
[root@xyjroot /usr/local/src/linux-6.4.14]# ls
[root@xyjroot /usr/local/src/linux-6.4.14]# vim .config
#修改下面三行
# CONFIG_MODULE_SIG=y #注释此行
CONFIG_SYSTEM_TRUSTED_KEYS="" #修改此行
# CONFIG_DEBUG_INFO_BTF=y
[root@xyjroot /usr/local/src/linux-6.4.14]# make menuconfig
*
* Unable to find the ncurses package.
* Install ncurses (ncurses-devel or libncurses-dev
* depending on your distribution).
*
* You may also need to install pkg-config to find the
* ncurses installed in a non-default location.
*
make[1]: *** [scripts/kconfig/Makefile:215:scripts/kconfig/mconf-libs] 错误 1
make: *** [Makefile:692:menuconfig] 错误 2
[root@xyjroot /usr/local/src/linux-6.4.14]# yum -y install ncurses-devel
[root@xyjroot /usr/local/src/linux-6.4.14]# make menuconfig
HOSTCC scripts/kconfig/mconf.o
HOSTCC scripts/kconfig/lxdialog/checklist.o
HOSTCC scripts/kconfig/lxdialog/inputbox.o
HOSTCC scripts/kconfig/lxdialog/menubox.o
HOSTCC scripts/kconfig/lxdialog/textbox.o
HOSTCC scripts/kconfig/lxdialog/util.o
HOSTCC scripts/kconfig/lxdialog/yesno.o
HOSTLD scripts/kconfig/mconf
.config:588:warning: symbol value 'm' invalid for I8K
.config:3096:warning: symbol value 'm' invalid for ISDN_CAPI
.config:6316:warning: symbol value 'm' invalid for VFIO_VIRQFD
No change to .config
*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.
进入编译界面!!!(完全不会)
5.开始编译
[root@xyjroot /usr/local/src/linux-6.4.14]make -j4
6查看/lib/modules目录并安装模块
[root@xyjroot /usr/local/src/linux-6.4.14]# ls /lib/modules
4.18.0-477.10.1.el8_8.x86_64 4.18.0-477.15.1.el8_8.x86_64
[root@xyjroot /usr/local/src/linux-6.4.14]# make modules_install
安装模块完成后
[root@xyjroot /usr/local/src/linux-6.4.14]# ls /lib/modules
4.18.0-477.10.1.el8_8.x86_64 4.18.0-477.15.1.el8_8.x86_64 6.4.14
7安装
[root@xyjroot /usr/local/src/linux-6.4.14]# make install
INSTALL /boot
*** Missing file: arch/x86/boot/bzImage
*** You need to run "make" before "make install". 这里提示先运行make
make: *** [arch/x86/Makefile:292:install] 错误 1
[root@xyjroot /usr/local/src/linux-6.4.14]# make
CALL scripts/checksyscalls.sh
DESCEND objtool
INSTALL libsubcmd_headers
CHK kernel/kheaders_data.tar.xz
make install
6. 总结5个自我觉得比较有用的awk的使用场景,比如在什么情况下用awk处理文本效率最高,发散题,至少写1个。
1.提取指定列数据
[root@xyjroot ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 875584 0 875584 0% /dev
tmpfs 894608 0 894608 0% /dev/shm
tmpfs 894608 8900 885708 1% /run
tmpfs 894608 0 894608 0% /sys/fs/cgroup
/dev/mapper/rl-root 73364480 2987292 70377188 5% /
/dev/nvme0n1p1 1038336 295264 743072 29% /boot
/dev/mapper/rl-home 133079564 960896 132118668 1% /home
tmpfs 178920 0 178920 0% /run/user/0
[root@xyjroot ~]# df | awk '{print $5}'
已用%
0%
0%
1%
0%
5%
29%
1%
0%
2.文本运算
[root@xyjroot ~]# awk 'BEGIN{i=0;print i++,i}'
0 1