linux sh文件结合crontab问题

我新建了一个/usr/local/nginx/cut_nginx_log.sh文件命令如下:

!/bin/bash

这脚本必须在每天的00:00运行

Nginx日志文件的存放路径

save_path_log='/logs/nginx/logs' #日志将要存放的路径
nglogs='/usr/local/nginx/logs' #nginx的日志路径

mkdir -p $save_path_log/$(date+%Y)/$(date+%m)

然后我开启了crontab 以每五分钟执行这个sh文件,但是只创建了/logs/nginx/logs文件夹,下面的日期文件夹创建失败,这是为什么阿,求大神帮忙解答,感激不禁。

阅读 4.3k
3 个回答

目前来看, 最大可能是因为权限问题
测试环境为RHEL7,内容如下:
root用户下

crontab -e

内容为

*/1 * * * * source /root/test.sh

结果能正常创建文件夹
然后再用crontab -e删除上述一行, 删除/logs文件夹

rm -rf /logs

切换用户到test1, 执行几乎同样的操作

su test1
cd
vim test.sh
crontab -e
*/1 * * * * source /home/test1/test.sh
exit

此时回到root用户,使用journalctl查看日志可以看到

Sep 18 17:01:01 rhel7u2cli CROND[3641]: (test1) CMD (source /home/test1/test.sh)

但是并无错误输出也没有成功创建/logs文件夹
此时

[root@localhost /]# su test1
[test1@rhel7u2cli /]$ cd
[test1@rhel7u2cli ~]$ source test.sh 
mkdir: cannot create directory ‘/logs’: Permission denied

如果能够提供更多的信息,也许可以帮得上忙

谢谢邀请,你创建的logs文件夹是否有写入权限啊!你用命令查看一下是否有

后面的时间文件夹变量写的有问题,date后面有空格如:
$(date +%Y)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题