cron 作业的 shell 脚本

cron 作业的 shell 脚本

我刚刚在 cpanel 中设置了一个 cron 作业,但尽管它似乎正在执行脚本,但它并没有按预期工作。

这是 cpanel 中的 cron 作业命令:

/bin/sh /home/my-username/cronjobs/sedclearmalw.sh

这是脚本的内容:

#!/bin/bash
cd ../public_html/
grep -rl '_0xaae8' . | xargs sed -i 's/var\s_0xaae8.*//g'

我相信 cd 命令应该是正确的,因为它需要返回目录然后输入 public_html,但是第二个命令似乎是问题所在。我尝试通过 ssh 运行它(bash sedclearmalw.sh),它似乎运行了约 15 秒,但它没有完成其工作,因为我使用以下命令进行了检查:

grep -rl '_0xaae8'

它返回 1 个包含 _0xaae8 的文件。任何帮助将不胜感激,它一定是简单的事情,因为我知道 shell 脚本中的上述命令在通过 ssh (而不是通过脚本)执行时可以正常工作。

答案1

问题是由于使用相对路径造成的。当cron运行计划作业时,它使用所有者的主目录作为其工作目录,例如,如果我以 root 用户身份计划作业,则其工作目录将是/root/(在 Cent OS 系统上)。

您应该在命令中指定绝对路径cd。如果您没有在脚本中运行任何其他命令,则可以在一行中运行所有命令:

grep -rl '_0xaae8' /full/path/to/public_html/ | xargs sed -i 's/var\s_0xaae8.*//g'

相关内容