Linux
文章平均质量分 65
Barry.Ji
无限进步, 无限可能
展开
-
Linux系统--sshfs挂载出现read: Connection reset by peer错误的解决方法
目录一 概述二 一般用法三 遇到的问题四 问题定位与解决一 概述SSHFS(SSH Filesystem)是一种通过普通ssh连接来挂载和与远程服务器或工作站上的目录和文件交互的文件系统客户端,其通过 SSH 文件传输协议(SFTP)挂载远程的文件系统并且在本地机器上和远程的目录和文件进行交互,实际场景中,我主要在挂载后创建各个库文件所在路径的软链接,用于交叉编译。二 ...原创 2019-12-06 14:08:50 · 7692 阅读 · 0 评论 -
Linux开发--mmap映射/dev/mem内存
/dev/mem是linux下的一个字符设备, 源文件是kernel/drivers/char/mem.c, 这个设备文件是专门用来读写物理地址用的。里面的内容是所有物理内存的地址以及内容信息。通常只有root用户对其有读写权限。 利用mmap和/dev/mem建立起直接读写系统物理内存的渠道。利用/dev/mem和mmap导出系统物理地址,免去了用户虚拟地址到内核逻辑地址的繁琐拷贝原创 2017-05-17 16:21:58 · 5578 阅读 · 1 评论 -
Linux系统--awk命令
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file [-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 va转载 2017-06-01 14:50:51 · 246 阅读 · 0 评论 -
Linux系统--时间戳计数器TSC
TSC 是时间戳计数器的缩写,它是 Pentium 兼容处理器中的一个计数器,它记录自启动以来处理器消耗的时钟周期数。在每个时钟到来时,该计数器自动加一。 因为 TSC 随着处理器周期速率的变化而变化,所以它提供了非常高的精确度。它经常被用来分析和检测代码。TSC 的值可以通过 rdtsc 指令来读取。TSC 的节拍还可以转换为秒,转换方法是将其除以 CPU 的时钟速率(可以从内核变转载 2017-06-07 21:27:13 · 7552 阅读 · 0 评论 -
Linux系统--浅谈标准I/O缓冲区
标准I/O库提供缓冲的目的是尽可能地减少使用read和write调用的次数。它也对每个I/O流自动地进行缓冲管理,从而避免了应用程序需要考虑这一点所带来的麻烦。不幸的是,标准I/O库最令人迷惑的也是它的缓冲。标准I/O提供了三种类型的缓冲:1、全缓冲:在填满标准I/O缓冲区后才进行实际I/O操作。常规文件(如普通文本文件)通常是全缓冲的。转载 2017-07-11 01:14:39 · 547 阅读 · 0 评论 -
Linux系统--ELF文件之可执行文件(Executable file)解析
Linux下ELF文件类型分为以下几种: 1、可重定位文件,例如SimpleSection.o; 2、可执行文件,例如/bin/bash; 3、共享目标文件,例如/lib/libc.so。 在Linux 可重定位文件 ELF结构一文中,我们已经分析了可重定位文件ELF结构。本文分析可执行文件的ELF结构。转载 2017-06-26 09:36:09 · 3731 阅读 · 0 评论 -
Linux系统--ELF文件之可重定位文件(Relocatable file)解析
Linux下ELF文件类型分为以下几种: 1、可重定位文件,例如SimpleSection.o; 2、可执行文件,例如/bin/bash; 3、共享目标文件,例如/lib/libc.so。 本文章中,我们会使用objdump,readelf,hexdump,nm等来分析一个linux中可重定位文件SimpleSection.o。转载 2017-06-26 09:53:13 · 5010 阅读 · 0 评论 -
Linux开发--时序竞态与解决办法
一、信号引起的竞态 竞态是指设备或系统出现不恰当的执行时序,而得到不正确的结果,由于时间片,或其他因素,导致该到达并响应的信号没有被响应,这就是由信号引起的竞态。 假设我们要写一个sleep函数,其中利用到了信号,编写的过程如下: 1.注册一个信号signal(SIGALRM,handler)。接收内核给出的一个信号。 2.调用alarm()函数。 3.p原创 2017-06-14 01:29:34 · 1413 阅读 · 0 评论 -
Linux开发--IO多路复用之epoll总结
1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口 epoll操作过程需要三个接口,分别如下:#inclu转载 2017-06-28 00:21:01 · 540 阅读 · 0 评论 -
Linux开发--相对时间
今天,再次碰到一个由于系统时间调整导致的bug。不得不再次查找完美的问题解决方案。虽然,按道理来说,系统时间进行重置之后,一些应用程序的行为出现异常是合乎情理,并且是可以被理解并接受的,最重要的是这样的问题都可以通过重新启动操作系统来解决(微软大哥解决问题之道),但是,对于软件开发人员来说,应该尽量避免非必要的重启。对自己严格要求点儿似乎没什么过错!?对绝对时间的依赖似乎不怎么容易转载 2017-07-18 00:21:18 · 790 阅读 · 0 评论 -
Linux系统--/proc/uptime文件中参数说明
有关/proc/uptime这个文件里两个参数所代表的意义: [root@app ~]#cat /proc/uptime 3387048.81 3310821.00 第一个参数是代表从系统启动到现在的时间(以秒为单位):3387048.81秒 = 39.20195381944444天,说明这台服务器已连续开机39.20195381944444天 第二个参数是代表系统转载 2017-07-18 00:22:54 · 1624 阅读 · 0 评论 -
Linux系统--从malloc中窥探Linux内存分配策略
转载自: http://www.cnblogs.com/cherishui/p/4208858.html malloc函数是C/C++中常用内存分配库函数,本篇文章将以Linux平台上的malloc为剖析对象,深入了解分配一块内存的旅程。malloc入门 使用malloc,需要包含头文件 stdlib.h ,函数原型如下: extern void转载 2017-05-27 11:26:58 · 3253 阅读 · 1 评论 -
Linux系统--DIR,dirent,stat等结构体详解
最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。首先说说DIR这一结构体,以下为DIR结构体的定义:struct __dirstream { void *__fd; char *__data; int __entry_da转载 2017-05-14 01:39:38 · 296 阅读 · 0 评论 -
Linux开发--inotify事件机制
Inotify是一种文件变化通知机制,Linux内核从2.6.13开始引入。 在BSD和Mac OS系统中比较有名的是kqueue,它可以高效地实时跟踪Linux文件系统的变化。近些年来,以fsnotify作为后端,几乎所有的主流Linux发行版都支持Inotify机制。 如何知道你的Linux内核是否支持Inotify机制呢?很简单,执行下面这条命令: grep -r原创 2017-03-09 09:34:30 · 404 阅读 · 0 评论 -
Linux系统--进程地址空间之虚拟地址空间
Linux系统,支持物理内存虚拟化,即进程并不直接在真实物理地址上寻址,而是由Linux内核为每一进程维护了一个特殊的虚拟地址空间(virtual address space)。这个地址空间是线性的,从0开始寻址,到某个最大值(不同操作系统或不同位数的系统可能不一样)。 虚拟地址空间由许多页(page)组成。典型的页大小是4096 bytes(4K, 32位系统)和8192byt原创 2017-03-20 20:58:01 · 303 阅读 · 0 评论 -
linux系统--mount 挂载访问windows共享文件夹
命令大致如下:mount -t cifs //10.10.105.222/Linux/ /home/jiguochao/share/Linux/ -o username=jiguochao,password=******,domain=combatelecom.com,iocharset=utf8,nounix,noserverino其中红色部分为Windows相关需要修改的,绿原创 2017-01-20 15:40:07 · 445 阅读 · 0 评论 -
macOS--macOS下NFS服务器禁止挂载(mount)问题
说明: Linux版本为ubuntu 14.04 LTS, 具体如下: 安装好nfs服务器端(nfs-kernel-server),配置文件(/etc/exports)修改如下: 客户端使用mount进行挂载,出现如下错误: 但在Linux上测试正常: 内容与服务器端共享文件夹一致: 所以问题出在Mac上(这原创 2017-04-06 00:42:54 · 8831 阅读 · 1 评论 -
Linux系统--进程地址空间之存储器区域
上篇文章简单介绍了虚拟地址及其页面的知识,本篇更进一步概述页面的分类。 Linux系统内核将具有某些相同特征(例如读写权限)的页组织成块(blocks)。这些块叫做存储器区域(memory regions),段(segments),或者映射(mappings),对进程而言,可见的存储器区域主要有: ·文本段(text segment),存储进程的代码,字符串,常量和一些读的数据原创 2017-03-21 10:25:22 · 544 阅读 · 0 评论 -
Linux系统--常用压缩/解压缩命令总结
Linux实际使用中,特别是命令行模式下为了方便文件的传输,常常对多个文件或目录进行解压,下面对几种常见命令的常用格式进行简要总结1 tar命令 实际上tar是归档命令,不过其可以自动调用压缩命令对归档文件进一步压缩(详细信息不展开),常见的压缩后的格式为.tar.gz和.tar.bz2,实际上其内部分别调用gzip命令和bzip2命令对归档文件(.tar)进行压缩所得。· 压缩原创 2017-04-07 10:50:56 · 594 阅读 · 0 评论 -
Linux开发--探讨将标准输入输出及错误重定向到/dev/null
Q: 我使用了如下代码将stdin、stdout、stderr重定向到/dev/null freopen( "/dev/null", "w", stdout ); freopen( "/dev/null", "w", stderr ); freopen( "/dev/null", "r", stdin ); 这样做正确吗,是否使用"w+"或者"a"更正确一些。在很多代码中是转载 2017-05-01 10:58:49 · 2902 阅读 · 0 评论 -
Linux开发--守护进程的创建
1 简介 守护进程是在后台运行不受终端控制的进程,通常情况下守护进程在系统启动时自动运行,用户关闭终端窗口或注销也不会影响守护进程的运行,只能kill掉。守护进程的名称通常以d结尾,比如sshd、xinetd、crond等 实际上一般的进程(前后台) 在关闭终端窗口后,会收到 SIGHUP 信号导致中断,可以使用 nohup command args > /转载 2017-05-01 14:26:36 · 238 阅读 · 0 评论 -
Linux开发--多线程中的信号处理
(转载自: 点击打开链接) 在linux下写服务器,处理信号在所难免。在多线程和单线程中信号的处理还是有点不同的。参考:http://maxim.int.ru/bookshelf/PthreadsProgram/htm/r_40.htmlhttp://aboocool.blog.51cto.com/3189391/626675 在linux下,每个进程都转载 2017-05-12 15:29:24 · 362 阅读 · 0 评论 -
Linux开发--使用Memory barrier实现无锁环形缓冲区
一 说明 涉及到并发编程中较底层的memory barrier相关知识,本人水平有限,在此不展开讲述,读者自行查阅。二 代码 Linux内核中,实现了一个无锁(只有一个读线程和一个写线程时)环形缓冲区 kfifo 使用到了 Memory barrier,实现源码如下:/* * A simple kernel FIFO implementation. * *转载 2017-05-05 15:12:37 · 472 阅读 · 0 评论