Linux
文章平均质量分 79
Hani_97
Stay hungry,stay foolish。
展开
-
Linux内存管理之slab 2:slab API
Linux内存管理之slab 2:slab API1. kmem_cache_create1.1 kmem_cache_create (仅分配一个kmem_cache实例)未分配实际物理页1.2 slab 创建流程1.3 slab 与伙伴系统2. kmem_cache_alloc2.1 kmem_cache_create 和 kmem_cache_alloc 关系2.2 kmalloc 函数本质2.3 kfree 函数本质3. kmem_cache_zalloc (zero 清零)3.1 kmem_cach原创 2021-08-19 14:49:37 · 845 阅读 · 0 评论 -
linux syslog
linux syslog1. syslog 定义1.1 RFC31952. syslog 组成3. syslog配置3.1 3CD 配置syslog 日志服务器4. syslog api4.1. c api 代码示例:1. syslog 定义在Unix类操作系统上,syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。真实的例子:May 17 13:55:56 192.88.8.121 May 17 05:55:37 2021 H原创 2021-08-06 10:54:53 · 912 阅读 · 0 评论 -
Linux 锁机制(4)之信号量
Linux 锁机制(4)之信号量参考之前的博客,这里不再赘叙。多线程(11)多线程同步之信号量(Linux实现)https://blog.csdn.net/lqy971966/article/details/104534306原创 2021-08-02 15:45:54 · 160 阅读 · 0 评论 -
Linux 锁机制(5)之互斥,读写,信号量和自旋锁总结比较
Linux 锁机制(4)之互斥,读写和自旋锁总结比较1. 互斥,读写和自旋锁总结比较1.1 选择锁的几个参考:1.1.1 首选互斥锁1.1.2 执行时间短/临界区小,选择自旋锁1.1.3 如果能区分出读写操作,读写锁就是第一选1.2 互斥锁和自旋锁的比较(成本,睡眠,中断)锁的相关文章多线程(4)什么是锁?锁机制,死锁等说明https://blog.csdn.net/lqy971966/article/details/104527787Linux 锁机制(1)之互斥量 mutexhttps://b原创 2021-07-26 17:07:23 · 295 阅读 · 0 评论 -
Linux 锁机制(1)之互斥量 mutex
Linux 锁机制(1)之互斥量 mutex1 互斥量1.1 互斥和同步区别2 互斥量接口API(linux)3 互斥量存在的问题3.1 问题(两种状态,经常死锁)3.2 解决:(+条件变量)3.3 条件变量的作用:4 条件变量: pthread_cond_t4.1 条件变量的使用及具体实现4.2 条件变量接口5 互斥量和条件变量使用伪代码6 互斥量和条件变量代码例子参考1 互斥量互斥: 是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。互斥量: 用来确保一个线程独占一个资源的访问。原创 2021-07-26 14:23:30 · 386 阅读 · 0 评论 -
Linux RCU机制+内存屏障
Linux RCU机制1. RCU1.1 RCU 背景(读写锁的问题)1.1.1 读写锁(写独占,读共享,写锁优先级高)1.1.2 读写锁的缺点(写独占时不可读)1.1.3 RCU 是对读写锁的优化/替换,解决读写互斥问题(随时读,写互斥)1.2 RCU 定义(读,拷贝更新: 随时读,写互斥)1.3 RCU 应用场景(链表)1.3.1 多读少写的情况:典型应用场景 - 链表1.4. 宽限期1.5 RCU 优缺点1.6 RCU 机制实现的一个基本前提:不能被阻塞2. 设计思想(新老指针替换,避免加锁)2.1原创 2021-07-22 10:39:36 · 1541 阅读 · 1 评论 -
多进程和多线程间通信总结[一]
进程间通信和线程间通信总结1. 进程间通信1.1 socket - 网络中进程间通信1.1.1 socket1.1.2 代码示例1.2 消息队列 - 同一主机上的进程通信方式1.2.1. Linux中的消息队列其实就是一个文件。1.2.2. 消息队列的本质其实是一个内核提供的链表。1.2.3. 消息队列的缺点1.2.4 消息队列-ftok msgget msgsnd msgrcv msgctl 接口1.2.1 伪代码示例:1.3 信号量(Semaphore) - 同一主机上的进程通信方式1.3.1 信号量接原创 2021-07-01 11:11:53 · 876 阅读 · 0 评论 -
Linux内存管理之slab 1:slab原理(+buddy伙伴系统)
Linux内存管理之slab 1:slab原理1. 为什么有了Buddy(伙伴系统)还需要slab?1.1 什么是伙伴系统?1.1.1 伙伴系统思想1.2 伙伴系统例子说明1.3 伙伴系统能解决的问题2 为什么需要引入slab算法?2.1 伙伴系统的缺点2.2 伙伴系统的缺点例子说明3. slab 能解决什么问题?3.3 slab 分配例子4. slab系统核心思想是什么?4.1 slab核心思想:对象管理内存4.2 slab的对象/内存池思想4.3 slab中对象是什么?4.4 cache是内存中的区域,原创 2021-01-22 11:07:57 · 8977 阅读 · 1 评论 -
ping 命令说明-查看谁占用ip + ping过程解析
ping 命令说明1. 问题:有人使用了某个特定ip,但是不知道是谁,使用 ping -a ip2. ping 结果字段说明:字节=32 时间<1ms TTL=64 说明3. ping 命令参数大全(cmd: ping/?)1. 问题:有人使用了某个特定ip,但是不知道是谁,使用 ping -a ip-a 将地址解析为计算机名。C:\Users\hani>ping -a 192.168.33.111正在 Ping wx [192.168.33.111] 具有 32 字节的数据:来自原创 2020-12-18 15:08:58 · 2992 阅读 · 0 评论 -
timerfd及timerfd_create,timerfd_settime,timerfd_gettime函数详解
timerfd及timerfd_create,timerfd_settime,timerfd_gettime函数1. timerfd 介绍1.1 man timerfd_create2. timerfd_ 三个函数接口2.1 timerfd_create 参数说明:2.2 timerfd_settime 参数说明:2.3 timerfd_gettime 参数说明:3. man 自带timerfd代码示例参考:1. timerfd 介绍timerfd是Linux为用户程序提供的一个定时器接口。这个接口基原创 2020-12-11 14:50:09 · 6415 阅读 · 1 评论 -
Linux中 shell 脚本获取当前工作目录的方法
Linux中 shell 脚本获取当前工作目录的方法1. 示例2. 注意:参考:1. 示例test.shtarget_dir=$(cd $(dirname $0); pwd)echo $target_direcho ${target_dir}结果:[root@glusterfs home]# ./dir.sh /home/home说明:dirname $0,取得当前执行的脚本文件的父目录cd 切换到脚本文件的父目录pwd 显示目录2. 注意:echo $(target_原创 2020-12-08 17:32:53 · 3435 阅读 · 0 评论 -
wait 和 waitpid 详解及代码示例
wait 和 waitpid 详解及代码示例1. 父子进程处理历史及父进程处理方法2. wait2.1 wait 功能2.2 wait 接口2.3 wait 原理2.3.1 wait 源码实现2.4 wait 参数:2.5 wait 返回值:2.6 wait 代码示例3. waitpid3.1 waitpid 功能3.2 waitpid 接口3.3 waitpid 原理3.4 waitpid 参数:3.5 waitpid 返回值:3.6 waitpid 代码示例参考1. 父子进程处理历史及父进程处理方法原创 2020-12-07 14:32:42 · 1081 阅读 · 0 评论 -
Linux ps -aux 和 ps -ef 查看进程信息说明+ps查看进程中的线程
ps -aux 和 ps -ef 查看进程信息说明1. ps -aux | grep xxx1.1 ps -aux 输出格式:1.2. 例子1.3. 说明2. ps -ef | grep xxx2.1 ps -ef 输出格式:2.2 例子3. Linux 虚拟内存管理的核心概念之一1. ps -aux | grep xxx1.1 ps -aux 输出格式:USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND用户 进程ID cpu占用率 内存占用原创 2020-12-03 15:55:46 · 4842 阅读 · 0 评论 -
linux 时间 time(1)-时间相关结构体和函数详解
linux 时间相关结构体和函数详解1. 时间概念1.1 本地时间(locale time)1.2 格林威治时间(Greenwich Mean Time GMT )1.3 时间协调时间 (Universal Time Coordinated UTC )1.3.1 UTC 出现缘由1.3.2 UTC2. linux 时间的处理2.1 time_t2.1.1 time_t 代码例子12.1.2 time_t 代码例子22.1.3 time_t 代码例子32.2 timeval2.2.1 timeval 代码例子原创 2020-08-13 11:20:17 · 1045 阅读 · 0 评论 -
hosts 域名配置
hosts 域名配置为什么会有域名呢?1. windows 下 hosts1.1 hosts 作用1.2 hosts 原理1.3 hosts 历史1.4 存储位置2. linux 下 hosts2.1 linux hosts 介绍2.2 修改/查看网址域名与其对应的IP地址建立一个关联“数据库”如: www.baidu.com 1.2.3.4 //假设是1.2.3.4为什么会有域名呢?IP地址不方便记忆,所以有了域名1. windows 下 hostsHosts是一个没有扩展名的系统文件,可以原创 2020-08-06 17:16:52 · 8334 阅读 · 0 评论 -
linux 配置文件修改ip地址(4)网卡绑定vfio-pci 新网卡ifconfig看不到 ssh总断开
linux 配置文件修改ip地址(4)网卡绑定vfio-pci 新网卡ifconfig看不到 ssh总断开1. 网卡绑定vfio-pci1.1 背景:1.2 解决2. 新安装的网卡 ifconfig看不到2.1 背景:2.2 解决3. 新安装的网卡 ssh总断开2.1 背景:2.2 解决1. 网卡绑定vfio-pci1.1 背景:起容器,报 vfio-pci 没有安装./dockerrun...原创 2020-04-22 17:22:31 · 1681 阅读 · 0 评论 -
文件描述符
文件描述符1. 作用:2. 场景:3. 形式:4. 限制:1. 作用:是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件2. 场景:所有执行I/O操作的系统调用都通过文件描述符;3. 形式:文件描述符是一个简单的非负整数,用以表明每个被进程打开的文件三个标准文件描述符: 3个标准文件描述符,标准输入0、标准输出1、标准错误输出24. 限制:查看限制1.ulimi...原创 2020-04-09 19:13:34 · 266 阅读 · 0 评论 -
kdb基本使用
kdb基本使用进入 ESC + KDB退出 go 删除断点 然后go出去go:继续程序执行ss:单步执行程序断点指令包括bp、bl、bpa、bph、bpha、bc、be和bdbc :清除断点bc 0md:显示内存内容bt:显示调用堆栈参考:https://blog.csdn.net/oyangyufu/article/details/6245931https://blo...原创 2020-04-09 19:06:20 · 4598 阅读 · 1 评论 -
定位解决问题/经验/教训(2)-access和errno 问题
errno 问题1.问题:xxx代码读取不到 access("/var/tmp/dir") 这个目录2. 定位:通过打印 access 函数结束的 errno3. 结果4. 解决1.问题:xxx代码读取不到 access("/var/tmp/dir") 这个目录代码是普通用户权限 普通用户权限无法访问 该目录 故 access 访问失败2. 定位:通过打印 access 函数结束的 er...原创 2020-04-09 16:47:09 · 667 阅读 · 0 评论 -
Linux 文件权限
Linux 文件权限1. ls -l 看文件权限的例子2. linux 文件权限介绍3. chmod file...3.1 文件所有者分类3.2 设这文件权限例子4. 权限2进制,8进制表示法5. 文件类型参考1. ls -l 看文件权限的例子[root@hani home]# lltotal 0drwxr-xr-x 3 root sftp 76 Mar 31 22:20 sftp...原创 2020-04-09 10:22:57 · 214 阅读 · 0 评论 -
likely unlikely
__builtin_expect1. 代码:2. 解释:3. 原因:参考:1. 代码:在很多源码如Linux内核,我们都能看到likely()和unlikely()这两个宏。通常这两个宏定义是下面这样的形式。 #define LIKELY(x) __builtin_expect(!!(x),1) #define UNLIKELY(x) __builtin_expect(!!(x),0)...原创 2020-04-08 17:15:20 · 188 阅读 · 0 评论 -
通俗易懂说多路复用(4)fcntl
通俗易懂说多路复用(4)fcntl1. fcntl()2. 代码例子3.1 代码例子2.2 解释参考:1. fcntl()功能: fcntl 可实现对指定文件描述符的各种操作,其函数原型如下: 原型: int fcntl(int fd, int cmd, ... /* arg */ );其中,操作类型由cmd决定。cmd可取如下值: F_DUPFD :复制文件描述符 F_DUPFD_C...原创 2020-04-08 16:12:00 · 420 阅读 · 0 评论 -
打桩 桩代码
打桩 桩代码1. 打桩 : 假设输出固定值2. 桩代码 :1. 打桩 : 假设输出固定值举个例子,中间有个求和函数,我假定它返回5,然后再对参数设置,进行验证结果是不是5如:return 5;调试结束后将桩代码删除2. 桩代码 :桩代码给出的实现是临时性的/待编辑的又能够使程序员可以暂时不编辑这段代码参考:https://blog.csdn.net/imjaron/article...原创 2020-04-07 14:07:25 · 2190 阅读 · 0 评论 -
开源协议汇总
开源协议汇总1. GPL2. LGPL3. Apache Licence 2.04. BSD5. MIT参考1. GPLGPL(GNU General Public License)无论怎么使用,都必须开源和免费。2. LGPLLGPL(GNU Lesser General Public License)LGPL是GPL的一个为主要为类库使用设计的开源协议。LGPL 允许商业软件通过...原创 2020-04-03 17:30:12 · 269 阅读 · 0 评论 -
SQL注入与libinjection分析(2)Libinjection
SQL注入与libinjection分析(2)Libinjection1. 什么是Libinjection?2. 源码3. Libinjection处理流程3.1 Libinjection总的框架3.2 libinjection_is_sqli() 处理3.3 libinjection对特征码的定义4. 举例子5. Libinjection总结5.1 Libinjection库的优点参考1. 什...原创 2020-04-02 17:31:52 · 2980 阅读 · 0 评论 -
SQL注入与libinjection分析(1)SQL注入
SQL注入与libinjection分析(1)SQL注入1. SQL注入1.1 什么是SQL注入?1.2 为什么会有SQL注入?1.3 SQL注入举例1.4 SQL注入特点1.5 SQL注入攻击过程1.5.1 第一步:SQL注入点探测。1.5.2 第二步:收集后台数据库信息。1.5.3 第三步:猜解用户名和密码。1.5.4 第四步:查找Web后台管理入口。1.5.5 第五步:入侵和破坏。2. SQ...原创 2020-04-02 16:17:15 · 1178 阅读 · 0 评论 -
静态链接库和动态链接库
静态链接库和动态链接库1. 什么是库文件?1. 为什么需要库?2. 什么是库文件?2. 什么是静态链接库(.a/.lib)?2.1 静态链接库2.2 优点:2.3 缺点3. 什么是动态链接库(.so/.dll)?3.1 动态链接库3.2 优点参考1. 什么是库文件?1. 为什么需要库?每个程序都是由许多库组成的,因为你不可能什么东西都自己写,很多底层的,公共的都会连接已经写好的库。2. 什......原创 2020-03-30 21:08:21 · 902 阅读 · 0 评论 -
makefile[一]:编译选项,debug/release版本 + gcc 编译选项
makefile: wildcard eval call说明1. wildcard2. eval3. call1. wildcardwildcard 它被展开为已经存在的,使用空格分开的,匹配此模式的所有文件列表。一般我们可以使用“$(wildcard *.c) 来获取目录下所有的.c文件2. evaleval $(eval xxx) 意思是将xxx 的内容作为makefile 的一...原创 2020-03-27 17:50:00 · 12289 阅读 · 0 评论 -
ubuntu 切换root用户界面登录
ubuntu 切换root用户界面登录背景: ubuntu默认是非root用户登录图形界面的1. 输入 sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 2. 添加一行 greeter-show-manual-login=true 保存关闭3. 给root设置密码 sudo passwd root 密码4. sudo...原创 2020-03-27 12:09:44 · 2884 阅读 · 2 评论 -
正则表达式,notepad++正则及常用操作
正则表达式原创 2020-03-26 14:56:36 · 1943 阅读 · 0 评论 -
#define(1)define常用操作
关于宏#define IN、OUT和INOUT的说明1. 例子参考1. 例子在工程中会有类似于上面这种宏定义出现#ifndef IN #define IN#endif#ifndef OUT#define OUT#endif#ifndef INOUT#define INOUT#endif这些宏标记宏 表示输入参数,仅仅是一个标识作用,没有其他意思。参考https:/...原创 2020-03-23 10:48:41 · 1558 阅读 · 0 评论 -
Linux 环境变量 详解
环境变量参考参考https://www.cnblogs.com/tinywan/p/7224011.html?utm_source=itdadao&utm_medium=referral原创 2020-03-23 09:13:15 · 869 阅读 · 0 评论 -
Centos7使用wget修改为阿里云镜像源
Centos7使用wget修改为阿里云镜像源1.安装wgetyum install -y wget2.完事前都做备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup3.下载阿里云镜像文件wget -O /etc/yum.repos.d/CentOS-Base.repo http:/...原创 2020-03-19 20:03:50 · 7400 阅读 · 0 评论 -
Linux yum 命令及和 rpm apt 的区别
yum与apt的区别参考参考https://blog.csdn.net/qq_26182553/article/details/79869666原创 2020-03-19 11:38:45 · 923 阅读 · 0 评论 -
linux 配置文件修改ip地址(3)易错的网卡名
linux 配置文件修改ip地址(3)易错的网卡名1. 网卡一直起不来1. 网卡一直起不来在装openstack 时候 定位问题要清晰 网卡一直起不来,是因为网卡名字错了 名称是 ifcgx-ens1f0 里面的 name 是 ens1f0例如:1. ifconfig看到网卡名字是 eth02. /etc/sysconfig/network-scripts/目录下网卡的配置文件是:...原创 2020-03-19 11:33:35 · 554 阅读 · 0 评论 -
Linux scp命令
linux scp命令1. scp 功能2. 语法和参数3. 文件复制3.1 从本地复制到远程3.1.1 应用实例3.1.2 解释3.1.3 命令格式3.2 从远程复制到本地3.2.1 应用实例4. 目录复制4.1 从本地复制目录到远程4.1.1 应用实例4.2 从远程复制目录到本地4.2.1 应用实例5.端口复制6. 说明参考1. scp 功能scp 就是 secure copy一个在li...原创 2020-03-19 11:22:02 · 209 阅读 · 0 评论 -
Linux journalctl 命令
Linux journalctl命令1. journalctl 作用2. journalctl 的配置文件3. journalctl 用法3. journalctl 常用参数参考1. journalctl 作用查看所有日志(内核日志和 应用日志)journalctl 是 centos7 上专有的日志管理工具2. journalctl 的配置文件日志的配置文件 /etc/systemd/j...原创 2020-03-19 09:08:11 · 1958 阅读 · 0 评论 -
Linux stat 命令
linux stat 命令1. stat 作用2. stat 应用-查看文件修改时间3. 其他参考1. stat 作用stat命令主要用于显示文件或文件系统的详细信息2. stat 应用-查看文件修改时间查看一个文件什么时候修改的可以使用 : stat fileName由上例子可以看出Access 访问时间Modify 修改时间(修改文件内容时候改变)Change 状态改变时间(...原创 2020-03-18 20:55:45 · 256 阅读 · 0 评论 -
linux 系统版本信息命令查询大全
linux 系统版本信息命令查询大全查看命令参考查看命令uname -a # 查看内核/操作系统/CPU信息cat /proc/cpuinfo # 查看CPU信息hostname # 查看计算机名du -sh <目录名> # 查看指定目录的大小fdisk -l (观察硬盘实体使用情况,也可对硬盘分区)sblk (查看磁盘信息 - 列出所有可用块设备的信息查看逻辑C...原创 2020-03-09 15:00:00 · 645 阅读 · 0 评论 -
Linux 文件系统(3)du , df 和 free 命令
Linux 文件系统(3)du 和 df 命令1. du 概念:2. df参考1. du 概念:du estimates and displays the disk space used by files.可知du基于文件计算和显示磁盘占用情况显示每个文件和目录的磁盘使用空间~~~文件的大小2. dfThe df command reports the amount of availa...原创 2020-03-09 14:35:54 · 413 阅读 · 0 评论