我已经创建了原始测试脚本只是为了创建目录,看看 crontab 是否有效:
#!/bin/bash
mkdir test_folder
exit
脚本位于此处/home/root/test/test.sh
我使用以下命令使该脚本可执行:
sudo chmod u+x test.sh
当我手动运行脚本时,sudo /home/root/test/test.sh
会创建“test_folder”。但是当我将其添加到 crontab 时,什么也没有发生!
我使用以下命令打开了 crontabsudo crontab -e
并添加了以下规则:
00 * * * * /home/root/test/test.sh
10 * * * * /home/root/test/test.sh
20 * * * * /home/root/test/test.sh
30 * * * * /home/root/test/test.sh
40 * * * * /home/root/test/test.sh
50 * * * * /home/root/test/test.sh
当我使用 crontab 检查时,sudo crontab -l
我可以清楚地看到规则存在,但文件夹未创建!脚本无法运行!
后来我发现问题可能出在脚本名称中的点...所以我将名称从 更改为test.sh
...test_sh
使用 sudo 使其可执行chmod u+x test_sh
,手动尝试,创建了测试文件夹...然后我将其添加到 crontab sudo crontab -e
:
00 * * * * /home/root/test/test_sh
10 * * * * /home/root/test/test_sh
20 * * * * /home/root/test/test_sh
30 * * * * /home/root/test/test_sh
40 * * * * /home/root/test/test_sh
50 * * * * /home/root/test/test_sh
但还是什么都没有……我做错了什么?这是一个原始脚本,它应该运行正常!我是不是忘了什么?
编辑:谢谢大家……特别是 heemayl 和 Gauthier:“尝试在脚本中提供完整路径(mkdir /home/root/test/test_folder
)。“它确实成功了……现在看来脚本有效……所以没有相对目录……非常感谢
答案1
检查root
的主目录,目录test_folder
正是在那里创建的/root/test_folder
。请注意,您已将脚本放入root
的cron
表中,sudo crontab -e
这样目录将是/root/test_folder
。
cron
在运行任何任务之前,默认为正在运行的用户的主目录(root
在本例中),因此只要您有一个相对路径,即只有test_folder
,该目录就会在root
的主目录中创建。
这也类似于在脚本内部使用相对路径并从另一个位置运行脚本的其他情况;将PWD
始终引用运行脚本的目录,而不是存储脚本的目录。
请注意,exit
末尾的 是多余的。