为什么这个 crontab 不起作用?

为什么这个 crontab 不起作用?

我是 crontab 新手。为什么这个 crontab 什么都不做?我希望它每分钟运行一次脚本。

1 * * * * /home/android/test.sh

如果我在 shell 中输入 /home/android/test.sh,它就可以运行,因此脚本本身也可以运行。

有人说这是重复的,但我不这么认为。据我所知,这个 crontab 应该可以工作,但实际上却不行。据我所知,1 表示每分钟一次,如果我错了,请纠正我。

这就是 test.sh 脚本的作用,简单来说:

日期 >> /home/android/date.txt

当我单独运行它时它可以工作,但它不会由 crontab 自动运行。

答案1

由于我不知道您的脚本的作用,所以它可能是有效的,但您只是看不到它的输出。要真正看到某些东西,您可以将其输出重定向到文件:

* * * * * (/home/android/test.sh > /tmp/cron-out.txt)

然后您可以检查输出是否符合您的预期。

此外,您还可以查看系统日志(某些系统有专用的日志/var/log/cron)。

如果这也没有帮助,您可以检查执行命令的用户是否具有执行脚本、读取输入和写入输出所需的所有权限。

要每分钟执行一次脚本,您必须将其替换1 * * * ** * * * *0-59 * * * **/1 * * * *。您提供的设置只会在每小时第 1 分钟执行(例如 9:01、10:01,...)。

确保所有权限均已到位:

  1. 执行脚本的用户应为文件的所有者 (u),属于文件组 (g),或者应相应地设置“其他”(o) 的权限。要将用户 android 设置为文件 的所有者sudo chown android /home/android/test.sh。要将文件组更改为yourgroup,您可以使用chgrp yourgroup /home/android/test.sh(假设您的 android 用户属于 组yourgroup)。
  2. 根据您想要授予用户权限的方式,您应该sudo chmod u+rx /home/android/test.sh(例如,将执行用户作为所有者 - 对于其他情况,将 替换ugo)。
  3. 为用户创建一个 crontab android。可以由android用户自己执行crontab -e,也可以由其他任何管理用户执行sudo crontab -u android -e

相关内容