一、Linux系统和Shell
1、写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB
2、每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写:
这里我们使用自己的IP
首先创建测试文件
接下来我们要配置免密访问
接下来我们测试一下
最后我们备份
3、找到/tmp/目录下面的所有名称以"_s1.jpg"结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中
首先我们创建测试文件
接下来我们编写一个脚本
4、写出SHELL函数RevertInput,函数必须获取三个参数,然后将三个参数倒序echo打印出来,函数必须检查参数个数的合法性,如果参数非法,打印”Illegal parameters”,对于下面的输入:
RevertInput “this is para1” para2 para3
应该输出:
para3
para2
this is para1
(注:需要注意第一个参数中的空格)
5、如果一个系统使用LVM进行分区管理,请写出调整一个逻辑卷分区大小的命令:
创建逻辑卷组
[root@node1 ~]# vgcreate VG1 /dev/sdb
创建逻辑卷大小
[root@node1 ~]# lvcreate -n LV1 -L 5g VG1
逻辑卷扩容
[root@node1 ~]# lvextend -L +1G /dev/VG1/LV1
逻辑卷缩容
[root@node1 ~]# lvreduce -L -1G /dev/VG1/LV1
6、如何找出当前系统中磁盘I/O读写占用最高的程序:
要找出当前系统中磁盘I/O读写占用最高的程序,可以使用
iotop
命令。iotop
是一个类似于top
命令的工具,用于监视磁盘I/O的使用情况。运行iotop,我们将看到一个类似于
top
命令的实时监视界面,显示当前磁盘I/O读写占用最高的程序和进程。按下o
键可以按照磁盘I/O使用量进行排序,可以找出读写占用最高的程序。二、网络相关
1、一个域名是否可以配置多个A记录?一个域名是否可以配置成多个其他域名的CNAME?
一个域名可以配置多个A记录,这样可以将一个域名解析到多个不同的IP地址上,实现负载均衡或者故障转移的功能。
一个域名可以配置成多个其他域名的CNAME,这样可以将一个域名解析到多个不同的域名上,实现统一资源的访问。但是需要注意的是,如果一个域名配置了CNAME记录,则不能再配置其他类型的记录,如A记录或MX记录等。
2、请写出用tcpdump抓取符合如下条件包的命令:(1) 目标端口是 80;(2) 来源IP或者是1.1.1.1,或者是 2.2.2.2;(3) UDP包;
-i any:监听任何网络接口
udp:仅抓取UDP包
src host 1.1.1.1 or src host 2.2.2.2:来源IP为1.1.1.1或2.2.2.2
dst port 80:目标端口为80
3、用netstat命令配合其他shell命令,按照来源IP统计下所有到80端口的ESTABLISHED状态链接的个数,输出结果类似(第一列为连接数,第二列为IP):
12 202.165.123.2
35 202.165.123.2
69 202.165.123.2
netstat -ntu: 获取所有tcp连接状态
awk '/D/' {print 4}: 过滤ESTABLISHED状态,打印来源IP地址列
awk -F: '{print $1}': 提取IP地址
sort: 排序
uniq -c: 统计重复IP出现次数
4、写出一个curl命令,访问指定服务器61.135.169.121上的如下URL:http://www.baidu.com/s?wd=test,访问的超时时间是20秒:
三、LAMP相关
1、写出如何给apache增加virtualhost,让访问http://www.test.com和 http://www.test.cn的时候,都打开/var/www/html目录下面的文件:
首先我们下载
[root@node1 ~]# yum install httpd -y
接着我们写入hello,world!
[root@node1 ~]# echo 'hello,world!' > /var/www/html/index.html
接着我们创建日志文件
[root@node1 ~]# touch /var/lib/httpd/access_log
接下来我们配置主机
[root@node1 ~]# cd /etc/httpd/conf.d/
[root@node1 conf.d]# vim virt.conf
<Directory "/var/www/">
AllowOverride none
Require all granted
</Directory><VirtualHost 192.168.8.133:80>
ServerName www.test.com
DocumentRoot /var/www/html
CustomLog "/var/lib/httpd/access_log" combined
</VirtualHost><VirtualHost 192.168.8.133:80>
ServerName www.test.cn
DocumentRoot /var/www/html
CustomLog "/var/lib/httpd/access_log" combined
</VirtualHost>
接下来我们要把192.168.8.133 www.test.com www.test.cn写到/etc/hosts下(这里我们使用echo命令)[root@node1 conf.d]# echo '192.168.8.133 www.test.com www.test.cn' >> /etc/hosts
接下来重启服务
[root@node1]# systemctl restart httpd
[root@node1]# curl http://www.test.com
hello,world!
[root@node1]# curl http://www.test.cn
hello,world!2、写一个shell命令,统计apache日志文件(access_log)中某一天中每个URL的访问次数,并按照次数由小到大的顺序排序输出:
[root@node1]# grep '28/Jan/2024' /var/lib/httpd/access_log | awk '{print $1}' | sort | uniq -c
3、如果配置mysql服务器的时候,配置了auto_increment_increment=3,请问这里的3意味着什么?
auto_increment_increment是一个系统变量,用于控制自增字段的增量值。3意味着这意味着每次插入新记录时,自增字段的值会增加3。
四、综合问答
如果一个Linux系统响应十分缓慢,SSH进去后执行命令等一分钟才有响应,请说明各种可能的原因,并阐述如何分析并找到问题源头:
CPU负载过高:可以使用top或者uptime命令查看系统负载情况。如果负载过高,可能是因为有太多进程在竞争CPU资源,或者某些进程占用了大量CPU资源。
内存不足:使用free命令查看内存使用情况。如果内存不足,系统可能会频繁地进行内存页交换,导致响应缓慢。
硬盘I/O繁忙:使用iostat命令查看磁盘I/O情况。如果磁盘I/O负载过高,可能是因为系统在进行大量的读写操作。
网络问题:使用ifconfig或者netstat命令查看网络状况。如果网络带宽被占满,可能会导致SSH连接响应缓慢。
进程阻塞:使用ps命令查看系统进程情况。如果有进程长时间处于D状态,可能是因为进程在等待某些资源,导致系统响应变慢。
系统日志:查看系统日志文件(如/var/log/messages)是否有异常报错信息,这可能会提供一些线索