前言

本次复习题包括Linux系统管理,Linux用户及权限管理,Linux进程管理,Linux文本操作(含三剑客),Linux网络管理,Linux防火墙管理,shell编程。

一、Linux系统管理

关键词:
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专项训练:

  1. 查找/var目录属主为root,且属组为mail的所有文件
    Find / -user root -group mail
  2. 查找/usr目录下不属于root、bin或hadoop的所有文件
    find /usr ! –user root −o −user bin −o −user Hadoop
    find /usr !-user root -a -not -user bin -a -not -user hadoop
  3. 查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件
    Find /usr -mtime -7 ! -a -user root -o -user Hadoop(修改过是mtime)
  4. 查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件
    Find / -nouser -o -nogroup -atime -7(访问过是atime,属性修改过是ctime)
  5. 查找/etc目录下大于20K且类型为普通文件的所有文件
    Find /etc -type f -size 20K
  6. 查找/etc目录下所有用户都没有写权限
    Find /etc ! -perm /222 -type f
  7. 查找/etc目录下至少有一类用户没有执行权限的文件
    Find /etc ! -prem -111 -type f
  8. 查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件
    find /etc/init.d -perm -113
  9. 查找当前目录下所有以.tar结尾的文件然后移动到指定目录/backup
    find . -name “*.tar” -exec mv {} /backup ;
    如果要在 -name 中使用正则表达式,必须加以转义,防止 shell 首先扩展它。转义的办法就是加上\或者引号,这样 -name 选项总是只接受这一个参数。
  10. 查找当前目录30天以前大于100M的LOG文件并删除
    find -atime +30 -size +100M -name “*.log” -exec rm -rf {} ;
  11. 将某目录下大于100k的文件移动至/tmp下。
    Find . -size +100k -exec mv {} /tmp ;

二、Linux用户及权限管理

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

三、Linux进程管理

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

四、Linux请问本操作(含三剑客)

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

五、Linux网络管理

netstat
ss
tcpdump
ifconfig iproute route
tcpdump traceroute nmap

  1. 显示当前网络中tcp/udp协议的连接IP和端口号及对映的PID
    netstat -tulnp
  2. 在linux下,给eth0配置IP,网关和增加路由
    IP:192.168.10.100网关192.168.10.1
    路由: 到网段10.10.0.0/255.255.255.0通过ip 192.168.10.2出去
    ifconfig eth0 192.168.10.100 netmask 255.255.255.0
    route add default gw 192.168.10,1
    route add -net 10.10.0.0 netmask 255.255.255.0 gw 192.168.10.2
  3. 写出172.16.0.10/25和192.168.10.2/23的掩码地址、广播地址和反掩码
    172.16.0.10/25
    掩码地址: 255.255.255.128
    广播地址: 172.16.0.127
    反掩码: 0.0.0.127
    192.168.10.2/23
    掩码地址: 255.255.254.0
    广播地址: 192.168.11.255
    反掩码: 0.0.1.255
  4. tcpdump怎么抓出IP是10.10.0.10 tcp 80端口的包
    tcpdump tcp port 80 and host 10.10.0.10
    5.设定eth0网卡地址为192.168.0.11,子网为255.255.255.0,MTU的值为6000
    ifconfig eth0 192.168.0.11 netmask 255.255.255.0 mtu 6000
    6)用ip命令来操作管理网络
    6.1)用ip命令显示eth0的信息
    ip address show eth0
    6.2)关闭eth0网卡
    ip link set eth0 down
    6.3)更改eth0网卡代号为ckhitler,并查看结果
    ip link set eth0 name ckhitler
    ip link show
    6.4)更改eht0网卡的MAC地址为bb:bb:bb:bb:bb:bb,并查看结果
    ip link set eth0 address bb:bb:bb:bb:bb:bb
    ip link show
    6.5)开启eth0网卡
    ip link set eth0 up
    7.追踪到www.sina.com.cn的路由表
    traceroute -n www.sina.com.cn
    8.用netstat显示端口信息
    8.1)显示TCP/UDP端口状态为LISTEN的信息
    netstat -tunl
    8.2)显示TCP/UDP端口状态为ESTABLISHED的信息
    netstat -tun
    9.用tcpdump来监视网络数据包信息
    9.1)只监视网卡eth0的网络数据包
    tcpdump -i eth0 -nn
    9.2)只监视网卡eth0及端口25的网络数据包
    tcpdump -i eth0 -nn port 25
    9.3)只监视网卡eth0及端口25的网络数据包,并用16进程方式显示
    tcpdump -i lo -nn -X ‘port 25’
    9.4)只监视网卡eth0及端口25和源地址为192.168.0.3的网络数据包,并用16进程方式显示
    tcpdump -i eth0 -nn ‘port 25 and src host 192.168.0.3’ -X
    9.5)只监视网卡eth0及端口25和源地址为192.168.0.3而长度为10240的网络数据包
    tcpdump -i eth0 -s 10240 -nn ‘port 25 and src host 192.168.0.3’ -X
    9.6)只监视网卡eth0及端口25和源地址为192.168.0.3的网络数据包,以Snarf的形式抓完整的数据包到/tmp/data.cap文件
    tcpdump -i eth0 -nn ‘port 25 and src host 192.168.0.3’ -s0 -w /tmp/data.cap
    10.用nmap扫描192.168.0.12地址的TCP/UDP端口
    nmap -sTU 192.168.0.12
    11.用nmap扫描192.168.0.0/24网段活跃的主机
    nmap -sP 192.168.0.0/24
  5. 用nmap扫描192.168.0.0/24网段的端口,端口范围在1-1024
    nmap -p 1-1024 192.168.0.0/24

