我正在尝试移动文件crontab来获取该调度,但crontab没有移动文件。如果我手动完成,它可以工作......你知道可能的原因是什么吗?这就是我所拥有的:
13,29 * * * * mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp
如果我执行以下行,它的工作没有任何问题:
mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp
答案 0 :(得分:2)
默认情况下,使用/bin/sh
运行cron作业。您可以通过在工作之前添加它来设置要使用的shell,如下所示:
SHELL=/bin/bash
13,29 * * * * mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp
......或者你喜欢哪种外壳。
或者,如果您的crond不支持该表示法,您可以使用其-c
参数显式调用您喜欢的shell:
13,29 * * * * bash -c 'mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp'
请注意附上的单引号。它们是必需的,因为整个命令必须是shell的单个参数。
另一种方法是将命令转换为使用普通的旧bourne shell(sh)语法,我认为应该是:
13,29 * * * * mv `grep -l "File was not FOUND" /home/user/test*` /home/user/temp
...使用反引号进行命令替换。
答案 1 :(得分:0)
创建一个简单的 Schell 脚本。在顶部添加 #!/bin/bash
。
#!/bin/bash
mv /your/source/file/path /target/path
# In your case something like below should work.
# make sure your path is absalute path, starting from root folder.
# mv $(grep -l "File was not FOUND" /home/user/test*) /home/user/temp
然后在 crontab 中执行上面的 shell 脚本,如下所示。
13,29 * * * * /path/to/file/movescript.sh
确保您的脚本具有执行权限,并且用户可以移动文件。最好在安排之前手动运行脚本
chmod +x movescript.sh
将添加执行权限。