script not running via crontab
我创建了一个shell脚本,该脚本删除了var / cache文件夹的子文件夹。请检查以下脚本。
1 2 3 4 5 6 7
| #!/bin/sh
now=$(date +"%Y-%m-%d %T")
if rm -rf var/cache/* ; then
echo"$now: Deleted"
else
echo"$now: problem"
fi |
当我直接通过命令sh hello.sh运行此shell文件时,它运行正常。
但是当我使用crontab运行此文件时,它将在日志文件中创建一个条目,但不会删除var/cache/..
的子文件夹
请同时检查我的crontab。
*/1 * * * * /bin/sh /www/html/wp/hello.sh >> /www/html/var/log/redis.flush.cron.log 2>&1
请建议我如何使用crontab运行该文件。
- @NullDev不,我没有在crontab中添加任何用户,但是如果我想从其他用户(如abc)运行该文件,那么该文件的语法是什么
-
@KaranAdhikari如果您想为有权访问所有文件夹的root设置cron作业,则可以使用命令sudo crontab -e -u root
-
由于权限问题,文件夹未被删除,请检查文件ls -la的权限
-
@RajanSharma我已经通过以abc用户身份登录创建了crontab。.所以我不认为这是权限问题。当我运行此命令sudo crontab -l -u abc。它给了我该crontab的值。
-
该文件夹是否具有读写权限?检查用户是否具有删除文件夹的权限,并且删除命令应为rm -rf /var/cache/。路径正确吗?
-
直接运行时当前的工作目录是什么,也有理由不将整个路径放在var/之前
-
@NahuelFouilleul wp是我当前运行的目录,当我直接运行它时..是否有理由不将整个路径放在var /之前:不,当我直接运行它时它运行良好,所以我认为它也可以与cron一起工作。
-
从这个答案cron直接在用户的主目录中运行命令
-
@NahuelFouilleul当我将var / cache /替换为绝对路径时,它起作用了..感谢您的帮助
-
始终使用绝对路径
尝试使用绝对路径而不是var/cache。当您通过cron运行它时,它将以特定用户的身份运行a),并从该用户的主目录运行b)。这些之一或两者都可能给您造成问题。
代替此:
1
| if rm -rf var/cache/* ; then |
尝试类似这样的内容:
1
| if rm -rf /full/path/to/var/cache/* ; then |