linux
文章平均质量分 84
宇哲_安菲尔德
这个作者很懒,什么都没留下…
展开
-
关于linux新手常用命令
这些命令是最先看linux时常用的,现在来汇总下:1.切换用户 当使用su你可以在当前用户模式下切换到root模式,而你想要退出root时,输入exit命令即可。 2.显示日期的指令 当我们在命令行模式下,需要知道日期时,只需要键入命令 date 3.显示日历 在linux下,我们也可以用命令 cal 来查看日历。默认我们输出的是某一个月的。 4.计算器 采用命令 bc 我们可原创 2016-04-03 12:32:35 · 648 阅读 · 0 评论 -
进程间关系
说完了进程,我们来说一下进程间关系。进程组一个或者多个进程的集合,每一个进程除了有一个进程ID之外,它还属于一个进程组。通常来说,进程组和作业相关联,可以来接收同一个终端下的各种信号,每一个进程组也有对应的唯一进程组ID。 这一列PGID就是进程组,我们可以看到上面那三个mydaemon的守护进程所在不同进程组。这里下面的带[]的都是内核进程,可以看到它们都在同一进程组。组长进程:组长进程就是原创 2017-03-01 22:17:37 · 1945 阅读 · 0 评论 -
gdb调试多线程多进程
今天进行学习一下关于gdb调试多线程和多进程的情况:gdb调试多进程尝试来调试多进程的程序,我们使用gdb进行调试程序,gdb的调试默认是调试父进程的,但是为了做到可以对父进程和子进程都做到调试,所以附加了调试子进程的功能。我们可以对fork出来的进程进行设置调试方法。follow-fork-mode的用法为:set follow-fork-mode parent/child如果你选择了parent原创 2017-03-03 09:28:06 · 1684 阅读 · 0 评论 -
守护进程
我们接下来说一下关于守护进程。守护进程也叫做精灵进程,是运行在后台的一种特殊的进程,它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。生存周期长,它们常常在系统引导装入的时候启动,仅仅在系统关闭的时候才终止。因为它们没有控制终端,所以说它们是在后台运行的。很多服务器的应用都和守护进程相关。守护进程的特征:通常来说,我们需要知道,对于当我们开机以后首先操作系统首先通过0号进程去进行操作原创 2017-02-27 17:46:52 · 1029 阅读 · 1 评论 -
I/O多路复用——select
接下来我们讨论3篇关于I/O多路复用的问题,首先我们来看下select,select是多路复用当中最早的一种I/O复用的最主要的功能就是让程序能够同时去监听多个文件描述符,这样程序的性能就能提高。select介绍我们先来看一下select的接口。 int select(int nfds, fd_set *readfds, fd_set *writefds,原创 2017-03-27 21:40:20 · 827 阅读 · 1 评论 -
I/O多路复用——poll
上一篇我们说了关于select的相关信息,我们可以看到select是有弊端的,所以为了解决select的弊端,UNIX又在后期提出了poll。select的弊端这里就不多说了,上一篇博客有提及。pollpoll和select类似,不过在一些方面改善了select的弊端。它也是在指定的时间进行轮询文件描述符,查看是否有就绪时间发生。和上次一样,我们先来看一下poll系统调用。 int poll(str原创 2017-03-27 22:29:25 · 1309 阅读 · 0 评论 -
I/O多路复用——epoll
说完了select和poll,那么必须要说一下epoll的。select和poll是UNIX当中的,epoll是Linux所特有的。和前面的思路一样,poll解决了select的缺点,所以epoll的出现也是为了最大化的提高多路复用的效率,解决poll的缺点。epoll介绍epoll的实现和select与poll的实现有很大的差异,epoll不像select和poll一样通过一个系统调用来完成任务,原创 2017-03-28 13:23:15 · 1151 阅读 · 0 评论 -
I/O多路复用比较(select,poll,epoll)
讲述完了三种I/O多路复用模型,我们现在需要进行一下比较。比较三种I/O多路复用关于他们的优缺点呢,前面三篇博客我都有所提及,这里我主要为了再次总结一下。 select和poll都只能工作在低效的LT(水平触发),这种方式下进行多次的循环处理时间的等待。而epoll是在高效的ET(边沿触发)模式下工作,这个模式下当有时间响应的时候,应用程序这个时候必须立即处理。并且epoll还支持EPOLLONE原创 2017-03-28 13:49:28 · 755 阅读 · 0 评论 -
存储映射I/O(mmap函数)和共享内存
前言最近在一次电话面试的过程中,面试官问我相关的共享内存的知识,当时就认为是我在学习IPC进程间通信学习到的共享内存,所以就给面试官讲解了一下,然后,面试官说我是否知道在Linux下的存储映射I/O,当时我下意识的知道就是mmap函数,但是感觉自己对这两个理解还是不够深刻,所以,写一篇博客来记录一下。首先附上我的关于共享内存的链接,关于共享内存的大致内容我这里就不多提了。 http://blog.原创 2017-03-28 15:26:14 · 2834 阅读 · 0 评论 -
Shell当中的字符串切割
我们来看一下以下这几种字符串切割的方式。1.使用 # 和 ## 来进行截取。val=“hello world!”echo ${val#*o}echo ${val##*o}进行字符串截取, 第一个是从左到右进行删除第一个o的字符串。 第二个是从左到右进行删除最后一个o的字符串。 这里的 * 表示的是通配符所以输出是: 使用%和%%进行截取 第一个介绍了从左到右进行截取,下面我们就进行介绍一下原创 2017-03-27 18:26:26 · 22424 阅读 · 1 评论 -
关于shell当中的$()和` `以及eval
1.$()和` `今天我们来看一下再shell当中的几个问题,一个是$(),一个是` `。首先,我们需要明确这里这两个的用途,$()和都是用来做命令替换的。例如:echo pwdecho $(pwd)echo `pwd`从效果就可以看出$()和 ` ` 的作用了吧。它进行命令替换,执行pwd。操作上,这两者都可以达到相应的效果,但是,我们建议是哟个(),因为,反引号容易和单引号搞混。另外多层次的原创 2017-03-29 11:29:35 · 11869 阅读 · 0 评论 -
Shell总结(二)
第一篇我们学习了Shell当中的变量和符号,接下来我们来学习一下Shell当中的语法。语法无非是有几个点,条件判断,循环控制,以及面向过程最重要的一点——函数。1. test和[首先我们来看一下test和[,这两个是有关于条件测试的。test命令和[的作用是一样的,都是用来判断条件是否成立。而对于条件的描述,就需要我们在上一节所说的关系运算符等 运算符 说明 -eq 判断是否相等原创 2017-03-30 22:25:28 · 593 阅读 · 0 评论 -
文件描述符和文件指针的区别
1.什么是文件描述符?文件描述符是计算机科学中的一个术语,是一个用于表述只想文件的引用的抽象化概念。在linux当中,每个进程会在进程控制块(PCB)当中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表都有一个指向已经打开文件的指针。每个linux进程都应该有三个标准的文件描述符,对应三个标准流。 整数值 名称 (unistd.h)符号常量 (stdio.h)文件流 0原创 2017-02-12 14:09:08 · 1883 阅读 · 0 评论 -
进程调度算法
今天我们来谈一谈进程调度算法:1. 先来先服务调度算法(FCFS)先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为原创 2017-02-12 13:32:46 · 879 阅读 · 0 评论 -
进程间通信——消息队列
前言进程间需要进程通信进行数据传输和资源共享,另外一个进程在很多时候需要向另外的一个进程通知事件,有时候进程之间存在关系,需要去控制另外的一个进程,所以进程通信是很需要的。进程间通信的第一种就是消息队列什么是消息队列消息队列是消息的链表,存放在内核当中,由消息队列标识符标识,消息队列提供一种进程之间数据块传送的方法,每个数据块都被认为是一种类型。每个进程都有一个与之相关联的消息队列,其功能就类似于一原创 2017-02-20 17:29:55 · 1168 阅读 · 2 评论 -
初识linux软链接和硬链接
1.从文件开始到软硬链接在认识软链接和硬链接之前,我们先来了解一下整个系统当中的文件存放特点,在linux当中,数据分为元数据和用户数据,元数据包括文件的一些属性,例如文件大小,创建时间等一些内容。元数据当中有一个叫做inode(它是元数据的一部分,可以叫做索引节点号),inode作为文件的唯一标识。而文件名,是为了方便记忆。linux系统通过inode来查找正确的数据块,获取对应的信息,而对于用户原创 2016-12-22 20:55:46 · 2162 阅读 · 3 评论 -
初识linux下的三个时间
1.从命令看时间在linux下,我们可以去查看一个文件的三个时间,比如:对于test.c文件我们可以查看时间,使用命令 stat查看stat test.c在这里我们得到以下信息。 通过上述信息,我们可以看到有许多信息,接下来,对于这三个时间,我们进行一番讲解。2.深入理解三个时间atime(Access time):当我们去访问这个文件,这个时间会被改变,时间就是最后一次我们访问的时间,例如原创 2016-12-24 22:29:29 · 2288 阅读 · 0 评论 -
初识linux下的find命令
1.认识find命令关于find命令,本人认为是linux当中所有的命令当中最重要的一个命令之一,所以,在这里,我们来聊一聊find命令。find命令用于在目录下查找文件,find是在磁盘上进行查找,所以相对来说,效率会低一些。首先,给出find命令所有的参数 -amin<分钟>:查找在指定时间存取过的文件或者目录,单位以分钟计算。 上述就显示了我15分钟内存取过的文件或者目录,这里说的是被访问原创 2016-12-30 19:36:08 · 882 阅读 · 0 评论 -
从一个进度条看问题
1.前言我们要实现关于一个进度条,我们的想法是采用for循环的方式,所以对于这个进度条,我们需要从下面几个问题来一一看待问题。2.关于 ‘\n’ 与 ‘\r’这两个符号,一个叫做回车,一个叫做换行,好多人对这两个分不清,所以我们在这里需要介绍一下。 在最早的时候,只有打字机的时候,人们在每行的后面加上两个表示结束的字符,一个叫做回车,它把打字机的光标定位在左边界,另外一个是换行,它用来换到下一行,原创 2016-12-31 20:45:40 · 3345 阅读 · 0 评论 -
linux中关于压缩的命令
1.前言最近在linux下安装东西,发现好多安装都需要通过使用压缩指令来完成,所以觉得是时候来总结一下了。在windows下,我们常见的压缩格式有两种,zip和rar。在讲述压缩指令之前,我们先去看两个概念,打包和压缩。这个很好理解,打包,就是把零散的东西包装起来成一个总文件,压缩呢,就是把一个大文件压成小文件。这两个概念是必须要清楚的,对于linux来说,后续很多命令存在在这个概念的区别。首先,我原创 2017-01-01 10:55:44 · 3894 阅读 · 0 评论 -
进程管理—进程描述符(task_struct)
前言当把一个程序加载到内存当中,此时,这个时候就有了进程,关于进程,有一个相关的叫做进程控制块(PCB),这个是系统为了方便进行管理进程所设置的一个数据结构,通过PCB,就可以记录进程的特征以及一些信息。 内核当中使用进程描述符task_struct。 这个task_struct就是一个定义的一个结构体,通过这个结构体,可以对进程的所有的相关的信息进行维护,对进程进行管理。接下来我们需要对tas原创 2017-01-12 09:52:15 · 3112 阅读 · 0 评论 -
进程—内存描述符(mm_struct)
前言上一篇我们谈论了task_struct这个结构体,它被叫做进程描述符,内部成员包含了很多与进程相关的信息,今天我们来看一下其中一个被叫做内存描述符的结构体——mm_struct,抽象的来描述linux下进程的地址空间的所有的信息。1.概述一个进程的虚拟地址空间主要由两个数据结来描述。一个是最高层次的:mm_struct,一个是较高层次的:vm_area_structs。最高层次的mm_struc原创 2017-01-12 10:20:00 · 29608 阅读 · 0 评论 -
进程间通信--信号量
对于信号量来说,是IPC机构当中的一个,与消息队列等不同,它是一个计数器,用于为多个进程提供对共享数据对象的访问,接下来,我们对信号量进行一些探索。在这我们需要提出一些概念: 临界区:指的是访问临界资源的程序代码片段。临界区只能允许一个进程进入。 临界资源:临界资源说的是一次只能提供一个进程使用的资源。 互斥:互斥是指某一个资源同时只允许一个访问者对其进行访问。 原子性:一个事务包含多个操作原创 2017-02-16 23:29:32 · 885 阅读 · 0 评论 -
linux定时任务(crond)
关于crondcrond是linux下的一个周期性的执行某种任务或者等待处理某些时间的一个守护进程,与windows下的计划任务类似,当安装完成操作后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。crond并且也是一个守护进程,类似于计划任务,crond进程会自动启动。 上图中我们可以看到1920c原创 2017-02-27 22:12:55 · 752 阅读 · 0 评论 -
静态库和动态库
前言在平时,我们很少关注于编译和链接的过程,在现在IDE遍布的天下,IDE为我们考虑好了一切。但是真正的藏在每个程序运行背后的东西,很多系统软件背后的运行机制都是需要我们去熟悉的,熟悉了这些,我们才能快速的解决一些相关的性能等问题。大家应该都知道对于链接来说,应用程序有两种的链接方式,一种就是静态链接,一种是动态链接。对于链接,链接的主要内容就是把各个模块之间相互引用的部分都处理好,是的各个模块之家原创 2017-02-18 15:41:58 · 724 阅读 · 0 评论 -
进程间通信——共享内存
前言进程间IPC通信的三大主题,消息队列,信号量,共享内存,我们接下来说一说共享内存,共享内存可以提供给服务器进程和客户进程之间进行通信,不需要进行数据的复制,所以速度最快,只需要让两个进程通过页表映射到同一块物理内存即可,这样,这块物理内存是两个进程都能看到的,这样当一个进程进行写操作,另外的一个进程也就可以做读操作。所以问题关键也就是给出一个特定的存储区。通常情况下,我们需要确保一个进程在写的时原创 2017-02-20 16:03:07 · 2704 阅读 · 5 评论 -
多线程编程(1)
线程概念线程线程就是进程的若干个执行流,因为一个进程在某一时刻只能去做一件事情,有了线程之后,我们可以在同一时间去做不同的事情,比如我正在边利用cmd markdown写博客。边用网易云音乐听音乐,这样多线程的情况下,能给我们带来很多好处。 在系统内核中其实是不存在线程的,linux使用进程模拟线程,线程的实现其实就是多个共享数据代码等信息的进程。所以我们把线程也叫做轻量级进程。进程常常用来分配资源原创 2017-02-20 20:14:42 · 929 阅读 · 0 评论