热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell中使用curl命令定时上传日志文件到服务器并清理,放在crontab中发生异常

如题,在shell中使用curl命令进行上传,单独执行时并未发生任何错误,但是放在crontab中进行定时执行时发生错误,有部分日志文件上传但是大部分未成功上传,只是上传了一部分,不完整,而且打印跟
如题,在shell中使用curl命令进行上传,单独执行时并未发生任何错误,但是放在crontab中进行定时执行时发生错误, 有部分日志文件上传但是大部分未成功上传,只是上传了一部分,不完整,而且打印跟踪发现 curl命令返回141错误,经过查资料知道141属于curl命令内部错误,不是用户名密码、IP端口之类的错误。很捉急,求大神指导。。。
shell部分脚本如下:

#....
filelist=`find -mmin +$clean_time`
for file in $filelist
do
if [ -f $file ];then
filename=`echo $file | cut -b 3-`
curl -T $file -u $username:$password --ftp-create-dirs ftp://$remote_host_ip:$remote_host_port/$remote_dir/$filename
exec_s=$?
if [ "$exec_s" = "0" ];then
rm -f $file
cur_time=`date +%Y-%m-%d//%H:%M:%S`
echo "[$cur_time]:[$filename]...............[ok]"
elif [ "$exec_s" = "7" ];then
echo "[error]:cannot connect to host,please check remote ip address or port is correct.........[error]"
continue
elif [ "$exec_s" = "67" ];then
echo "[error]:access denied,please check username and password is correct.............[error]"
continue
elif [ "$exec_s" = "26" ];then
echo "[error]:cannot open file.............[error]"
continue
elif [ "$exec_s" = "9" ];then
echo "[error]:failed upload file,please check remote directory is correct...........[error]"
continue
else
echo "[error]:[$file] upload failed,have not know the reason.............[error]"
continue
fi
fi
done
#....



补充:好像每次都是成功上传了11个文件之后,curl命令都会报141错误,不知道为什么。。。
      单独运行脚本所有文件均能成功上传。

4 个解决方案

#1


curl的错误表里面也没有141号错误啊,没看到你把错误号打印出来啊。

#2


调试的时候打印的,贴出来的是原来的脚本
在上面第8行后面添加:
echo $exec_x
打印看到输出141错误的

#3


Curl returned 141 - it is result of a segfault which means it's Curls fault.
Try again and if it crashes more than a couple of times you either need to
reinstall Curl or consult with your distribution manual and contact support.

查到141错误时这么说的。。郁闷

#4


汗,偶都是用lftp上传的,没用curl玩过ftp的路过……

推荐阅读
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 高效的JavaScript异步资源加载解决方案
    本文探讨了如何通过异步加载技术处理网页中大型第三方插件的加载问题,避免将大文件打包进主JS文件中导致的加载时间过长,介绍了实现异步加载的具体方法及其优化。 ... [详细]
  • 在现代Web开发中,HTML5 Canvas常用于图像处理和绘图任务。本文将详细介绍如何将Canvas中的图像导出并上传至服务器,适用于拼图、图片编辑等场景。 ... [详细]
  • Linux环境下MySQL的安装与配置
    本文详细介绍了在Linux系统上安装和配置MySQL的步骤,包括安装前的准备工作、下载和解压安装包、初始化数据库、配置文件编辑、启动服务以及设置开机自启动等。 ... [详细]
  • 开发笔记:empireCMS 帝国cms功能总结 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • 我自己做了一个网站图片的抓取,感觉速度有点慢抓取4000张图片可能得用15分钟左右的时间,我百度看用线程可以加快抓取,然后创建了5个线程抓取,但是5个线程是同步执行同样的操作一个图片就 ... [详细]
  • 本文详细介绍了如何在项目中引入和配置KindEditor网页编辑器,包括脚本引用、初始化编辑器以及文件上传功能的实现。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • JUC并发编程——线程的基本方法使用
    目录一、线程名称设置和获取二、线程的sleep()三、线程的interrupt四、join()五、yield()六、wait(),notify(),notifyAll( ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
author-avatar
凉情__凉心凉少年11
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有