计划任务之crontab和at

计划任务:①一次性计划任务 ②长期性计划任务

1、crontab 计划任务

linux的定时任务服务crond (crontab)服务。
crond 服务默认情况(每分钟)会检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务。


crond 是一个定时任务守护进程。
crontab 是用户用来设置定时任务规则的命令。


[root@localhost ~]# chkconfig --list | grep crond
crond          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@localhost ~]# chkconfig --list atd
atd            	0:off	1:off	2:off	3:on	4:on	5:on	6:off

为什么需要定时任务?
服务器:7*小时提供服务。
重要数据:1天备份一次,5份以上。
服务器上的数据一般最低1天备份一次,每分钟(实时备份)增量备份。半夜备份(每天半夜起床备份,备份一次5小时,呵呵呵)。

秒级任务:
1)crond自身无能为力。
2)自己写守护进程shell循环。
3)Quartz也可实现秒级任务。

#!/bin/bash
# miao.sh 每5秒执行一次echo
while true
do
	echo "你好世界!"  >> /tmp/self.log
	sleep 5
done

[root@localhost ~]# vim miao.sh
[root@localhost ~]# sh miao.sh &
[1] 2113
[root@localhost ~]# ps -ef | grep miao
root 2113 1995 89 01:23 pts/0 00:00:11 sh miao.sh
root 2115 1995 0 01:23 pts/0 00:00:00 grep miao

[root@localhost ~]# /etc/init.d/sshd status
openssh-daemon (pid  1753) is running...

[root@localhost ~]# netstat -lntup | grep ssh
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1753/sshd           
tcp        0      0 127.0.0.1:6010              0.0.0.0:*                   LISTEN      1991/sshd           
tcp        0      0 :::22                       :::*                        LISTEN      1753/sshd           
tcp        0      0 ::1:6010                    :::*                        LISTEN      1991/sshd

常用方法
▪ 创建crontab文件
格式:“分 时 日 月 星期 命令”,如果某些字段没有设置,则需要使用 * 来占位, 多个时间段用逗号 “,” 分割。

星期命令
33132611*commond
字段作用
取值为 0~59 的整数
取值为 0~23 的整数
取值为 1~31 的整数
取值为 1~12 的整数
星期取值为 0~7 的任意整数,其中 0,7 均为星期日
命令要执行的命令或脚本

-l 列出crontab文件内容(重要)
-e 编辑crontab文件内容(重要)
-r 删除crontab文件内容
-i 提示确认
-u 指定使用的用户执行任务,编辑他人的计划任务.

[root@localhost ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
使用crontab -e编辑,实际上编辑了`/var/spool/cron/用户名` 的一个文件内容
[root@localhost ~]# cat /var/spool/cron/root 
# test

注:
[root@localhost ~]# crontab -e === vim //var/spool/cron/root
[root@localhost ~]# crontab -l === cat //var/spool/cron/root

使用者权限及定时任务文件

文件说明
/etc/cron.deny该文件中所列用户不允许使用crontab命令
/etc/cron.allow该文件中所列用户允许使用crontab命令,优先于/etc/cron.deny
/var/spool/cron/xxx所有用户crontab配置文件默认都存放在此目录,文件名以用户名命名。

[root@localhost ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost ~]# crontab -l
# 这是第一个crond测试: 每周二、四、六的凌晨3点15分,将目录/home/michael进行打包压缩处理
15 3 * * 2,4,6 /usr/bin/tar -czvf backup.tar.gz /home/michael

注:

逗号( , )表示多个时间段(例“8,9,12”表示8月、9月和12月)。
减号( - )表示一段连续的时间周期(例字段“日”的取值为“12-15”,则表示每月的12~15日)。
除号( / )表示执行任务的间隔时间(例如“*/2”表示每隔2分钟执行一次任务)。

在crond服务中每行命令语句是一条完整计划任务。
所有命令一定要用绝对路径的方式书写。(whereis rm)


[root@localhost ~]# yum install crontabs
[root@localhost ~]# service crond start
[root@localhost ~]# service crond restart


注:

在crond服务的配置中,可以#号开头写上注释信息,如:功能介绍、需求介绍、作者等重要信息。

计划任务中的“分”字段必须有数值,绝对不能为空或是*号,而“日”和“星期”字段不能同时使用,否则就会发生冲突。

2、at 一次性计划任务

[root@michael ~]# at 23:50
at> systemctl restart httpd
at> <EOT> 此处请同时按下Ctrl+d来结束编写计划任务
job 2 at 2020-06-25 23:50

[root@michael ~]# at -l
2	2020-06-25 23:50 a root
[root@michael ~]#  echo "systemctl restart httpd" | at 23:50
job 3 at 2020-06-25 23:50

[root@michael ~]# at -l
2	2020-06-25 23:50 a root
3	2020-06-25 23:50 a root
[root@michael ~]# atrm 2
[root@michael ~]# at -l
3	2020-06-25 23:50 a root

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cron 是一个在 Unix 和类 Unix 系统中用来定期执行任务的守护进程。它允许用户设置周期性或一次性(也称为一次性任务)的任务调度。如果你想要使用 crontab 进行一次性的计划任务,你可以按照以下步骤操作: 1. 打开终端:在 Linux 或 macOS 中,你可以通过按下 `Ctrl + Alt + T` 快捷键打开终端。 2. 查看或编辑 crontab 文件:输入命令 `crontab -e`(如果你有多个用户账户,可能会提示你选择一个)。这将打开默认的文本编辑器,如 Vim 或 Nano,让你编辑 crontab 配置文件。 3. 创建新条目:在编辑器中添加一个新的行来指定你的一次性任务。每个条目由时间字段和命令组成。格式通常是这样的: ``` <分钟> <小时> <日期> <月份> <星期> <命令> ``` 例如,如果你希望在一个特定的未来日期运行一个命令,可以写成: ``` 0 12 15 12 * /path/to/your/command ``` 这表示在12月15日的中午12:00运行命令。 4. 描述任务:确保命令明确无误,包括完整路径,这样 cron 可以正确执行。如果命令复杂或需要参数,可以在命令行后添加分号,然后跟上所需的参数,例如: ``` 0 12 15 12 * /path/to/your/script.sh; echo "Task executed at $(date)" ``` 5. 保存并退出:编辑完后,记得保存并关闭编辑器。在 Vim 中按 `Esc` 键,然后输入 `:wq` 保存并退出;在 Nano 中按 `Ctrl + X`,然后按 `Y` 确认保存,再按 `Enter` 退出。 6. 验证任务:保存后,你需要让 cron 重新读取文件,可以通过输入 `crontab -u <username> -r` 清除当前配置,然后重新加载 (`crontab -u <username> -e`) 来确认设置是否生效。 完成以上步骤后,cron 将在你设定的时间点执行一次你的命令。一次性任务会在执行后自动从 crontab 中删除,除非你手动添加它到配置文件中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值