linux
文章平均质量分 57
wandersky0822
这个作者很懒,什么都没留下…
展开
-
FRP原理 实战
FRP原创 2022-09-17 19:48:44 · 1190 阅读 · 1 评论 -
uboot 增加硬件看门狗
先说说uboot的编译过程:1.make distclean2.make defconfig3. make在执行上面之前,还需要必要 的设置,比如配置ARCH CROSS_COMPILE_等等,嵌入式开发中配置这个环境变量,要形成条件反射。 然后才能运行上面3步:1. 清除, 2. 配置,这个得详细说说,这步就是根据configs/defconfig 文件,来做一些基本配置,并生成include/config.h头文件。3. make 这老师真正的编译其实uboot的框架 中是支持硬件看门狗的,在系列配置文原创 2022-07-13 17:35:11 · 1204 阅读 · 1 评论 -
systemctl配置管理文件详解
systemctl配置管理文件详解转载 2022-07-07 19:27:45 · 2124 阅读 · 0 评论 -
分享一个通用的so动态库的编译方法
CC :=$(CROSS_COMPILE)gccLD :=$(CROSS_COMPILE)ldCFLAGS := -fPIC -WallLDFLAGS := -shared -Wl,-soname=libdrdev.so.2SOURCE := $(wildcard *.c)OBJS := $(patsubst %.c,%.o,$(SOURCE))TARGET_LIB := libdrdev.so.2.1.0 all:$(OBJS) @echo原创 2022-07-04 17:52:19 · 390 阅读 · 0 评论 -
单片机与嵌入式linux 比较
MCU门槛低,入门容易, 但是灵活,其实对工程师的软硬件功底要求更高, 随着半导体的飞速发展,MCU能实现很多匪夷所思匪夷所思的功能,比如,使用GPIO模拟1个串口,使用DMA配合任意GPIO来实现PWM输出,使用PWM来模拟声音输出, 这些都需要非凡的技巧与天马行空的想象力才能实现的。MCU发展较为分散,就从RTOS来讲,我随口就能讲也5个RTOS,尤其是最近几年,新RTOS一个接一个出,用我的话来说就是阿猫阿狗都出来做RTOS了;虽然这些RTOS都大同小异,但是它毕竟分散了所有开发者的力量,没有积累出一原创 2022-05-30 10:34:19 · 1715 阅读 · 0 评论 -
SSH 3次失败自动封锁IP
2021年做的最后一个小东西此功能用了2个sh脚本文件daemon.sh,周期性调用真正的屏蔽任务fail3ssh.sh#!/bin/shexport LD_LIBRARY_PATH=./while true; do ./fail3ssh.sh sleep 120donefail3ssh.sh此脚本,会分析auth.log文件,对里面有3次ssh登录失败的IP地址进行封锁!#!/bin/bashcat /var/log/auth.log ...原创 2021-12-30 10:40:09 · 4036 阅读 · 0 评论 -
update upgrade 区别
好像rtthread与linux下的 update upgrade的意义不一样,刚好相反?这是RTTHREAD下的官方描述这是linux下的描述:原创 2021-09-03 11:31:07 · 156 阅读 · 0 评论 -
SYSLOG
SYSLOG2)HEADER部分HEADER部分包括两个字段,时间和主机名(或IP)。1)时间紧跟在PRI后面,中间没有空格,格式必须是“Mmm dd hh:mm:ss”,不包括年份。“日”的数字如果是1~9,前面会补一个空格(也就是月份后面有两个空格),而“小时”、“分”、“秒”则在前面补“0”。月份取值包括:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec2)时间后边跟一个空格,然后是主机名或者IP地址,主机名不得包括域名部分。原创 2021-06-30 14:44:32 · 219 阅读 · 0 评论 -
linux下给特定USB端口特定设备绑定别名
4G模块在linux下会识别为多个ttyUSBX,且X不一定是固定的,如果有多个USB串口设备,则可能是根据上电顺序来分配编号的, 如果4G模块在运行过程中复位,重新加载4G模块驱动,也会发生ttyUSBX设备号变化, 如果ttyUSBX不固定,那么编写程序时,就不好实现拨号,2种解决办法。1.编写一个脚本文件来处理,检测到挂载的USB设备是4G模块时,运行脚本,自动建立链接文件。DEVPATH = ls -l /sys/class/tty/$MDEV | cut -d'>' -f 2 |原创 2021-06-24 15:43:14 · 689 阅读 · 0 评论 -
Linux/Unix 多线程通信
转载https://www.cnblogs.com/wuyepeng/p/9749956.html线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用。 不过要注意的是线程间需要做好同步,一般用 mutex。 可以参考一些比较新的 UNIX/Linux 编程的书,都会提到 Posix 线程编程,比如《UNIX环境高级编程(第二版)》、《UNIX系统编程》等等。 Linux 的消息属于 IPC,也就是进程间通信,线程用不上。 使用多线程的理由之一是和进程转载 2021-06-23 13:48:47 · 268 阅读 · 0 评论 -
VNC XRDP
2个可以远程到linux上的远程桌面,我都在我的raspi2上实现了,这2个软件在我看来都差不多,都可以满足我的要求,只不过一个需要在windows上安装客户端原创 2021-06-21 11:15:19 · 479 阅读 · 0 评论 -
linux 下设置时间函数
intset_time(structtm*p_tm){structtimevaltv;structtimezonetz;gettimeofday(&tv,&tz);tv.tv_sec=mktime(p_tm);settimeofday(&tv,&tz);return0;}intset_time_t(time_ttimestamp){st...原创 2021-06-15 19:00:21 · 901 阅读 · 0 评论 -
linux CAN操作命令
转载https://blog.csdn.net/xy6zzz/article/details/69952630原创 2021-06-15 15:43:05 · 1305 阅读 · 0 评论 -
socket tcp server编程
tcp server ,在有多个客户端同时申请连接时,有2种处理方法,1. select, 在rtthread中的ftp例程中, 建立了一个链表,链表中放置的是所有的原创 2021-06-07 13:17:05 · 732 阅读 · 0 评论 -
recv() 错误处理 EAGAIN
网上很多人说收到EAGAIN错误时,直接再次接收就行了, 但是我认为这样可能会有问题,最好是做个记数器,如果多次收到EAGAIN ,就关闭socket,重新连接,这样应该万万无一失! int rcv_len = recv(p_ch->sock_tcp, recv_buf, sizeof(recv_buf), 0); if(rcv_len == -1) { LOG_F...原创 2021-02-03 09:47:47 · 1982 阅读 · 0 评论 -
实现阿里云DDNS解析
我有三种设备,synology openwrt raspberryopenwrt1,首先,我在openwrt上实现, 这有分为二种方法,其实也是一种方法, 1, 下载ddns-scripts_aliyun_1.0.0-1_all.ipk这个安装包,直接安装,在app-ddns里面就可以看到阿里去的服务商了, 然后输入用户名,密码就可以了。2, 使用自定义的脚本也行,raspberrysynology...原创 2021-01-16 20:21:12 · 2950 阅读 · 0 评论 -
Linux C 读取文件夹下所有文件(包括子文件夹)的文件名
Linux C 下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下:#include <dirent.h>struct dirent{ long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigned short d_reclen; /* length of this.转载 2021-01-09 14:06:03 · 1600 阅读 · 0 评论 -
fsync fflush 相关
最近做保存数据到文件操作,有2个数据,一个是视频,一个是小数据,一样的操作函数,保存视频没有问题,但保存数据就不行,仔细查看,保存视频数据时,由于视频数据都比较大,我每收到64kB保存一次,没有问题,问题就出现 在保存信息数据上,这个数据量比较小,一秒10B,我不可能收到64KB再保存,于是 我就想着fsync同步一下,void test_file_wr(){ FILE * g_fd; const uint8_t dat[10]={0,1,2,3,4,5,6,7,8...原创 2020-12-25 11:11:50 · 466 阅读 · 1 评论 -
fuser与lsof -- 查看文件被哪些进程占用
命令安装[root@template ~]# yum -y install psmisc[root@template ~]# rpm -ql psmisc/usr/bin/killall/usr/bin/peekfd/usr/bin/prtstat/usr/bin/pstree/usr/bin/pstree.x11/usr/sbin/fuser fuser Introduction 查看文件、目录或者socket所属进程的PID,由此知道该文件或目录被哪些进程所使用转载 2020-12-07 08:46:00 · 659 阅读 · 0 评论 -
umount U盘 强制
今天做U盘自动挂载,卸载相关的项目,我做了一个项目:当检测到U盘时,自动挂载U盘,然后从以太网上请求视频PS流,把视频数据保存到U盘中,在某一个不定的时刻,U盘会被突然拨掉,在没有umount的情况下,突然拨掉,会有一些问题,这时我再umount,出现了设备忙,umont失败的情况,如果再次插放U盘,会识别dev/sda1 dev/sdb1 /dev/sdc1 每插拨1次,设备结点依次增加,就是因为没有umount成功的问题。查了一下,lsof可以查看当前哪个线程占用哪个文件,...原创 2020-12-05 16:10:22 · 420 阅读 · 0 评论 -
PF_NETLINK类型建立的socket, 检测USB口
通过使用PF_NETLINK类型建立的socket,确实能检测到USB口的变化,这个东西太好了,做U盘自动检测,自动挂载就靠它了。当插入U盘时,打印如下信息:add@/devices/pci0000:00/0000:00:15.0/0000:03:00.0/usb3/3-2add@/devices/pci0000:00/0000:00:15.0/0000:03:00.0/usb3/3-2/3-2:1.0add@/devices/pci0000:00/0000:00:15.0/0000:03:.原创 2020-11-26 19:57:09 · 1017 阅读 · 1 评论 -
检测文件/文件夹是否存在
opendir()access(pipe_dev, F_OK)stat()原创 2020-11-25 08:53:25 · 234 阅读 · 0 评论 -
RS9113公司用的一个WIFI芯片
这个芯片封装看着一样,但其实很多种我就这次用的是单片机驱动的,具体型号为:RS9113-NBZ-D1W 根据上图,确认这颗料具有wifi blueetooth zigbee功能。 双频 有天线, wiSeConnect 产品。其它差异不大,关键是Software Architecture1。n-Link® Software Architecture2.WiSeConnect®/Connect-io-n® Software Architecturen-Link是支持操作系统的,.原创 2020-11-16 14:15:05 · 832 阅读 · 0 评论 -
XSHELL使用密钥登录
XSHELL使用密钥登录生成密钥,会生成一个公钥id_rsa_2048.pub,一个私钥id_rsa_2048,公钥放到服务器上,私钥自己用。在用户身份验证里选择验证方法选择“public key”j最后一步,把id_rsa_2048.pub拷贝到./ssh/authorized_keys里面,重启ssh就可以了,service ssh restart...原创 2020-11-12 08:37:32 · 2323 阅读 · 0 评论 -
优化CPU占用率及内存占用
程序写好,也调试通过了,但是今天发现有几个地方有问题,1.cpu占用率高,最后发现是因为O_NDELAY这个参数,导致程序非阻塞,把这个参数去掉之后,CPU占用率马上下降到%1之下。fd_gps = open( dev, O_RDWR |O_NOCTTY | O_NDELAY)2内存占用一个小程序,开了5个线程,内存占用44M左右,怎么会这样子,我输入pmap 命令查看进程的内存占用情况,发现有5 个anon内存存占用8MB, 这5个8M就是40MB了,关键就是窧个地方。但是原创 2020-11-06 11:08:30 · 1354 阅读 · 0 评论 -
vsftpd配置文件详解
1.默认配置:1>允许匿名用户和本地用户登陆。 anonymous_enable=YES local_enable=YES2>匿名用户使用的登陆名为ftp或anonymous,口令为空;匿名用户不能离开匿名 用户家目录/var/ftp,且只能下载不能上传。3>本地用户的登录名为本地用户名,口令为此本地用户的口令;本地用户可以在自己家目录中进行读写操作;本地用户可以离开自家目录切换至有权限访问的其他目录,并在权限允许的情况下进行上传/下载。 write_e...转载 2020-11-04 22:30:48 · 213 阅读 · 1 评论 -
turnkey linux
突然发现个好东西,turnkey linux, 百度了一下,我是这么理解的。1.turnkey linux提供好多软件,每一个软件都是一个单独的系统,(镜像), 此镜像可以安装在裸机、虚拟机、docker中,2.每一个turnkey linux都是一个系统。3.每一个软件都经过了专门优化4.turnkey linux基于Debian系统。5,turnkey linux提供很多软件,我是在找mediaserver 时无意中发现这个好东西的。...原创 2020-11-02 14:22:46 · 1665 阅读 · 1 评论 -
cfdisk 命令
cfdisk命令,可以新建分区,调整分区大小size,openwrt上可以用。原创 2020-10-18 16:46:38 · 1025 阅读 · 0 评论 -
windows 命令行窗口也有ftp功能
windows 命令行窗口也有ftp功能输入ftp,回车,就会进行ftp操作模式, 输入“?”, 窗口会列出所有的FTP命令。常用的的open dir ls put get bye 等等,研究这个东西,主要是想在windows笔记本上通过ftp来升级嵌入式linux系统的应用程序。command文件的内容:open 192.168.111.223root123456binarycd /opt/xxxx/xxprompt offmput gtyjbye更为神奇的是还可以执原创 2020-09-29 11:45:06 · 611 阅读 · 0 评论 -
linux 管道
无名管道#include <unistd.h>int pipe(int filedes[2]);参数filedes返回两个文件描述符:filedes[0]为读而打开,filedes[1]为写而打开有名管道#include <sys/types.h>#include <sys/stat.h>int mkfifo(const char *filename,mode_t mode);...原创 2020-09-27 11:45:41 · 93 阅读 · 0 评论 -
C++ 移植到C中 结构体的不同
最近的一个项目,需要把X86下一个C++工程,移植到嵌入式linux下,就下面这个熟悉而又陌生的结构体,在gcc环境下,当然是编译不过的。于是我把构造部分屏蔽了。但在C++下初始化的那个步骤,我没有意识到要在C下实现,于是调试过程中就出现了很多错误, 最终才发现是这个地址。typedef struct _tagSendLanXinDataCommom{ uint16 datahead; uint8 dealrev; uint8 headlen; ...原创 2020-09-07 19:50:06 · 376 阅读 · 0 评论 -
openwrt下的GRE环境验证
HQY搭配环境:目的: 使得PC1和PC2之间可ping通相互访问。配置过程:配置gre隧道前提条件: 1.路由器A(192.168.6.33)和路由器B(192.168.6.18)之间可以ping 通(注意:A,B路由器不一定要在同一网段上,一般使用场景是A ,B都是两个公网IP,本实验室只是在局域网下面的模拟)2.内核支持gre功能,安装gre相关驱动 可通过 lsmod 指令查看root@AA:/# lsmod|grep gregre 3387 1 ip_...转载 2020-09-08 10:54:13 · 3503 阅读 · 13 评论 -
SUI DAO 技术
隧道技术概述隧道技术(Tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式。电信技术在发展,多种网络技术并存,一种技术的网络可能需要穿过另一种技术的网络实现互联。这种情况如果发生在高层协议的 PDU 封装于低层协议的 PDU 中时通常称之为复用,特别第三层穿过第二层网络的技术称为租用链路或虚电路;而如果穿越发生在一种协议的 PDU 封装高层协议的 PDU 中时,通常称之为隧道隧道协议可以分为第二层隧道协议 PPTP、L2F、L2TP 和第三层隧道协议 GRE、IPsec。它们转载 2020-08-27 08:43:30 · 347 阅读 · 0 评论 -
TP LINK GRE L2TP介绍
(Virtual Private Network, 虚拟专用网络)是一个建立在公用网(通常是因特网)上的专用网络,但因为这个专用网络只是逻辑存在并没有实际物理线路,故称为虚拟专用网。随着因特网的发展壮大,越来越多的数据需要在因特网上进行传输共享,当企业将自身网络接入因特网时,各地的办事处等外部站点可以很方便地访问企业网络,但同时也把企业内部的私有数据暴露给因特网上的其他用户。于是在这种开放的网络环境上搭建专用线路的需求日益强烈,VPN应运而生。VPN通过隧道技术在两个站点间建立一条虚拟的专用线...转载 2020-09-08 08:19:51 · 1370 阅读 · 0 评论 -
linux PPTP
虽然没有调试通过pptp,但是调PPTP的几个步骤大概是这样子1.建立相关PPTP的配置,可以使用下面的命令sudo pptpsetup --create pptp --server wandersky.xicp.net --username test --password wWuWmL --start --encrypt2.上面命令执行后,会修改2个文件,/etc/ppp/peers/pptp 这个pptp是上面命令新建立了。/etc/ppp/chap-secrets 上...原创 2020-08-31 15:02:47 · 556 阅读 · 0 评论 -
群晖连接L2TP
WIN10 通过,L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误”也就是,Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\PolicyAgent]"AssumeUDPEncapsulationContextOnSendRule"=dword:00000002群晖在映射这几个端口UDP 500 1701 4500...原创 2020-08-27 22:32:25 · 3165 阅读 · 1 评论 -
个人出差在外连接公司 的技术
隧道协议可以分为第二层隧道协议 PPTP、L2F、L2TP 和第三层隧道协议 GRE、IPsec。它们的本质区别在于用户的数据包是被封装在哪种数据包这在隧道中传输的经过查询的大量资料,我感觉两种应用场合:1, 个人连接公司2, 公司连接公司针对这2种场合,有两种解决方案1,针对个人,点对点协议,个人运行客户端,连接远端的服务器,通过pptp l2tp ipsec等协议与远端服务器建立连接。2, 针对公司连接公司,连接的是2个局域网,必须用GRE协议,GRE不带加密功能,如果...原创 2020-08-27 08:41:54 · 329 阅读 · 0 评论 -
linux 串口 阴沟翻船系列
记住下面的结构体, 它曾经阻挡我一天 前进的步伐。struct termios{unsigned short c_iflag; /* 输入模式标志*/unsigned short c_oflag; /* 输出模式标志*/unsigned short c_cflag; /* 控制模式标志*/unsigned short c_lflag; /*区域模式标志或本地模式标志或局部模式*/unsigned char c_line; /*行控制line discipline */unsigned cha原创 2020-08-22 10:59:19 · 161 阅读 · 0 评论 -
Resource temporarily unavailable
Resource temporarily unavailable出现这个错误,网上有很多说法,经过我亲身体验,还是"超时比较靠谱" 这个错误字面意思是“资源不存在”我的出现的错误是:recvfrom error :Resource temporarily unavailable我在自己写的ping 的程序里出现这个错误的, 我ping() 设置为10s钟超时,网上还有一种说法,是因为在多线程的环境中,别的线程读取这个socket数据了, 这说法再是不瞎说,如果是其它线程对...原创 2020-08-21 16:07:30 · 4020 阅读 · 0 评论 -
linux 定时器
第一种 alarm()和signal()void handler(){ alarm(10);}int main(){ signal(SIGALRM, handler);//设置与SIGALRM信号触发的函数handler() handler(); while(1) {} return 0;}第二种setitimerint setitimer(int which, const struct itimerval *value, struc...原创 2020-08-19 19:26:02 · 413 阅读 · 0 评论