05-[ 面试题 答案] 定时任务

第1章 选择

1.1 Linux 下 Crontab 文件,每个域之间用空格分割,其排列如下正确的是: B

 MIN HOUR DAY MONTH YEAR COMMAND
 MIN HOUR DAY MONTH DAYOFWEEK COMMAND
 COMMAND HOUR DAY MONTH DAYOFWEEK
 COMMAND YEAR MONTH DAY HOUR MIN

Field 列 字段
awk
的 F 就是 Field Separator 字段 域 分隔符

1.2 编辑 root 任务调度命令 C

 crontab l
 crontab E
 vim /var/spool/cron/root

1.3 以下 crontab 命令在何时会执行( D)

05 01 * * 1 sh /data/nginx_log/ftp_nginxlog.sh >/dev/null/ 2>&1
 每天一点五分
 每天五点一分
 每星期一五点一分
 每星期一一点五分

第2章 填空

2.1 cron 是一个 linux 下的定时执行工具,可以在无需人工干预的情况下运行作业,其基本 格式为:(* * * * command >/dev/null 2>&1) 其中第五个星号代表 (周几)

* * * * * command >/dev/null 2>&1
* * * * * command &>/dev/null
* * * * * command >>/tmp/log 2>&1
* * * * * command &>>/tmp/log
以上四个都可以

2.2 由 crontab 命令定制执行 test 用户家目录下的程序 sum 的格式为:

* * * * /home/test/sun >/dev/null 2>&1
* * * * /home/test/sun &>/dev/null

2.3 Linux 系统计划任务编辑命令 (crontab -e )或 (vim /var/spool/cron/root )假设当前是 root

第3章 简答

3.1 以下字段可能和哪个服务有关,表示什么意思

*/5 * * * * ping c 100 www.wanmei.com >/root/network.log 2>&1
字段===域=== 列

  1. 和定时任务服务有关
    每5 分钟 ping 域名 100 次并把正确或错误的结果重定向到 root/network.log 中,每次这个文件都会被清空再追加
  2. 与 DNS 服务有关 ping 可以测试域名是否能正常解析
    域名====>ip 地址

3.2 如何备份生产环境的定时任务?(生产 环境的定时任务默认跑在 root 用户下)

生产环境
线上环境,用户正在使用环境
就是如何备份var/spool/cron 目录或 var/spool/cron/root
方法1 cp (可以 不推荐)
方法2 tar 打包压缩 目录

3.3 写一条计划任务,在每天晚上的 3:05 分执行脚本 /usr/script/tongji.sh

#tongji by liyy at 20190101
0 5 03 * * * bin/sh /usr/scrip/tongji.sh >/dev/null 2>&1

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

每周1 的半夜两点执行 a .sh 脚本

3.5 写一条 crontab 条目,每天的 22 点钟删除 /test/下的所有文件

方法1 :删除目录下所有文件(仅仅是文件)

#rm /test files
00 22 * * * find /test/ -type f |xargs rm -f >/dev/null 2>&1
方法2:
00 22 * * * sh /server/scripts/del.sh >/dev/null 2>&1
cat /server/scripts/del.sh
find /test/ -type f |xargs rm -f

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

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

