top重定向写入文件乱码问题

top 重定向输出 top [-] [d] [p] [q] [c] [C] [S] [s] [n] top参数说明  d 指定每两次屏幕信息刷新之间的时间间隔 u 只查看指定用户名的进程  p 通过指定监控进程ID来仅仅监控某个进程的状态  n 设置退出前屏幕刷新的次数  b 将top输出编排成适合输出到文件的格式,可以使用这个选项创建进程日志  q 该选项将使top没有任何延迟的进行刷新。如果调用 阅读详情

今天和帮一个同事解决文件读取错误的问题,纠结了一天。

同事用 top -n 1  > top.txt 命令C语言写的文件读取,文件打开、读取都没有问题,在终端显示也现实正常。但是编译成cgi后通过网页访问该文件,则出现乱码了。

正常显示(终端显示):

top - 16:21:39 up  7:09,  3 users,  load average: 1.03, 0.97, 0.95
Tasks: 196 total,   2 running, 194 sleeping,   0 stopped,   0 zombie
Cpu(s):  6.4%us,  2.1%sy,  0.0%ni, 91.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2026356k total,  1491224k used,   535132k free,   217192k buffers
Swap:  4063228k total,        0k used,  4063228k free,   770236k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
 2603 root      20   0  658m 205m  33m R  8.0 10.4  25:39.29 firefox            
 1842 root      20   0 92460  35m  12m S  4.7  1.8   5:56.84 Xorg               
14071 root      20   0 99.8m  30m  13m S  3.7  1.6   0:23.20 npviewer.bin       

网页访问时出现以下状况:

[H[2J(B[mtop - 10:12:00 up 59 min, 2 users, load average: 0.70, 0.67, 0.75(B[m[39;49m[K Tasks:(B[m[39;49m(B[m 194 (B[m[39;49mtotal,(B[m[39;49m(B[m 1 (B[m[39;49mrunning,(B[m[39;49m(B[m 193 (B[m[39;49msleeping,(B[m[39;49m(B[m 0 (B[m[39;49mstopped,(B[m[39;49m(B[m 0 (B[m[39;49mzombie(B[m[39;49m[K Cpu(s):(B[m[39;49m(B[m 4.3%(B[m[39;49mus,(B[m[39;49m(B[m 1.2%(B[m[39;49msy,(B[m[39;49m(B[m 0.0%(B[m[39;49mni,(B[m[39;49m(B[m 93.1%(B[m[39;49mid,(B[m[39;49m(B[m 1.3%(B[m[39;49mwa,(B[m[39;49m(B[m 0.0%(B[m[39;49mhi,(B[m[39;49m(B[m 0.0%(B[m[39;49msi,(B[m[39;49m(B[m 0.0%(B[m[39;49mst(B[m[39;49m[K Mem: (B[m[39;49m(B[m 2026356k (B[m[39;49mtotal,(B[m[39;49m(B[m 910236k (B[m[39;49mused,(B[m[39;49m(B[m 1116120k (B[m[39;49mfree,(B[m[39;49m(B[m 53032k (B[m[39;49mbuffers(B[m[39;49m[K Swap:(B[m[39;49m(B[m 4063228k (B[m[39;49mtotal,(B[m[39;49m(B[m 0k (B[m[39;49mused,(B[m[39;49m(B[m 4063228k (B[m[39;49mfree,(B[m[39;49m(B[m 527544k (B[m[39;49mcached(B[m[39;49m[K [6;1H [7m PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND (B[m[39;49m[K (B[m 1842 root 20 0 73104 29m 10m S 3.8 1.5 1:09.30 Xorg (B[m[39;49m (B[m 3136 root 20 0 73112 14m 10m S 1.9 0.7 0:04.43 npviewer.bin (B[m[39;49m (B[m 1 root 20 0 2876 1364 1152 S 0.0 0.1 0:00.98 init (B[m[39;49m (B[m 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd (B[m[39;49m (B[m 3 root 20 0 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/0 (B[m[39;49m (B[m 4 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 (B[m[39;49m (B[m 5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 (B[m[39;49m (B[m 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1 (B[m[39;49m

遇到这种情况,观察发现,乱码几乎都在换行的地方,我首先想到换行符的问题。网页时通过<br>进行,但是c语言要用\n。但是在我查完fgets()函数之后我就排除了。fgets()的功能是从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。由此可见如果遇到在命令行遇到换行符,换行符也是要读进来的。

然后我一个偶然的操作,把top.txt文件打开了,发现这个文件是:

[H[2J(B[mtop - 10:12:00 up 59 min,  2 users,  load average: 0.70, 0.67, 0.75(B[m[39;49m[K
Tasks:(B[m[39;49m(B[m 194 (B[m[39;49mtotal,(B[m[39;49m(B[m   1 (B[m[39;49mrunning,(B[m[39;49m(B[m 193 (B[m[39;49msleeping,(B[m[39;49m(B[m   0 (B[m[39;49mstopped,(B[m[39;49m(B[m   0 (B[m[39;49mzombie(B[m[39;49m[K
Cpu(s):(B[m[39;49m(B[m  4.3%(B[m[39;49mus,(B[m[39;49m(B[m  1.2%(B[m[39;49msy,(B[m[39;49m(B[m  0.0%(B[m[39;49mni,(B[m[39;49m(B[m 93.1%(B[m[39;49mid,(B[m[39;49m(B[m  1.3%(B[m[39;49mwa,(B[m[39;49m(B[m  0.0%(B[m[39;49mhi,(B[m[39;49m(B[m  0.0%(B[m[39;49msi,(B[m[39;49m(B[m  0.0%(B[m[39;49mst(B[m[39;49m[K
Mem: (B[m[39;49m(B[m  2026356k (B[m[39;49mtotal,(B[m[39;49m(B[m   910236k (B[m[39;49mused,(B[m[39;49m(B[m  1116120k (B[m[39;49mfree,(B[m[39;49m(B[m    53032k (B[m[39;49mbuffers(B[m[39;49m[K
Swap:(B[m[39;49m(B[m  4063228k (B[m[39;49mtotal,(B[m[39;49m(B[m        0k (B[m[39;49mused,(B[m[39;49m(B[m  4063228k (B[m[39;49mfree,(B[m[39;49m(B[m   527544k (B[m[39;49mcached(B[m[39;49m[K
[6;1H
[7m  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            (B[m[39;49m[K
(B[m 1842 root      20   0 73104  29m  10m S  3.8  1.5   1:09.30 Xorg               (B[m[39;49m
(B[m 3136 root      20   0 73112  14m  10m S  1.9  0.7   0:04.43 npviewer.bin       (B[m[39;49m
(B[m    1 root      20   0  2876 1364 1152 S  0.0  0.1   0:00.98 init               (B[m[39;49m
(B[m    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd           (B[m[39;49m
(B[m    3 root      20   0     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd/0        (B[m[39;49m

我了个擦,,文件本身就是有乱码的,再读这个文件当然时有乱码的存在啊!!这不玩我呢吗。。

但是这个文件为什么会在终端正常显示而没有乱码呢?

最大的可能就是,终端的编码和文件的编码不一样。因此我又查了所有的编码形式,所有的编码都试过一遍之后,发现还是不行。。。

然后我回到终端,vi top.txt,有乱码。。cat top.txt,显示正常。我了个擦,vi乱码,cat正常又是个毛啊。只好重新百度。

在Linux环境下为什么用cat 命令输出到终端没有乱码。而我用vi打开则有!!!

发现有个2B和我一样正被这个问题困扰。过滤掉N楼人的错误回答后,终于在一个角落找到问题的本质:

那不是乱码,那些是终端控制字符,控制显示格式的。top 输出用于重定向要加 -b 选项。

因此,我查了一下top使用说明:

top参数说明
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
u 只查看指定用户名的进程
p 通过指定监控进程ID来仅仅监控某个进程的状态
n 设置退出前屏幕刷新的次数
b 将top输出编排成适合输出到文件的格式,可以使用这个选项创建进程日志
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行
c 显示整个命令行而不只是显示命令名
S 指定累计模式
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。



因此,最终的解决方法就是用命令用   top  -b -n 1  > top.txt。

AES-GCM加密认证模式:原理、优势与实战应用 在数据安全领域,加密与认证是保障信息机密性和完整性的两大基石。加密确保数据内容不被窃取,而认证则验证数据来源的真实性和传输过程中是否被篡改。传统的加密后认证方案如AES-CBC+HMAC需要串行处理,性能开销较大。GCM(伽罗瓦/计数器模式)作为一种认证加密(AEAD)方案,巧妙地将AES-CTR加密与基于伽罗瓦域的GHASH认证并行结合,实现了单次数据遍历即可同时完成加密和认证,大幅提升了处理效率。其核心价值在于高性能、支持附加认证数据(AAD)以及标准化程度高,广泛应用于TLS协议、无线网络安全和云存储 阅读详情

相关推荐

微信数据库读取解密脚本 聊天记录查看工具,支持所有微信版本,后期将支持企业微信[Windows]

(1)获取微信昵称、微信账号、微信手机号、微信邮箱、微信KEY的基址偏移(2)获取微信的微信昵称、微信账号、微信手机号、微信邮箱、微信KEY、微信原始ID(wxid_******)(3)获取微信文件夹路径(4)支持查看聊天记录查看(5)根据key解密微信数据库(6)提供数据库部分字段说明(7)支持微信多开场景,获取多用户信息等(8)微信需要登录状态才能获取数据库密钥(9)支持导出聊天记录为html,备份微信聊天记录,方便查看(10)合并多个数据库,方便查看。

weixin_43101935的博客 1万+

linux top p 乱码,将Linux top命令输入到指定文件时的乱码问题

根据需求,项目需要读取linux系统环境参数,所以需要将top命令的输出结果输入到文件中。用重定向命令如下:topresult.txt。用vi打开文件:viresult.txt。显示的根据需求,项目需要读取linux系统环境参数,所以需要将top命令的输出结果输入到文件中。用重定向命令如下:top > result.txt 。用vi打开文件: vi result.txt 。显示的结果却是这样...

weixin_42516657的博客 920

从MIPS汇编到C语言:手把手教你用Mars模拟器理解指令集(附实战代码)

本文详细介绍了如何使用Mars模拟器从MIPS汇编过渡到C语言编程,通过实战代码解析ADD、LW、BEQ等指令集与C语言结构的对应关系。内容涵盖环境搭建、算术运算、内存访问、条件分支及函数调用等核心概念,帮助读者深入理解MIPS指令分类和计算机底层运行机制。

weixin_26821003的博客 359

linux top p 乱码,linux里top导出结果是乱码

各位高手们,帮帮我出出主意吧,实在没辙了top|col-b>a.txt是乱码:谢谢大家[H[2J(B[mtop-15:04:47up49min,4users,loadaverage:0.04,0.83,8.63(B[m[39;49m[KTasks:(B[m[39;49m(B[m185(B[m[39;49mtotal,(B[m[39;49m(B[m...

weixin_29906279的博客 306

终端里藏了个AI大神!DeepSeek‑TUI让你的命令行直接起飞

DeepSeek-TUI:终端AI编程神器 DeepSeek-TUI是一款专为开发者设计的终端AI编程工具,基于DeepSeek V4模型,提供100万Token超大上下文支持,适合处理复杂项目。其核心优势包括: 轻量高效:单二进制文件,无需依赖环境,支持SSH远程操作 智能交互:实时流式输出推理过程,支持三档模式(Plan/Agent/YOLO)灵活切换 强大功能:集成文件读写、Git管理、Shell执行等工具,支持一键回滚和持久会话 节省成本:智能压缩与缓存优化,显著降低Token消耗 适用于服务器开发

965

吹气压力传感器US6310 US6330调试

更换压力传感器, 从US6310 更换为US6330。 6310有一个准备好引脚,AD转换完成后会给MCU一个脉冲 而6330就没有这个功能,6330这个引脚是用来选择SPI还是I2C接口的。(6330没有复位引脚,内部有POR功能) 因此在实现上是有根本区别的, 其它方面使用的命令也不一样, 6310 A8 A9两条命令,一个命令模块醒来,一个命令模块休眠, 6330只有一条命令AA, 命令模块开始转换。 针对这2个模块作为2种处理方法, 1. 6310,可以设置一...

明天乌儿会歌唱 2024

top命令详解

top命令详解

qq_44300280的博客 5276

centos7安装Ambari 2.7.5 + HDP3.1.5

准备 1.安装包准备: Ambari2.7.5、HDP31.5、libtirpc-devel: centos7操作系统: 链接:https://pan.baidu.com/s/1vzvio5rAMsbYF0-0vBs5dw 提取码:xij9

kxq的博客 5091

Linux的top命令内容输出到文件

使用top命令的-b选项可以将输出重定向到文件,-n选项指定top命令输出多少次结束。有时候我们需要查看某个进程在一段时间内CPU和内存的占用信息。

feikudai8460的博客 3644

数学建模小白必看:层次分析法(AHP)从入门到实战(附Python代码)

本文详细介绍了层次分析法(AHP)在数学建模竞赛中的应用,从构建判断矩阵到一致性检验,再到权重计算和实战案例。通过Python代码实现,帮助小白快速掌握AHP的核心技巧,解决评价类难题,提升建模效率。

web39explorer的博客 918

StarWind V2V Converter v9 虚拟磁盘转换工具使用教程 (转)

StarWind V2V Converter v9.0.1.268 是一款免费的虚拟磁盘转换工具,支持不同管理程序间的虚拟机镜像格式转换,包括VMDK、VHD/VHDX、IMG和QCOW2等格式。该工具具有窗口修复模式、零拷贝转换和管理程序切换等特色功能,能够轻松实现物理机到虚拟机的转换,并兼容主流管理程序如Hyper-V、ESXi等。使用教程详细介绍了从本地文件选择到格式转换的完整操作流程,转换过程简单高效且不影响原虚拟磁盘数据。

hsh的专栏 1482

将Linux top命令输入到指定文件时的乱码问题

根据需求,项目需要读取linux系统环境参数,所以需要将top命令的输出结果输入到文件中。用重定向命令如下:top > result.txt 。用vi打开文件: vi result.txt 。显示的结果却是这样的,看图更方便:650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/23/17/wKiom1MxPWzzR4XUAAktiSa

RLanffy 2933

机器学习的低代码与无代码平台:便捷入门之路

机器学习领域正涌现出大量低代码和无代码平台,使非技术人员也能轻松应用AI技术。低代码平台(如PyCaret、H2O AutoML)需少量编程但灵活性强,而无代码工具(如Google Cloud AutoML、Teachable Machine)则完全无需编程基础。这些平台覆盖图像识别、文本处理、业务预测等多种场景,适合快速部署简单项目。但专业人士仍需注意,这些工具无法替代复杂场景下的定制化开发。随着技术进步,低门槛AI工具正在改变各行业的创新方式。

2501_90323865的博客 154

linux把0输入到文件中,将Linux top命令输入到指定文件时的乱码问题

根据需求,项目需要读取linux系统环境参数,所以需要将top命令的输出结果输入到文件中。用重定向命令如下:top > result.txt 。用vi打开文件: vi result.txt 。显示的结果却是这样的,看图更方便:于是分析出一下几个原因:1.其他命令是否出现相同问题?2.是否是文件编码格式问题导致?3.是否是系统平台问题导致?下面一个一个测试:1.测试命令:ls > tes...

weixin_32999557的博客 327

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

重定向top输出到文件后,用Vi打开乱码,用cat输出格式正常

因为终端有控制符,cat的时候能自动转换控制符,但是vi不能。正确的做法是    top -b -n 1| ... -b参数的含义: 将top输出编排成适合输出到文件的格式,可以使用这个选项创建进程日志  所以我的需求命令是    top -b  -d 60  >> cpu_time.txt            每隔60s输出一次top内容,监控特定进程

pfm685757的专栏 3765

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

top 屏幕输出重定向

最近写一个小工具 要显示cpu 内存使用率 想着用top命令  但是top命令本身是动态的 且获取输出结果为乱码 只运行一次top并重定向到文件中 top -d 2 -n 1 -b > top.txt

Sherry_Rui的专栏 3744

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

top查看进程信息输出到文档中出现乱码

通过top查看某个进程的内存使用率,进程号:2477。

Pichairen 880

HttpServletResponse response实现文件上传、下载

一、概述 在创建servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应的response。service方法中的response的类型是ServletResponse,而doGet/doPost方法的response的类型是HttpServletResponse,HttpServletResponse是ServletResponse的子接口,功能和方法更加强大。 二、response的运行流程 三、通过抓包工

学Java,找哪吒 3万+

Top19:RHEL学习札记-3-重定向、环境变量、通配符

Top19:RHEL学习札记-3-重定向、环境变量、通配符重定向输入重定向 <输出重定向管道符通配符环境变量绝对路径alias 命令别名内部命令 bash外部命令直接定义 和使用 export的区别例: 重定向服务 是 命令 和 文件 之间传输的纽带 管道符是 命令 和 命令 之间的纽带 重定向 输入重定向 < ​ 例:wc -l < anaconda-ks.cfg ,只输出行数 输出重定向 ​ 作用将原先要输出到屏幕的内容,重定向到文件里 > 清空写入 > 例: upt

Carl's blog 177

【愚公系列】2023年10月 Java教学课程 129-Servlet服务器的Response

Response响应对象是指在Web开发中,服务器端向客户端返回的HTTP响应消息。它包含了HTTP状态码、响应头和响应体等信息。在使用Web框架时,我们可以通过Response对象来设置响应的状态码、响应头和响应体等内容,以便向客户端返回需要的信息。在HttpServletResponse接口中提供了很多方法,接下来我们通过API文档,来了解一下这些方法。状态码说明200执行成功302它和307一样,都是用于重定向的状态码。只是307目前已不再使用304请求资源未改变,使用缓存。400。

愚公智库 8671

JavaWeb_day17_Request__请求中文乱码__请求转发__BeanUtils__用户登录错误回显

HTTP请求包括: 请求行   包括请求方式,资源地址,协议版本 请求头  请求头是客户端发送给服务器端的一些信息,使用键值对表示key:value 请求体  当请求方式是post的时,请求体会有请求的参数,格式如下: username=zhangsan&amp;password=123 如果请求方式为get,那么请求参数不会出现在请求体中,会拼接在url地址后面 1.通过reques...

weixin_42062397的博客 464

centos: php中文乱码

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33739646的博客 715

Xshell 终端输出记录方案对比:内置日志 vs 命令重定向 vs 脚本

本文对比了Xshell终端输出记录的三种方案:内置日志、命令重定向和自动化脚本,详细解析了各自的优缺点及适用场景。内置日志适合审计合规,命令重定向灵活便捷,而脚本方案则能满足复杂条件触发需求。文章还提供了实战配置步骤、性能测试数据和高级技巧,帮助用户根据实际需求选择最佳记录方案。

weixin_30924239的博客 540
上一篇: ubuntu配置apache2+svn服务器
下一篇: 共享内存多次写入不同类型的数据测试代码
暗夜老猫
博客等级 码龄14年 4粉丝 20原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值