六、Linux防火墙管理

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. firewalld跟iptables区别是什么,请描述
    iptables通过控制端口来控制服务,存储在/etc/sysconfig/iptables。
    firewalld则是通过控制协议来控制端口,存储在/usr/lib/firewalld和/etc/firewalld/中各种 XML文件里。
    2.使用firewall拒绝所有包,并使用查看状态是否拒绝
    firewall-cmd --panic-on
    firewall-cmd --query-panic
    3.然后取消拒绝状态,然后查看状态
    firewall-cmd --panic-off
    firewall-cmd --query-panic
    4.使用firewall添加某个网卡让其可以接入接出流量
    firewall-cmd --add-interface=eth0
    5.怎么查看所有打开的端口
    firewall-cmd --list-ports
    6.nginx配置了个8080端口的网页,怎么添加使其可以访问
    firewall-cmd --zone=public --add-port=8080/tcp 【–permanent】(永久生效)
    7.允许ssh服务通过和禁止ssh服务通过怎么设置
    允许:
    firewall-cmd --add-service=ssh
    禁止:
    firewall-cmd --remove-service=ssh
    8.打开tcp的88端口
    firewall-cmd --zone=public --add-port=88/tcp
    9.临时允许samba服务通过600秒
    firewall-cmd --add-service=samba --timeout=600
    10.永久打开443/TCP端口
    firewall-cmd --zone=public --add-port=443/tcp --permanent
    firewall-cmd --reload
    分别使用iptables和firewall实现如下需求:
  2. 将80端口的流量转发至8080
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
    firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
  3. 将80端口的流量转发至192.168.0.1
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.1
    firewall-cmd --add-forward-port=prot=80:proto=tcp:toaddr=192.168.0.1
  4. 将80端口的流量转发至192.168.0.1的8080端口
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.0.1:8080
    firewall-cmd --add-forward-port=prot=80:proto=tcp:toaddr=192.168.0.1:toport=8080
    综合场景题:
    1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机
    iptables -A INPUT -d 192.168.88.128 -p tcp --dport 80 -m time ! --weekdays 1 -m limit --limit 100/second -m string --algo bm --from 62 ! --string “admin” -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -s 192.168.88.128 -p tcp --sport 80 -j ACCEPT
  5. 在工作时间,即周一到周五的8:30-18:00,开放本机的ftp服务给172.16.0.0网络中的主机访问;数据下载请求的次数每分钟不得超过5个
    iptables -A INPUT -s 172.16.0.0 -p tcp --dport 21 -m time --timestart 8:30 --timestop 18:00 --weekdays 1,2,3,4,5 -m connlimit --connlimit-upto 5 -j ACCEPT
    3.开放本机的ssh服务给172.16.x.1-172.16.x.100中的主机,x为你的学号,新请求建立的速率一分钟不得超过2个;仅允许响应报文通过其服务端口离开本机
    iptables -A INPUT -d 192.168.88.128 -p tcp --dport 22 -m iprange --src-range 172.16.29.1-172.16.29.100 -m limit --limit 2/min -j ACCEPT
    iptables -A OUTPUT -s 192.168.88.128 -p tcp --sport 22 -j ACCEPT
    4.允许本机ping别的主机;但不开放别的主机ping本机
    iptables -A OUTPUT -p icmp --icmp-type 8 -s localip -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -j REJECT

七、shell编程

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

Logo

更多推荐