
Linux/Unix
moxiaomomo
虚怀若谷,大爱无疆
展开
-
[Linux]理解用户空间与内核空间
源文: http://learnlinuxconcepts.blogspot.com/2014/02/kernel-space-and-user-space.html理解用户空间及内核空间对于增强理解Linux内核知识是非常重要的。这里的用户空间及内核空间对应于虚拟地址空间.每个linux中的进程占用独立的虚拟空间.在32位架构linux系统中, 用户空间至少对应3GB虚拟空间, 而内核空间至翻译 2017-10-25 14:33:34 · 1348 阅读 · 0 评论 -
【Linux】关于.tar.bz2与.tar.gz格式的文本压缩率
对于文本压缩,据说bzip的算法要优于gzip,从而拥有更好的压缩比。特地找了两个文件来做一下测试,以下为测试结果:(1)源文件为591MB, .tar.bz2文件为61MB(10.32%), .tar.gz文件为92MB(15.57%)(2)源文件为427MB, .tar.bz2文件为43MB(10.07%), .tar.gz文件为66MB(15.46%)原创 2013-09-25 11:59:24 · 12538 阅读 · 0 评论 -
Linux环境下段错误的产生原因及调试方法小结
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内转载 2013-08-23 14:15:19 · 2413 阅读 · 0 评论 -
Linux切割命令split ,可以切割日志文件,文本文件
一.split说明 split可以用来切割一个日志文件,这样便于处理日志。比如有一个12G的日志,需要删除某一行数据,知道行号,但用sed和vi比较慢,就可以先用 split 切割 ,然后再删除那行,最后再重组合 二.使用说明 [root@bogon Desktop]# split --help Usage: split [转载 2013-04-28 16:16:03 · 1510 阅读 · 0 评论 -
ubuntu12.10更新包后的问题
最近在更新ubuntu12.10包后,经常出现网络服务异常,或者UI进程崩溃等。所以,此版本虽为稳定版,更新也需谨慎。后来将动态ip改为静态ip,修改/etc/resolv.conf文件添加dns服务ip地址,结果可以正常联网。原创 2013-04-10 21:15:40 · 1067 阅读 · 0 评论 -
Linux下的五个查找命令:grep、find、locate、whereis、which
1、grepgrep(General Regular Expression Parser,通用规则表达式分析程序)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。它的使用语法为:grep [选项] pattern [文件名]. 匹配任意一个字符* 匹配0 个或多个*前的字符^ 匹配行开头$ 匹配行结尾[] 匹配[ ]中的任转载 2013-01-22 15:01:44 · 1135 阅读 · 0 评论 -
【linux环境配置】关于jre环境配置的一个错误
刚重装了ubuntu系统,重新配置了jdk1.7环境。在/etc/profile中添加了java环境变量,通过source执行profile脚本后,使用java和java -version命令可看到jdk的相关信息。本以为配置已经成功了,但每次重启系统之后都会提示没有安装jdk这么奇怪的现象。而且系统还提示: 检测到系统程序出现问题。后来重新source了一遍profile文件,貌似又原创 2013-01-21 12:44:13 · 19729 阅读 · 1 评论 -
【linux环境配置】关于eclipse配置tomcat服务的一个问题
本人使用的开发环境如下--系统版本:ubuntu 12.10eclipse版本:http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/junosr1tomcat版本:7.0.35jdk版本:1.7.0.11在配置jdk和tomcat后,可以正常启动tomcat和正常访问。但在ec原创 2013-01-19 16:48:55 · 2544 阅读 · 0 评论 -
【linux基础】ubuntu系统中dpkg与apt-get remove命令
今天jdk出现了一些环境问题,估计是open-jdk与后来安装的jdk版本冲突了,不得不卸载原有的open-jdk。首先可以通过 dpkg -l | grep xxx 来查找某个应用程序的安装信息,通过dpkg -r xxx 来卸载某个安装包。不过当将要写在的安装包依赖了部分库的时候,卸载不一定成功。系统提示:will not uninstall。这时可以通过apt-get remov原创 2013-01-20 14:20:22 · 9167 阅读 · 0 评论 -
【Linux】Linux Kernel--Software Basic
2.1 Computer Languages(计算机语言) 2.1.1.汇编语言CPU从内存中读取和执行的指令对于人类来讲无法理解。它们是机器代码,精确的告诉计算机要做什么。比如十六进制数0x89E5,是Intel 80486的指令,将寄存器ESP的内容拷贝到寄存器EBP中。早期计算机中最初的软件工具之一是汇编程序,它读入人类可以阅读的源文件,将其装配成机器代码。汇编语言明转载 2013-11-24 17:12:53 · 1238 阅读 · 0 评论 -
【Linux】Linux Kernel-Hardware Basic
Hardware Basic(硬件基础知识) 一个操作系统必须和作为它的基础的硬件系统紧密配合。操作系统需要使用一些只有硬件才能提供的功能。为了完整的了解Linux,你需要了解底层硬件的基础知识。本章对于现代PC的硬件进行了。1975年1月“Popular Electronics”杂志封面上印出了Altair 8080的图片,一场革命开始了。Altair 8080,跟随早期的“转载 2013-11-24 17:11:34 · 1371 阅读 · 0 评论 -
个人vps之linux安全设置
以下是几个操作建议:禁止root远程登录,自定义ssh端口首先创建一个普通用户, 支持远程ssh登录修改/etc/ssh/sshd_config, 比如Port 12345PermitRootLogin no重启ssh服务:service sshd restart禁止ping访问编辑/etc/sysctl.conf, 加入net.ipv4.icmp_echo_ignore_all=1运行原创 2017-07-22 12:42:25 · 974 阅读 · 0 评论 -
【EmbeddedDev】使用消息队列进行进程间通信
假设有两个进程, 一个进程专注于串口信号的检测, 一个进程专注于根据不同信号进行对应功能的控制。这个时候需要进行进程间通信。我选择了消息队列进行尝试, 消息队列对于命名管道的一个好处是, 即使进程挂了, 消息队列依然还在, 重启后还能对原来的队列进行读写, 数据因而不会丢失。在Beaglebone Black的debian7.5系统上实现运行后, 发现MQ的队列长度默认最大为16。 这个貌原创 2016-12-03 12:38:27 · 1004 阅读 · 0 评论 -
【EmbeddedDev】通过mmap方法访问ADC/GPIO
正常通过文件系统访问AIN串口的值, 可以使用fread等文件IO方式读取/sys/bus/iio/devices/iio:device0/in_voltage*_raw的内容。但是这样在需要高频获取ADC值得情况就显得效率很低下, 数据需要从磁盘拷贝到内核进程空间, 然后再拷贝到用户进程空间, 消耗无谓的资源。可以通过内存影射的方式来解决这个问题, mmap可以实现磁盘数据到用户主存的一原创 2016-12-03 12:10:45 · 1663 阅读 · 0 评论 -
【shell】sh: 0: getcwd() failed: No such file or directory
This error occurs if you run a command in a directory which no longer exists.刚刚把某个目录给删除了,而命令还停在原来的目录上,因此出现了这种问题。原创 2013-05-02 10:33:59 · 16984 阅读 · 0 评论 -
【Linux】Linux Kernel-Processes(一)
原文:file:///D:/DevDocument/%E5%BC%80%E5%8F%91ebook/linux/linux%E5%86%85%E6%A0%B8%E5%9B%BE%E8%A7%A3/linux%E5%86%85%E6%A0%B8%E5%9B%BE%E8%A7%A3/linuxkernel.htm本章描述进程是什么以及Linux如何创建、管理和删除系统中的进程。转载 2013-12-21 16:14:07 · 2097 阅读 · 0 评论 -
TCP服务器设计范式 - 每个客户连接对应一个线程
如果服务器支持线程,那么对于客户/服务进程的架构我们可以采取一个线程处理一个客户连接的设计方案。也就是每当有新的连接请求到达服务器时,服务器会新开一个子线程来专门处理这个连接的信息传递;这种方法类似于服务器为每个客户连接fork一个子进程,但这相对来说更轻量级。1.首先初始化服务器信息(部分代码):if ((servfd = socket(AF_INET,SOCK_STREAM,0)) <原创 2012-05-17 15:02:34 · 6014 阅读 · 7 评论 -
【Linux】Linux Kernel--Memory Management(一)
内存管理子系统是操作系统的重要部分。从计算机发展早期开始,就存在对于大于系统中物理能力的内存需要。为了克服这种限制,开发了许多种策略,其中最成功的就是虚拟内存。虚拟内存通过在竞争进程之间共享内存的方式使系统显得拥有比实际更多的内存。虚拟内存不仅仅让你的计算机内存显得更多,内存管理子系统还提供:Large Address Spaces(巨大的地址空间)操作系统使系统显得拥有比实际更大转载 2013-12-03 23:23:50 · 3352 阅读 · 0 评论 -
【Linux】Linux Kernel--Memory Management(二)
3.6 Demand Paging 只要执行映像映射到进程的虚拟内存中,它就可以开始运行。因为只有映像的最开始的部分是放在物理内存中,很快就会访问到还没有放在物理内存的虚拟空间区。当进程访问没有有效页表条目的虚拟地址的时候,处理器向Linux报告page fault。Page fault描述了发生page fault的虚拟地址和内存访问类型。 Linux必须转载 2013-12-04 08:45:21 · 1854 阅读 · 0 评论 -
【转】linux 终端 There are still stopped jobs
在用管理员执行一个命令后,用Ctrl+Z把命令转移到了后天。导致无法退出root的。输入命令:exit终端显示:There are stopped jobs.解决方法:方法一、输入命令:jobs终端显示:[1]+ Stopped vim /etc/network/interfaces > /home/leo/Desktop/ip.txt (wd: /)KILL转载 2013-11-27 21:13:44 · 4493 阅读 · 0 评论 -
ubuntu dpkg命令总结
今天看到了dpkg,又有所发现,拿来分享: dpkg是Debian系统的后台包管理器,类似RPM。也是Debian包管理系统的中流砥柱,负责安全卸载软件包,配置,以及维护已安装的软件包。由于ubuntu和Debian乃一脉相承,所以很多命令是不分彼此的。 Ubuntu中所有packages的信息都在/var/lib/dpkg/目录下,其中子目转载 2013-01-20 13:52:33 · 3428 阅读 · 0 评论 -
【linux环境配置】linux改成root用户的命令
最近转服务端了。这是本人于2011年写的(这是我的原文:点击打开链接)。--------------------------------------------初接触了linux不久。在ubuntu里接触最多的事情就是用户权限的问题了,常常提示权限不够。 如果之前没有开启root用户,则可以这样在终端里设置:moxiaomomo@home:~$ sudo passwd原创 2013-01-18 16:59:06 · 2427 阅读 · 0 评论 -
Epoll,Poll,Select模型比较
转载自: http://www.iteye.com/topic/469644 先说Select: 1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024. 2.操作限制:通过遍历FD_SETSIZE个Sock转载 2011-10-08 13:27:20 · 3987 阅读 · 0 评论 -
Ice笔记---分布式架构草图
这是一个分布式应用程序架构的草图。仅作为Ice学习的一点小结。1)Client指的是我们通常意义上的客户端。比如在一个网页游戏中,它可以是以flash实现的网页客户端。2)GateWay指的是服务器端的通信模块(NetService)。它负责与客户端进行通信,同时原创 2011-09-12 21:35:57 · 9903 阅读 · 1 评论 -
socket通信---并发服务器图解
当服务器处理一个客户请求可能需要相当长一段时间的时候,使用迭代服务器模式(即整个服务器可能被耽搁客户长期占用)是会影响系统性能的。而处理并发连接的服务器可以称为并发服务器。 并发服务器的一个简单操作是fork一个子进程来服务多个客户。当一个连接建立时,用于阻塞进程的ace原创 2011-09-19 21:56:16 · 8001 阅读 · 0 评论 -
关于TCP/IP协议栈(笔记)
一。TCP/IP协议栈及其不同层次的协议二。协议概述1) TCP: 传输控制协议,是一种面向连接的协议,提供全双工的字节流;是流套接口的一种。2) UDP: 用户数据包协议,无连接协议,与TCP一样可以使用IPv4或IPv6;是数据报套接口 的一种原创 2011-09-23 11:11:07 · 1941 阅读 · 0 评论 -
Socket阻塞通信模型草图
原创 2011-09-15 23:38:08 · 2002 阅读 · 1 评论 -
linux信号处理
Linux信号集1.信号集概念信号集是一个能表示多个信号的数据类型,sigset_t set ;set即一个信号集。既然是一个集合,就需要对集合进行添加/删除等操作。int sigemptyset(sigset_t *set); 将set集合置空int sigfi转载 2011-09-13 14:34:04 · 2392 阅读 · 0 评论 -
linux常用操作命令
我的同步博客:http://apps.hi.baidu.com/share/detail/32074779 1.复制文件sudo cp 要复制的文件 /...(目标路径)2.创建文件夹sudo mkdir /...(要新建的文件夹及路径)3.解压文件(原创 2011-08-29 21:50:11 · 1781 阅读 · 2 评论 -
使用gdb调试程序详解
熟练使用gdb是一个linux下开发人员必备的一项技能,我们由浅入深的学习一下gdb的强大功能。一.gdb简单介绍名称 gdb - GNU 调试器提要 gdb [-help] [-nx] [-q] [-batch] [-cd=dir转载 2011-09-07 21:58:58 · 1572 阅读 · 0 评论 -
Linux下的五个查找命令:grep、find、locate、whereis、which
1、grepgrep(General Regular Expression Parser,通用规则表达式分析程序)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。它的使用语法为:grep [选项] pattern [文件名]. 匹配任意转载 2011-09-04 23:06:51 · 1492 阅读 · 1 评论 -
linux进程间通信概述
linux进程间通信(IPC)有几种方式,下面将将简单的简述一下: 一.管道(pipe)管道是Linux支持的最初IPC方式,管道可分为无名管道,有名管道等。(一)无名管道,它具有几个特点:1) 管道是半双工的,只能支持数据的单向流动;两进程间需要通信时需要原创 2011-10-07 10:09:12 · 3480 阅读 · 0 评论 -
unix编程---网络I/O模型
1.阻塞I/O模型与非阻塞I/O模型阻塞与非阻塞的模型主要区别是:阻塞I/O模型中用户进程在能读取数据之前会进入睡眠或者挂起状态;而非阻塞情况下遇到读取数据失败时内核直接返回错误信号,用户进程便在成功返回数据之前一直在调用recv操作询问数据可读性,因此这原创 2011-10-04 21:54:46 · 3082 阅读 · 0 评论 -
【linux环境配置】增加eclipse内存分配
增加eclipse内存分配1、命令行:在使用eclipse的过程中,时不时就会出现"内存溢出"的问题,一个解决办法就是在启动eclipse时增加其内存使用,在eclipse的安装目录下,通过命令行方式: eclipse -vmargs -Xms512m -Xmx1024m 不过,增加的是虚拟内存,而不是物理内存。2、修改配置文件 内存优化eclipse安装后转载 2013-01-24 15:48:08 · 4703 阅读 · 0 评论 -
【操作系统】linux创建子进程--fork()方法
(1)fork()的定义fork()函数是Unix中派生新进程的唯一方法,声明如下:#include pid_t fork(void);我们需要理解的是,调用一次fork()方法,该方法会返回两次。一次是在调用进程(也就是派生出的子进程的父进程)中返回一次,返回值是新派生的进程的进程ID。一次是在子进程中返回,返回值是0,代表当前进程为子进程。如果返回值为-1的话,则代表在派生原创 2012-05-25 11:37:40 · 5629 阅读 · 0 评论 -
Socket之shutdown()用法
通常来说,socket是双向的,即数据是双向通信的。但有些时候,你会想在socket上实现单向的socket,即数据往一个方向传输。单向的socket便称为半开放Socket。要实现半开放式,需要用到shutdown()函数。一般来说,半开放socket适用于以下场合:(1)当你想要确保所有写好的数据已经发送成功时。如果在发送数据的过程中,网络意外断开或者出现异常,系统不一定会原创 2012-08-23 01:09:44 · 39638 阅读 · 3 评论 -
【Qt开发】QTableWidget 判断cell内容为空
判断cell内容为空, 可以这样实现:if(ui->tableWidget->item(i,j)==NULL|| //判断指向该cell的指针是否为空 (ui->tableWidget->item(i,j)&& ui->tableWidget->item(i,j)->text()==tr("")) //判断该cel原创 2011-04-16 20:22:00 · 8506 阅读 · 0 评论 -
关于UDP协议的理解
之前一直基本都是在关注TCP协议,写的程序都是基于TCP协议的。今天想来谈谈对另一种传输协议-UDP(User Data Protocol)的理解。相对于TCP,UDP只提供了一种保证,那就是:收到的数据会是完整的。但它不能保证数据是不是真的按照期望能被收到,也不能保证数据是不是只接收一次,更不能保证收到的信息顺序和发出的时候的次序是一致的。这是UDP的缺点,但也刚刚好造就了它的一个优点。原创 2012-08-18 19:18:21 · 2876 阅读 · 0 评论 -
关于远程登录协议(Telnet,Rlogin,ssh)
1) Telnet(Telecommunication Network Protocol)Telnet是通过客户端与服务器之间的选项协商机制,实现了提供特定功能的双方通信。如下图所示,telnet客户进程同时与终端驱动,TCP/IP协议模块进行交互,负责信息的传输。telnet服务进程负责与伪终端驱动,TCP/IP进行数据交互。所谓的为终端驱动就是实现一种登录外壳(shell)程序,原创 2011-10-07 20:43:56 · 15784 阅读 · 0 评论 -
(笔记)unix套接口的值-结果参数
套接口地址结构是在进程和内核中之间传递的。1. 从进程到内核传递套接口地址结构有三个函数:bind, connet和senddto,这三个函数的一个参数是指向套接字地址结构的一个指 针,另一个参数是结构的整数大小。例如: struct sockaddr_in serv; connect(sockfd, (SA*)&serv, sizeo原创 2012-05-19 11:17:32 · 2294 阅读 · 0 评论