首页
学习
活动
专区
圈层
工具
发布

关于 xargs 参数被截断,tar 文件被覆盖的问题

too long" 的错误: $ tar zcf test.tar.gz *   -bash: /bin/tar: Argument list too long   这是由于 * 展开后参数长度超过系统参数...,用来控制命令行下参数的长度(包含环境数据),这个参数是 ARG_MAX ,在正式环境上是 131072 (bytes) : $ getconf ARG_MAX   131072      ...凡是超过 131072 bytes 长度的参数都会被截断, * 分批 * 传给 xargs 后面的参数。...所以我猜想,第二批参数列表产生的压缩包把第一批参数列表产生的压缩包覆盖掉了,第三批又把第二批覆盖掉了。。。实际上只有最后一次传进来的参数被打进了压缩包中。.../$BID.tar # 用xargs追加进去所有的文件,这次不用怕被截断了~ find . -name "${BID}_*" | xargs tar uf .

2.4K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    记一次redis命令异常:参数截断

    # 发现问题 图1是pb转为一个pbstr字符串:m_msgBody, 可见序列化后的长度是1029 image.png 图2是执行的redis命令,这里说一下redis命令的协议格式: *[命令行参数个数...]\r\n$[参数1长度]\r\n[参数1字符串]\r\n$[参数2长度]\r\n[参数2字符串]\r\n 例如: RPUSH mylist Lippman redis网络传输的命令传如下: "*3\r...# 问题解决 结合代码层面的命令行拼接方式是基于字符串的fmt方式,怀疑是业务pb本身某些字段含有\0, 导致序列化后的字符串被截断了。...因为遇到\0被截断了 image.png ## hiredis的两种命令行形式 方式1:redisvFormatCommand 从如下代码可看出,字符串的结束判定是\0 ``` int redisvFormatCommand...业务在做redis命令拼接的时候,尽量避免%s形式,除非能保证字符串不会被\0截断。 2。业务代码抓包可以使用strace,方便快捷。

    2.1K31

    POST 提交数据的时候参数有哪些类型?

    协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须 使用什么编码方式 。...种类 1. application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了。...一般的POST操作不指名类型时默认为该类型。 2. multipart/form-data 这也是常见的post请求方式,一般用来上传文件,各大服务器的支持也比较好。...Coentent-Type取值为application/x-www-data-urlencoded和multipart/form-data两种情况下,PHP才会将http请求数据包中相应的数据填入全局变量$_POST..., PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA (使用这个变量需要特殊设置php.ini), 只有Coentent-Type

    1.3K20
    领券