Linux
pointer_y
梦想就是用来实现的。
展开
-
【Linux】Linux下的find命令详解
Linux下想找到一个文件却不知道放在哪里了怎么办?这时候find命令就派上用场了,与查找相关的命令还有如下这些,我简单的介绍一下。1. which指令会在PATH变量指定的路径中,搜索某个系统命令 的位置,并且返回第一个搜索结果2. whereis只能用于程序名的搜索,而且只搜索二进制文件,源代码文件,说明文件,从Linux数据库中查找,很快,但是由于数据库更新不及时,所以此命令的查找结果也受原创 2016-12-31 12:33:20 · 531 阅读 · 0 评论 -
【Linux】SecureCRT配置
SecureCRT可用于远程连接Linux服务器,但是直接下载下来的使用感觉很不好,配色难看,字体大小不合适;home,end,pageup,pagedown这些键盘指令使用习惯也不一样。一、外观配置Options—>Session Options—>Terminal选择Linux,勾选ANSI Color,可以将Ccrollback buffer的值改大一些,这个是输出缓冲,改...原创 2019-03-29 15:51:06 · 639 阅读 · 0 评论 -
如何用gdb调试以daemon进程运行的服务
小项目的调试,基本是在编译时加-g选项后,使用gdb可以直接调试。gdb 目标二进制文件名eg:gdb hello但是大多数服务端程序是以daemon进程形式运行的,demon进程详解见:点我点我这种服务直接gdb是不行的,需要加参数-p 加目标程序端口号。开始调试之前运行ps -x,查看目标程序的PID。gdb -p PID打断点的方法也有点差异,工程较大的时候,打断点方法:b 类型::方法名...原创 2018-04-16 21:28:18 · 2116 阅读 · 0 评论 -
【Linux】webbench-1.5源码剖析
前言想法来源于博客:http://blog.jobbole.com/79023/ 里面说了值得剖析的10C语言开源项目,源码下载链接也有。注意是Linux下的C语言项目,下载完毕后使用解压命令:tar zxvf webbench-1.5.tar.gz解压,解压完毕进入目录切换到root用户安装使用。 1.make 2.make install 此时可能会出现错误提示: install: c原创 2017-04-21 12:46:12 · 748 阅读 · 0 评论 -
【Linux】如何创建daemon进程&fork一次和fork两次有什么区别
前言本文适合对Linux进程有了解过的读者。Linux中有一种进程叫做守护进程,又称精灵进程。它运行在后台,很重要,Linux下大多数服务器就是用守护进程实现的。因为它独立于终端运行,也就是说它的运行不受当前登录或者注销的影响,自成会话,周期性的执行某项任务或者等待处理某些事件。其他进程则是在登录或者运行时创建,在运行结束或者注销用户时终止。守护进程命名通常以d结尾,父进程是1号进程,它其实是属于孤原创 2017-02-27 17:13:31 · 1641 阅读 · 0 评论 -
【Linux】使用gdb调试多进程&多线程
gdb调试多进程多进程时,进入调试状态后,默认调试主进程。 1. 查找fork出子进程的代码在第几行,然后打上断点。 2.运行至断点处,info feriors可查看当前调试的进程 3.设置follow-fork-mode 的值为child,表示只调试的子进程,再查看当前调试进程发现变成了新产生出来的进程,即子进程。follow-fork-mode(默认值是parent)和detach-on-原创 2017-03-03 23:11:24 · 856 阅读 · 0 评论 -
【Linux】可重入函数与线程安全
可重入函数1. 概念重入函数: 函数被不同的控制流调用,有可能在第一次调用还没返回时就再次进入该函数,这称为重入函数。 可重入函数:不同的控制流重入函数时,不会造成数据二义性。具体来说就是函数内部的数据都应该来自自身的栈空间,不应该有全局或者静态的变量。 不可重入函数:重入函数会造成数据的二义性,导致对一个变量的操作变得无法预期。称为不可重入函数。 接下来我们简单的分别举上一个可重入函数和不可原创 2017-02-24 10:54:53 · 472 阅读 · 0 评论 -
【Linux】Linux定时任务crond
作业规划进程crond是Linux下用来定期执行命令或指定程序任务的一种服务或软件。运行linux后,开机自启动crond任务,系统会每分钟检查是否有要执行的任务工作(循环检测)。linux系统中定时任务调度的工作可以分为以下两个情况: 1. linux系统自身定期执行的任务工作:系统周期性执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等。 2. 用户执行的任务工作:某个用户或系统原创 2017-03-02 20:31:35 · 468 阅读 · 0 评论 -
【Linux】生产者消费者模型
一、概念生产者:产生数据的的模块。 消费者:处理数据的模块。 那么生产者产生数据之后,消费者怎么拿,从哪拿呢?所以,仅仅有这两个角色是不能完成我们期望的工作的。还需要一个缓冲区,就像超市的货架一样,供货商(生产者)将商品摆到货架(缓冲区)上,购买者(消费者)从货架上拿走,这个货架也是必不可少的。 试想如果没有缓冲区,生产者生产一个数据之后,就必须等待消费者消费完成,生产者才能继续生产,那么如果原创 2017-02-23 11:33:36 · 757 阅读 · 0 评论 -
【Linux】使用gcc生成静态库和动态库
1.什么是静态库和动态库?首先,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。在Linux下分为两种,静态库和共享库(动态库)。对比两者的区别如下: 库的种类 描述 优点 缺点 静态库 目标文件的简单集合,Linux下以.a作为后缀,程序编译时载入 程序所需库被加载后不会发生跨平台不兼容等类似的问题 由于所需的代码被加载到程序中,故体积大,占内存 动态原创 2017-02-18 19:33:38 · 408 阅读 · 0 评论 -
【Linux】信号量
信号量是进程间通信的一种方式。本质上它不具有数据交换的功能,它相当于一个计数器,对于系统现有资源进行计数以达到使进程互斥的访问资源的目的。当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,分配给进程后,信号量的值加一,这样请求资源的操作称为P操作。等于0,资源不可用,进程会进入睡眠状态直至资源可用。当资源使用完毕被释放时,信号量的值减一,释放原创 2017-02-17 16:42:08 · 564 阅读 · 0 评论 -
【Linux】Linux下使用stat命令所显示出来的三个时间
在linux系统下,使用stat(显示inode信息)命令可以查看一个文件的某些信息,我们先来尝试一下。 简单的介绍一下stat命令显示出来的文件其他信息: - File:显示文件名 - Size:显示文件大小 - Blocks:文件使用的数据块总数 - IO Block:IO块大小 - regular file:文件类型(常规文件) - Device:设备编号 - Inode:原创 2017-01-11 21:28:49 · 12642 阅读 · 2 评论 -
【Linux】窥探Linux内核task_struct结构体
我们知道,进程是程序的动态运行实例。且CPU会对这些进程进行调度,使得程序得以执行。那么如果有多个进程同时要求执行,CPU如何判断该执行哪一个,执行多长时间等等问题呢。学习过操作系统的话,应该能知道对于每一个进程,都有一个进程控制块(PCB),维护对应进程的一些信息。在Linux内核,这个PCB就是一个名为task_struct的结构体。本篇博客,主要就是介绍构成task_struct结构体的成员。原创 2017-01-09 19:44:52 · 2778 阅读 · 1 评论 -
【Linux】写一个简单的进度条
一、前言为什么要写一个进度条呢?其实就是想通过这个来说明两个问题,一个是printf函数缓冲区的问题,一个是'\n','\r'的区别。那么我们先来弄清楚这两个问题。二、printf缓冲区我们知道,输出到屏幕相当于访问外设,而外设的速度和内存的速度是相差甚远的,如果每次输出都直接去访问外设,一定会造成效率的下降,所以,printf设置了三种缓冲方式。1.全缓冲,即整个缓冲区满才会输出原创 2016-12-31 19:17:28 · 356 阅读 · 0 评论 -
【Linux】tar指令
tar指令的使用选项稍微有点多,记录下来方便日后使用-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:...原创 2019-03-29 16:51:36 · 133 阅读 · 0 评论