![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 54
guolisong
这个作者很懒,什么都没留下…
展开
-
python代码交叉编译成so文件
python代码交叉编译为so文件原创 2023-04-10 18:12:29 · 1236 阅读 · 0 评论 -
vsftp配置多用户
vsftpd配置多用户,并且每个用户设置不通的根目录原创 2022-09-02 15:18:09 · 1386 阅读 · 0 评论 -
docker服务无法关停的原因
docker服务无法关停的原因在于,如果没有关闭docker.socket服务,那么只要执行docker指令,docker.socket就会激活docker服务原创 2022-08-06 11:06:32 · 4989 阅读 · 0 评论 -
函数对象使用
函数对象可以支持函数指针、普通c++函数、c-style(extern "c")函数、类成员函数原创 2022-07-30 22:40:28 · 110 阅读 · 0 评论 -
源码安装python
手动编译python碰到问题的记录原创 2022-07-30 13:32:57 · 5381 阅读 · 0 评论 -
gcc链接完整的库的名字(库带上版本信息)
链接时指定完整的文件名原创 2022-06-24 16:49:19 · 750 阅读 · 1 评论 -
Linux服务程序在容器外执行容器内的脚本
以服务形式(通过systemctl或者/update-rc.d管理的程序)运行的程序,执行容器内的脚本或者指令时,需要删除 “-ti"原创 2022-06-24 16:35:42 · 590 阅读 · 0 评论 -
系统定时服务(systemctl和timer)
linux通过systemctl和timer来设置定时服务原创 2022-05-19 08:48:58 · 1505 阅读 · 0 评论 -
log4cplus增加对运行路径的支持
修改log4cplus代码,配合日志配置文件,让它支持绝对路径+相对路径的方式来管理日志文件原创 2022-05-08 10:53:56 · 465 阅读 · 0 评论 -
x86电脑上下载debian的arm64的包
在x86电脑上下载debian-arm的安装包原创 2022-05-04 16:26:19 · 2291 阅读 · 0 评论 -
父进程退出后,子进程自动消亡
脚本(父进程)退出后,子进程自动退出原创 2022-04-22 20:22:37 · 3811 阅读 · 1 评论 -
linux64位系统兼容32位程序(不下载兼容包)
64位系统兼容32位系统,正常通过apt指令安装兼容包即可。也就是两条命令的事情:apt-get install gcc-multilibapt-get install g++-multilib安装完后,32位的程序就可以在硬件上跑了。但是现场已经在使用的硬件产品,因为硬件网络是定向网络(IOT定向卡,限定了访问的IP地址,目前无法访问163和交大的源),所以这些设备上无法执行apt指令。当然,可以在公司将需要的deb下载下来,然后升级的时候,目标设备下载下来后,dpkg -i来安装这些原创 2022-04-21 17:21:48 · 3220 阅读 · 0 评论 -
Linux下的守护程序
Linux下守护应用的程序,当程序挂掉后,将程序重新拉起来原创 2022-02-13 12:26:51 · 1017 阅读 · 0 评论 -
Docker容器内网络通讯的怪问题
最近项目碰到了一些问题,因为自己认知能力的问题,导致这些问题看起来非常古怪,不合常理。在这里记录一下,以后如果自己在其它地方找到答案了,到时候回过头来更新一下。网络结构如下所示:网关与目标设备device1, device2, device3通过交换机进行连接。网关内创建有C1,C2,C3这3个容器,分别于device1, device2, device3通讯。运行过程中,出现了有意思的问题是,device1~3中任意一个发生断电,比如device1断电了,那么会产生这个现象:1. c1内的原创 2022-01-31 17:45:27 · 1640 阅读 · 0 评论 -
docker使用的记录
这段时间稍稍使用了docker,以后不见得能用到,好记性不如烂笔头,记录一下1. docker的安装添加源sudoadd-apt-repository \ "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian\$(lsb_release -cs)\ stable"安装命令:sudo apt-get install docker-ce docker-ce-cli contai...原创 2022-01-28 17:08:40 · 1418 阅读 · 0 评论 -
(docker)容器内使用IPV6
关于这个话题,其实在csdn上找,能找出很多帖子。但是大部分都令人失望,就是按照帖子上去配置,容器内网络是无法通的。最后找到了这个帖子:https://www.modb.pro/db/98021按照这个老哥的操作,坐下来,算是真正成功了。感谢这个老哥,尤其是这个的这段话,简直就是精华:另外,下面这个链接,IPv6 Subnet Calculator - subnettingpractice.com可以用来计算fixd-cidr-v6的数值,按照老哥在文中的步骤,1,2,3,4去.原创 2022-01-06 14:53:44 · 917 阅读 · 0 评论 -
不同设备拿到了相同的mac地址(arp和nbtstat)
通过arp查到组网设备使用了同一个mac地址,不过用nbtstat可以获取到真正的mac地址原创 2022-01-01 20:17:23 · 3223 阅读 · 1 评论 -
使用jigdo下载历史版本的debian镜像
上次项目碰到了两个问题,一个是无法将opencv在64位的系统中编译成32位的库,这个的话,后来通过一通摸索,也算是解决了问题(当然,关于CMAKE的使用,还是要加强学习)。另外一个问题,就是当时需要下载一个32位的debian10.4的镜像(因为当时我找不到办法在64位系统中编译32位的opencv库,所以想下载一个32位的镜像,然后在这个32位的镜像中编译opencv),然后去debian网站看了一圈,发现已经没有可以直接下载debian32位iso文件的链接了。对于历史版本,需要通过jigdo这个工具原创 2021-12-24 12:47:17 · 2938 阅读 · 0 评论 -
seetaface非法指令集
项目中使用了seetaface6来做人脸识别,程序在虚拟机和服务器中都可以跑起来,所以当时就认为没什么问题了。谁知道移植到网关中运行后,直接崩溃,非法指令集。两者的差别是什么呢?服务器和网关都是基于X86架构的,虚拟机和服务器都是64位的机器,而网关是32位的机器,难道需要编译成32位的程序?为了验证这个想法,重新编译所有的seetaface的库,尤其是那个tennis,让人蛋疼,一搞就是5个小时。还有那个opencv,也让人蛋疼。最后编译出来了,结局让人心碎,还是非法指令集。这也不行啊原创 2021-12-20 10:45:28 · 1107 阅读 · 0 评论 -
64位系统中编译32位的opencv库
这两天真的有被项目折磨到,为了验证自己的一个想法,需要在64位的机器上使用32位的opencv的库。其实这个库可以通过apt去下载,但是我使用的系统中,用的软件可以依赖关系有点杂乱吧,导致我apt install的时候,无法直接安装。如果使用aptitude安装的话,又会移除一堆软件,再重新安装一大堆包,总之,看了让我心里没有底,怕影响到其它软件的正常运行。最后,就选择基于源码去编译。一开始想法是通过在CMake的时候传入PLATFORM参数来进行设置,但是失败了。网上查了资料,没有找可用的方案。有个兄原创 2021-12-20 10:19:14 · 2989 阅读 · 0 评论 -
老设备连接samba服务器
最近项目中,需要支持老掉牙的设备的DNC功能。该设备通过samba服务器,访问网关的文件夹,实现DNC功能。在网关中(该网关使用debian系统)安装完samba,并且配置好后,有意思的事情发生了:1. 同事A和B的电脑都可以通过samba访问debian网关的文件夹,但是我的电脑就是不行。2. 目标设备(也就是那个老的掉渣的设备),无法通过samba访问debian网关的文件夹。3. 在另一个网关(ubuntu16的系统,后面简称u16,也安装了samba),目标设备可以通过samba访问u1原创 2021-12-14 14:39:17 · 1004 阅读 · 0 评论 -
modprobe vboxsf failed问题修复
前两天在虚拟机调试时,在排查问题时,对内核进行了升级。升级后,虚拟机的共享文件夹就无法使用了。按照网上找的资料,建议几乎都是重新安装VirtualBox Guest Addtions。然后Linux下安装这个东西基本就是分下面几步:1. 在virtualbox中加载VBoxGuestAddtions.iso,如下所示:这一步操作之后,在宿主机上,可以看到CD-Rom盘中,会出现VirtialBox Guest Addions,如下所示:2. 将cd-rom中的内容映射到另一个文件夹.原创 2021-12-08 16:56:27 · 1421 阅读 · 0 评论 -
debian下切换内核
最近在硬件上测试拨号,在排除问题的过程中,升级了内核。结果升级完后,不但不能解决问题,反而带来了新的问题。因此需要将内核版本降下来。网上参考了很多文章,经过了一番测试,最后算是解决了问题。在此记录一下,一方面怕自己时间长了忘记了,另一方面,如果有网友碰到类似的问题,可以借鉴。话不多说,有效的解决办法有两种:1. 修改/etc/default/grub文件关于修改这个文件,无论是csdn还是stackexchange等网页上,都提到可以修改该文件中的GRUB_DEFAULT参数来实现内核的切换。并原创 2021-12-07 14:11:42 · 3519 阅读 · 0 评论 -
基于seetaFace6.0的人脸识别
最近项目需要用到人脸识别,经同事推荐,决定基于seetaFace6.0进行开发。开发过程还是比较顺利的,特别是在windows上,有编译好的现成的库,还有demo。照着demo做开发基本上就可以了。问题出在了linux上。在linux上(centos7)上开发时,用了windows下的代码(经过测试验证是可以运行的),结果就是出错了。问题出在seeta::FaceDetector的构造函数的过程中。函数如下:int getFeature(const char* _imgPath, float fea原创 2021-12-01 17:46:22 · 1492 阅读 · 0 评论 -
iconv问题
项目中要使用iconv来进行字符集转换,不然送到云端的报文,显示乱码。之前的程序,在x86下,运行正常。交叉编译后,移植到arm下,云端的数据出现了乱码。经过排查,发现,iconv_open失败了,返回码是22(解释是无效的输入参数)。在网上查了一下,基本上这种错误出现的原因是iconv库有问题。于是下载了iconv的源码,进行编译。export PATH=$PATH:/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/export C原创 2021-11-17 18:26:57 · 2467 阅读 · 1 评论 -
shell脚本以服务形式被调用失败,返回127
项目中写了几个shell脚本,其中A脚本以服务形式存在,开机自启。A脚本会调用judgeBoxType.sh脚本,根据该脚本中函数的返回值,来执行不同的操作。如下所示:脚本写好后,调用bash A.sh,执行完全符合预期。但是,以服务的形式启动时,却失败了,查看了日志,调用judgeBoxType.sh返回值为127。可是judgeBoxType.sh脚本,不会反回127。上网查了一下资料,解释如下:judgeBoxType.sh本身是没有问题的,而且可执行,另外也没有调用别的脚本文件。..原创 2021-10-31 09:59:31 · 5519 阅读 · 0 评论 -
常用AT指令总结
最近部分项目使用了5G模块,因为拨号不是特别稳定,有时中间需要手动输入AT指令去进行调试。通过这次机会,倒也是稍微了解了一下拨号的过程。好记性不如烂笔头,现在把过程中用的较多的指令记录一下,免得时间长了忘记。1. AT+CPIN? 该指令检查sim卡是否被识别,如果被识别,会回显+CPIN:READYOK2. AT+COPS?该指令检查卡所在的运营商信息,比如卡是联通卡时,回显+COPS:0,0 “CHN-UNICOM”, 11OK3. AT+CDGCONT=1,”IP.原创 2021-10-30 19:35:41 · 7550 阅读 · 0 评论 -
paho_mqtt_c使用加密连接
在paho-mqtt-c提供的demo中,有paho_c_sub.c和paho_c_pub.c两个demo,使用了加密连接(秘钥、证书,用户名和密码)。可以基于这两个demo来进行调试,查看参数如何设置。1. 首先确保机器上安装了openssl的库。2. 在cmakelists.txt中,使能sshl和samples,SET(PAHO_WITH_SSL TRUE CACHE BOOL "Flag that defines whether to build ssl-enabled binaries原创 2021-04-17 10:13:47 · 2347 阅读 · 0 评论 -
日志分级打印
#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#if defined _DEBUG_void log(int flag,va_list va_alist,...){ va_list args; va_start(args,va_alist); if(flag) { vfprintf(stdout,va_alist,args); }...原创 2021-02-09 15:30:01 · 99 阅读 · 0 评论 -
通过expect实现远程上传、执行脚本
最近有个需求,需要对现场的几十台设备的配置文件进行修改。单台设备手动操作的话,分以下几个步骤:1. 根据设备号找到vpn地址2. 进入堡垒机3. 通过堡垒机和指定设备的vpn地址,远程进入该设备4. 修改配置文件,并重启相关应用程序因为设备比较多,一个个操作太麻烦,因此想通过脚本来做一些自动化的动作。1. 写一个脚本modify.sh,实现4的操作。在目标机上执行modify.sh,会修改配置,重启应用。2. 写一个脚本execute.sh,实现将modify.sh远程上传到各个原创 2020-12-31 13:38:39 · 742 阅读 · 0 评论 -
Linux(iconv)和windows(MultiByteToWideChar)下的字符转换
Linux版本:iconv指令:iconv -f 原始字符集 -t 目标字符集 原始文件 -o 目标文件比如将日文SHIFT-JIS文件转为简体中文:iconv -f SHIFT-JIS -t GB18030 url.txt -o test18030.txt在notepad中,默认情况下,使用的编码是utf-8编码,测试时,如果要测试中文,建议首先将字符集改为chinese->gb2312,然后再在页面上输入。右下角如下所示:日文编码查询网站:https://ww.原创 2020-12-09 14:28:33 · 1236 阅读 · 0 评论 -
异步TCP
工作中,经常使用到TCP通讯,做个记录。后续需要的话,可以拿过来直接使用。1. 客户端连接请求。首先将socket设置为NON_BLOCK。然后调用connect函数。如果没有返回成功,判断返回值是否是阻塞中。如果是,调用poll或者select,判断socket是否可写。如果可写,那么表明连接已经建立。否则报失败。int _connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen, ...原创 2020-09-19 12:35:42 · 495 阅读 · 0 评论 -
fcntl使用 (转)
功能描述:根据文件描述词来操作文件的特性。#include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);[描述]fcntl()针对(文件)描述符提供控制。参数fd转载 2013-04-05 21:38:18 · 505 阅读 · 0 评论