crontab题库

1. 请你描述下Crontab的作用和语法,以及书写定时任务注意的要点 ?

设置crontab后我们可以使得Linux主动执行的在固定的间隔时间,执行指定的系统指令或 shell script脚本。生产环境可以用来日志分析或生产备份等。
语法格式:
crontab [ -u user ] file ===》-u的意思就是指定用户
crontab [ -u user ] { -l 显示文件内容| -r全部删除crontab文件 | -e 编辑crontab文件| -i删除crontab文件前确认提示}
举例:
*/5 10,12 * 3-8 * * /usr/sbin/ntpdate 10.0.0.155 >/dev/null 2>&1
前五段是时间间隔的设定,单位分别是分钟、小时、日、月、周(尽量避免使用日月和周同时出现,以免造成系统误判)。
第一个时间段 分钟 范围0-59
第二个时间段 小时 范围0-23
第三个世间段 日 范围1-31
第四个时间段 月 范围1-12
第五个时间段 周 范围0-7

*星号代表任何时间都接受命令
,逗号,表示隔开。代表分隔的时间都适用此命令。

  • 减号,两个时间段之间,代表在此时间段内执行定时任务。
    /n斜线和n(数字)表示每隔n段时间执行一次。

注意要点分为:书写基本要领与书写注意事项
7个基本要领:
第一、为定时任务规则加必要的注释
第二、定时任务命令或程序最好写到脚本里执行
第三、定时任务执行的脚本要规范路径,如:/server/scripts
第四、执行shell脚本任务时前加/bin/sh
执行定时任务时,如果是执行脚本,尽量在脚本前面带上/bin/sh命名
第五、定时任务结尾加 >/dev/null 2>&1
第六、/dev/null为特殊的字符设备文件,表示黑洞设备或空设备。
第七、有关重定向的说明

或1> 输出重定向:把前面输出的东西输入到后边的文件中,会删除文件原有内容。

或1>> 追加重定向:把前面输出的东西追加到后边的文件中,不会删除文件原有内容。
<或<0 输入重定向:输入重定向用于改变命令的输入,指定输入内容,后跟文件名。
<<或<<0 输入重定向:后跟字符串,用来表示“输入结束”,也可用ctrl+d来结束输入。
2> 错误重定向:把错误信息输入到后边的文件中,会删除文件原有内容。
2>> 错误追加重定向:把错误信息追加到后边的文件中,不会删除文件原有内容。
标准输入(stdin):代码为0,使用<或<<。
标准输出(stdout):代码为1,使用>或>>。正常的输出。
标准错误输出(sederr):代码为2,使用2>或2>>。
特殊:
2>&1就是把标准错误重定向到标准输出(>&)。
/dev/null 2>&1 等价于 1>/dev/null 2>/dev/null

2. 简述如何在 Linux 中调度任务?什么是 crontab 并解释 crontab 中的字段?

cron 是一个守护进程,它在 Linux 中的特定日期和时间执行命令。您可以使用它来安排活动,既可以作为一次性事件,也可以作为重复任务。Crontab是用于安装、卸载或列出用于驱动服务器中的 cron 守护程序的表的程序。每个用户都可以有自己的 crontab,虽然这些是 /var/spool/cron/crontabs 中的文件,但它们并不打算直接编辑。以下是 crontab 的几个命令行选项。

crontab -e 编辑您的 crontab 文件。
crontab -l 显示你的 crontab 文件。
crontab -r 删除你的 crontab 文件。

传统的 cron 格式由空格分隔的六个字段组成:

3. 简述Cron其基本格式为:* * * * * command,其中第五个星号代表意义 ?

定时任务格式:分 时 日 月 周 命令,可以用cat /etc/crontab命令查看。

4. Crontab在11 月份内,每天的早上6 点到12 点中,每隔2 小时执行一次/usr/bin/httpd.sh 怎么实现?

0 6-12/2 * 11 * /usr/bin/httpd.sh

5. 用户想在每周日凌晨零点零分定期备份/user/backup 到/tmp 目录下,应如何做?

(1)第一种方法:
用户应使用crontab –e 命令创建crontab 文件。格式如下:
0 0 * * sun cp –r /user/backup /tmp
(2)第二种方法:
用户先在自己目录下新建文件file,文件内容如下:
0 * * sun cp –r /user/backup /tmp
然后执行 crontab file 使生效。

6. 计划每星期天早8点服务器定时重启,如何实现?

Crontab-e
0008 * * 7 /sbin/init 6

7. 简述以下字段表示什么意思,可能和哪个服务有关?

*/5 * * * * ping -c 100 www.wanmei.com>/root/network.log 2>&1

(1)每5分钟ping域名100次并把结果定向到/root/network.log中,每次这个文件都会被清空。
(2)与DNS服务有关,ping可以测试域名是否能正常解析,以及网络通信是否正常。

8. crontab里0 2 * * 1 /data/postmall/shell/a.sh表示什么含义?

