当前位置:首页 > 行业动态 > 正文

shell后台定时任务时crontab的用法是怎样的

在Linux系统中,crontab是一个非常实用的工具,它可以帮助我们在后台定时执行一些任务,crontab的全称是Cron Table,它是UNIX系统下的一个命令,用于定期执行用户或系统的任务,crontab的用法非常灵活,可以满足各种定时任务的需求,本文将详细介绍crontab的基本用法和高级技巧。

基本用法

1、安装crontab

在大多数Linux发行版中,crontab已经预装好了,如果没有安装,可以使用以下命令进行安装:

对于Debian/Ubuntu系统:

sudo apt-get install cron

对于CentOS/RHEL系统:

sudo yum install cronie

2、查看当前用户的crontab列表

使用以下命令查看当前用户的crontab列表:

crontab -l

如果没有任何输出,说明当前用户没有设置任何定时任务。

3、编辑当前用户的crontab

使用以下命令编辑当前用户的crontab:

crontab -e

这将打开一个文本编辑器,你可以在其中添加、修改或删除定时任务,每个定时任务占一行,每行的格式如下:

* * * * command-to-be-executed

| | | | —-Day of week (0 7) (Sunday is both 0 and 7)

| | | ——Month (1 12)

| | ——–Day of month (1 31)

| ———-Hour (0 23)

————Minute (0 59)

以下是一个每天凌晨1点执行/home/user/backup.sh脚本的定时任务:

0 1 * * * /home/user/backup.sh

4、保存并退出编辑器

在编辑器中完成定时任务的编辑后,保存并退出,如果是第一次编辑,会提示你选择默认的编辑器,选择一个你喜欢的编辑器,然后按照提示操作即可。

高级技巧

1、使用环境变量

在定时任务中,可以使用环境变量来传递参数,以下定时任务会在每天凌晨1点执行/home/user/backup.sh脚本,并将$BACKUP_DIR作为参数传递给脚本:

0 1 * * * /home/user/backup.sh $BACKUP_DIR

在脚本中,可以通过$1、$2等变量来获取传递的参数。

!/bin/bash
BACKUP_DIR=$1
...其他代码...

2、使用分号分隔多个命令

在一行中,可以使用分号(;)分隔多个命令,它们将按顺序依次执行。

0 1 * * * /home/user/backup.sh; /home/user/cleanup.sh > /dev/null 2>&1 &

这个定时任务会在每天凌晨1点执行/home/user/backup.sh脚本,然后执行/home/user/cleanup.sh脚本,并将标准输出和错误输出重定向到/dev/null,最后的&表示将命令放到后台执行。

3、使用特殊字符转义规则

在定时任务中,有些字符具有特殊含义,需要使用反斜杠()进行转义,以下是一些需要转义的特殊字符:

newline:使用`

`表示换行符;

space:使用 表示空格;

tab:使用t表示制表符;

%:使用%表示百分号;

backslash:使用\表示反斜杠。

0