Linux
xl365t
专注于音视频通话、视频会议、即时通信等
展开
-
CentOS release 6.10升级glib2.17
#>wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz#>wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz --no-check-certificate#>pwd#>ls#>ll#>tar zxvf glibc-2.17.tar.gz#>ll#>/bin/rm -rf glibc-2.14#>ll#>cd glibc-2.原创 2021-12-12 20:00:06 · 391 阅读 · 1 评论 -
排查cpu升高问题(strace -cp pid)
https://chowdera.com/2020/12/202012012115212269.html原创 2021-07-19 18:55:23 · 344 阅读 · 0 评论 -
lsof -n | grep deleted 解决/dev/vda1使用率100%问题
// 查看磁盘使用率为100%root@kms-01:/# df -hFilesystem Size Used Avail Use% Mounted onudev 471M 0 471M 0% /devtmpfs 99M 13M 86M 13% /run/dev/vda1 20G 20G 0 100% /tmpfs 493M 0 493M 0% /dev/.原创 2020-12-31 16:00:40 · 1214 阅读 · 1 评论 -
列出常见的信号,信号怎么处理?
1、常见的信号信号(signal)是很短的信息,可以被发送到一个进程或一组进程,发送给进程的唯一信息通常是一个数,以此来表示信号。信号的两个主要目的:让进程知道已经发生了一个特定的事件;强迫进程执行它自己代码中的信号处理程序。$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABR...原创 2018-07-15 22:37:01 · 2196 阅读 · 0 评论 -
标准库函数和系统调用的区别
一、标准库函数和系统调用的区别函数库调用:与用户程序相联系,在用户地址空间执行,属于过程调用,调用开销较小。系统调用:是操作系统的一个入口点,在内核地址空间执行,需要在用户空间和内核上下文环境间切换,开销较大。一般没有 库函数对文件的操作实际上是通过系统调用来实现的,因此使用库函数也有系统调用的开销。为什么不直接使用系统调用呢?因为读写文件通常是大量的数据(相对于底层驱动的系统调用所实现的数...原创 2018-07-15 22:39:04 · 1832 阅读 · 0 评论 -
linux 进程地址空间分布
在32位操作系统中,内存空间拥有4GB的寻址能力。操作系统会把高地址的空间分配给内核,称为内核空间。(1)内核空间:默认情况下,Windows将高地址的2GB空间分配给内核,Linux将高地址的1GB空间分配给内核。剩下的2GB或3GB的内存空间称为用户空间。在用户空间里,有许多地址区间有特殊的地位,一般来讲,应用程序使用的内存空间里有如下"默认"的区域。(2)栈:用于维护函数调用的上下文。栈通常...原创 2018-07-15 22:43:00 · 3218 阅读 · 0 评论 -
exit(), _exit(), return的区别
exit():清理I/0缓存区后再退出进程_exit():直接结束进程进入到内核中return:函数返回,如果返回的是main函数,则为退出程序exit()和_exit()的最大区别是:exit()函数在调用exit系统之前要检查文件的打开情况,把文件缓冲区的内容写回文件。_exit()函数直接将进程关闭,缓冲区的数据将会丢失。"缓冲I/O操作":对每一个打开的文件,在内存中都有一片缓冲区,每次读...原创 2018-07-15 22:44:14 · 278 阅读 · 0 评论 -
select 和 poll的用法
## select ##一、用户态select用法#include <sys/select.h>#include <sys/time.h>int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *excepts...原创 2019-03-14 21:08:20 · 1327 阅读 · 0 评论 -
epoll分析
一、用户态epoll用法#include <sys/epoll.h>int epoll_create(int size);// 创建一个epoll的句柄,size用来告诉内核这个监听的数目一共有多大。// 当创建好epoll句柄后,它就会占用一个fd值。在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。// 返回值:非负的文件描述符(fd)...原创 2019-03-15 20:29:35 · 531 阅读 · 0 评论 -
[多线程] pthread_cond_signal()和pthread_cond_wait()用法解析
pthread_mutex_t count_lock; //互斥量pthread_cond_t count_nonzero; //条件变量unsigned count;/* 线程1 */decrement_count(){ pthread_mutex_lock(&count_lock); while (count == 0) { p...原创 2019-04-26 17:08:17 · 7105 阅读 · 2 评论 -
进程、线程、多进程、多线程
一、进程和线程的区别(1)进程:资源分配的最小单位;线程:程序执行的最小单位(CPU调度和分派的基本单位)。(2)进程有独立的地址空间,每个进程都有自己的数据段、代码段和堆栈段;线程没有单独的地址空间,它包含独立的栈和CPU寄存器(同一进程内的线程共享进程的地址空间)。(3)一个进程崩溃后,在保护模式下不会对其它进程产生影响;一个线程死掉就等于整个进程死掉。(4)进程之间的通信只能通过进程通信的方...原创 2018-07-15 22:34:35 · 437 阅读 · 0 评论 -
如何定位内存泄漏
常见的内存错误:(1)内存分配未成功,却使用了它(2)内存分配成功,但尚未初始化就引用它(3)内存分配成功且初始化,但操作越过了内存的边界(4)忘记释放内存,造成内存泄漏(5)释放了内存却继续使用它以发生的方式来分类:(1)常发性内存泄漏,发生内存泄漏的代码会被多次执行到,每次执行都会导致一块内存泄漏(2)偶发性内存泄漏(3)一次性内存泄漏,发送泄漏的代码只会被执行一次(4)隐式内存泄漏,程序在运...原创 2018-07-15 22:24:00 · 12837 阅读 · 0 评论 -
ebtables 用法
ebtables是一个用于设置和维护以太网帧(Ethernet frames)规则表的应用程序。其中有三个主要的概念:表(tables)、链(chains)、目标(targets)# 链(chains)每组规则称为链,每个链都是一个有序的规则列表,可以匹配以太网帧。如果一个规则匹配到一个以太网帧,那么有一个处理规范告诉我们如何匹配到的帧,这个处理规范称为目标(targe原创 2017-06-02 16:05:14 · 5620 阅读 · 0 评论 -
iptables 用法
iptables用于设置、维护和检查Linux内核中IP包过滤规则的表。# 目标(targets)防火墙规则指定数据包的标准和目标。(1)ACCEPT:意味着让数据包(packets)通过(2)DROP:意味着数据包在这一层丢掉(3)QUEUE:意味着将包传送到用户层(4)RETURN:意味着停止遍历此链,并在前一个调用链的下一条规则中恢复。# 表(ta原创 2017-06-02 16:21:24 · 358 阅读 · 0 评论 -
mtrace的用法---Linux下内存泄漏检测
mtrace是GNU扩展函数,mtrace为内存分配函数(malloc, realloc, memalign, free)安装hook函数。这些hook函数记录内存的申请和释放的trace信息。这些trace信息可以用来发现内存泄漏和释放不是申请的内存。当调用mtrace,mtrace会检查环境变量MALLOC_TRACE。该环境变量应该包含记录trace信息的文件路径。如果文件可以被成功打开,它的大小被截断为0.原创 2017-06-23 14:03:01 · 2180 阅读 · 0 评论 -
VMware中Ubuntu编译和升级内核
1、VMware中创建一个Ubuntu的虚拟内存机,注意在设置内存和硬盘时要设置大一些(内存2G,硬盘180G)。最初配置的时候内存是1G,硬盘是20G,在编译的时候提示空间不够,用命令 df -h 查看,发现根目录文件系统/dev/sda1 的使用率为100%。因此重新创建了一个虚拟机,分配内存为1G,硬盘为80G,可以正常编译,reboot之后启动新版本kernel的时候显示"en原创 2017-07-07 16:55:51 · 2104 阅读 · 0 评论 -
Linux压缩解压命令
.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName ————————————原创 2017-11-15 09:44:13 · 263 阅读 · 0 评论 -
Linux内存管理
一、页框管理Linux采用4KB页框大小作为标准的内存分配单元。内核把物理页作为内存管理的基本单位,用struct page结构表示系统中的每个物理页。1、 非一致内存访问(Non-Uniform Memory Access, NUMA)给定cpu对不同内存单元的访问时间可能不一样,系统的物理内存被划分为几个节点(node)。在一个单独的节点内,任一给定CPU访问页面所需要原创 2017-11-16 18:59:23 · 246 阅读 · 0 评论 -
IO:阻塞、非阻塞、同步、异步
Network I/O:阻塞(blocking)、非阻塞(nonblocking)、同步(synchronous)、异步(asynchronous)I/O涉及到两个系统对象:(1)调用I/O的process(thread),(2)系统内核(kernel)。I/O操作发生时经历两个阶段:(1)等待数据ready,(2)将数据从内核拷贝到进程中。# 阻塞IO当用户进程调用了recvfrom这个系统调用...原创 2018-07-11 12:25:06 · 270 阅读 · 0 评论 -
select、poll、epoll解析
一、select#include <sys/select.h>#include <sys/time.h>int select(int nfds, fd_set *readfds, fd_set *writefds, d_set *exceptfds, struct timeval *timeout);void FD_CLR(int fd, fd_set *s...原创 2018-07-18 20:09:41 · 452 阅读 · 0 评论 -
写一个C程序判断系统是32或64位、大端或小端字节序
一、判断系统是32位或64位32位处理器一次只能处理32位,也就是4个字节的数据,虚拟地址空间的最大值是4G。64位处理器一次能处理64位,也就是8个字节的数据,虚拟地址空间的最大值是16T。32位处理器:系统指针(32位 ),long(32位),int(32位),short(16位)64位处理器:系统指针(64位 ),long(64位),int(32位),short(16位)#include &...原创 2018-07-15 22:10:31 · 4010 阅读 · 0 评论 -
mv操作的机制
mv的用法和原理原创 2017-03-09 22:14:50 · 2375 阅读 · 1 评论