【>和>>的区别】
命令>文件,表示以覆盖的方式,把命令正确输出到指定的文件或者设备当中;
命令>>文件,表示以追加的方式,把命令正确输出到指定的文件或者设备当中。

【遇到的问题】
在开发环境中调试接口时,发现log文件有点大,前面大部分内容与我正在排查的问题都无关,于是想把这部分内容抹去,然后单独让有问题的接口输出一些关键信息,再把文件放到本地来仔细查询。
于是在原有的log基础上,做了如下操作:

echo '123' > charge-service_1644545243.log

再将有问题的接口调用,以便让java将日志输出到这个文件中,但下载到本地后发现这个文件成了一个二进制:

--是不是字符集的问题?--
是不是因为echo输入时使用的字符集,和日志本身使用的字符集不同导致的?
之前在终端使用echo进入后,文件的字符集前后确实有点变化,如图:

于是,在echo时,使用中文输入,看看会不会有变化:

echo '测试' > charge-service_1644545243.log

此时,再调用一次接口,结果发现在java再次将日志输出到这个文件后,文件打开还是二进制。而且在linux终端file查看这个文件时,charset为二进制:

file -i charge-service_1644546551.log
charge-service_1644546551.log: text/plain; charset=binary

--可能是>的问题?--
此时想着查看一下,java进程是怎么把日志输入到这个文本中的,于是看了下这个程序相关的配置和启动脚本,结果发现,这个程序是用nohup直接将日志内容定向输出到log文件中,关键的一句如下:

nohup java -Xms256m -Xmx512m -jar $module_service_package $jarParam '--spring.profiles.active=dev'>$log_file 2>&1 &

所以到这里基本排除了java进程怎么控制输出的,因为这里的输出是通过>写入到了log中。之前说到>和>>的区别一个是覆盖,一个是追加,那么我们在程序运行中进行echo >的操作,相当于在一个>操作还没有结束的时候又进行了另一次>操作,会不会是这个原因呢?

为了验证这个想法,把启动脚本改为如下:

nohup java -Xms256m -Xmx512m -jar $module_service_package $jarParam '--spring.profiles.active=dev'>>$log_file 2>&1 &

把原本的>到文件改为>>的方式,再次进行之前的操作,如图:

在nohup输入了日志后,log文件的charset还是utf-8,下载到了本地之后发现可以正常查看了。

这里怀疑是>操作过程中被其它的操作(echo)修改了文本,导致某些信息缺失,所以出现了文本查看工具没办法判断这个文本到底是什么类型,只能以二进制处理,有没有大佬能解惑,是否是这个原因,怎么进行验证?

一个关于 Linux环境下输出操作符 >和>>的问题的更多相关文章

  1. [笔记]Go语言在Linux环境下输出彩色字符

    Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例: fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, & ...

  2. 由一个简单需求到Linux环境下的syslog、unix domain socket

    本文记录了因为一个简单的日志需求,继而对linux环境下syslog.rsyslog.unix domain socket的学习.本文关注使用层面,并不涉及rsyslog的实现原理,感兴趣的读者可以参 ...

  3. Linux环境下部署完JDK后运行一个简单的Java程序

    前言 前一篇文章详细讲解了如何在Windows环境下安装虚拟机+Linux系统,并且成功部署了JDK. 不过部署完JDK之后,我们判断部署是否成功的依据是看"java -version&qu ...

  4. Linux环境下段错误的产生原因及调试方法小结(转)

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...

  5. 【环境配置】Linux环境下下载、配置java环境、安装eclipse、建立eclipse快捷方式详解

    一.首先是下载Java JDK 到目前为止的最新版本为(jdk1.8.0_60),有两种方式进行下载: 1.使用shell来进行下载,可使用如下命令直接进行下载: wget --no-check-ce ...

  6. Linux环境下段错误的产生原因及调试方法小结

    转载自http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...

  7. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

  8. 【转】【调试技巧】Linux环境下段错误的产生原因及调试方法小结

    本文转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html 1. 段错误是什么 ...

  9. 多线程编程之Linux环境下的多线程(一)

    一.Linux环境下的线程 相对于其他操作系统,Linux系统内核只提供了轻量级进程的支持,并未实现线程模型.Linux是一种“多进程单线程”的操作系统,Linux本身只有进程的概念,而其所谓的“线程 ...

  10. mosquitto在Linux环境下的部署/安装/使用/测试

    mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. ...

随机推荐

  1. GOF23种设计模式是哪些

    设计模式实践里面提供了许多经久不衰的解决方案和最佳方案.这里,GOF 设计模式主要分为三大类:创建模式.结构模式和行为模式.创建模式对于创建对象实例非常有用.结构模式通过处理类或对象的组合来作用于企业 ...

  2. evalJS代替mui.fire

    之前一直用mui.fire调用自定义事件以达到监听目标窗口的目的. 页面为双webview,页面跳转时 mui.openWindow({ url: '../choose/food-choose-con ...

  3. Mysql语句练习

    某宾馆其关系模式如下:Room(房间编号,房间类型,价格)Customer(顾客编号,顾客姓名,年龄,电话)RC(房间号,顾客编号,入住日期,入住天数) 1 create database Hotel ...

  4. Win32游戏开发程序——第一个“游戏”程序

    在中国大学慕课上面看到的一道题目,算得上是入门吧. 题目如下: 在"HelloWorldGame"游戏代码的基础上,试着进行如下的上机练习(能实现至少一个即可): •  将文字修改 ...

  5. bzoj 4817

    LCT好题 首先我们考虑实际询问的是什么: 从LCT的角度考虑,如果我们认为一开始树上每一条边都是虚边,把一次涂色看作一次access操作,那么询问的实际就是两个节点间的虚边数量+1和子树中的最大虚边 ...

  6. JS缓存三种方法_sessionStorage_localStorage_Cookie

    1.sessionStorage:临时的会话存储 只要当前的会话窗口未关闭,存储的信息就不会丢失,即便刷新了页面,或者在编辑器中更改了代码,存储的会话信息也不会丢失. 2.localStorage:永 ...

  7. 安装python及环境搭建

    操作系统是windows7 64位 打算使用visual studio code进行代码编写 1.先安装visual studio code去visual studio 官网下载VS code htt ...

  8. ES6 之 Promise

    promise 与ajax 实现两个ajax返回参数的拼接 // 函数 fetch() { return new Promise((resolve, reject) => { Utils.sen ...

  9. nohup 命令 追加输入日志或者覆盖输出日志

    nohup python3 -u botxiaohui.py >> botruninfo.log 2 >&1 & >>  是追加的输出 >    单 ...

  10. input设置自定义属性,并获取值。

    HTML代码: JavaScript代码: 因为busCode不是input标签原生的属性,所以不能使用"点"操作. 非标准属性,要用:obj.getAttribute(" ...