每周一的凌晨2点整执行a.sh脚本

9. 编写crontab条目,每天的22点钟删除/test/下的所有文件 ?

删除目录下所有文件(仅仅是文件)

#rm /test files
0 22 * * * find /test -type f|xargs rm &>/dev/null
方法2:
书写脚本del.sh:

cat /server/scripts/del.sh
#!/bin/bash
find /test -type f |xargs rm

定时任务:
00 22 * * * /bin/bash /server/scripts/del.sh >/dev/null 2>&1

10. 某系统管理员需每天做一定的重复工作,请按照下列要求,编织一个解决方案?

在下午4:50删除/abc目录下的全部子目录和全部文件

50 16 * * * rm -rf /abc/* >/dev/null 2>&1

11. 编crontab脚本实现以下任务 ?

每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:/backup/backup.tar.gz

方法1:Shell脚本+定时任务脚本
第一步:编写备份脚本

cat /server/scripts/bak-data.sh
#!/bin/bash
tar zcf /backup/backup-date +\%F_\%H:\%M:\%S.tar.gz /data/*
第二步:编写定时任务脚本

#backup data
50 17 * * 01 /bin/bash /server/scripts/bak-data.sh >/dev/null 2>&1
方法2:定时任务脚本

#backup data
50 17 * * 01 tar zcf /backup/backup-date +\%F_\%H:\%M:\%S.tar.gz /test >/dev/null 2>&1
【解析】%前面加\,不然执行脚本要报错。

12. 请写出crontab中的执行语句?

在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备

#run /home/shell/collect.pl
15 03 * * 06 perl /home/shell/collect.pl >/dev/null 2>&1

13. 有一个/opt/backup.sh脚本,如何在10月的每天早上06到18每3小时执行并在13点单独执行一次 ?

0 06-18/3,13 * 10 * /bin/bash /opt/backup.sh &>/dev/null

14. 普通用户想在每周日零点零分定期备份/user/backup 到 /tmp 目录下,该用户应如何做?

可以直接切换到oldboy普通用户下,然后执行crontab -e;或者crontab -u oldboy -e
1.书写脚本:/server/scripts/bak-user.sh

#!/bin/bash
tar zcf /tmp/backup-date +\%F.tar.gz /user/backup
2.编辑定时任务bak-user.sh:

#backup
00 00 * * 00 sh /server/scripts/bak-user.sh

15. 编写cron脚本实现以下指定结果 ?

Unix系统上需要创建以下crontab定时任务:在每周5的凌晨1:10执行命令,将当时系统中含有“asiainfo” 关键字的进程信息查询处理,并追加记录到/progress.log文件中

#ps asiainfo
10 01 * * 05 ps -ef|grep asiainfo >>/progress.log 2>&1

16. 制作crontab任务脚本执行以下结果 ?

在每个月的第一天备份并压缩/etc目录下的所有内容,存放在/root/backup目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。

1.书写脚本bak-etc.sh:
#!/bin/bash
tar zcf /root/backup/date +\%y_%m_\%d_etc.tar.gz /etc
2.定时任务:
#backup /etc
00 00 01 * * /bin/bash /server/scripts/bak-etc.sh >/dev/null 2>&1

17. 请写出一条计划任务,实现以下任务 ?

每天将文件倒数1000行内容在10:00整的时候追加到/tmp的list文件内。

00 10 * * * /bin/tail -n 1000 file >>/tmp/list 2>&1

18. 在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh 怎么实现 ?

echo “1 6-12/2 * * * root /usr/bin/httpd.sh >> /etc/crontab”

19. 简述Linux crontab中* * * * * /usr/local/run.sh这句话5个*号分别代表什么? ?

A:分钟 小时 日 月 星期
B:秒 分钟 小时 日 月
C:秒 分钟 小时 日 星期
D:分钟 小时 日 月 年

A

20. 假如你想计划让系统自动在每个月的第一天早上4点钟执行一个维护工作,以下哪个cron是正确的?

A:00 4 1 1-12 * /maintenance.pl
B:4 1 * * ~/maintenance.pl
C:0 4 31 /1 * * ~/maintenance.pl
D:1 4 00 ~/maintenance.pl

A

21. 简述命令 01 07 * * 5 /usr/bash /usr/local/run.sh 的执行时间是() ?

A:每周一 5:07 分
B:每周一 07:05 分
C:每周五 07:01 分
D:每周五 01:07 分

C

22. 简述在某行 crontab 配置中,执行时间配置段为:*/30 * 3 * * ,表示什么意思() ?

A:每天的凌晨3点,每30分钟执行命令
B:每3个小时的第30分钟,执行命令
C:每周三,每30分钟执行命令
D:每月3号当天,每30分钟执行命令

D

23. 简述每5分钟运行一次crond任务exam,下面哪项正确 ?

A:/12 * * * * exam
B:5/
* * * * exam
C:* * /12 * * exam
D:
/5 * * * * exam

D

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我思故我在7896

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值