linux系统管理
文章平均质量分 90
Gamal_xin
这个作者很懒,什么都没留下…
展开
-
建议性锁和强制性锁的区别
所谓建议性锁就是假定人们都会遵守某些规则去干一件事。例如,人与车看到红灯都会停,而看到绿灯才会继续走,我们可以称红绿等为建议锁。但这只是一种规则而已,你并不防止某些人强闯红灯。而强制性锁是你想闯红灯也闯不了。建议性锁只在cooperating processes之间才有用,对cooperating process的理解是最重要的,它指的是会影响其它进程的进程或被别的进程所影响的进程,举两个转载 2014-09-03 09:00:10 · 2802 阅读 · 0 评论 -
Shell 编程--本文结合大量实例阐述如何编写一个shell脚本
本文结合大量实例阐述如何编写一个shell脚本。 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一转载 2014-08-12 11:20:17 · 424 阅读 · 0 评论 -
如何自己编写Makefile
相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云。在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide。其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次。你也可以自己写makefile,让别人对你头来羡慕的目光。 下面本人介绍一下自己的学习成果,初学阶段,欢迎大家多多指正。 简单转载 2014-08-12 12:56:13 · 325 阅读 · 0 评论 -
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
我们先写一个简单的脚本,执行以后再解释各个变量的意义 # touch variable# vi variable 脚本内容如下: #!/bin/shecho "number:$#"echo "scname:$0"echo "first :$1"echo "second:$2"echo "argume:$@"转载 2014-08-12 10:56:12 · 344 阅读 · 0 评论 -
linux awk命令详解
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfr转载 2014-08-12 11:34:55 · 307 阅读 · 0 评论 -
/etc/passwd & /etc/shadow 详解
默认情况下,/etc/passwd 存储有关本地用户的信息/etc/passwd 采用以下格式: 1)username UID到名称的一种映射,用户名 2)password 保存密码的位置,现在保存在/etc/shadow 中 3)UID 用户ID 4)GID转载 2014-08-12 11:02:26 · 1016 阅读 · 0 评论 -
我的一些简单的shell脚本实例
我的一些简单的shell脚本实例转载 2014-08-12 11:08:37 · 461 阅读 · 0 评论 -
【Linux学习】GDB调试器基本命令必知必会(一)
本文介绍Linux下GDB调试器常用的基本命令。测试均在Ubuntu12.10下完成。先看看GDB调试的效果图:对应的源代码:[cpp] view plaincopyprint?//插入排序,GDB调试测试代码 #include int x[10],//存放输入数据转载 2014-08-10 16:08:28 · 493 阅读 · 0 评论 -
进程&线程&死锁
一、死锁 操作系统中有若干进程并发执行,它们不断申请、使用、释放系统资源,虽然系统的进程协调、通信机制会对它们进行控制,但也可能出现若干进程都相互等待对方释放资源才能继续运行,否则就阻塞的情况。此时,若不借助外界因素,谁也不能释放资源,谁也不能解除阻塞状态。根据这样的情况,操作系统中的死锁被定义为系统中两个或者多个进程无限期地等待永远不会发生的条件,系统处于停滞状态,这就是死锁。 产转载 2014-08-10 15:26:56 · 371 阅读 · 0 评论 -
内核态和用户态的区别
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序转载 2014-09-06 16:34:59 · 444 阅读 · 0 评论 -
线程的同步机制
1、 Event用事件(Event)来同步线程是最具弹性的了。一个事件有两种状态:激发状态和未激发状态。也称有信号状态和无信号状态。事件又分两种类型:手动重置事件和自动重置事件。手动重置事件被设置为激发状态后,会唤醒所有等待的线程,而且一直保持为激发状态,直到程序重新把它设置为未激发状态。自动重置事件被设置为激发状态后,会唤醒“一个”等待中的线程,然后自动恢复为未激发状态。所以用自动重置事件转载 2014-09-06 13:19:15 · 436 阅读 · 0 评论 -
用户级线程和内核级线程的区别
转载于http://col1.blog.163.com/blog/static/1909775192012719114033352/1 .内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态;可以很好的利用smp,即利用多核cpu。windows线程就是这样的。 2. 用户级线程内核的切换由用户态程序自己控制内核切换,不需要内转载 2014-09-06 16:29:32 · 569 阅读 · 0 评论 -
父子进程共享的资源
先来看一个题目:当父进程调用fork()创建子进程之后,下列哪些变量在子进程中修改之后,父进程里也会相应地作出改动?A.全局变量B.局部变量C.静态变量D.文件指针答案为D,解释如下:fork()子进程和父进程共享的资源:打开的文件实际用户ID、实际组ID、有效用户ID、有效组ID添加组ID进程组ID对话期ID控制终端。 设置-用户-ID标志原创 2014-09-03 19:44:46 · 6774 阅读 · 0 评论 -
ubuntu安装ftp服务器 (二) 总结我自己的一些办法
1、如果不可以连通或其他问题的话,先使用service vsftpd restart2、如果出现:vsftpd: refusing to run with writable root inside chroot() 问题 为了避免一个安全漏洞,从 vsftpd 2.3.5 开始,chroot 目录必须不可写。使用命令: # chmod a-w /home/user原创 2014-02-25 14:00:13 · 554 阅读 · 0 评论 -
gcc编译过程
gcc所遵循的部分约定规则: .c为后缀的文件,C语言源代码文件; .a为后缀的文件,是由目标文件构成的档案库文件; .C,.cc或.cxx 为后缀的文件,是C++源代码文件; .h为后缀的文件,是程序所包含的头文件; .i 为后缀的文件,是已经预处理过的C源代码文件; .ii为后缀的文件,转载 2014-08-12 17:45:38 · 496 阅读 · 0 评论 -
Linux GCC编译使用动态、静态链接库
在windows下动态链接库是以.dll后缀的文件,二在Linux中,是以.so作后缀的文件。动态链接库的好处就是节省内存空间。1、Linux下创建动态链接库在使用GCC编译程序时,只需加上-shared选项即可,这样生成的执行程序即为动态链接库。例如有文件:hello.c x.h main.c[plain] view plaincopy转载 2014-08-12 17:43:09 · 444 阅读 · 0 评论 -
多进程写文件的三种方式
在写程序的时候,往往为了调试方便或者对于莫名的问题的追踪,需要写log记录进行处理,但是有时候会因为出现文件的读写比较慢或者是多进程访问导致出错或者内容混乱,但是如何才能避免呢,这里我有三个想法和大家分享一下,看看大家还有什么好方法,可以一起讨论。 (1)通过文件加锁的方式,在一个进程访问的时候将文件加锁,处理完了再关闭,不过这种方式会造成文件大频繁操作,导致性能比较低。转载 2014-09-02 23:52:48 · 1017 阅读 · 0 评论 -
理解互斥量和信号量
互斥量(Mutex) 互斥量表现互斥现象的数据结构,也被当作二元信号灯。一个互斥基本上是一个多任务敏感的二元信号,它能用作同步多任务的行为,它常用作保护从中断来的临界段代码并且在共享同步使用的资源。 Mutex本质上说就是一把锁,提供对资源的独占访问,所以Mutex主要的作用是用于互斥。Mutex对象的值,只有0和1两个值。这两个值也分别代表了Mutex的两转载 2014-09-02 09:24:00 · 424 阅读 · 0 评论 -
linux多进程下的文件共享(包括每个进程的文件表项的详细介绍)
1. 文件共享 (1) 每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,可将其视为一个矢量,每个描述符占用一项。与每个文件描述符相关联的是: (a) 文件描述符标识(close_on_exec)。 (b)指向一个文件表项的指针。 (2)内核为所有的打开文件维持一张文件表。每个文件表项包含: (a)文件状态标志(读、写、添加、转载 2014-09-03 00:04:42 · 2972 阅读 · 0 评论 -
竞态条件(多线程)
可以想像一下,如果在一个线程正在创建的同时另一线程正在退出,那么会发生什么情况呢?如果线程调度器正巧在它们之间切换,程序会莫名其妙地关闭。线程 1 正在执行i = i + 1; 这样的代码,线程 2 则在执行i = i - 1; 这样的代码。为了讨论的方便,假定变量 i 的初始值是 2。 线程 1:取出 i 的值(2)。 线程 1: i原创 2014-09-14 22:35:54 · 1093 阅读 · 0 评论 -
linux生产者消费者(解释得非常好)
摘要:同步和互斥是进程间很重要的交互模式,而生产者和消费者问题则是同步和互斥的一个景点模型。我认为理解概念应该结合实际来进行,所以本文以实现生产者和消费者模型的形式来讲述同步和互斥。本文先简单谈了个人对同步和互斥的概念的理解,然后用伪码的形式给出了各类生产者和消费者的解决方法,最后用C程序的形式实现了进程版的生产者和消费者模型。PS:C程序的运行平台是linux2.4.8,编译器为gcc4.1.1转载 2014-09-14 21:49:17 · 2652 阅读 · 0 评论 -
简单Linux C线程池
大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是"即时创建,即时销毁"的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数非常频繁,那么服转载 2014-09-14 21:04:30 · 433 阅读 · 0 评论 -
可重入函数的深入理解以及printf的可重入性
这个概念在嵌入式操作系统中比较重要,由于存在任务的调度,它实时系统,可剥夺型内核中是危险的,如同一个安静的水雷。可能会被触发,也可能安然无恙。由于它运行结果的不可预期性,会使系统带来隐患。printf()经常有重入解释不可重入函数不可以在它还没有返回就再次被调用。例如printf,malloc,free等都是不可重入函数。因为中断可能在任何时候发生,例如在printf执行过转载 2014-08-28 21:05:34 · 3271 阅读 · 0 评论 -
文件系统ext3的文件大小限制
ext3系统对应的单个文件限制为:blocksize 单个文件限制1k 16G2k 256G4k 2T我们怎么知道现在的分区是多大的blocksize呢?一般而言,格式化时会自动选择一个合适的文件大小的,硬盘大则会选4k,很小的则选择1k的。在正常的硬盘(600G)上:[root@aslibra ~]原创 2014-08-27 14:15:21 · 4314 阅读 · 0 评论 -
Linux中硬链接和软链接的区别和联系
对于一个文件来说,有唯一的索引接点(inode)与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。注意在Linux下是一切皆文件的啊,文件夹、新加的硬盘 ...都可以看着文件来处理的啊。 连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows 下的翻译 2014-08-12 16:42:11 · 348 阅读 · 0 评论 -
多线程中的使用共享变量的问题
一组并发线程运行在一个进程的上下文中,每个线程都有它自己独立的线程上下文,例如:栈、程序计数器、线程ID、条件码等,每个线程和其它的线程一起共享除此之外的进程上下文的剩余部分,包括整个用户的虚拟地址空间,当然也共享同样的打开的文件的集合。,这里有一点要特别注意,就是寄存器是从不共享的,而虚拟存储器总是共享的。有了共享就要防止在对共享变量进行操作的过程中得到一个不可知的值,在Linux内核中转载 2014-09-09 22:07:47 · 3642 阅读 · 0 评论 -
core简介
core是unix系统的内核。当你的程序出现内存越界的时候,操作系统会中止你的进程,并将当前内存状态倒出到core文件中,以便进一步分析。linux系统下执行代码,不能正常运行,程序会core,或者直接离开,不会corebug和操作系统或硬件的保护机制都会导致程序异常终止,操作系统会kill掉这些进程并产生core文件,程序员可以通过core文件来找出问题所在。 它记录了程序挂掉时详细的状转载 2014-08-12 17:17:53 · 2633 阅读 · 0 评论 -
Ubuntu无限次数进入登录界面
在我的ubutun无限次数进入登录界面后,我按Ctrl + Alt + F1 进入控制终端,这时候是全字符的界面,我可以login root 用户,或zm用户 以下两个人的不同方法: 一: (1)在tty下重启Xwindow:startx (我用的这个就成功了) (2)在tty下重装桌面sudo apt-get install ubuntu-desktop。原创 2014-02-25 13:23:50 · 4325 阅读 · 0 评论 -
【Linux学习】pthread_create主线程与创建的新线程之间退出关系
我们在一个线程中经常会创建另外的新线程,如果主线程退出,会不会影响它所创建的新线程呢?下面就来讨论一下。 1、 主线程等待新线程先结束退出,主线程后退出。正常执行。实例代码:[cpp] view plaincopyprint?#include "apue.h" #include pthrea转载 2014-08-05 13:03:53 · 470 阅读 · 0 评论 -
在Ubuntu或者Debian中安装PCRE库
Perl兼容正则表达式库(PCRE)有自己原生API,但是这一系列封装函是基于POSIX API,而POSIX API也支持libpcreposix库。这样只要提供一个POSIX的调用接口给PCRE后,正则表达式本身仍遵循Perl的语法和语义。POSIX-style的头文件是pcreposix.h,所以,安装PCRE,需要运行以下命令。sudo apt-get update sudo原创 2014-08-06 02:13:29 · 1978 阅读 · 0 评论 -
ps命令详解
原文地址:http://apps.hi.baidu.com/share/detail/32573968有时候系统管理员可能只关心现在系统中运行着哪些程序,而不想知道有哪些进程在运行。由于一个应用程序可能需要启动多个进程。所以在同等情况下,进程的数 量要比程序多的多。为此从阅读方面考虑,管理员需要知道系统中运行的具体程序。要实现这个需求的话,就需要利用命令ps来帮忙。要对进程进行监测和控转载 2014-08-20 15:03:55 · 401 阅读 · 0 评论 -
Ubuntu安装时:downloading language packs
ubuntu 安装时,downloading language packs原创 2014-05-08 22:19:32 · 8085 阅读 · 1 评论 -
设置ubuntu登录自启动程序
Ubuntu 12.04.2LTS首次登录自启动应用程序功能。假设需添加程序为存放在/home/my目录下的test一、在/etc/bash.bashrc中添加一行,/home/my/test &。二、在登录用户主目录下的.bashrc中添加一行,同一。转载 2014-05-07 10:27:45 · 1156 阅读 · 0 评论 -
select,poll,epoll区别
select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就可以标识32*max值范围的fd。对于单进程多线程,每个线程处理多个fd的情况,select是不适合的。1.所有的线程均是从1-32*max进行扫描,每个线程处理的均是一段fd值,这样做有点浪费转载 2014-08-05 08:11:17 · 298 阅读 · 0 评论 -
分布式是什么意思?
分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。 分布式操作系统负责管理分布式处理系统资源和控制分布式程序运行。它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。 分布式程转载 2014-08-20 14:51:48 · 2972 阅读 · 0 评论 -
什么是可重入函数和不可重入函数(转)
可重入函数 在 实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料的后果。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会 出错。不可重入函数在实时系统设计中被视为不安全函数。转载 2014-08-20 14:38:08 · 377 阅读 · 0 评论 -
为何要fork()两次来避免产生僵尸进程?
当我们只fork()一次后,存在父进程和子进程。这时有两种方法来避免产生僵尸进程:父进程调用waitpid()等函数来接收子进程退出状态。父进程先结束,子进程则自动托管到Init进程(pid = 1)。 目前先考虑子进程先于父进程结束的情况: 若父进程未处理子进程退出状态,在父进程退出前,子进程一直处于僵尸进程状态。若父进程调用waitpid()(这里使用转载 2014-08-20 12:34:45 · 330 阅读 · 0 评论 -
Linux文件权限详解
Linux文件权限详解 2011-03-16 21:07:29分类: LINUXLinux文件权限详解 文件和目录权限概述在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问;允许一个预先指定的用户组中的用户访问;允许系统中转载 2014-08-20 15:14:14 · 352 阅读 · 0 评论 -
linux中山中不同类型的进程
Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程——由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程——这种进程和终端没有联系,是一个进程序列。监控进程(也称守护进程)——Linux系统启动时启动的进程,并在后台运行。原创 2014-08-20 14:48:15 · 366 阅读 · 0 评论 -
标准IO与文件IO 的区别
先来了解下什么是标准IO以及文件IO。标准IO:标准I/O是ANSI C建立的一个标准I/O模型,是一个标准函数包和stdio.h头文件中的定义,具有一定的可移植性。标准IO库处理很多细节。例如缓存分配,以优化长度执行IO等。标准的IO提供了三种类型的缓存。(1)全缓存:当填满标准IO缓存后才进行实际的IO操作。 (2)行缓存:当输入或输出中遇到新行符时,标准I转载 2014-08-20 14:40:15 · 371 阅读 · 0 评论