
Linux实际开发总结
文章平均质量分 75
喜欢打篮球的普通人
这个作者很懒,什么都没留下…
展开
-
gdb调试C++程序:Cannot evaluate function -- may be inlined
如果你的程序依赖于libcxx,而不是libstdc++.so.6。对应的可以调整cmake编译选项或者选择Debug类型进行编译。配置~/.gdbinit。原创 2023-09-20 16:53:40 · 1442 阅读 · 0 评论 -
WSL2中使用perf做火焰图
return -1;return -1;int i = 0;for (;number[i]!= 0;return 0;原创 2023-08-16 17:59:39 · 933 阅读 · 0 评论 -
ubuntu20.04:openssl: error while loading shared libraries: libssl.so.3: cannot open shared object fi
重新安装Openssl即可,原创 2022-11-15 09:25:25 · 6111 阅读 · 0 评论 -
查看Linux支持的gcc和g++标准
_cplusplus宏用于获取C++标准的版本号。查看当前支持的gcc标准。查看当前支持的g++标准。原创 2022-07-24 22:45:21 · 2757 阅读 · 0 评论 -
LInux模拟UDP广播
文章目录1.使用nc命令模拟UDP单播2.Linux C程序模拟UDP广播1.使用nc命令模拟UDP单播操作如下:结果:2.Linux C程序模拟UDP广播使用setsocket给udp报文提供广播能力需要利用这个函数开发套接字的发广播权限,并且需要客户端地址绑定为广播地址setsocket(sockfd,SOL_SOCKET,SO_BROADCAST,&flag,sizeof(flag));服务端代码:#include <stdio.h>#include &l原创 2022-04-27 12:58:07 · 1429 阅读 · 0 评论 -
curl: (60) SSL certificate problem: EE certificate key too weak解决办法
文章目录原因:使用以下命令总是失败yum makecacheCentOS-8 - Base 0.0 B/s | 0 B 00:00Failed to download metadata for repo 'base'Error: Failed to download metadata for repo 'ba原创 2021-12-15 11:57:03 · 6952 阅读 · 0 评论 -
C语言调用so动态库的两种方式
文章目录1.方式1:类似静态库的调用(使用头文件)2.使用dlopen/dlsum动态加载动态库(不使用头文件)3.so动态库中调用so动态库1.方式1:类似静态库的调用(使用头文件)这种方式生成的程序会在启动时候就加载so动态库。add.hint add(int x, int y);add.c#include "add.h"int add(int x, int y) { return (x + y);}main.c#include <stdio.h>#incl转载 2021-11-18 10:34:35 · 2288 阅读 · 0 评论 -
C调用C++和C++调用C
文章目录1.C调用C++2.C++调用C1.C调用C++若C调用的是C++全部函数的代码将函数用extern "C"声明;;然后C代码中不要include C++的头文件, 而采用直接在C中增加函数声明的方式;C调用C++,使用extern "C"则是告诉编译器依照C的方式来编译封装接口,当然接口函数里面的C++语法还是按C++方式编译方法1(需要改动以前的C++代码):C++代码/*C++ code*/extern "C" void f(int);void f(int i){/原创 2021-11-18 10:11:16 · 2952 阅读 · 0 评论 -
FIO压测-SSDvsHDD
文章目录1.FIO命令使用2.FIO命令使用例子3.IO队列深度4.FIO配置文件使用5.FIO区分SSD和HDD1.FIO命令使用目前主流的第三方IO测试工具有fio、iometer和Orion,这三种工具各有千秋。fio在Linux系统下使用比较方便,iometer在window系统下使用比较方便,Orion是oracle的IO测试软件,可在没有安装oracle数据库的情况下模拟oracle数据库场景的读写。fio -filename=<测试文件或块设备> -ioengine=s原创 2021-11-17 15:51:10 · 2135 阅读 · 0 评论 -
Linux文件页、脏页、匿名页
文章目录1.一、什么是文件页?什么是脏页?什么是匿名页?二、linux swap原理三、内存回收的时机1、直接内存回收2、kswapd0内核线程四、内存回收的方式四、NUMA 与 Swap关系五、swappiness1.一、什么是文件页?什么是脏页?什么是匿名页?1、缓存和缓冲区,就属于可回收内存。它们在内存管理中,通常被叫做文件页(File-backed Page),此外除了缓存和缓冲区,通过内存映射获取的文件映射页,也是一种常见的文件页。它也可以被释放掉,下次再访问的时候,从文件重新读取。转载 2021-10-28 21:20:24 · 7055 阅读 · 0 评论 -
怎么理解内存中的Buffer和Cache?
文章目录1.free 数据的来源2.案例一 磁盘和文件写案例3.案例二 磁盘和文件读案例1.free 数据的来源man free 中这样描述buffers Memory used by kernel buffers (Buffers in /proc/meminfo) cache Memory used by the page cache and slabs (Cached and SReclaimable in /proc/meminfo) buf转载 2021-10-28 18:45:34 · 512 阅读 · 0 评论 -
Linux设备模型uevent和Netlink通信机制
文章目录1.Netlink通信机制2. Linux设备文件系统3. sysfs 文件系统4.Uevent1.Netlink通信机制Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在Linux 内核中使用netlink 进行应用与内核通信的应用很多;包括:路由 daemon(NETL原创 2021-10-18 23:30:32 · 3211 阅读 · 0 评论 -
Linux下调节CPU使用的几种方法
文章目录1.使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上2.使用nice和renice设置程序执行的优先级3.使用ulimit限制cpu占用时间(不推荐)4.使用程序自带的对cpu使用调整的功能1.使用taskset充分利用多核cpu,让cpu的使用率均衡到每个cpu上taskset-p, 设定一个已存在的pid,而不是重新开启一个新任务-c, 指定一个处理,可以指定多个,以逗号分隔,也可指定范围,如:2,4,5,6-8。1,切换某个进程到指定的cpu转载 2021-02-19 11:39:40 · 2557 阅读 · 0 评论 -
EXT3-fs error和EXT4-fs error小总结
文章目录1.出现问题时的解决办法1.出现问题时的解决办法查看OS的日志/var/log/messages,应该会有相关的报错信息对于ext3类型的文件系统,可以使用tune2fs 查看tune2fs -l /dev/sdf|grep statFilesystem state: clean使用fsck命令来检测和修复文件系统,FSCK 全称为 File System Consistency Check作用:它可以进行三种模式的操作,查错并在发现错误时由用户决定转载 2021-02-05 16:52:04 · 14309 阅读 · 0 评论 -
Linux下multipath安装与使用
文章目录参考:Linux下多路径使用及大容量硬盘挂载,centos7.3 multipath安装使用转载 2021-02-04 19:14:26 · 4387 阅读 · 0 评论 -
vscode中使用TIMELINE和GIT插件查看代码的历史记录
文章目录1.vscode需要下载的插件2.要求1.vscode需要下载的插件git historygitLens2.要求git插件依赖于git,所以要保证本机已经安装git接着,vscode中的git插件会查找本机的git位置,需要保证vscode能够找到git的位置,如果本机安装了git,以及vscode中安装了插件还是无法使用TIMELINE,原因就是这个点击:查看->输出,选择git看是否配置好路径(git默认是安装到C盘的,如果你安装到别的盘,vscode是找不到的,需要自原创 2021-02-01 16:05:49 · 8538 阅读 · 0 评论 -
C/C++的内存泄漏工具valgrind memcheck的使用小结
文章目录1.valgrind内存泄漏的常用选项2.常见的错误1.valgrind内存泄漏的常用选项valgrind --tool=memcheck --leak-check=full ./a.out2.常见的错误(1)最多最低级的错误:不匹配地使用malloc/new/new[] 和 free/delete/delete[](2)最看不懂的错误:一堆看不懂的Invalid read/write错误(更新:已解决)(3)最不明所以的内存泄露:definitely lost/in转载 2021-01-23 15:19:40 · 184 阅读 · 1 评论 -
检查vsftp服务端是否可用
文章目录1.检查vsftp服务端是否可用的步骤1.检查vsftp服务端是否可用的步骤service vsftpd start,或者使用systemctl来启动vsftpd服务端到/etc/vsftpd/目录下打开user_list文件将root注释掉打开ftpusers将root注释掉查看是否有ftp用户cat /etc/passwd|grep -i ftp如果没有ftp用户,使用useradd,passwd增加ftp用户getsebool -a|grep -i ftp去查看原创 2020-12-16 10:58:56 · 686 阅读 · 0 评论 -
SAS和SATA盘的区别
文章目录老司机带你认识服务器硬盘–SAS和SATA盘转载 2020-12-11 14:13:51 · 674 阅读 · 0 评论 -
Linux防火墙-iptables与firewalld
文章目录1.步骤2.iptables命令解释1.步骤iptables有一个全局策略:要么全局DROP,要么全局ACCEPT,所以如果你设定了你需要的防火墙规则,首先先要将所有iptables先accept,接着安装你设定的防火墙规则,最后全局DROP掉即可若服务器本身就有防火墙策略iptables -P INPUT ACCEPTiptables -Fiptables -A INPUT -s XXXX -j ACCEPT ##目的是为了能够登录到该服务器,后面会做全局DROP安装你的防火墙原创 2020-12-07 17:27:01 · 381 阅读 · 0 评论 -
EPERM pthread_create
文章目录1.问题2.解决办法1.问题以root身份运行时,pthread_create优先级线程返回EPERM2.解决办法echo $$>/sys/fs/cgroup/cpu/tasks则可以恢复参考:https://github.com/coreos/bugs/issues/410原创 2020-11-19 11:55:54 · 607 阅读 · 0 评论 -
Linux配置ntp同步时间,Linux的系统时钟与硬件时钟 ,Linux定时任务crontab与Linux开机启动项
文章目录1.Linux配置ntp同步时间2.Linux的系统时钟与硬件时钟3.Linux定时任务crontab与Linux开机启动项1.Linux配置ntp同步时间服务端IP 192.168.1.101 客户端 192.168.1.88(1)服务端需要配置ntpd服务(2)客户端需要配置ntpdate或者配置ntpd服务ntpd的server端的配置:1.首先配置ntpd服务vi /etc/ntp.conf配置文件中一般有restrict default语句,#掉转载 2020-11-19 11:31:13 · 2058 阅读 · 0 评论 -
CentOS7配置kdump
文章目录1.kdump简介2.配置kdump1.kdump简介kexec是一个快速启动机制,允许通过已经运行的内核的上下文启动一个Linux内核,不需要经过BIOS。BIOS可能会消耗很多时间,特别是带有众多数量的外设的大型服务器。这种办法可以为经常启动机器的开发者节省很多时间。kdump是一个新的,而且非常可信赖的内核崩溃转储机制。崩溃转储数据可以从一个新启动的内核的上下文中获取,而不是从已经崩溃的内核的上下文。当系统崩溃时,kdump使用kexec启动到第二个内核。第二个内核通常叫做捕获内转载 2020-10-27 16:29:56 · 2589 阅读 · 0 评论 -
Linux自启动服务失败问题原因
文章目录1.查看自己服务具体错误信息2.使用systemctl列出启动失败的服务1.查看自己服务具体错误信息systemctl status zk_exporter2.使用systemctl列出启动失败的服务(1)列出启动失败的服务[root@localhost ~]# systemctl list-units --state failed UNIT LOAD ACTIVE SUB DESCRIPTION● httpd.service loaded转载 2020-08-27 08:44:55 · 10670 阅读 · 0 评论 -
使用RPM包相关问题总结
文章目录1.rpmdb: Thread died in Berkeley DB library2.Red Hat 操作系统 rpm 卸载软件提示"error: %preun( ) scriptlet failed, exit status 1"3.执行yum提示错误:rpmdb: BDB0113 Thread/process 424227/139826856310848 failed4.查看rpm包里面内容以及里面文件的内容1.rpmdb: Thread died in Berkeley DB libra转载 2020-08-08 11:37:45 · 395 阅读 · 0 评论 -
linux修改系统时间,查询linux系统重启记录
文章目录1.通过Linux指令的方式2.打开LInux的GUI界面进行配置1.通过Linux指令的方式修改系统当前的日期为19年11月12日,注意这个命令会让你的时分秒置为00:00:00date -s 11/12/19将你的时间设置为23:43:20date -s 23:43:202.打开LInux的GUI界面进行配置这种方式配置一定能成功,而且是永久的参考:链接...转载 2020-08-08 11:11:10 · 545 阅读 · 0 评论 -
实操strace
文章目录1.strace简介2.strace的2种用法3.strace使用案例1.strace简介 Strace是Linux中一个调试和跟踪工具。(1)可以通过strace找到问题出现在user层还是kernel层(2)进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备man strace2.strace的2种用法(1)一种是通过它启动要跟踪的进程 ,在原本的命令前加上strac转载 2020-05-30 15:46:58 · 333 阅读 · 0 评论 -
线程栈和进程栈
文章目录1.线程栈和进程栈的区别2.线程堆栈大小的使3.获取Linux 内存页大小的命令1.线程栈和进程栈的区别线程栈在linux下默认是8M大小,通过mmap开辟线程栈,线程栈的起始地址跟大小保存在pthread_attr_t 中。可以配合pthread_attr_setstack使用设置线程栈,由此看来线程栈在所进程的堆区,所以线程与其所属的进程共享进程的虚拟地址空间.typedef struct __pthread_attr_s{ int __detachstate; //分离转载 2020-05-26 00:20:42 · 1855 阅读 · 0 评论 -
mount系统调用初探
文章目录1.mount系统调用2.mount的flags和data3.Linux系统调用-- mount/umount函数详解1.mount系统调用但是注册一个文件系统后不代表这个文件系统就被马上使用了,就像你注册了一个账号但是不代表你登录了一样,对于文件系统来说这个登录就相当于“挂载(mount)”。一个文件系统的file_system_type里有两个主要成员,一个是文件系统的名字,一个是mount这个文件系统的方法(其它参数也很重要,但重点就是这两个)。(1)名字就是一个id,唯一标记转载 2020-05-25 18:36:14 · 829 阅读 · 0 评论 -
查看硬盘状态和Linux下对LVM逻辑卷分区大小调整
文章目录1.查看磁盘(硬盘)的状态2.Linux下对LVM逻辑卷分区大小调整 [针对xfs和ext4文件系统]1.查看磁盘(硬盘)的状态执行lsscsi查看所有可插拔设备(偏底层)[0:0:3:0] disk ATA HGST HUS726060AL T7JM /dev/sdd[0:0:4:0] disk ATA HGST HUS726060AL T7JM /dev/sde[0:0:5:0] disk ATA HGST HU转载 2020-05-20 09:43:18 · 3494 阅读 · 0 评论 -
通过/proc查看Linux内核态调用栈来定位问题
文章目录1.定位一个“运行慢”的进程2.strace -cp 272883. pstack 272883.进程状态和WCHAN字段4.进程有什么活动或者完全挂死了?5.用/proc文件系统查看内核态信息1.定位一个“运行慢”的进程一个DBA想知道为什么他的find命令运行起来"非常慢",并且很长时间都没有返回任何结果。了解环境之后,我对这个问题的起因有一个直觉的答案,但是他问我,对于这种正在发生中的问题,有没有系统性的方法立刻进行定位。[root@oel6 ~]# ps -ef | grep f转载 2020-05-12 11:47:11 · 1317 阅读 · 0 评论 -
为什么/usr/include/linux/stddef.h是空的?
文章目录1.首先可以测试OS是否有stddef.h头文件?1.首先可以测试OS是否有stddef.h头文件?gcc -E - <<<'#include<stddef.h>' | grep stddef.h通常情况下C库的头文件在/usr/lib/中,在ubuntu15.04上/usr/include/linux/stddef.h是空的,在Centos上,是有内容的,内容如下:#ifndef _LINUX_STDDEF_H#define _LINUX_STDDEF转载 2020-05-08 21:00:30 · 1719 阅读 · 0 评论 -
linux 系统下查看raid信息,以及磁盘信息
文章目录1.软件raid和硬件raid2.查看raid相关的管理工具3.单块硬盘做raid0和不做raid的区别4.RAID1的容量减半是什么意思?1.软件raid和硬件raid软件raid:只能通过Linux系统本身来查看cat /proc/mdstat可以看到raid级别,状态等信息。硬件raid: 最佳的办法是通过已安装的raid厂商的管理工具来查看,有cmdline,也有图形界面 # /usr/dpt/raidutil -L all2.查看raid相关的管理工具dme转载 2020-05-08 20:36:54 · 8605 阅读 · 0 评论 -
linux下如何定位CPU占用高的进程的问题点
文章目录1.Top+pstack+gdb的组合拳2.Top用法3.pstack用法4.GDB调试运行中程序的方法1.Top+pstack+gdb的组合拳(1)用top命令找到最占CPU的进程 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 22688 root 20 ...转载 2020-04-18 22:04:26 · 380 阅读 · 0 评论 -
执行umount 的时候却提示:device is busy 的处理方法
文章目录1.mount -f强制卸载不行2.解决办法1.mount -f强制卸载不行[root@web2-server yum.repos.d]# umount /mnt/cdrom/ -f //强制卸载也不行umount2: 设备或资源忙umount: /mnt/cdrom: device is busy.(In some cases useful info about process...转载 2020-04-18 21:18:13 · 769 阅读 · 0 评论 -
gcc “undefined reference to“ 问题解决方法
文章目录1.linux下查找库文件所在位置2.如何查看库里面包含的函数3.烦人的undefined reference to4.gcc "undefined reference to" 问题解决方法1.linux下查找库文件所在位置 ldconfig -p | grep libcrypto2.如何查看库里面包含的函数使用linux系统的nm命令。很简单。在我用的时候遇到了一个问题:...原创 2020-04-18 17:47:21 · 5009 阅读 · 1 评论 -
Linux下GCC/clang编译器环境变量
文章目录1.关于LInux环境下的C/C++的默认包含路径2.gcc/g++默认的库搜索路径1.关于LInux环境下的C/C++的默认包含路径首先先来看看编译器的默认搜索路径都是那些,使用如下命令可以查询到GCC的默认头文件(#include<…>)搜索目录:#对于C:echo | gcc -v -x c -E -#对于C++:echo | g++ -v -x c+...原创 2020-03-27 14:48:46 · 3385 阅读 · 0 评论 -
中标麒麟操作系统了解的指令
文章目录查看操作系统详细信息:lsb_release -a查看操作系统发行信息:cat /etc/*release查看操作系统位数:getconf LONG_BIT参考:中标麒麟操作系统使用笔记https://my.oschina.net/kuanghy/blog/521633?p={{currentPage+1}}...原创 2020-03-19 19:19:20 · 11981 阅读 · 0 评论 -
ssh: Could not resolve hostname XXXXXXX: Temporary failure in name resolution
文章目录1.在debian环境中无法clone代码的问题1.在debian环境中无法clone代码的问题出现的问题如题目所示,解决方法如下:(1)debian要安装DNS如果是外网环境,参考:Linux_debian9_dns服务快速搭建https://www.jianshu.com/p/e4325cdc44e5?tdsourcetag=s_pcqq_aiomsg(2)如果是...原创 2020-03-14 18:58:34 · 5203 阅读 · 0 评论 -
Linux如何安装多个jdk?
文章目录1.官网下载JDK版本2.利用ssh工具上传安装包到Linux系统3.Linux用户安装的程序一般放在 /usr/local/下4.配置环境变量5.退出vi编辑器,使环境变量设置立即生效6.使用java -version命令查看当前系统正在使用的java版本1.官网下载JDK版本jdk-8u181-linux-x64.tar.gz2.利用ssh工具上传安装包到Linux系统传...转载 2020-03-07 10:48:11 · 949 阅读 · 0 评论