
【Linux】
linux系统相关的知识点。
paradox_1_0
自由、努力、向上。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对udp进行connect的特性总结和实践
特新概述:1:UDP中可以使用connect系统调用2:UDP中connect操作与TCP中connect操作有着本质区别。TCP中调用connect会引起三次握手,client与server建立连结.UDP中调用connect内核仅仅把peer端ip:port记录下来.(实现udp和对端socket的绑定,这一点特性是很重要的)3:UDP中可以多次调用connect,TCP只能调用一次connect. UDP多次调用connect有两种用途:1,指定一个新的ip:port连原创 2020-12-22 17:38:35 · 1061 阅读 · 0 评论 -
Linux进程网络流量统计方法及实现
1 前言在某些应用安全场景需要结合进程级网络连接、流入流出流量等数据直接分析出进程的异常。例如,在内网主机上是否存在持续恶意外传敏感数据的现象、在网络监控时发现服务器大量带宽被占用但不清楚由系统具体哪个进程占用。为此都需要获取更细粒度的进程级网络流量数据直接锁定异常服务。在Linux系统中都有相应开源工具采集网络连接、进程、流量等信息,像netstat命令查看主机网络连接信息,一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号);ps命令采集进程信息,包括pid, user, e转载 2020-10-20 12:28:11 · 1576 阅读 · 0 评论 -
Linux环境 网络流量统计/proc/net/dev和/proc/net/snmp
UDP:命令:cat /proc/net/snmp | grep UdpInDatagrams:udp收包量NoPorts: packets to unknown port received(未知端口接收数据包)InErrors:RFC4113描述:本机端口未监听之外的其他原因引起的UDP入包无法送达(应用层)目前主要包含如下几类原因:1.收包缓冲区满2.入包校验失败3.其他OutDatagrams:udp发包量RcvbufErrors:接收缓冲区溢出的包量S...原创 2020-10-20 10:15:12 · 7499 阅读 · 0 评论 -
Linux系统终端分屏——实用小技巧
一.使用screen分屏(只能上下分屏,不能左右分屏)1. 安装工具sudo apt-get install screen2. 上下分屏ctr + a 再按 shift + s3. 切换屏幕ctr + a 再按tab键4. 新建一个终端ctr + a 再按c5. 关闭一个终端ctr+ a 再按 x...原创 2020-09-21 10:53:26 · 4489 阅读 · 0 评论 -
Linux内存分配 . malloc、brk、mmap. 简单整理总结
Linux 的虚拟内存管理有几个关键概念:每个进程都有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址; 虚拟地址可通过每个进程上的页表(在每个进程的内核虚拟地址空间)与物理地址进行映射,获得真正物理地址; 如果虚拟地址对应物理地址不在物理内存中,则产生缺页中断,真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。 基于以上认...原创 2020-05-06 13:03:37 · 496 阅读 · 0 评论 -
Linux系统编程. IPC方式:共享内存和信号量 . 简单复习
信号量和共享内存简单实例练习:// 文件创建访问权限#define RWRWRW (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)int main(int argc, char *argv[]){ int fd = -1; char* ptr = nullptr; ...原创 2020-05-05 22:57:18 · 232 阅读 · 0 评论 -
Linux系统调用. 复习总结
在现代操作系统中,内核提供了用户进程与内核交互的一组接口。这些接口让应用程序受限的访问硬件设备,提供了创建新进程并于已有进程通信的机制,也提供了申请操作系统其他资源的能力。实际上提供这些接口主要是为了保证系统稳定可靠,避免应用程序恣意妄为。1. 用户态与内核的交互系统调用在用户空间进程和硬件设备之间添加了一个中间层。该层主要作用有三个:它为用户空间提供了一种硬件的抽象接口。例如:在读取...原创 2020-04-29 01:09:45 · 263 阅读 · 0 评论 -
Linux. shell编程习题集
1、编写hello world脚本#!/bin/bash# 编写hello world脚本 echo "Hello World!"2、通过位置变量创建 Linux 系统账户及密码#!/b...原创 2020-04-24 23:58:35 · 697 阅读 · 0 评论 -
Posix和System V的比较及IPC函数简单总结
在W.Richard.Stevens的《UNIX 网络编程 卷二:进程间通信》一书中,对常见的三种IPC(消息队列、信号量、共享内存)分别讲解了posix和system V标准的解决方案。对于这两种标准,起初的目的都是为了解决IPC的问题而形成的一种协议和规范,它们都给出了各自的IPC类型所必须满足的特性和相关的命名规范,这是无关于任何具体系统实现的。posix相对于system V可以说是比较新...原创 2020-04-24 21:36:19 · 1372 阅读 · 0 评论 -
Linux线程挂掉对整个进程的影响
严格的说没有“线程崩溃”,只是触发了SIGSEGV (Segmentation Violation/Fault)。如果没有设置对应的Signal Handler操作系统就自动终止进程(或者说默认的Signal Handler就是终止进程);如果设置了,理论上可以恢复进程状态继续跑(用longjmp之类的工具)线程有自己的 stack,但是没有单独的 heap,也没有单独的 address sp...原创 2020-04-14 17:45:24 · 6848 阅读 · 1 评论 -
linux内核链表数据结构的分析与实现
源码+调试+注释 = 学会!#include<Windows.h>#include<stdio.h>#include<stdlib.h>#include<iostream>/* stl */#include<vector>#include<algorithm>#include<queue>...原创 2020-04-14 13:48:00 · 184 阅读 · 0 评论 -
Valgrind:Details of Memcheck's checking machinery
Valid-value (V) bitsIt is simplest to think of Memcheck implementing a synthetic CPU which is identical to a real CPU, except for one crucial detail. Every bit (literally) of data processed, stored ...原创 2020-04-06 22:50:05 · 366 阅读 · 0 评论 -
聊聊 Linux 的匿名管道
相信很多在linux平台工作的童鞋, 都很熟悉管道符 '|', 通过它, 我们能够很灵活的将几种不同的命令协同起来完成一件任务.就好像下面的命令:echo 123 | awk '{print $0+123}' # 输出246不过这次咱们不来说这些用法, 而是来探讨一些更加有意思的, 那就是 管道两边的数据流"实时性" 和 管道使用的小提示.其实我们在利用管道的时候, 可能会不经意的...转载 2020-04-04 11:50:53 · 167 阅读 · 0 评论 -
聊聊Linux IO(下)
接上一篇Page Cache 的同步广义上Cache的同步方式有两种,即Write Through(写穿)和Write back(写回). 从名字上就能看出这两种方式都是从写操作的不同处理方式引出的概念(纯读的话就不存在Cache一致性了,不是么)。对应到Linux的Page Cache上所谓Write Through就是指write(2)操作将数据拷贝到Page Cache后立即和下层进...转载 2020-04-04 11:32:27 · 227 阅读 · 0 评论 -
聊聊Linux IO(上)
编者语最近在看 Redis 持久化的相关原理,antirez 在他的 《Redis 持久化解密》(链接见文末)一文中说过,数据库中带有持久化的写操作分为如下几个步骤:客户端发送写操作命令和数据;(数据在客户端内存) 服务端通过网络收到客户端发来的写操作和数据;(数据在服务端内存) 服务端修改内存中的数据,同时调用系统函数write进行操作,将数据往磁盘中写;(数据在服务端的系统内存缓冲...转载 2020-04-04 02:18:39 · 208 阅读 · 0 评论 -
Linux 虚拟地址空间布局
在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘就是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Address-Aware Executables标志也可为1:3)。这并不意味着内核使用那么多物理...转载 2020-01-03 16:58:38 · 289 阅读 · 0 评论 -
Linux 自旋锁
一.概述自旋锁是SMP架构中的一种low-level的同步机制。当线程A想要获取一把自旋锁而该锁又被其它线程锁持有时,线程A会在一个循环中自旋以检测锁是不是已经可用了。对于自选锁需要注意:由于自旋时不释放CPU,因而持有自旋锁的线程应该尽快释放自旋锁,否则等待该自旋锁的线程会一直在那里自旋,这就会浪费CPU时间。 持有自旋锁的线程在sleep之前应该释放自旋锁以便其它线程可以获得自旋锁...转载 2019-12-28 17:19:54 · 307 阅读 · 0 评论 -
Linux下的零拷贝函数splice简单测试实例
本测试实例是由splice构造的一个echo服务器。linux服务端代码:#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <assert.h>#include <stdio.h>#include <unist...原创 2019-12-21 16:42:44 · 446 阅读 · 0 评论 -
【Linux深入】epoll源码剖析
引入之前讲了select、poll、epoll的区别,由于许多应用中都用到了epoll,例如Netty、Redis等等,所以就来深入学习一下,现在我们就来剖析一下epoll的源码 我先来剖析理解epoll源码的基础:主要的数据结构,然后再来解析epoll主要的三个方法:epoll_create()、epoll_ctl()、epoll_wait()。主要的数据结构1.eventpoll...转载 2019-12-16 14:58:38 · 331 阅读 · 0 评论 -
原子操作 . 原理与底层实现
一.概述原子操作(atomic operation)指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。现代操作系统中,一般都提供了原子操作来实现一些同步操作,所谓原子操作,也就是一个独立而不可分割的操作。在单核环境中,一般的意义下原子操作中线程不会被切换,线程切换要么在原子操作之前,要么在原子操作完成之后。更广...原创 2019-12-13 19:40:15 · 7599 阅读 · 0 评论 -
Linux 系统安全和用户管理权限相关知识总结
查看所有用户的用户和组相关信息:cat /etc/passwd各字段的含义:用户登录名:用户密码:账号ID:组ID:用户账户的文本描述:用户的HOME目录:用户默认shell查看指定用户的相关账户信息:cat /etc/passwd | grep root简洁命令:groups:查看当前登录用户的组内成员group test:查看test用户所在组以及...原创 2019-12-04 11:16:28 · 442 阅读 · 0 评论 -
Linux 虚拟地址到物理地址的转换
概念:虚拟地址和物理地址的概念CPU通过地址来访问内存中的单元,地址有虚拟地址和物理地址之分,如果CPU没有MMU(Memory Management Unit,内存管理单元),或者有MMU但没有启用,CPU核在取指令或访问内存时发出的地址将直接传到CPU芯片的外部地址引脚上,直接被内存芯片(以下称为物理内存,以便与虚拟内存区分)接收,这称为物理地址(Physical Address...转载 2019-12-03 19:00:40 · 555 阅读 · 0 评论 -
Linux下如何构建一个资源监视器(原理和方法)
对于Linux系统,各种关于系统内核的活动信息都可以在/proc/stat文件中找到,该文件记录了自系统第一次启动以来的所有内核的相关数据,下面对文件内容各字段做一点说明:这些数字指明了CPU执行不同的任务所消耗的时间(从系统启动开始累计到当前时刻)。时间单位是USER_HZ或jiffies(通常是百分之一秒)。这些数据列的含义如下,我们从左至右逐一认识:•user:正常的进程在用户...原创 2019-12-03 15:19:38 · 774 阅读 · 0 评论 -
Linux学习资源网(公社)
地址:https://linux.linuxidc.com/原创 2019-12-03 13:25:18 · 297 阅读 · 0 评论 -
Linux下一段获取cpu主频的程序处理正确吗?
源程序是这样的:#include <stdio.h>#include <errno.h>#include <sys/types.h>#include <unistd.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#in...原创 2019-12-02 18:28:47 · 334 阅读 · 0 评论 -
baidu-brpc学习之简单使用实例编写
rpc_proto文件:syntax="proto2";package example;option cc_generic_services = true;//=====service 1message EchoRequest { required string message = 1;};message EchoResponse { require...原创 2019-11-28 20:22:53 · 1362 阅读 · 0 评论 -
gdb调试完整显示字符串信息设置方法
set print elements number-of-elementsset print elements unlimitedSet a limit on how many elements of an array gdb will print. If gdb is printinga large array, it stops printing after it has...原创 2019-11-26 14:44:28 · 1223 阅读 · 0 评论 -
VS2019跨平台编译Linux程序时找不到系统include文件的问题
编辑项目属性——>复制源:修改正确的源目录,将复制源选项改为"是"。原创 2019-11-25 10:59:46 · 2915 阅读 · 0 评论 -
Linux线程通信eventfd
概述eventfd是linux新加入的API(2.26.22内核之后),为用户空间应用程序提供等待(wait)和通知(notify)机制,函数eventfd创建的fd可以加入epoll。eventfd()创建一个“eventfd对象”, 通过它能够实现用户态程序间(我觉得这里主要指线程而非进程)的等待/通知机制,以及内核态向用户态通知的机制(未考证)。此对象包含了一个被内核所维护的计数(ui...原创 2019-11-23 17:06:42 · 450 阅读 · 0 评论 -
Linux select一网打尽
select, 你可以不用它,但你不能不了解它。通过阅读本文,可以帮你理清select的来龙去脉, 让你从中了解到: 我们常说的select的1024限制指的是什么 ?怎么会有这样的限制? 都说select效率不高,是这样吗?为什么 ? select使用中有坑吗? 注:本文的所有内容均指针对 Linux Kernel, 当前使用的源码版本是 5.3.0原型...转载 2019-11-23 11:31:41 · 384 阅读 · 0 评论 -
Ubuntu下的apt包管理工具使用总结
概述:Advanced Packaging Tool(APT)apt-cache和apt-get是apt包的管理工具,他们根据/etc/apt/sources.list里的软件源地址列表搜索目标软件包、并通过维护本地软件包列表来安装和卸载软件。操作命令:apt-get:sudo apt-get update : 根据源地址列表更新本地软解包列表;sudo apt-get...原创 2019-11-21 18:53:55 · 547 阅读 · 0 评论 -
Ubuntu下netlink套接字测试实例
此项目在Linux ubuntu 4.4.0-21-generic实际环境中正常运行。1.sender.c用户态netlink程序#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <string.h>#include <linux/netl...原创 2019-11-01 21:03:20 · 747 阅读 · 0 评论 -
Ubuntu下安装mysql数据库
第一步:安装mysql服务$ sudo apt-get install mysql-server在安装过程中需要设置密码,填写即可:完成按装之后执行下面两条安装指令:$ sudo apt-get install mysql-client$ sudo apt-get install libmysqlclient-dev验证安装是否成功:$ sudo netstat...原创 2019-10-30 10:52:26 · 312 阅读 · 0 评论 -
Ubuntu安装ssh服务器
一.安装ssh服务器$ sudo apt-get install openssh-server等待安装完成!二.测试是否安装成功$ ps -s | grep ssh三. 启动ssh服务器$ /etc/init.d/ssh start 或者 $ sudo service ssh start四.查看ssh服务是否启动$ sudo ps -e | grep s...原创 2019-10-29 19:40:45 · 167 阅读 · 0 评论 -
彻底理解Linux的各种终端类型以及概念
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-10-27 19:03:27 · 280 阅读 · 0 评论 -
Linux下的umask函数简单总结
umask函数为进程设置文件模式创建屏蔽字,并返回以前的值。(这是少数几个没有出错返回的函数中的一个)#include<sys/stat.h>mode_t umask(mode_t cmask);cmask是由下表列出的9个常量中的若干个按位”或“构成:st_mode屏蔽字 含义 值...原创 2019-10-27 17:29:58 · 1019 阅读 · 0 评论 -
Kali linux系统下vsftp服务器安装(开启ftp服务)
这里只对ksli linux环境下vsftp的安装做一个简单的介绍,以能正常运行并访问为目的,对其中的参数和配置文件不做深入分析,如果可能,这些细节的东西后面再总结。第一步:安装vsftpd服务器$apt-get install vsftpd第二步:创建一个ftp用户文件夹mkdir /home/ftpuser第三步:新建ftp用户,并指向它的主目录和所有的shell...原创 2019-10-23 17:38:12 · 5136 阅读 · 0 评论 -
Linux下C 执行shell命令的方法总结
1.system()系统调用extern int system (const char *__command) __wur;例子:system("ls -l ./");注意:此函数是阻塞调用的。2.、使用vfork()新建子进程,然后调用exec函数族这里对fork()和vfork()函数做一点说明:vfork函数的调用序列和返回值都和fork相同,但两者语义不同。vf...原创 2019-10-14 18:42:26 · 1928 阅读 · 0 评论 -
Linux下(屏障)barrier同步线程实例
1.API详解屏障(barrier)是协调多个线程并行工作的同步机制。屏障允许每个线程等待,知道所有的合并线程都到达某一点,然后从该点继续执行。可以看到,pthread_join函数就是一种屏障,但屏障的概念更加广泛,其允许任意数量的线程等待,直到所有线程完成处理工作阻塞在预先设置的点(也就是调用pthread_barrier_wait函数的地方),线程不需要退出。所有线程到达barrier后...原创 2019-06-15 16:35:05 · 1572 阅读 · 0 评论 -
Linux线程同步之条件变量详解
1.条件变量相关调用函数#include<pthread.h>int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr *restrict attr);int pthread_cond_destroy(pthread_cond_t *cond);//这两个函数返回值:0成功,...原创 2019-06-16 15:41:19 · 331 阅读 · 0 评论