我一直在尝试使用crontab每分钟运行一个脚本,但它不会运行。我为它准备的代码是:
* * * * * ~/me/folder/myScript.sh
我认为目的地错了所以我也尝试过:
* * * * * home/me/folder/myScript.sh
我对bash很新,所以我有点无能为力。我试过pgrep cron
以确保我有cron运行。
答案 0 :(得分:0)
运行crontab时的当前目录是您的主目录,因此您无需为其设置显式路径。
* * * * * folder1/folder2/folder3/myScript.sh >>myScript.log 2>&1
但如果你想要,你需要把它变成一条绝对的道路:
* * * * * /home/me/folder1/folder2/folder3/myScript.sh >>/home/me/myScript.log 2>&1
答案 1 :(得分:0)
由于您使用的是匿名示例,因此有点难以辨别,但我认为您的脚本使用了错误的路径。通常,路径将采用以下三种格式之一:
绝对路径:通过以“/”开头来区分这些路径,并从系统卷的根开始指定路径。如果我正确理解您的示例,您的脚本将位于绝对路径“/home/me/folder1/folder2/folder3/myScript.sh”。
基于家庭的路径:以“〜”开头,可选地后跟用户名。假设您的用户名是“我”,主目录是“/ home / me”,您可以使用“〜/ folder1 / folder2 / folder3 / myScript.sh”或“~me / folder1 / folder2 / folder3 /”指定脚本myScript.sh”。
您使用的路径“〜/ me / folder1 / folder2 / folder3 / myScript.sh”等同于“/home/me/me/folder1/folder2/folder3/myScript.sh”。注意“me / me /”位 - 这是因为“〜”和“我”之间的“/”。
(顺便说一下,这里并不重要,但这些并不是真正的路径;它们是shell支持的简写,因此它们只能用于shell或类似命令解释命令的地方。)
相对路径:它们不以“/”或“〜”开头,并且相对于进程的当前工作目录指定路径。
在cron作业中,工作目录(至少最初)设置为用户的主文件夹。因此,当您指定路径“home / me / folder1 / folder2 / folder3 / myScript.sh”时,它相当于绝对路径“/home/me/home/me/folder1/folder2/folder3/myScript.sh”。
因此,最终结果是您应该能够使用以下任何路径:
/home/me/folder1/folder2/folder3/myScript.sh
~/folder1/folder2/folder3/myScript.sh
~me/folder1/folder2/folder3/myScript.sh
folder1/folder2/folder3/myScript.sh