📜  “crontab”动态改变 shell - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:06:09.100000             🧑  作者: Mango

更改shell执行脚本(bash)的时机

当我们想让一个脚本在特定的时间(例如每天的凌晨)执行一次,我们会使用 crontab。crontab 是一个用来管理定时任务的程序,它可以让你在指定的时间自动运行指定的命令或脚本。crontab 需要指定需要在特定时间运行的命令或脚本的位置和时间。

1. 查看当前用户的 crontab

使用 crontab -l 命令可以列出当前用户的 crontab。

$ crontab -l
2. 编辑当前用户的 crontab

使用 crontab -e 命令可以编辑当前用户的 crontab。

$ crontab -e

这个命令将会打开一个文本编辑器,在里面编写需要定时执行的命令。

3. 编写 crontab 格式

crontab 格式由 6 个字段组成,分别是:

* * * * * command-to-be-executed
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───── day of the week (0 - 6) (0 to 6 are Sunday to Saturday; or use names; 7 is also Sunday)
│ │ │ └────────── month (1 - 12)
│ │ └─────────────── day of the month (1 - 31)
│ └──────────────────── hour (0 - 23)
└───────────────────────── minute (0 - 59)

举个例子,如果我们想让一个脚本文件(例如 ~/script.sh)每天的凌晨 3 点执行一次,我们可以在 crontab 中添加这一行:

0 3 * * * /home/user/script.sh
4. 小技巧
  1. 在 crontab 中使用 > 将输出重定向到一个文件中。

  2. 如果你的命令输出一些不需要的信息(例如错误信息)可以使用 2>&1 >> /path/to/file 将它们重定向到一个文件中。

  3. 如果你想定期备份你的数据库,你可以使用 crontab 来执行类似于下面的命令:

    0 */3 * * * /path/to/mysql-backup-script.sh
    

    这个命令会在每 3 个小时执行脚本 /path/to/mysql-backup-script.sh,即实现了定时备份数据库的功能。

crontab 是一个非常有用的工具,可以让你在特定的时间自动执行命令和脚本。它的使用非常简单,只需要按照上面介绍的步骤来操作即可。