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