📅  最后修改于: 2023-12-03 15:38:54.635000             🧑  作者: Mango
在 Linux 上,Shell 是一种很常用的命令行工具,它可以帮助我们完成一些自动化的任务。有时候我们需要让某个命令或脚本定期运行,比如备份数据或定时清理不必要的日志等。本文将介绍几种在 Shell 中定期运行命令的方法。
crontab
是一个定期执行任务的工具,它基于时间进行触发。我们可以通过修改 crontab
文件来指定命令的执行时间和频率。
首先,使用 crontab -e
命令来编辑 crontab
文件:
$ crontab -e
在 crontab
文件中,每一行都表示一个定时任务,格式如下:
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of the week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of the month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
例如,如果我们希望每天晚上 10 点执行 backup.sh
脚本,我们可以在 crontab
文件中添加如下一行:
0 22 * * * /path/to/backup.sh
这行命令的含义是:在每天的 22 时 0 分执行 /path/to/backup.sh
脚本。
at
命令可以让我们在指定的时间运行一次性的任务。与 crontab
相比,at
更为灵活,可以指定在未来某个时间运行任务。
例如,如果我们希望在下一个小时之后执行 backup.sh
脚本,我们可以执行如下命令:
$ at now + 1 hour
warning: commands will be executed using /bin/sh
at> /path/to/backup.sh
at> ^D
^D
表示 Ctrl + D
,用于结束编辑。
sleep
命令可以让我们在命令行中等待一段时间,然后再执行后续的命令。
例如,如果我们希望每 5 分钟执行一次 backup.sh
脚本,我们可以写一个循环,每次执行后等待 5 分钟再继续执行。
#!/bin/bash
while true; do
/path/to/backup.sh
sleep 300 # 5 minutes
done
本文介绍了在 Shell 中定期运行命令的三种方法:crontab
、at
和 sleep
。不同的方法适用于不同的场景,需要根据具体需求进行选择。