#del files xxxxx xxx
50 16 * * * rm fr /abc/* >/dev/null 2>&1

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

方法1

cat /server/scripts/bak_data.sh
tar zcf /backup/backup_`date +%F`.tar.gz /data
#backup data
50 17 * * 01 sh /server/scripts/bak_data.sh >/dev/null 2>&1

方法 2

#backup data
50 17 * * 01 tar zcf /backup/backup_`date +\%F`.tar.gz /data >/dev/null 2>&1

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

扩展名 什么脚本 用什么运行
.pl .perl脚本 perl
.py .python python
.sh .bash shell脚本 sh

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

3.8 设计一个 shell 程序,每月第一天执行

00 00 01 * * CMD >/dev/null 2>&1

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

#backup
00 06-18/3,13 * 10 * sh /opt/backup.sh >/dev/null 2>&1

3.10 每个月的一号,零点十五执行脚本 /usr/bin/httpd.sh ,如何实现

httpd 搭建 网站服务 apache
nginx

#EXEC httpd
15 00 01 * * sh /usr/bin/httpd.sh >/dev/null 2>&1

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

#exec httpd by liyy at 2019010
00 06 12/2 * 11 * sh /ust/bin/httpd.sh >/dev/null/ 2>&1

3.12 Linux 服务器,如何实现每天早上 5 点重启

#reboot
00 05 * * * /sbin/reboot >/dev/null 2>&1
老男孩教育-Linux 学院-微信:lidao996(加上备注)
00 06 18/3,13 * 10 * sh /opt/backup.sh >/dev/null 2>&1
3.10 每个月的一号,零点十五执行脚本 /usr/bin/httpd.sh ,如何实现
http
d 搭建 网站服务 apache
nginx
EXEC httpd
15 00 01 * * sh /usr/bin/httpd.sh >/dev/null 2>&1
3.11 在 11 月份内,每天的早上 6 点到 12 点中,每隔 2 小时执行一次 /ust/bin/httpd.sh 怎么实现
exec httpd by liyy at 2019010
00 06 12/2 * 11 * sh /ust/bin/httpd.sh >/dev/null/ 2>&1
3.12 L inux 服务器,如何实现每天早上 5 点重启
reboot
00 05 * * * /sbin/reboot > >/dev/null 2>&1

3.13 在 11 月份每天早晨 6 点到 10 点 每隔两个小时 执行 /usr/bin/httpd.sh

#exec httpd by liyy at 2019010
00 06-10/2 * 11 * sh /ust/bin/httpd.sh >/dev/null/ 2>&1

3.14 /var/www/ 是网站的发布目录。如何每天凌晨 0 点 30 对其进行自动备份。写出操作步骤?

/var/www/html/是网站的发布目录 站点目录(网站 程序代码存放的地方)
书写笔试题的时候:目录:面试哪家写哪个

#backup
30 00 * * * sh server scripts/bak www.sh >/dev/null/ 2>&1
cat server/scripts/bak www.sh
#!/bin/bash
tar zcf /backup/www date +%F )).tar.gz /var/www/html

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

su oldboy
crontab e

crontab -u oldboy e 然后 进入下面的内容

su - oldboy -c whoami
ssh [email protected] whoami

#backup
00 00 * * 00 sh / server/scripts/bak user.sh >/dev/null/ 2>&1
cat server/scripts/bak user.sh
#!/bin/bash
tar zcf /tmp/www-$(date +%F) .tar.gz /user/backup

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

过滤
ps -ef|grep asiainfo
ps aux |grep asiainfo
定时任务:

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

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

#backup
\00 00 01 * * sh /server/scripts/bak-etc.sh >/dev/null 2>&1
cat /server/scripts/bak-etc/sh
#!/bin/bash
tar zcf /root/backup/`date +%y%m%d`_etc.tar.gz /etc

3.18 说一下 crontab 的配置,尽可能多的写出来

什么时间做什么 * * * * * 命令 脚本 >/dev/null 2>&1


05-[ 面试题 答案] 定时任务_第1张图片

05-[ 面试题 答案] 定时任务_第2张图片

05-[ 面试题 答案] 定时任务_第3张图片
image.png

3.19 请写出一条计划任务,每天将文件倒数 1000 行内容在 10:00 整的时候追加到 /tmp 的 list 文件内

#tail
00 10 * * * tail -1000 /etc/passwd >>/tmp/list.txt 2>&1

3.20 如何稳定(固定)执行计划

  1. 定时 任务服务运行
    a) 当前定时 任务是否运行
    systemctl
[root@web02 ~]# systemctl is-active crond.service 
active   #正在运行
[root@web02 ~]# 

ps

[root@web02 ~]# ps -ef |grep crond
root       6591      1  0 Sep16 ?        00:00:01 /usr/sbin/crond -n
root      76937  74966  0 20:03 pts/0    00:00:00 grep --color=auto crond
[root@web02 ~]# 

b) 定时 任务是否开机自启动

[root@web02 ~]# systemctl is-enabled crond.service 
enabled
  1. 确保 rsyslog 是否 运行 是否 开机自启动
[root@web02 ~]# systemctl is-active rsyslog.service 
active
[root@web02 ~]# systemctl is-enabled rsyslog.service 
enabled
  1. 定时 任务书写规范

你可能感兴趣的:(05-[ 面试题 答案] 定时任务)