shell - linux sh文件结合crontab问题
大家讲道理
大家讲道理 2017-04-17 16:07:52
[Linux讨论组]

我新建了一个/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文件夹,下面的日期文件夹创建失败,这是为什么阿,求大神帮忙解答,感激不禁。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(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)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号