linux
Number_0_0
努力的从小菜鸡变成战斗机!!!
展开
-
linux中简易配置vim编辑器
作为一个刚接触linux系统三天的新手来说,系统本身的vim编辑器感觉和vs环境下的平台差了好多好多,这里简要介绍一下如何配置vim编辑器,使自己的vim用起来更顺畅,敲起代码来更得心应手在当前用户下建立.vim目录,打开.vim目录,建立doc和plugin目录。 打开链接 http://www.vim.org/scripts/script.PHP?script_id=27原创 2017-02-15 21:46:29 · 2443 阅读 · 0 评论 -
守护进程(精灵进程)
什么是守护进程?守护进程也称精灵进程(Daemon),是一种运行在后台的一种特殊的进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在Linux中,每个系统与用户进行交流的界面成为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且原创 2017-05-10 13:54:38 · 787 阅读 · 0 评论 -
守护进程中fork一次与两次的区别
守护进程(daemon进程)是后台守护进程,有时候也叫精灵进程(agent).linux 下server都是daemon进程。其 特点 是:1)其父进程是一号进程,通常以d结尾2)在后台运行,独立于终端,周期性的以某种任务或等待处理某些发生的事3)自成进程组,自成会话,不受登陆注销等影响4)一般是孤儿进程daemon函数存在的原因是因为控制终原创 2017-05-10 15:01:28 · 732 阅读 · 0 评论 -
I/O多路复用—select服务器
1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。原创 2017-06-06 15:40:52 · 805 阅读 · 0 评论 -
线程池与进程池
进程池和线程池池的概念由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。池是一组资源的集合,这组资源在服务器启动之初就完全被创建并初始化,这称为静态资源分配。当服务器进入正是运行阶段,即开始处理客户请求的时候,如果它需要相关的资源,就可以直接从池中获取,无需动态分配。很显然,直接从池中取原创 2017-06-02 16:00:36 · 817 阅读 · 0 评论 -
Linux中的cron和crontab
crond的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。而crond正是它的守护进程。一 .cron crond位于/etc/rc.d/init.d/crond 或 /etc/init.d 或 /etc/rc.d /rc5.原创 2017-07-08 18:45:02 · 1730 阅读 · 0 评论 -
Linux中字符串截取方法
Linux 的字符串截取很有用。有八种方法。 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符。 复制代码 代码如下: echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.aaa.com/123转载 2017-07-08 19:04:50 · 606 阅读 · 0 评论 -
Shell脚本编写进度条代码
#!/bin/bashi=0bar=''index=0lable=('|' '/' '-' '\')while [ $i -le 100 ]do printf "[%-100s][%d%%][%c]\r" "$bar" "$i" "${lable[$index]}" bar='#'$bar let i++ let index++ let index%=4 usleep 1原创 2017-07-02 21:59:57 · 515 阅读 · 0 评论 -
I/O多路复用—epoll服务器
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平原创 2017-06-11 21:22:07 · 298 阅读 · 0 评论 -
I/O多路复用—poll服务器
poll是I/O多路复用中的一种方式,select将三种事件进行了区分,并且用三个位图来表示不同的监测事件。而poll统一用一种结构来管理要监测的事件。poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include int poll(struct pollfd fds[], nfds_t nfds, int time原创 2017-06-12 09:25:10 · 429 阅读 · 0 评论 -
Linux—shell中$(( ))、$( )、``与${ }的区别
命令替换在bash中,$( )与` `(反引号)都是用来作命令替换的。命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。exp 1$ echo today is $(date "+%Y-%m-%d")today is 2014-07-01$( )与``在操作上,这两者都是达到转载 2017-06-15 16:01:24 · 30437 阅读 · 2 评论 -
Shell—eval命令使用
本文将会讲解一些linux中命令的使用与技巧希望对新手给予帮助一 e v a l命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时被称为复杂变量。不过这些变量本身并不复杂。e v a l命令也可以用于回显简单变量,不一定是复杂变量。1 eval命令也可以用于回显简单变量,不一定是复杂转载 2017-06-15 16:41:43 · 475 阅读 · 0 评论 -
shell字符串截取的八种方法
Linux 的字符串截取很有用。有八种方法。假设有变量 var=http://www.aaa.com/123.htm.1.# 号截取,删除左边字符,保留右边字符。 代码如下:echo ${var#*//}其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.aaa.c转载 2017-07-08 19:09:14 · 769 阅读 · 0 评论 -
Linux环境下线程的互斥
多个线程同时访问共享数据时可能会冲突,这跟前⾯面讲信号时所说的可重⼊入性是同样的问题。比如 两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成:1. 从内存读变量值到寄存器2. 寄存器的值加13. 将寄存器的值写回内存假设两个线程在多处理器平台上同时执行这三条指令,则可能导致下图所示的结果,最后变量只加了一次而非两次。通过一个简单的程序观察这⼀一现象。描述的原创 2017-03-24 22:18:51 · 609 阅读 · 0 评论 -
线程安全与可重入函数
线程安全(Thread-Safe):如果一个函数在同一时刻可以被多个线程安全地调用,就称该函数是线程安全的。线程不安全:当多个线程并发的调用一个函数。如果对全局数据或者静态数据在不加任何锁以及安全性的处理情况下,就会对多次修改数据的错误。比如我正在愿意个线程里处理一个全局变量的-1;正减完。结果还没有返回,就被另一个线程切出去了,而那个线程全局变量还是处于没有被处理的-1的值;本身我想让那个全原创 2017-04-13 17:42:39 · 660 阅读 · 0 评论 -
linux环境下使用vim实现简易进度条代码
在实现进度条代码之前,需要提前注意代码中应该注意到的三个问题1.进度条原理;2缓冲区;3回车换行的区别进度条原理:进度条应每隔几秒将缓冲区中的内容刷新到屏幕上缓冲区:cpu将可执行文件运行完成后,先将结果发送到内存中,后将内存中的结果输入到输出设备回车换行:\r将当前光标移动到行首,即回车符,\n换到下一行,即换行符usleep :把进程挂起一段时间,单位是微秒fflush:强原创 2017-02-17 09:36:36 · 812 阅读 · 0 评论 -
linux 环境下 Access,Modify,Change区别以及find指令简易使用方法
1、按名字查找在当前目录及子目录中,查找小写字母开头的bit文件在$HOME目录及其子目录中,查找所有文件在当前目录及子目录中,查找不是out开头的txt文件2、按目录查找在当前目录除aa之外的子目录内搜索 txt文件在当前目录及除aa和bb之外的子目录中查找txt文件3、按权限查找原创 2016-07-14 18:11:57 · 2266 阅读 · 0 评论 -
linux中的task_struct结构体成员简要介绍
在正式介绍task_struct结构体成员时,先简要介绍一下什么是task_struct。广义上,所有的进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。进程控制块每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。现在我们全面了解一下其中都有哪些信息。在Linux中,这个原创 2017-02-18 10:04:04 · 2323 阅读 · 0 评论 -
对于linux中管道的认识
linux 管道 管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别。有名管道叫named pipe或者FIFO(先进先出),可以用函数mkfifo()创建。Linux管道的实现机制在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是原创 2017-02-25 18:48:14 · 908 阅读 · 0 评论 -
IPC下的双向通信——消息队列
消息队列: 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。我们可以通过发送消息来避免命名管道的同步和阻塞问题。消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先⼊入先出。消息队列与命名管道有一样的不足,就是每个消息的最⼤大长度是有上限的(MSGMA原创 2017-02-28 13:30:41 · 1135 阅读 · 0 评论 -
linux下关于进程调度原理以及进程调度算法
进程调度原理:Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务。调度程序会被频繁的执行,所以调度程序要尽可能的高效; 2.加强交互性能:在系统相当的负载下,也要保证系统的响应时间; 3.保证公平和避免饥渴; 4.SMP调度:调度程序必须支持多处理系统; 5.软实时调度:系统必须有效的调用实时进程,但不保证一定满原创 2017-02-19 13:25:11 · 978 阅读 · 0 评论 -
关于atexit函数的使用以及权限t的设置与测试
再了解atexit函数之前,先加药介绍一下进程的终止方式有哪些?进程终止的方式有8种,前5种为正常终止,后三种为异常终止: 1 从main函数返回; 2 调用exit函数; 3 调用_exit或_Exit; 4 最后一个线程从启动例程返回; 5 最后一个线程调用pthread_exit; 6 调用abort函数原创 2017-02-19 18:01:27 · 732 阅读 · 0 评论 -
学习shell的好方法——编写一个自己的shell
shell编程和写一个shell不是一回事,但如果写一次shell,再学习shell编程就简单了。以下是本人编写的简易的交互式Shell。需要用到的函数有:getpwuid,gethostname,getcwd#include#include#include#include#include#include#includevoid GetLoginNam原创 2017-02-25 15:23:31 · 1527 阅读 · 0 评论 -
对linux信号量的理解以及实现
信号量的本质是一种数据操作锁,它本身不具有数据交换的功能,而是通过控制其他的通信资源(文件,外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责数据操作的互斥、同步等功能。 当请求一个使用信号量来表示的资源时,进程需要先读取信号量的值来判断资源是否可用。大于0,资源可以请求,等于0,无资源可用,进程会进入睡眠状态直至资源可用。 当进程不再使用一原创 2017-03-11 16:13:18 · 1655 阅读 · 0 评论 -
关于死锁的预防,产生,解决的方法
死锁现象:在一组资源中,由于每个人物都占用着若干资源,同时又在等待其他任务所占用的资源,从而造成所有任务都无法进展下去的现象,这种现象称之为死锁。这样的一组任务称之为死锁任务。在死锁状态下,每个任务都动弹不得,既无法去释放所占用的资源,他们互为因果、相互等待。产生死锁的原因:(1)竞争系统资源 (2)进程的推进顺序不当产生死锁的四个必要因素:(1) 互斥条件:一个资原创 2017-03-30 21:20:03 · 899 阅读 · 0 评论 -
Linux环境下多线程系列之线程控制
【线程的概念】线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外原创 2017-03-24 22:02:35 · 635 阅读 · 0 评论 -
进程间通信-----共享内存
linux下进程间通信的几种主要手段简介:1 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信;2 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发⽣生,除了用于进程间通信外,进程还可以发送信号给进程本身原创 2017-03-16 10:06:45 · 774 阅读 · 0 评论 -
阻塞与非阻塞,同步与异步
阻塞与非阻塞,同步与异步1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请转载 2017-08-20 15:02:42 · 463 阅读 · 0 评论