设计一个shell脚本程序,要求有如下功能: 实现自动备份功能和清理备份等
1)实现自动备份功能:每天中午12:00自动将/var下的所有文件及文件夹打包备份到/home/bak/目录下,压缩包文件名格式为“VAR_YYMMDD_BAK.gzip...
1) 实现自动备份功能:每天中午12:00自动将/var下的所有文件及文件夹打包备份到/home/bak/目录下,压缩包文件名格式为“VAR_YYMMDD_BAK.gzip”(YYMMDD指年月日,例如2014/9/12表示为140912);【20分】
2) 实现备份日志记录:每次备份后自动在/home/bak/目录下生成名为“VAR_YYMMDD_BAK.log”的文本文件,用以记录所备份的/var下的文件与文件夹详细列表,列表内容为在/var目录下使用ls –l命令所能显示的信息;【20分】
3) 清理旧的备份文件:当/home/bak目录下备份的压缩包多于3个时,自动删除时间最早的压缩包;【10分】
4) 随机自启:该shell脚本程序可以在Linux系统启动时自动运行,并常驻后台;(可手动修改系统配置文件实现开机自启)【5分】
5) 运行状态记录:每分钟自动在/home/下的“shell.log”文件下打印一行信息,信息格式为“日期时间:running”(例如“2014/12/15 17:03 :runing”),用以记录该程序运行状态,每次记录是将信息记录到文件首行。如果/home/shell.log文件不存在或者被删除,可以自动生成该文件。【15分】
6) 进程检测:该shell脚本程序每分钟检测一次系统正在运行的进程,结束所有含有“firefox”字样的进程。并记录一行信息到/home/shell.log文件首行,信息格式为“日期时间firefox:PID shutdown”(其中时期时间格式如5所述,PID要用被结束的进程ID表示);【15分】
7) 网络检测:该shell脚本程序每10秒检测一次系统网络连通性(例如ping 百度),将结果插入到/home/shell.log文件首行。如果连续10次网络不通,自动配置网卡地址为“192.168.1.1”并且不再检测网络,同时将此记录保存到/home/shell.log文件首行,格式自定。【10分】 展开
2) 实现备份日志记录:每次备份后自动在/home/bak/目录下生成名为“VAR_YYMMDD_BAK.log”的文本文件,用以记录所备份的/var下的文件与文件夹详细列表,列表内容为在/var目录下使用ls –l命令所能显示的信息;【20分】
3) 清理旧的备份文件:当/home/bak目录下备份的压缩包多于3个时,自动删除时间最早的压缩包;【10分】
4) 随机自启:该shell脚本程序可以在Linux系统启动时自动运行,并常驻后台;(可手动修改系统配置文件实现开机自启)【5分】
5) 运行状态记录:每分钟自动在/home/下的“shell.log”文件下打印一行信息,信息格式为“日期时间:running”(例如“2014/12/15 17:03 :runing”),用以记录该程序运行状态,每次记录是将信息记录到文件首行。如果/home/shell.log文件不存在或者被删除,可以自动生成该文件。【15分】
6) 进程检测:该shell脚本程序每分钟检测一次系统正在运行的进程,结束所有含有“firefox”字样的进程。并记录一行信息到/home/shell.log文件首行,信息格式为“日期时间firefox:PID shutdown”(其中时期时间格式如5所述,PID要用被结束的进程ID表示);【15分】
7) 网络检测:该shell脚本程序每10秒检测一次系统网络连通性(例如ping 百度),将结果插入到/home/shell.log文件首行。如果连续10次网络不通,自动配置网卡地址为“192.168.1.1”并且不再检测网络,同时将此记录保存到/home/shell.log文件首行,格式自定。【10分】 展开
1个回答
展开全部
#!/bin/bash
TIME=`date +%Y%m%d|cut -b 3-8`
#question 1
tar -zcvf /home/bak/VAR_$TIME_BAK.gzip /var
#question 2
ls -l /var >> /home/bak/VAR_$TIME_BAK.log
#question 3
find /home/bak -name '*gzip' -mtime +1 |xargs rm -rf
脚本名字backup.sh,放到/root下,然后用root创建cronjob
0 12 * * * /root/backup.sh
#question 4 (以redhat为例)
echo " /root/backup.sh " >> /etc/rc.local
#question 5
把下列代码写入cronjob中
#!/bin/bash
TIME=`date +%Y"/"%m"/"%d" "%H":"%m`
if [ -f /home/shell.log ]
then
echo "$TIME running" > /home/tmp.log
cat /home/shell.log >> /home/tmp.log
mv /home/tmp.log /home/shell.log
else
touch /home/shell.log
fi
脚本名字status.sh,放到/root下 (写的有点小问题,功能执行没问题)
0 * * * * /root/status.sh
追问
0 12*** 是什么意思,每天12点启动? 麻烦详细介绍一下用法
追答
就是每天12点启动,这个就是用法了,具体的介绍可以百度下cronjob
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询