本次复习题包括Linux系统管理,Linux用户及权限管理,Linux进程管理,Linux文本操作(含三剑客),Linux网络管理,Linux防火墙管理,shell编程。
关键词:
cd命令ls命令date命令touch命令mkdir命令
who命令w命令last命令
uname命令uptime命令demsg命令
find命令rm命令hwclock命令tar命令 crontab history
1、 请说出cd ~与cd …和cd -的区别
cd ~ 进入用户主目录
cd - 返回进入此目录之前所在目录
cd … 返回上一级目录
2、 如何根据文件大小及时间的先后顺序查看目录下的文件信息
按照时间排序ls -lht
按照文件大小排序ls -lhS
3、 如何仅列出文件,以及如何仅列出目录
仅列出文件ls -lh | grep -i [d]
仅列出目录ls -lh | grep -i [^d]
4、 按照中文习惯输出当前时间,并输出24天后的时间
当前时间date “+%Y-%m-%d %H:%M:%S”
二十四天后时间date -d “+24 day” “+%Y-%m-%d %H:%M:%S”
5、 将系统时间写入硬件时间,反过来呢?
hwclock -w
hwclock -s
6、 使用tar命令备份压缩/var/log/messages,并根据当前日期作为压缩包的前缀名的一部分,如messages_2022-01-15.tar.gz,请使用命令实现并验证
tar -zcvf “date "+%Y-%m-%d"
.tar.gz” /var/log/messages
7、 编写一个定时任务,每周五晚上12点删除系统大于200M的文件(注意不要把系统文件删除)
0 24 * * 5 find / -type f -size +200M | xargs rm -rf
8、 显示linux操作系统内核版本号使用什么命令,显示linux内核名称呢?
Uname -a
9、 显示最常用的20条命令
History
Find专项训练:
Useradd groupadd userdel groupdel usermod
chmod chown chgrp….
请总结描述用户和组管理类命令的使用方法并完成以下练习
1)、创建组distro,其GID为2016;并查询验证
Groupadd distro -g 2016; cat /etc/group | grep “distro”
2)、创建用户mandriva,其ID号为1005;基本组为distro;并输出你的验证结果
useradd mandriva -u 1005 -g 2016;cat /etc/passwd | grep “mandriva”
3)、创建用户mageia,其ID号为1100,家目录/home/linux,并输出你的验证结果
Useradd mageia -u 1100 -d /home/linux;cat /etc/passwd | grep “mageia”
4)、给用户mageia添加密码,密码为mageedu,并输出你的验证结果
echo “mageedu” | passwd --stdin mageia;cat /etc/shadow | grep “mageedu”
5)、删除mandriva,但保留其家目录,并查看结果
Userdel mandriva
6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin
Useradd slackware -u 2002 -g distro -G peguin
7)、修改slackware的默认shell为/bin/tcsh
Usermod -s /bin/tcsh
8)、为用户slackware新增附加组admins;
Usermod -G admins
9)、为slackware 添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天
echo “slackware” | passwd -n 3 -x 180 --stdin slackware
10)、添加用户openstack,其ID号为3003,基本组为clouds,附加组为peguin和nova
Useradd openstack -u 3003 -g clouds -G peguin,nova
11)、添加系统用户mysql,要求其shell为/sbin/nologin
Useradd -r -s /sbin/nologin mysql
12)、使用echo命令,非交互式为openstack添加密码
echo “111111” | passwd --stdin openstack
权限管理练习:
复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限
Cp -r /etc/fstab /var/tmp;
chown wangcai:sysadmins /var/tmp/*
chmod 660 /var/tmp/*
在/data/testdir里创建的新文件自动属于g1组,组g2的成员如:alice能对这些新文件有读写权限,组g3的成员如:tom只能对新文件有读权限,其它用户(不属于g1,g2,g3)不能访问这个文件夹。
chgrp -R g1 /data/testdir
chmod -R g+s /data/testdir
setfacl -Rm d:g:g2:rwx /data/testdir
setfacl -Rm g:g3:r /data/testdir
chmod -R o= /data/testdir
ps命令
top命令
lsof命令
vmstat
pstree
pgrep sar pidof
请简述下程序、进程以及线程的区别?进程有几种状态,分别是什么?
程序是一个静态文件的描述,不占有计算机的系统资源。
进程是一个动态的过程,占有CPU内存等资源,有一定的生命周期。
同一个程序的不同执行过程即为不同的进程。
线程有称为轻量级进程,在并发上和进程相同但是在创建时消耗资源少,一个进程中可以包含多个线程,这多个线程共享进程资源。
请使用相关进程命令获取mysql服务的进程号,如果同时要显示服务名呢?
Netstat -tunlp | grep “mysql”
杀死所有httpd的同名进程
ps -efww|grep vim |grep -v grep|cut -c 9-15|xargs kill -9
请列出常见的kill命令的信号,并逐一说明其用法。
1 HUP: hangup
2 INIT: 相当于 Ctrl + c
9 KILL
15 TERM: Terminate (kill 的默认信号)
18 CONT: Continue (从STOP信号中恢复)
TOP: Stop
如果某个进程使用kill命令无法停止,怎么彻底杀死这个进程
如果kill子进程无效,可以尝试kill其父进程, 或用ps和grep命令寻找僵尸进程,一般可以用top命令发现动态进程表:其中zombie是僵尸进程,前面的0是僵尸进程的个数。
怎样按照进程名来杀死指定进程,请列出你所知道的方法。
pkill 进程名,killsll 进程名, kill -9 $(pidof 进程名关键字),kill -9 $(ps -ef|grep 进程名关键字|gawk ‘$0 !~/grep/ {print $2}’ |tr -s ‘\n’ ’ ')
使用相关命令完成周期性的系统负载性能的采集,比如每隔3秒采集一次,共采集10次
vmstat 3 10
查看某个文件占用的用户
Losf
有一个28G左右的大日志文件,删除了,但是空间没释放,请问怎么定位和解决
lsof | grep delete
kill -9 进程号
10、列出某个程序所打开的文件信息
Lsof -p pid/-c filename
11、top命令的NI、PR、VIRT、RES、SHR都是什么意思?
PR 优先级
NI nice值。负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SHR 共享内存大小,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
12、top命令的load average: 1.19, 1.18, 1.21是什么意思,还有哪些命令可以查看此信息?
三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟)
可以使用top,uptime等命令去查看
13、top怎么根据CPU排名查看及按照MEM排序查看
通过shift + >或shift + <可以向右或左改变排序列
14、讲述下/proc和/sys这两个目录的区别?/proc目录下的数字目录是什么意思?
/proc 正在运行的内核信息映射,主要输出的信息为:进程信息、内存资源信息、磁盘分区信息等。
/sys 硬件设备的驱动程序信息
15、用sar分别显示当前CPU、内存、磁盘及系统进程资源的利用率,共显示10次,一秒更新一次
当前CPU的利用率: sar -u 1 10
当前内存的利用率:sar -r 1 10
当前磁盘的利用率:sar -d 1 10
当前系统进程资源的利用率:sar -v 1 10
16、列出树状的进程
Pstree
17、列出init和syslogd服务的PID(pidof命令)
pidof init syslogd
18、找出 bash即以bash为PPID的几个主要的PID(pidof命令)
Pidof -x bash
19、用pgrep列出mysql的进程号
Pgrep -l mysql
lsof专项练习
20、用lsof查出系统中用到/lib/tls/libc-2.3.2.so文件的进程
Lsof /lib/tls/libc-2.3.2.so
21、用lsof列出关于root用户的所有程序开启的socket
lsof -u root -a -U
22、用lsof列出有哪些进程在对/root目录进行操作
Lsof /root/
23、用lsof查看sshd服务用了哪些文件
Lsof -c sshd
24、用lsof查看有哪些进程在用网络
Lsof -i
25、用lsof查看除用户root外,其它用户所开启的进程中用了哪些文件
Lsof -u ^root
26、用lsof查看目前系统上面所有的被启动的设备
Lsof +d /dev
Cut head tail
sort
uniq
awk
sed
grep
vim
wc
paste
cat tac less more
tr
使用cut命令取出当前主机的ip地址
ifconfig ens33 | grep “netmask” | awk ‘$1=$1’| cut -d " " -f 2
计算ifconfig ens33 命令结果空白字符的个数
列出/etc目下所有以.conf结尾的文件的文件名,并将其名转为大写后保存至/tmp/etc.conf文件中
find /etc/ -name “.conf" | tr a-z A-Z > /tmp/etc.conf
显示/var目录下一级子目录或文件的总个数。
Ls /var | wc -l
取出/etc/group文件中第三个字段数值最小的10个组的名字。
Sort -t : -k 3 -n /etc/grop | head -n 10 | awk -F: ‘{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲’ 将/etc/fstab和/…’
使用egrep取出/etc/rc.d/init.d/functions的目录名/etc/rc.d/init.d/
echo ‘/etc/rc.d/init.d/functions’ | egrep -o '/./’
统计last命令中以root登录的每个主机IP地址登录次数
last | grep ‘^root’ | grep -Eo ‘([0-9]{1,3}.){3}[0-9]{1,3}’ | sort | uniq -c
显示ifconfig命令结果中所有IPv4地址
ifconfig |grep -w ‘inet’ |grep -Eo ‘([0-9]{1,3}.){3}[0-9]{1,3}’|head -n1
17、vim删除关键字bash下的两行怎么实现,在{下粘贴bash行怎么写,如何快速切换到行首或行尾,如何给1-10行批量加注释,如何删除文件中的空白行,如何删除当前光标所在行到行尾的所有字符,如何对整个文本内容进行关键字替换,如替换bash为dashing
18、将aa.c和bb.c文本文件的内容合并,并保存至cc.c
Cat aa.c bb.c > cc.c
19、写一条命令,查看当前进程信息的内容,在当前进程信息内容中搜索含有字符串“sql”
的行,并把这些行排序后输出到文件sql.log中
ps -ef | grep sql | sort >> sql.log
20、请使用你学过的命令写出去除日志中的空行几种方式
grep -v ‘^KaTeX parse error: Expected group after '^' at position 24: …n.log 或 sed '/^̲/d’ wenjian.log 或 awk ‘/./{print}’ wenjian.log
21、找出日志文件中存在GET或POST的行
grep -E ‘GET|POST’ 日志文件名
22、找出访问量最大的 top 10 的 ip
cat 日志文件名|awk -F” " ‘{print $2}’|sort|uniq -c|sort -nrk 1 -t’ ‘|awk -F" " ‘{print $2}’|head -10
23、找出httpd的访问日志中所有状态码不是 200 的行信息,注意状态码都是在第九列
cat /etc/httpd/logs/access_log | grep -v ‘200’ 或cat /etc/httpd/logs/access_log |awk -F" " ‘{if($9!=200) {print $0}}’
24、查看 6379 端口是否被占用
netstat -anp | grep 6379
25、统计 80 端口的连接数
netstat -nat | grep -i ‘80’ | wc -l
26、统计 httpd 协议连接数
ps -ef | grep ‘httpd’ | wc -l
27、统计已经连接并且状态为 ESTABLISHED 的连接
netstat -nat | grep ESTABLISHED|wc -l
28、排查死链(逐一的访问各行网址然后,将成功返回 200 OK 的 url 进行输出,失败的 url 加上 ERR 标记也进行打印)
此题可使用curl https://www.baidu.com作为测试
29、找出文件中至少有一个空格的行
grep -E ’ +’ 文件名
30、过滤文件中以#开头的行,后面至少有一个空格
grep -E ‘^# +’ 文件名
31、查询出/etc目录中包含多少个root
grep -ro ‘root’ /etc/ | wc -l
统计你的nginx访问日志中的各个ip的访问次数
awk ‘{print $1}’ 日志名 | sort | uniq -c
netstat
ss
tcpdump
ifconfig iproute route
tcpdump traceroute nmap
Iptables firewall
Iptables专项:
1.请描述下iptables的四表五链都是什么?
四表:filter(过滤数据包)、nat(用于网络地址转换)、mangle(修改数据包的服务类型、TTL、并且可以配置路由实现QOS)、raw(决定数据包是否被状态跟踪机制处理)
五链:
INPUT (进来的数据包应用此规则链中的策略)
OUTPUT (外出的数据包应用此规则链中的策略)
FORWARD (转发数据包时应用此规则链中的策略)
PREROUTING (所有的数据包进来的时侯都先由这个链处理)
POSTROUTING (所有的数据包出来的时侯都先由这个链处理)
2. 不允许源端口为80的数据流出
iptables -I OUTPUT -p tcp –sport 80 -j DROP
3. 允许22到88端口
iptables -I INPUT -p tcp –dport 22:88 -j ACCEPT
4.允许ssh,mysql,httpd三个服务的默认端口通过防火墙
iptables -I INPUT -p tcp -m multiport –dport 22,3306,80 -j ACCEPT
5. 禁止192.168.33.0网段从eth0网卡接入
iptables -A INPUT -p tcp -i eth0 -s 192.168.33.0 -j DROP
6. 禁止ip地址非192.168.10.10的所有类型数据接入
iptables -A INPUT ! -s 192.168.10.10 -j DROP
7. 禁止ip地址非192.168.10.10的ping请求
iptables -I INPUT -p icmp –icmp-type 8 -s 192.168.50.100 -j DROP
9. 允许自己ping别的主机
iptables -A OUTPUT -p icmp --icmp-type 8 -s localip -j ACCEPT
10. 允许任何人来ping本机
iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -j ACCEPT
Firewall专项
1、有如下两个文件内容,要求拼接后输出如下:
cat a.txt
111 org
222 lili
333 jack
444 abc
cat b.txt
111 Tom Green
555 qianqian
666 zhangsan
444 rose
要求输出
111–org–Tom–Green
444–abc—rose
2、syslog日志分析脚本,过滤出来用户登录失败的日志记录,每天发送监控邮件
3、获取Linux的cpu型号、内存型号、内存大小、服务器的SN、raid卡信息、网卡地址、mac地址
#!/bin/sh
a= cat /proc/cpuinfo |grep ‘model name’
4、连续输入5个100以内的数字,统计和、最小和最大
#!/bin/sh
read -p ‘Please input 5 numbers within 100:’ num1 num2 num3 num4 num5
echo “Sum is ( ( (( ((num1+ n u m 2 + num2+ num2+num3+ n u m 4 + num4+ num4+num5))”
a= n u m 1 b = num1 b= num1b=num1
nums=($num2 $num3 $num4 $num5)
for i in ${nums[@]}
do
if [ $i -lt a ] t h e n a = a ] then a= a]thena=i
else
if [ $i -gt b ] t h e n b = b ] then b= b]thenb=i
fi
fi
done
echo “Min is $a”
echo “Max is $b”
5、检测网卡流量,并按规定格式记录在日志中
6、检测CPU剩余百分比
7、监测 Nginx 访问日志 502 情况,并做相应动作
8、被监控主机分区使用率大于80%,就发告警邮件。放到crontab里面,每10分钟执行一次。
9、某系统管理员需要每天做一定的重复工作,编制一个脚本帮助他早日解脱
(1)从下午4:50 删除/abc 目录下的全部子目录和全部文件;
(2)从早上8:00~下午6:00 每小时读取/xyz 目录下x1 文件中每行第一个域的全部数;据加入到/backup 目录下的back01.txt 文件内;
(3)每逢周一下午5:50 将/data 目录下的所有目录和文件归档并压缩为文件;backup.tar.gz;
(4)在下午5:55 将IDE 接口的CD-ROM 缷载(假设CD-ROM 的设备名为hdc);
(5)在早上8:00 前开机后启动。
#!/bin/sh
50 16 * * * rm -rf /abc/*
0 8-18/1 * * * cut -f1 /xyz/x1 >> /backup/bak01.txt
50 17 * * 1 tar zcvf backup.tar.gz /data
55 17 * * * umount /dev/hdc