热门标签 | 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的路过……

推荐阅读
  • #!binbash########################################################################## File Name : rsync_nobody.sh#  ... [详细]
  • 本文详细介绍了一个既适用于PHP5也适用于PHP7的cURL文件上传解决方案。此示例源于项目需求,旨在通过cURL实现文件上传功能,并解决不同PHP版本间的兼容性问题。 ... [详细]
  • 前言crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较 ... [详细]
  • 本文介绍了如何使用PHP代码实现微信平台的媒体素材上传功能,详细解释了API接口的使用方法和注意事项,确保文件路径正确以避免常见的错误。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文详细介绍了在使用 SmartUpload 组件进行文件上传时,如何正确配置和查找文件保存路径。通过具体的代码示例和步骤说明,帮助开发者快速解决上传路径配置的问题。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 从 Windows 转向 Mac 的开发者指南:必备技巧与工具
    本文旨在帮助从 Windows 转向 Mac 的开发者们,提供一系列实用的技巧和工具,确保过渡过程顺畅。 ... [详细]
  • Shell脚本中的条件判断与实践案例
    本文提供了几个实用的Shell脚本案例,包括监控磁盘空间、检测Web服务状态以及使用Curl进行服务可用性测试。每个案例都详细介绍了脚本的编写方法和运行效果。 ... [详细]
  • 用.sh文件来完成任务,但现在有个项目直接用url就行。一般系统不会有crontabShell#安装crontab:yuminstallcronta ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • Linux下怎么使用crontab命令
    本篇内容主要讲解“Linux下怎么使用crontab命令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Li ... [详细]
  • ssh登陆服务器,切换为有权限的用户比如sudosuazhibocrontab-l查看所有现有的命令使用crontab-e编辑定时任务,定时任务比如:04*** ... [详细]
  •   crontab命令用于设置周期性被执行的指令,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执 ... [详细]
  • 第一种,通过mancrontab查看crontab的帮助手册第二种列出几个简单示例Crontab命令的格式为:crontab–l|-r|-e|-i[username]-l显示用户的 ... [详细]
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社区 版权所有