如何通过Cron Job运行Shell脚本

use*_*513 3 linux cron crontab ubuntu-10.04

我有一个像下面这样的Shell脚本

 echo "Hello World"
Run Code Online (Sandbox Code Playgroud)

该脚本位于/root/scripts/文件夹中test.sh

我还创建了一个如下的cron作业

  0-59 * * * *  ./scripts/test.sh
Run Code Online (Sandbox Code Playgroud)

现在,cron作业不会在test.sh每分钟打印内容.

让我知道我是否给出了错误的目录,或者我的代码中有任何其他问题.

Bri*_*new 5

我会

  1. 是明确的.你的目录从例如执行/root/scripts/test.sh.我不知道cron会将其视为当前目录
  2. 将stdout重定向到日志文件,例如...test.sh > /tmp/cron.log(您可能希望在某个阶段重定向stderr 2>&1).否则你不会看到输出.它被邮寄给cronjob所有者
  3. 确保你已经给你的bash脚本执行了执行权限(chmod +x /root/scripts/test.sh)
  4. 明确哪个脚本可执行文件将执行您的shell脚本.在顶部(例如#!/bin/sh或类似)进行脚本调用是一种很好的做法

在cron下运行东西是非常棘手的.Cron工作在大规模减少的环境中运行.打印出脚本可用的环境(使用env)并与交互式shell中可用的内容进行比较/对比是有益的.