linux open命令实验代码6,Linux实验6(定时器crontab、邮件mail)

Linux实验6

1. 编写一段bash shell程序,保存为 program.sh

2.管理员root每天需要完成以下工作

知识点

1. 定时器:crontab

crontab 文件的格式:

Crontab命令的选项

2. 发送邮件:mail

mail命令的选项

一些问题

1. 语法错误xx: 未预期的文件结尾

2. 未预期的符号 `fi' 附近有语法错

3. cron发邮件提示:权限不够

1. 编写一段bash shell程序,保存为 program.sh

完成以下输出:

please,input a number:

5(回车)

5 4 3 2 1

4 3 2 1

3 2 1

2 1

1

1 #!/bin/bash

2 echo "please,input a number:"

3 read n

4 for((i=0;i

5 do

6 for((j=n-i;j>0;j--));

7 do

8 echo -n "$j "

9 done

10 echo

11 done

2.管理员root每天需要完成以下工作

2.1 每天早上8点30分启动服务器的ftp服务,在每天晚上23点30分就关闭ftp服务。如果启动成功把ftp的进程信息写入 /var/ftp/年-月-日.log 文件中,如果启动失败,需要给root发一封邮件。邮件内容为: start ftp error。

#~/linux-6/startFtp.sh

1 #!/bin/bash

2 systemctl start vsftpd

3 #启动失败

4 if [ $? != 0 ];then

5 echo "start ftp error"|mail -s "start ftp error" root

6 else

7 #启动成功

8 #把ftp进程信息写入/var/ftp/年-月-日.log中

9 #获得进程信息

10 processInfo=`ps -ef | grep vsftpd | head -n1`#在shell脚本执行的时候发现,"grep vsftpd"也会出现在ps的记录中,所以加上head过滤一下

11 #获取年、月、日

12 year=`date -I | cut -d - -f1`

13 month=`date -I | cut -d - -f2`

14 day=`date -I | cut -d - -f3`

15 #写文件

16 echo "${processInfo}" >> /var/ftp/${year}-${month}-${day}.log

17 fi

#~/linux-6/stopFtp.sh

1 #!/bin/bash

2 #关闭ftp服务

3 systemctl stop vsftpd

4 if [ $? != 0 ];then

5 #关闭失败

6 echo "ftp stop error" | mail -s "ftp stop error" root

7 fi

2.2 在早上8点30分到晚上23点30分之间,每隔1小时ping一下百度域名(每次ping 发4次),保证网络畅通,并把ping的结果追加到 /var/ftp/年-月-日.log 文件中。

#~/linux-6/pingBaidu.sh

1 #!/bin/bash

2 #获取年、月、日

3 year=`date -I | cut -d - -f1`

4 month=`date -I | cut -d - -f2`

5 day=`date -I | cut -d - -f3`

6 #ping 4次百度,写入文件

7 ping -c4 www.baidu.com >> /var/ftp/${year}-${month}-${day}.log

2.3 每天晚上11点50分备份ftp目录(/var/ftp)生成名为 年-月-日.tar.gz 的压缩包,并把压缩包的权限修改为只有root有读权限,其他都没有权限。把压缩包移动到root主目录下。然后清空/var/ftp下的所有内容。

假设/var/ftp目录已存在。

#~/linux-6/backupFtpLog

1 #!/bin/bash

2 #获取年、月、日

3 year=`date -I | cut -d - -f1`

4 month=`date -I | cut -d - -f2`

5 day=`date -I | cut -d - -f3`

6 #打包/var/ftp目录

7 tar -zcvf "/root/${year}-${month}-${day}.tar.gz" /var/ftp

8 #修改权限400

9 chmod 400 "/root/${year}-${month}-${day}.tar.gz"

10 #清空ftp目录

11 rm -rf /var/ftp/*

定时器的内容如下:

#/var/spool/cron/root

1 30 8 * * * /root/linux-6/startFtp.sh

2 30 23 * * * /root/linux-6/stopFtp.sh

3 30 8-23/1 * * * /root/linux-6/pingBaidu.sh

4 50 23 * * * /root/linux-6/backupFtpLog.sh

知识点

1. 定时器:crontab

可以设置任务定时执行。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。

在/etc/crontab文件,这个就是系统任务调度的配置文件。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。

用户可以使用 crontab 工具来定制自己的计划任务。

在crontab 文件都被保存在/var/spool/cron目录中。其文件名与用户名一致。

crontab 文件的格式:

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}

minute: 区间为 0 – 59

hour: 区间为0 – 23

day-of-month: 区间为0 – 31

month: 区间为1 – 12. 1 是1月. 12是12月.

Day-of-week: 区间为0 – 7. 周日可以是0或7.

注:

定时任务一定是绝对路径,且目录必须存在才能出结果

crontab 服务一定要开启运行

Crontab命令的选项

crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建。

crontab –l : 显示 crontab 文件。

crontab -r : 删除 crontab 文件。

crontab -ir : 删除 crontab 文件前提醒用户。

2. 发送邮件:mail

#安装mailx

yum -y install mailx

mail命令的选项

-s:主题 后接主题

-c:抄送 后接多个用户

-b:暗送

-a:附件 后接文件

-f 发送人邮件地址

-F 发件人姓名

例如:

mail [-option] 收件地址 < 文件(正文.txt)

直接输入mail可以查看当前用户的邮件

输入后可见

> N [message list] 用户 日期 主题

N 表示邮件未读

[message list] 表示邮件序号

一些问题

1. 语法错误xx: 未预期的文件结尾

在linux下运行shell脚本时,遇到错误提示。

仔细检查,脚本文件出现的语法错误。

“shell不会对错误进行精确定位,而是在试图结束一个语句时进行错误统计。所以在shell打印出一个脚本错误后,不要只看那些疑问行,而是要观察整个相关代码段.”

转载自:https://blog.csdn.net/yoyofu007/article/details/92760957

#if后面忘记写fi了

2. 未预期的符号 `fi’ 附近有语法错

使用if语句时,如果else中没有语句,不用写,不然报错

3. cron发邮件提示:权限不够

#利用chmod命令给文件赋予x权限

chmod 755 xxxxx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值