在传统的UNIX系统中,计划任务是一种常用的定期执行机制。计划任务(也称为Crontab)是一种由用户可编译的调度程序,用于定期执行计划任务。
在Linux中,计划任务是一个非常有用的功能,可以让您定时运行或自动化指定的任务。Linux中有一个称为Cron的程序,它是一个定时任务运行程序,可以根据计划表制定任务。
Cron可以让您定时安排任务,例如执行备份,更新软件包等。在本文中,我们将深入介绍如何使用Linux计划任务定时执行任务。
在Linux中,Cron通常是提供的计划任务程序。Cron是一个系统进程,用于定期运行各种命令或脚本。 它通常是通过cron命令来配置和管理的。Cron命令通常接收一组参数,通常包括时间驱动器、执行脚本或命令等。
下面是一个cron执行脚本或命令的格式:
```sh
* * * * * command or script to be executed
- - - - -
| | | | |
| | | | ----- Day of the week (0 - 7) (Sunday is 0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of the Month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
```
在Linux中,Cron通常位于/etc/crontab和/var/spool/cron目录中。 /etc/crontab是用于系统级计划任务和托管服务的文件,而/var/spool/cron是用户级计划任务文件的通常位置。
如何添加计划任务?
使用Cron添加计划任务是非常容易的。要添加计划任务,您可以使用crontab命令。该命令可以向Cron添加或修改计划任务计划,或列出当前作业队列中的任务列表。
要使用crontab命令添加计划任务,您可以使用以下命令:
```sh
crontab -e
```
-crontab -e命令将打开计划任务编辑器。该编辑器显示了一个符号页面,其中显示了Cron的当前计划。 在此编辑器中添加新计划任务很简单,只需输入新行并键入计划任务,然后保存并退出这个编辑器即可。
例如,以下命令将过滤日志文件,并将结果写入文本文件中:
```sh
0 2 * * * /usr/bin/gzip /var/log/httpd/access.log > /home/userid/logs/log.gz
```
该命令将在每天凌晨2点执行,并将过滤文本写入/home/userid/logs/log.gz文件中。
在Cron中,您可以使用特殊符号来指定计划任务的执行时间。例如,星号(*)可以用于设置计划任务的每分钟、每小时、每天、每月或每星期执行。您也可以使用逗号分隔符,指定要执行命令的多个时间。
Cron的常用特殊符号:
```sh
* * * * * command
```
在这个例子中,符号*表示每一分钟执行一次命令。
```sh
0 * * * * command
```
当阴历每小时的0分钟时,这个例子会在系统中执行一个命令。
```sh
0 1 * * * command
```
这个例子会在系统每天的凌晨1点执行一个命令。
```sh
0 1 * * 7 command
```
这个例子将在系统每天的凌晨1点执行一个命令,只有星期日才会执行。
```sh
0 1 1 * * command
```
这个例子将在系统每个月的第一天的凌晨1点执行一个命令。
计划任务还可以使用操作标志来指定是否需要通过电子邮件通知用户以及修改输出文件位置。下面是一些常用的操作标志:
```sh
> filename : 将命令输出保存到指定文件中。
>> filename : 将命令输出附加到指定文件中。
2>&1 : 将标准错误输出从输出文件中分离出来。
2> file : 仅将标准错误输出保存到指定文件中。
mail user : 将命令输出通过邮件发送给用户。
```
最后,如果您想管理cron作业列表,可以使用以下命令:``
```sh
crontab -e // Edit crontab job, type :wq or :q! to save changes or discard crontab jobs
crontab -l // List current cron jobs
crontab -r // Remove current cron jobs
```
总结
计划任务是一种非常有用的功能,在Linux中使用起来非常方便,您可以将其用于定期运行各种命令、脚本和其他任务。使用Crontab添加、修改和删除Cron作业非常容易,您可以只用几行命令就创建了常常要用的执行时间表。在本文中,我们介绍了如何使用Linux计划任务定时执行任务,希望这对于Linux的新手和有经验的用户都是有用的。