crontab作业的正确执行命令是什么?

crontab作业的正确执行命令是什么?,cron,Cron,设置 我的计算机上有几个bash文件,我想定期运行 我可以在终端(Mac OS)中手动运行bash文件,例如,cd“将自己放入正确的文件夹,然后执行 ./France_run.txt 给出了期望的结果 问题 我不想手动运行bash文件 我在crontab中创建了cronjobs,例如 0 0 * * 2 /Users/mypath/France_run.txt 应该在每周二00:00运行。然而,什么也没有发生 我是否只引用了该文

设置

我的计算机上有几个bash文件,我想定期运行

我可以在终端(Mac OS)中手动运行bash文件,例如,
cd
“将自己放入正确的文件夹,然后执行

./France_run.txt
给出了期望的结果


问题

我不想手动运行bash文件

我在crontab中创建了cronjobs,例如

 0       0       *       *       2       /Users/mypath/France_run.txt
应该在每周二00:00运行。然而,什么也没有发生


我是否只引用了该文件并缺少“运行此脚本”命令?还是别的什么

您可能只引用了该文件,它可能在某处记录了一个错误(通常是
/var/log/message
,或者在
root
用户的邮件文件中…在Mac上默认禁用)

通过cron运行脚本的好处是它在不同的环境下运行。通常登录到Bash会话时,会自动设置某些环境变量,因此系统会自动检查路径(文件系统中可以找到可执行文件的位置)。不同的类Unix系统处理这种情况的方式略有不同……我记不起Mac如何处理它的细节,但在某些系统上,我必须明确地提供Bash可执行文件的完整路径,例如,才能让这些东西正常工作

脚本的可执行文件的位置通常是
/bin/bash
,或
/bin/sh
,或类似的位置。因此,在进行Bash会话时,如果调用
/Users/mypath/France_run.txt
,并且该文件是一个可执行的Bash脚本(例如,第一行类似于
!/bin/Bash
,并且该文件的可执行位已设置),则系统知道自动运行类似于
/bin/Bash/Users/mypath/France_run.txt

但是,在cron的上下文中,您不会自动获得这些便利,因此您可能需要详细说明所有内容(即指定所有二进制文件或可执行文件的完整路径)。同样,情况并非总是如此。我只是看了一下Debian系统,在那里我创建了一些cron作业来运行脚本,我不必在那里调用
/bin/bash
,但我确实记得过去在Mac上必须做类似的事情

因此,您的cron作业可能只需要指定Bash二进制文件的完整路径:

0**2/bin/bash/Users/mypath/France\u run.txt

如果
France\u run.txt
调用系统二进制文件(如
ls
),您可能还需要完全限定这些文件(
/bin/ls
,而不仅仅是
ls

此外,根据脚本的编写方式,甚至可能需要将
cd
放入脚本目录,就像手动运行脚本一样:

0**2 cd/Users/mypath/bin/bash./France_run.txt
cd
是一个内置的Bash,因此没有路径来指定它)