
Linux
奔狼的春晓
工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如何查看和修改linux系统的字符集
查看系统的字符集通过locale命令查看系统支持的字符集这个是很干净的一个系统[root@master ~]# locale -aCen_US.utf8POSIX还有这种对字符集支持比较好的[root@master yt]# locale -aaa_DJaa_DJ.iso88591aa_DJ.utf8aa_ERaa_ER@saahoaa_ER.utf8aa_ER.utf8@saahoaa_ETaa_ET.utf8af_ZAaf_ZA.iso88591af_ZA.ut原创 2021-12-25 18:29:36 · 2833 阅读 · 0 评论 -
python将txt中的电压数据转灰度图
项目中遇到将文件中的数据转换成图片,文件中的数据是一系列电压值,C的接口相对麻烦一些,想到用python可能会方便一些,刚好整个系统对于这个转换过程的时间要求不高。基本过程如下:首先将数据从txt文件中读取到矩阵中。数据在txt中也是按照矩阵存储的,是一个480X900的矩阵数据。然后将矩阵数据进行归一化。然后将归一化后的矩阵数据离散到0-255之间。最后利用Image的convert方法转换为图片。代码如下:# -*- coding: utf-8 -*- # 实现读取一个TXT文件,将文原创 2020-11-16 11:26:51 · 1418 阅读 · 2 评论 -
4个char型合并为1个int型
上位机在与一些下位机通信的时候,许多送上来的数据是char型的字符串,下位机为了表示一些较大的数据,往往用多个char来表示,上位机需要对拿到的数据做转换。比如送上来的数据是0x11 0x22 0x33 0x44想表达的是0x11223344对比较多的高级语言可能处理起来比较轻松,C处理起来会稍微麻烦一点,下面是一个拼接的函数接口//4个char型合并成一个int型,例如0x11 0x22 0x33 0x44,合并后的int数据为0x11223344unsigned int fourCha原创 2020-11-03 16:53:42 · 5622 阅读 · 1 评论 -
linux下统计代码运行时间消耗-gettimeofday
最近在工控机的centos上做业务功能开发,有些业务流程对时间要求比较苛刻,但系统又不是实时系统,代码运行时间没法保证,所以每次添加代码和进程的时候都只能手工测试一下时间消耗,也是醉醉的。linux上有获取当前系统时间的接口gettimeofday,获取回来的时间可以精确到微妙(实际精度到不了1微妙,测试大概也就是几十微妙)。简单测试例子如下,用usleep代表想测试的实际代码。#include <stdio.h>#include <iostream>#include <原创 2020-10-27 16:34:04 · 1827 阅读 · 0 评论 -
MAC虚拟机安装CentOS8.1报错“Section %package does not end with %end”
在mac的VMware fusion安装centos8.1的过程中,刚开始就报错:Section %package does not end with %end如下图:这是因为在创建虚拟机的时候自动加载了两个CD,把 CD/DVD(IDE) 禁用即可。这里去掉勾选。原创 2020-09-17 17:28:50 · 236 阅读 · 0 评论 -
查看linux下所有用户组
查看登陆用户名:openwrt@ubuntu:~$ whoamiopenwrtopenwrt@ubuntu:~$ 以openwrt这个用户登陆。查看登陆账户所在的组openwrt@ubuntu:~$ groupsopenwrtopenwrt@ubuntu:~$ openwrt这个用户所在的用户组也是openwrt查看linux下所有的用户组openwrt@ubuntu:~$ cat /etc/grouproot:x:0:daemon:x:1:bin:x:2:sys:x:3:原创 2020-06-09 11:19:53 · 2447 阅读 · 0 评论 -
ifconfig命令无法识别,提示“Command 'ifconfig' is available in '/sbin/ifconfig'”
有台虚拟机,用的时候发现ifconfig命令不好用了,提示如下:Command 'ifconfig' is available in '/sbin/ifconfig'The command could not be located because '/sbin' is not included in the PATH environment variable.This is most lik...原创 2020-03-11 13:37:56 · 4237 阅读 · 0 评论 -
sh脚本报错“eval: line 1: syntax error: unterminated quoted string”
有个之前一直正常运行的脚本,突然报错了eval: line 1: syntax error: unterminated quoted string提示也比较直接eval使用出的问题,过滤一下脚本内容,果然找到了一个疑似问题代码:eval $(echo $line 2>/dev/null |awk '{print "iosOs="$13";iosDev="$14}')看了下line...原创 2019-11-27 14:13:13 · 24586 阅读 · 0 评论 -
shell截取特定字符之前的字符
要通过shell获取cpu使用率,取到的字符串是这样:98.2%id,因为前面的不固定,比如也可能是这样的:78%id,所以需要截取%之前的数据。%% 号截取,删除右边字符,保留左边字符。echo ${cpuidel%%%*}删除%右边的数据,保留左边的字符。...原创 2018-11-23 16:18:48 · 13909 阅读 · 0 评论 -
linux下如何清理缓存
手头的路由本身内存就比较少,上面又跑了一个nginx+php的环境,简直慢的爆炸,check的时候发现内存经常被占了很多。linux的虚拟内存机制,很多时候回导致内存得不到及时释放,有时候内存很少了,kill了很多进程,但是内存还是没有释放,这时候可以尝试一下手动释放,linux是提供了这样的接口的。echo 1 > /proc/sys/vm/drop_caches这样就能释放了。...原创 2018-10-18 16:30:21 · 15688 阅读 · 1 评论 -
添加自己的开发板到openwrt中
手头有个mt7620a的开发板,打算加到openwrt的dts里面,跟linux添加一个设备类似,整个过程分这样几步:构建dts;修改内核编译的makefile;修改相应的初始化参数。构建DTS一个特定的设备需要一个dts文件来描述,dts文件里面具体描述了板子的一些细节,板子的flash分区、led灯、GPIO的复用等等,板级的细节其实都在dts文件里面。 一类设备一般有一个dts...原创 2018-08-23 20:30:51 · 5382 阅读 · 2 评论 -
linux打包报错:tar: Error exit delayed from previous errors
在用tar进行打包时报了如下的错误:tar: Error exit delayed from previous errors.谷歌了一下,有人说是文件权限的问题,尝试做了修改还是有这个问题。后来才发现是在-f这个参数和.tar文件中间不能加别的参数。之前的打包参数如下tar -cvf --exclude=*.git --exclude=*.DS_Store xxxx.tar yyyyyy...原创 2019-05-17 11:23:07 · 4456 阅读 · 0 评论 -
ldd not a dynamic executable
在开发环境编译运行很ok的程序,到了客户的生产环境一直有问题,编译找不到库,类似这个样子: /usr/bin/ld: skipping incompatible ../lib/libasound.so when searching for -lasound /usr/bin/ld: cannot find -lasound可是路径下明明有库,猜测应该是系统不兼容 ldd...原创 2018-07-19 17:25:37 · 4838 阅读 · 0 评论 -
root切换普通用户:cannot set user id: Resource temporarily unavailable
服务器上有个账号ssh失败,通过root账号重置了密码也是登陆失败,也是奇怪,在root账号下直接:su - xxxxxxxx是用户名,报了下面的错su: cannot set user id: Resource temporarily unavailable原来是用户下进程太多了,资源都被占用了(进程号)手动删除了一些垃圾进程后就万事大吉了。...原创 2018-12-27 15:15:22 · 2017 阅读 · 0 评论 -
Ubuntu apt-get install出现“Temporary failure resolving 'cn.archive.ubuntu.com'”
搭建编译环境的时候,安装g++出现了如下的报错:Do you want to continue? [Y/n] yErr:1 http://cn.archive.ubuntu.com/ubuntu xenial/main amd64 libmpc3 amd64 1.0.3-1 Temporary failure resolving 'cn.archive.ubuntu.com'Err:2 ...原创 2018-12-26 10:27:00 · 25770 阅读 · 0 评论 -
curl访问https报错:Cert verify failed: BADCERT_NOT_TRUSTED
这个错跟https://blog.youkuaiyun.com/lixuande19871015/article/details/88788699里面的错误看上去有些不太一样 curl -v https://www.baidu.com* Cert verify failed: BADCERT_NOT_TRUSTEDcurl: (51) Cert verify failed: BADCERT_NOT_TR...原创 2019-04-05 17:54:31 · 5978 阅读 · 0 评论 -
linux上tar命令排除.DS_Store .svn .git等特定名字目录
文件打包的时候里面经常会打进去一些自己不希望出现的目录,linux的tar命令提供了排除的参数:--exclude简单用法如下:tar -jcvf --exclude=*.git --exclude=*.DS_Store xxxx.tar yyyyyy/ 将目录yyyyyy/ 打包成xxxx.tar,打包时排除掉路径下的.git 和.DS_Store文件。...原创 2019-05-17 10:20:08 · 3008 阅读 · 0 评论 -
如何查看linux系统的体系结构
计算机的体系结构从指令集的复杂度上可以分两类,一是复杂指令集CISC,主要是X86架构。另一类是精简指令集RISC,这个比较多,主要是ARM、MIPS、PowerPC等。拿到一块开发板,有时候想快速的知道它的体系结构或者叫系统架构,linux上提供了比较多的方法来判断。下面列几种相对常见一些的uname命令uname -a不是最直观的,但是也是一个不错的命令。nvidia@tegra-...原创 2019-05-23 18:45:53 · 60240 阅读 · 6 评论 -
应用层检测网线插拔事件
遇到一个比较奇葩的设备,记录一下有个需求,需要知道网线插入事件,开始以为比较简单,去hotplug中等插入事件的消息,并没有等到,原来hotplug中只是在eth0这个网络节点up或者down的时候才有事件上来,而无法拿到网线插入状态,板子的驱动和系统动不了,蛋疼啊想到去看寄存器状态,因为网络上有些大神的建议是看/sys/class/net/eth0/下面的寄存器状态,同样的结果,寄存器也无法...原创 2019-06-19 16:28:07 · 3703 阅读 · 2 评论 -
linux shell 指令 诸如-d, -f, -e之类的判断表达式
来源:http://blog.youkuaiyun.com/sxzlc/article/details/7542603文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ]-f filename 如果 filename转载 2016-01-15 11:23:44 · 3604 阅读 · 0 评论 -
代码行数统计
有些小项目做完,做项目总结或者验收的时候,会有一个代码量的统计,之前多是给一个估计量,其实用脚本统计也是挺方便的,只需要挨个遍历路径下的文件,统计每个文件的代码行数就可以了 下面是一个统计路径下代码行数的小脚本countcodeline.sh:#!/bin/bashg_count=0function countcodeline(){ filename=$1 filefo...原创 2018-06-28 15:00:09 · 3851 阅读 · 0 评论 -
try_files实现接口隐藏
最近有个小项目要写一些后台接口的部署,用到了try_files的东西,记录一下try_files语法找指定路径下文件,如果不存在,则转给根路径下的index.php执行。 比如向xxxx.com/service/test/这个接口post了数据,但是nginx并没有service/test这个路径或者接口,如果在nginx中配置了try_files,像这样: location...原创 2018-07-09 15:31:15 · 2151 阅读 · 0 评论 -
openwrt上nginx扩展模块的支持
在固件开发过程中,上层业务层需要用到nginx的一些扩展模块,比如ngx_devel_kit-master、set-misc-nginx-module-master、nginx-push-stream-module-master、ngx_cache_purge-2.1。这些模块并没有在nginx的源码中,而是一些独立的分支。采取的方法是直接修改nginx的编译规则:首先下载对应的扩展模块的原创 2017-01-03 16:37:04 · 7048 阅读 · 0 评论 -
给openwrt的固件打上自己的“印记”(一)
openwrt的开源固件编译完成后,上面会有较多的openwrt的印记,但是有些商用的系统需要去掉这些印记,打上一些厂商的印记。第一个简单的印记,登陆页,当你ssh或者telnet进去的时候,系统会给一个欢迎页面(暂且这么叫吧)就像下面这样:其实这是/etc/banner 中设定的页面。系统在启动的时候会通过/etc/profile 来设定环境变量,在这个文件中会展示banner中的内原创 2016-10-19 16:34:17 · 7380 阅读 · 1 评论 -
openwrt上如何进行串口加密
实际生产的固件许多都对串口做了加密,这样就增加了别人觊觎你的生产固件的难度,毕竟没有几个厂商不忌惮对手对其固件内容的分析,当然这种串口加密并不能起到特别大的阻碍作用,因为只要别人想看你的固件,你是很难防住的,但串口加密至少会挡住以少部分人。串口加密需要几个方面的支持。首先是busybox中,getty和login。Base system ---> busybox ---> Logi原创 2016-09-20 10:43:16 · 5940 阅读 · 0 评论 -
配置mt7620a上的双SSID
在商业wifi的实际布点中,客户经常会提出要两套,一套给流动性客户使用,一套给自己内部的员工使用,如果一台设备能够提供两个热点,其中一个热点上网需要权限认证,一个可以自由上网,之前写过一篇《openwrt上透明AP的实现》,主要是将热点桥接到上级路由上,从上级路由直接分配IP,主要的功用,也是为了走上级的认证体系,毕竟公共网络环境中对认证要求很严格。那么能不能一台设备两个热点,一个热点从上级分配I原创 2016-08-10 11:18:30 · 6191 阅读 · 0 评论 -
编译属于自己的openwrt固件
在编译自己的openwrt固件的时候,直接make出来的固件名字都是OpenWrt-mt7620a_mt7610e-squashfs-sysupgrade.bin这个样子的,用的时候感觉不爽啊,能不能自己自由的指定编译出的固件的名字呢,这当然是可以的,下面就看一下如何修改编译出固件的名字。首先看前缀OpenWrt,这个前缀的指定是在include/image.mk文件中指定的,作者将前面的前缀原创 2016-01-14 11:25:37 · 8009 阅读 · 1 评论 -
手机探测帧频率的测试
手机的探测帧的频率在802.11协议里面并没有一个详细的要求,并且各个厂家从省电等方面考虑设置的探测帧频率也各不相同,并且在wifi界面下、锁屏状态下、忽略掉wifi再锁屏的状态下探测帧的频率都不同,所以wifi探针并不是一个可靠的用户感知的工具,只能是一个补充或者说是一个小玩意吧下面是对部分手机探测帧频率的测试结果:手机连接wifi的情况下锁屏1 iPhone4S、iPhone6原创 2016-01-04 15:42:51 · 6771 阅读 · 4 评论 -
802.11帧格式
转一篇不错的博客 原文链接z一、802.11数据帧1、802.11数据帧的一般格式说明:2、数据帧各个字段说明:名称描述长度(字节)帧控制(Frame Control) 2持续时间(Duration ID)用来记载网络分配矢量(Netw转载 2014-09-04 15:41:46 · 4823 阅读 · 0 评论 -
Linux3.10内核之后proc文件系统的使用
最近在通过无线扫描周边的手机mac的事情,拿到AP周边的mac后需要送到应用层,原创 2014-09-04 15:08:50 · 6311 阅读 · 0 评论 -
CSI资料记录
下面是清华的一篇论文,逻辑上感觉讲的比较清楚了:http://www.docin.com/p-1178653476.html目前CSI的研究多是一些大学实验室行为,校内的一些研究多是针对采集到的CSI数据运用各种算法来做动作识别等,研究一般都是基于5300网卡进行,多依赖于一个叫CSI-TOOL的工具:http://blog.youkuaiyun.com/sodleave/ar原创 2017-04-05 10:30:58 · 8784 阅读 · 4 评论 -
基于rt2860v2的wifi探针
实验室有块7620a的板子,之前做过探针方面的试验,rt2860v2的驱动源码来自网络,探针是基于这份源码做的试验,最初在驱动中采集的数据是通过proc节点送到应用层,但是发现数据的实时性啥的不够好,改用了netlink方式。有感兴趣的同学可以跟着下面的步骤下载编译,供研究学习用。首先下载openwrt的源码,这里是openwrt传送门:https://dev.openwrt.org/ 如果...原创 2017-05-11 11:05:42 · 9052 阅读 · 25 评论 -
如何判断linux系统是32位还是64位
最直观的办法: [root@localhost ~]# getconf LONG_BIT 32输出的结果就标示是多少位系统,32表示这是32位系统,64表示这是64位系统。还有一种办法: [root@localhost ~]# uname -a Linux localhost.localdomain 2.6.32-042stab128.2 #1 SMP Thu...原创 2018-05-23 15:50:55 · 6286 阅读 · 0 评论 -
git clone 报错SSL connect error
在一台centos上搭建frp的时候遇到了这个问题,做下记录 问题提示: fatal: unable to access ‘https://github.com/fatedier/frp.git/‘: SSL connect error原因:缺少相应的库 解决: yum update -y nss curl libcurl...原创 2018-05-23 15:42:46 · 7751 阅读 · 0 评论 -
php编译问题Cannot find OpenSSL's evp.h
在php+redis的遇到“Cannot find OpenSSL's <evp.h>”,缺少openssl相关的库,直接安装即可sudo yum install openssl openssl-devel遇到“configure: error: mcrypt.h not found. Please reinstall libmcrypt”提示比较明确,缺少libmcrypt,直接安装...原创 2018-05-14 10:10:17 · 16841 阅读 · 1 评论 -
Package php5-mod-iconv is missing dependencies for the following libraries: libiconv.so.2
大概14年的时候遇到过这个问题,引起问题的原因也是比较的奇葩,只是印象开始固件编译并没有问题,后来在做各种实验的时候突然出现这个问题,字面判断就是在编译php扩展的时候发现没有添加libiconv的依赖,最近又再次遇到了,不过已经忘记是如何解决的了,还好社区已经有人解决了,解决办法还是相对简单,只是需要修改一下php的makefile,路径如下: feeds/packages/lang/php5原创 2018-04-09 10:48:23 · 3791 阅读 · 0 评论 -
如何查看linux版本
第一种方式直接看proc下的version cat /proc/version Linux version 2.6.32-696.6.3.el6.x86_64 (mockbuild@c1bl.rdu2.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) ) #1 SMP Wed Jul 12 14:17:22 U原创 2018-02-26 16:00:13 · 6217 阅读 · 0 评论 -
Ubuntu如何设置静态IP
Ubuntu网络配置在这个文件中 /etc/network/interface下面是我机器的interface auto lo iface lo inet loopback auto em1 iface em1 inet dhcplo是本地回环的配置 em1是本地网络节点,当前设置的是dhcp联网方式,下面设置成静态联网。 auto em1 iface em原创 2017-12-26 14:19:24 · 3862 阅读 · 0 评论 -
CSMA/CD与CSMA/CA的区别
CSMA/CD英文Carrier Sense Multiple Access with Collision Detection,意思是载波侦听多路访问/冲突检测。 采用该协议要求设备在发送帧的同时要对信道进行侦听,以确定是否会发生信道冲突,若在发送数据过程中检测到冲突,则需要进行冲突处理。整个协议的处理规程如下: 1 监听当前信道上是否有数据再发送,如果信道空闲,直接发送数据,如果信道忙,则按照原创 2017-12-12 17:01:48 · 39288 阅读 · 3 评论 -
shell语句中的esac
开始看脚本的时候第一次看到esac,愣了一下,赶紧翻书,原创 2014-05-29 10:34:25 · 7018 阅读 · 0 评论