Bootstrap

Linux中定时运行shell脚本

一、每10分钟定时运行shell脚本

*/10 * * * * /path/to/myscript.sh >> /path/to/logfile.log 2>&1

二、在每小时的固定0,20,40,59分钟运行shell脚本

0,20,40,59 * * * * /path/to/myscript.sh >> /path/to/logfile.log 2>&1

在Linux系统中,你可以使用cron来定时运行shell脚本。cron是一个Linux下的定时任务守护进程,它可以根据设定的时间执行特定的任务。以下是设置定时任务的基本步骤:

  1. 创建Shell脚本: 首先,你需要有一个shell脚本文件,例如myscript.sh。确保这个脚本有执行权限,可以通过以下命令给予执行权限:

    chmod +x myscript.sh
  2. 编辑Cron表: 使用crontab命令编辑当前用户的cron表:

    crontab -e

    这将打开一个编辑器,你可以在里面添加你的定时任务。

  3. 添加Cron任务: 在打开的编辑器中,你可以添加一行来定义你的定时任务。Cron的语法如下:

    * * * * * command-to-be-executed
    - - - - -
    | | | | |
    | | | | +----- day of week (0 - 6) (Sunday=0 or 7)
    | | | +------- month (1 - 12)
    | | +--------- day of month (1 - 31)
    | +----------- hour (0 - 23)
    +------------- minute (0 - 59)

    例如,如果你想每天凌晨1点运行myscript.sh,你可以添加以下行:

    0 1 * * * /path/to/myscript.sh

    确保替换/path/to/myscript.sh为你的脚本实际路径。

  4. 保存并退出: 保存你的更改并退出编辑器。Cron将自动加载新的cron表,并在指定的时间执行任务。

  5. 检查Cron作业: 你可以使用以下命令来查看当前用户的cron作业列表:

    crontab -l
  6. 日志和调试: 如果需要调试cron作业,你可以将脚本的输出重定向到一个日志文件中,例如:

    0 1 * * * /path/to/myscript.sh >> /path/to/logfile.log 2>&1

    这样,任何标准输出和错误输出都会被写入到logfile.log

确保你的脚本在没有交互的情况下可以正常运行,因为cron不会提供交互式shell环境。此外,如果你的脚本依赖于特定的环境变量,你可能需要在脚本中明确设置这些变量,因为cron不会加载用户的完整shell环境。

;