首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Linux
chirpyli
创建于2021-12-03
订阅专栏
分享Linux的使用,以及操作系统,Linux内核等技术文章
等 2 人订阅
共18篇文章
创建于2021-12-03
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Linux端口扫描与开放指定端口方法
端口扫描 在开发,调试,测试中,经常需要查看某台机子有没有开放指定的断口,这里列出了两种常用的查找Linux系统上哪些端口向外部开放的方法。当然,不止这两种方法,也可以自己写一个端口扫描工具。具体实现
SSH设置免密登录
为了工作方便,我们经常需要在两台机器之间进行免密登录设置,比如A机器免密登录B机器。设置SSH免密登录步骤如下:
Protocol Buffers工作原理
这里记录一下学习与使用Protocol Buffer的笔记,优点缺点如何使用这里不再叙述,重点关注与理解Protocol Buffers的工作原理,其大概实现。 我们经常使用Protocol Buffer进行序列化与反序列化。理解Protocol Buffer的工作原理,就要理…
顺序锁
顺序锁与读写自旋锁非常类似,只是赋予了写者较高的优先级:即使在读者正在读的时候也允许写者继续运行。这样的好处是写者不用等待(除非另一个写者正在写),缺点是有些时候读者不得不反复多次读相同的数据直到它获得有效的副本。 每个顺序锁就是包括两个字段的seqlock_t结构:一个类型为…
自旋锁
自旋锁应该是Linux内核中使用最多的锁了,其它锁很多都依赖自旋锁实现。自旋锁概念上简单,一个自旋锁是一个互斥设备,只能有2个值:"上锁"和"解锁"。它常常实现为一个整数值中的一个单个位,想获取一个特殊锁的代码测试相关的位,如果锁是可用的,这个"上锁"位被置位并且代码继续进入临…
Linux poll编程实例
相关定义poll实现的echo服务端代码
ECHO服务器的epoll实现代码(Linux C)
下面是echo服务端代码,在处理边缘触发时,一定要十分小心,另外这里的错误处理比较简单粗暴,实际的工程中错误处理比较麻烦。代码如下,采用边缘触发模式。
epoll边缘触发与水平触发
在网络编程中,会涉及到水平触发与边缘触发的概念,工程中以边缘触发较为常见,本文讲述了边缘触发与水平触发的概念,并给出代码示例,通过代码可以很清楚的看到它们之间的区别。 所以边缘触发需要一次性的把缓冲区的数据读完为止,也就是一直读,直到读到EGAIN(EGAIN说明缓冲区已经空了…
Linux内核OOM killer机制
程序运行了一段时间,有个进程挂掉了,正常情况下进程不会主动挂掉,简单分析后认为可能是运行时某段时间内存占用过大,系统内存不足导致触发了Linux操作系统OOM killer机制,将运行中的进程杀掉了。 Linux 内核有个机制叫OOM killer(Out Of Memory …
Linux下core dump
在linux下开发时,如果程序突然崩溃了,也没有任何日志。这时可以查看core文件。从core文件中分析原因,通过gdb看出程序挂在哪里,分析前后的变量,找出问题的原因。 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做…
Linux进程间通信——信号
信号(Signals)是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义了信号的处理…
Linux Shell编程
与其他语言类似,略。 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1。 Shell函数没有参数列表并不表示不能传参数,事实上,函数就像是迷你脚本,调用函数时可以传任意个参数,…
Linux下进程管理工具supervisor
supervisor是Linux下常用的一个进程管理工具。最常见的一个应用场景是监控服务器上的某个应用服务,如果该应用服务异常退出,则重启该服务,保证服务不被长时间中断。 安装好后可运行sudo service supervisor status查看安装后是否正在运行。 主要是…
Linux定时执行任务crontab
crontab可以定时执行任务,比如可以配置为每天几点执行什么任务,其实还可以配置为开机后执行一个任务。 这里用到@reboot,用法参考下面的示例。 编辑好后按CTRL+x,按提示保存退出即可。这样当机器重启时,就会执行挂载虚拟机共享文件夹任务。
Docker更换为国内镜像
在国内访问 Docker 官方的镜像,一直以来速度都慢如蜗牛。为了快速访问 Docker 官方镜像都会配置三方加速器,目前常用三方加速器有:网易、USTC、DaoCloud、阿里云。 现在 Docker 官方针对中国区推出了镜像加速服务。通过 Docker 官方镜像加速,国内用…
Linux进程间通信——管道
调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端。向这个文件读写数据其实是在读写内核缓冲区。pipe函数调用成功返回…
Git基础篇
Git是开源的分布式版本控制系统,可以说是开发人员必备了,每个程序员都应该掌握。这里主要讲Git的安装与配置,工作区、暂存区、版本库的概念以及常用的一些命令。 Ubuntu下可以运行以下命令安装:sudo apt install git,安装成功后可查看Git版本:git --…
日志库的设计思路
日志库的设计,抓住最核心的一条,就是日志从产生到到达最终目的地期间的处理流程。 一般而言,为了设计一个灵活可扩展,可配置的日志库,可将日志库抽象为4个部分:记录器、过滤器、格式化器、输出器四部分。 通过将日志库分为4个抽象,使之成了一个较为灵活可扩展的日志库。比如你想实现输出到…