12 2013 档案

摘要:传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将数据复制到其中一个缓冲区中,如果 该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后等待其到达队首时,才进行实际的I/O操作。这种输出方式被称为延迟写(delayed write)。延迟写减少了磁盘读写次数,但是却降低了文件内容的更新速度,使得欲写到文件中的数据在一段时间内并没有写到磁盘上。当系统发生故障时,这种延迟写可能造成文件更新内容的丢失。为了保证磁盘实际文件系统与缓冲区高速缓存中 阅读全文
posted @ 2013-12-31 09:18 ITtecman 阅读(1509) 评论(0) 推荐(1) 编辑
摘要:下面两个函数都可用来复制一个现有的文件描述符:#include int dup( int filedes );int dup2( int filedes, int filedes2 );两函数的返回值:若成功则返回新的文件描述符,若出错则返回-1由dup返回的新文件描述符一定是当前可用文件描述符中的最小数值。用dup2则可以用filedes2参数指定新描述符的数值。如果filedes2已经打开,则先将其关闭。如若filedes等于filedes2,则dup2返回filedes2,而不关闭它。这些函数返回的新文件描述符与参数filedes共享同一个文件表项。图3-3显示了这种情况。在此图中,我们 阅读全文
posted @ 2013-12-31 08:59 ITtecman 阅读(803) 评论(0) 推荐(0) 编辑
摘要:一、添写至一个文件考虑一个进程,它要将数据添加到一个文件尾端。早期的UNIX系统并不支持open的O_APPEND选项,所以程序被编写成下列形式:if( lseek( fd, 0L, 2 ) ssize_t pread( int filedes, void *buf, size_t nbytes, off_t offset );返回值:读到的字节数,若已到文件结尾则返回0,若出错则返回-1ssize_t pwrite( int filedes, const void *buf, size_t nbytes, off_t offset );返回值:若成功则返回已写的字节数,若出错则返回-1调用p 阅读全文
posted @ 2013-12-31 08:24 ITtecman 阅读(685) 评论(0) 推荐(0) 编辑
摘要:UNIX系统支持在不同进程间共享打开的文件。内核使用三种数据结构表示打开的文件,它们之间的关系决定了在文件共享方面一个进程对另一个进程可能产生的影响。(1)每个进程在进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,可将其视为一个矢量,每个描述符占用一项。与每个文件描述符相关联的是: (a)文件描述符标志(close_on_exec)。进程中每个打开描述符都有一个执行时关闭(close_on_exec)标志,若此标志设置,则在执行exec时关闭该描述符,否则该描述符仍打开。除非特地用fcntl设置了该标志,否则系统默认操作是在执行exec后仍保持该描述符打开。 (b)指向一个文件表项 阅读全文
posted @ 2013-12-30 21:53 ITtecman 阅读(1211) 评论(0) 推荐(0) 编辑
摘要:程序清单3-3中的程序使用read和write函数复制文件。关于该程序应注意下列各点:它从标准输入读,写至标准输出,这就假定在执行本程序之前,这些标准输入、输出已由shell安排好。确实,所有常用的UNIX系统shell都提供一种方法,它在标准输入上打开一个文件用于读,在标准输出上创建(或重写)一个文件。这使得程序不必自行打开输入和输出文件。很多应用程序假定标准输入是文件描述符0,标准输出是文件描述符1。本示例中则使用在中定义的两个名字:STDIN_FILENO和STDOUT_FILENO。考虑到进程终止时,UNIX系统内核会关闭该进程的所有打开的文件描述符,所以此示例并不会关闭输入和输出文件 阅读全文
posted @ 2013-12-30 17:58 ITtecman 阅读(519) 评论(0) 推荐(0) 编辑
摘要:调用write函数向打开的文件写数据。#include ssize_t write( int filedes, const void *buf, size_t nbytes );返回值:若成功则返回已写的字节数,若出错则返回-1。其返回值通常与参数nbytes的值相同,否则表示出错。write出错的一个常见原因是:磁盘已写满,或者超过了一个给定的进程的文件长度限制。对于普通文件,写操作从文件的当前偏移量处开始。如果在打开该文件时,指定了O_APPEND选项,则在每次写操作之前,将文件偏移量设置在文件的当前结尾处。在一次成功写之后,该文件偏移量增加实际写的字节数。本篇博文内容摘自《UNIX环境高 阅读全文
posted @ 2013-12-30 17:16 ITtecman 阅读(499) 评论(0) 推荐(0) 编辑
摘要:调用read函数从打开文件中读数据。#include ssize_t read( int filedes, void *buf, size_t nbytest );返回值:若成功则返回读到的字节数,若已读到文件结尾则返回0,若出错则返回-1。有多种情况可是实际读到的字节数少于要求读的字节数:读普通文件时,在读到要求字节数之前已到达了文件尾端。当从终端设备读时,通常一次最多读一行。当从网络读时,网络中的缓冲机构可能造成返回值小于所要求读到字节数。当从管道或FIFO读时,如若管道包含的字节数少于所需的数量,那么read将只返回实际可用的字节数。当从某些面向记录的设备(例如磁带)读时,一次做多返回一 阅读全文
posted @ 2013-12-30 17:09 ITtecman 阅读(475) 评论(0) 推荐(0) 编辑
摘要:每个打开的文件都有一个与其相关联的“当前文件偏移量”(current file offset)。它通常是一个非负整数,用以度量从文件开始处计算的字节数。通常,读、写操作都从当前文件偏移量处开始,并使偏移量增加所读写的字节数。按系统默认情况,当打开一个文件时,除非指定O_APPEND选项,否则该偏移量被设置为0。可以调用lseek显示地为一个打开的文件设置其偏移量:#include off_t lseek( int filedes, off_t offset, int whence );返回值:若成功则返回新的文件偏移量,若出错则返回-1。对参数offset的解释与参数whence的值有关。(注 阅读全文
posted @ 2013-12-30 16:53 ITtecman 阅读(2561) 评论(0) 推荐(0) 编辑
摘要:可调用close函数关闭一个打开的文件:#include int close( int filedes );返回值:若成功则返回0,若出错则返回-1。关闭一个文件时还会释放该进程加在该文件上的所有记录锁。当一个进程终止时,内核自动关闭它所有打开的文件。很多程序都利用了这一功能而不显示地用close关闭打开文件。本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。 阅读全文
posted @ 2013-12-30 15:21 ITtecman 阅读(317) 评论(0) 推荐(0) 编辑
摘要:本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。也可调用creat函数创建一个新文件。#include int creat( const char *pathname, mode_t mode );返回值:若成功则返回为只写打开的文件描述符,若出错则返回-1。注意,此函数等效于:open( pathname, O_WRONLY | O_CREAT | O_TRUNC, mode );在早期的UNIX系统版本中,open函数的第二个参数只能是0、1或2,没有办法打开一个尚未存在的文件,因此需要另一个系统调 阅读全文
posted @ 2013-12-30 15:16 ITtecman 阅读(371) 评论(0) 推荐(0) 编辑
摘要:调用open函数可以打开或创建一个文件。#include int open( const char *pathname, int oflag, ... /* mode_t mode */ );返回值:若成功则返回文件描述符,若出错则返回-1。我们将第三个参数写为...,ISO C用这种方法表明余下参数的数量及其类型根据具体的调用会有所不同。对于open函数而言,仅当创建新文件时才使用第三个参数。在函数原型中将此参数放置在注释中。pathname是要打开或创建的文件的名字。oflag参数可用来说明此函数的多个选项。用下列一个或多个常量进行“或”运算构成oflag参数(这些常量定义在头文件中):O 阅读全文
posted @ 2013-12-30 15:06 ITtecman 阅读(1198) 评论(0) 推荐(0) 编辑
摘要:一、引言UNIX系统中大多数文件I/O只需用到5个函数:open、read、write、lseek以及close。这些函数经常被称为不带缓冲的I/O(unbuffered I/O)。术语不带缓冲指的是每个read和write都调用内核中的一个系统调用。这些不带缓冲的I/O函数不是ISO C的组成部分,但是,它们是POSIX.1和Single UNIX Specification的组成部分。二、文件描述符对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件时,使用open或write返回的 阅读全文
posted @ 2013-12-30 14:09 ITtecman 阅读(428) 评论(0) 推荐(0) 编辑
摘要:就整体而言,这些不同的标准之间配合得相当好。但是我们也很关注它们之间的差别,特别是ISO C标准和POSIX.1之间的差别。ISO C定义了函数clock,它返回进程使用的CPU时间,返回值类型是clock_t。为了将此值变换成以秒为单位,将其除以在头文件中定义的CLOCKS_PER_SEC。POSIX.1定义了函数times,它返回其调用者及其所有终止子进程的CPU时间以及时钟时间,所有这些值都是clock_t类型值。sysconf函数用来获取每秒中的滴答数,用于表示times函数的返回值。有一个相同的术语,即每秒中的滴答数,但ISO C和POSIX.1的定义却不同。这两个标准也用同一数据类 阅读全文
posted @ 2013-12-30 10:46 ITtecman 阅读(358) 评论(0) 推荐(0) 编辑
摘要:历史上,某些UNIX系统变量已与某些C数据类型联系在一起。例如,历史上主、次设备号一直存放在一个16位的短整型中,8位表示主设备号,另外8位表示次设备号。但是,很多较大的系统需要用多于256个值来表示其设备号,于是,就需要有一种不同的技术。头文件中定义了某些与实现有关的数据类型,它们被称为基本系统数据类型(primitive system data type)。还有很多这种数据类型定义在其他头文件中。在头文件中,这些数据类型都是用C的typedef功能来定义的。它们绝大多数都以_t结尾。表1 某些常用的基本系统数据类型类型说明caddr_t核心地址clock_t时钟滴答计数器(进程时间)com 阅读全文
posted @ 2013-12-30 10:32 ITtecman 阅读(359) 评论(0) 推荐(0) 编辑
摘要:在头文件中定义了很多POSIX.1和XSI的符号。但是除了POSIX.1和XSI的定义之外,大多数实现在这些头文件中也加上了它们自己的定义。如果在编译一个程序时,希望它只使用POSIX定义而不使用任何实现自己定义的限制,那么就需要定义常量_POSIX_C_SOURCE。所有POSIX.1头文件中都使用此常量。当定义该常量时,就能排除任何实现专有的定义。注:POSIX.1标准的以前版本都定义了_POSIX_SOURCE常量。在POSIX.1的2001版中,它被替换为_POSIX_C_SOURCE。常量_POSIX_C_SOURCE及_XOPEN_SOURCE被称为功能测试宏(feature te 阅读全文
posted @ 2013-12-30 09:59 ITtecman 阅读(1110) 评论(0) 推荐(0) 编辑
摘要:POSIX.1的2001版,包括了ISO C标准所指定的各个函数。其接口分成了两类:必需接口和可选接口。可选接口按功能又进一步分成50个区。表1中按它们各自的选项代码总结了没有被弃用的编程接口。选项代码是由2-3个字符构成的字母缩写,以便标识属于各个功能区的接口。选项代码会突出显示手册相关页面上的文本,表明接口依赖于对特定选项的支持。很多选项处理实时扩展。表1 POSIX.1可选接口组和代码(SUS,Single UNIX Specification)代码SUS强制要求符号常量说明ADV_POSIX_ADVISORY_INFO建议性信息(实时)AIO_POSIX_ASYNCHRONOUS_IO 阅读全文
posted @ 2013-12-30 09:35 ITtecman 阅读(870) 评论(0) 推荐(0) 编辑
摘要:前言UNIX系统实现定义了很多幻数和常量,其中有很多已被硬编码(关于硬编码和软编码:http://www.cnblogs.com/chenkai/archive/2009/04/10/1432903.html)进程序中,或用特定的技术确定。由于大量标准化工作的努力,已有若干种可移植的方法用以确定这些幻数和实现定义的限制。这非常有助于软件的可移植性。以下两种类型的限制是必需的:(1)编译时限制(例如,短整型的最大值是什么?)。(2)运行时限制(例如,文件名可以有多少个字符?)。编译时限制可在头文件中定义,程序在编译时可以包含这些头文件。但是,运行时限制则要求进程调用一个函数以获得此种限制值。另外 阅读全文
posted @ 2013-12-29 14:14 ITtecman 阅读(3957) 评论(0) 推荐(1) 编辑
摘要:POSIX标准定义的可选头文件 头文件 说明 异步I/O 消息队列 线程 执行... 阅读全文
posted @ 2013-12-29 08:45 ITtecman 阅读(734) 评论(0) 推荐(0) 编辑
摘要:POSIX标准定义的XSI(X/Open System Interface)扩展头文件 头文件 说明 cpio归档值 动态链接 消息显示结构 ... 阅读全文
posted @ 2013-12-29 08:39 ITtecman 阅读(432) 评论(0) 推荐(0) 编辑
摘要:POSIX标准定义的必需头文件 头文件 说明 目录项 文件控制 文件名匹配类型 ... 阅读全文
posted @ 2013-12-29 08:24 ITtecman 阅读(695) 评论(0) 推荐(0) 编辑
摘要:一、UNIX标准化 1、ISO C (International Organization for Standardization) 2、IEEE POSIX (Institue of Electrical and Electronics Engineers,Portable Operating System Interface) 3、Single UNIX Specification(单一UNIX规范) POSIX.1标准的一个超集,定义了一些附加的接口,这些接口扩展了基本的POSIX.1规范提供的功能。相应的系统接口全集被称为X/Open系统接口(XSI, X/Open ... 阅读全文
posted @ 2013-12-29 08:09 ITtecman 阅读(722) 评论(0) 推荐(0) 编辑
摘要:摘自:http://see.xidian.edu.cn/cpp/html/1658.html 从技术上讲有两种C语言标准,一种来自ANSI(American National Standard Institute,美国国家标准协会)X3J11委员会,另一种来自ISO(International Standard Organization,国际标准协会)9899—1990。由于ISO标准中的某些改进优于ANSI标准,而ANSI标准也接受了这个国际版本,因此"ANSI/ISO标准”是一种正确的说法。 阅读全文
posted @ 2013-12-28 17:50 ITtecman 阅读(986) 评论(0) 推荐(0) 编辑
摘要:本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。 长期以来,UNIX系统一直使用两种不同的时间值: (1)日历时间 该值是自1970年1月1日00:00:00以来国际标准时间(UTC)所经过的秒数累计值(早期的手册称UTC为格林尼治标准时间)。这些时间值用于记录文件最近一次的修改时间等。 系统基本数据类型time_t用于保存这种时间值。 (2)进程时间 这也被称为CPU时间,用以度量进程使用的中央处理机资源。进程时间以时钟滴答计算,历史上曾经去每秒钟为50、60或100个滴答。 系统基... 阅读全文
posted @ 2013-12-28 17:12 ITtecman 阅读(1062) 评论(0) 推荐(0) 编辑
摘要:本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。 信号(signal)是通知进程已发生某种情况的一种技术。例如,若某一进程执行除法操作,其除数为0,则将名为SIGFPE(浮点异常)的信号发送给该进程。进程如果处理信号有三种选择: (1)忽略该信号。有些信号表示硬件异常,例如,除以0或访问进程地址空间以外的单元等,因为这些异常产生的后果不确定,所以不推荐使用这种处理方式。 (2)按系统默认方式处理。对于除以0的情况,系统默认方式是终止该进程。 (3)提供一个函数,信号发生时则调用该函数,这被称... 阅读全文
posted @ 2013-12-28 16:45 ITtecman 阅读(363) 评论(0) 推荐(0) 编辑
摘要:一、用户ID 口令文件(/etc/passwd)登录项中的用户ID(user ID)是个数值,它向系统标识各个不同的用户。系统管理员在确定一个用户的登录名的同时,确定其用户ID。用户不能更改其用户ID。通常每个用户有一个唯一的用户ID。 用户ID为0的用户为根(root)或超级用户(superuser)。在口令文件中,通常有一个登录项,其登录名为root,我们称这种用户的特权为超级用户特权。如果一个进程具有超级用户特权,则大多数文件权限检查都不再进行。某些操作系统功能只限于向超级用户提供,超级用户对系统有自由的支配权。二、组ID 口令文件登录项也包括用户的组ID(group ID),它是... 阅读全文
posted @ 2013-12-28 16:27 ITtecman 阅读(760) 评论(0) 推荐(0) 编辑
摘要:当UNIX函数出错时,常常会返回一个负值,而且整型变量errno通常被设置为含有附加信息的一个值。例如,open函数如成功执行则返回一个非负文件描述符,如出错则返回-1。在open出错时,有大约15种不同的errno值(文件不存在、权限问题等)。某些函数并不返回负值而是使用另一种约定。例如,返回一个指向对象的指针的大多数函数,在出错时,将返回一个null(或NULL)指针。 文件中定义了符合errno以及可以赋予它的各种常量,这些常量都以字符E开头。另外,UNIX系统手册第2部分的第1页intro(2)列出了所有这些出错常量。在Linux中,出错常量在errno(3)手册页中列出(可以使... 阅读全文
posted @ 2013-12-28 15:53 ITtecman 阅读(905) 评论(0) 推荐(0) 编辑
摘要:摘自:http://blog.csdn.net/fxjtoday/article/details/6021845 如果想明白为什么需要extern, 需要从编译和链接讨论起, 现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。但是到了链接阶段,要将各个文件的内容“合为一体”,因此,如果某些文件中定义的全局变量名相同的话,会报错. 因此,各个文件中定义的全局变量名不可相同。//A.cppint i;void main(){}//B.cppint i; 所以上面两个文件编译是没有问题的, 但是到了链接就... 阅读全文
posted @ 2013-12-28 15:16 ITtecman 阅读(767) 评论(0) 推荐(0) 编辑
摘要:一、程序 程序(program)是存放在磁盘上、处于某个目录中的一个可执行文件。使用6个exec函数中的一个由内核将程序读入存储器,并使其执行。二、进程和进程ID 程序的执行实例被称为进程(process)。某些操作系统使用任务(task)表示正在执行的程序。 UNIX系统确保每个进程都有一个唯一的数字标识符,称为进程ID(process ID)。进程ID总是一个非负整数。 程序清单1-4 打印进程ID[root@localhost unix_env_advance_prog]# cat prog1-4.c#include "apue.h"intmain(void){ p. 阅读全文
posted @ 2013-12-28 11:19 ITtecman 阅读(1141) 评论(4) 推荐(0) 编辑
摘要:一、文件描述符 文件描述符(file descriptor)通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。当内核打开一个已有文件或创建一个新文件时,它返回一个文件描述符。在读、写文件时,就可以使用它。二、标准输入、标准输出和标准出错 按惯例,每当运行一个新程序时,所有的shell都会为其打开三个文件描述符:标准输入(standard input)、标准输出(standard output)以及标准出错(standard error)。如果没有做什么特殊处理(如重定向),则这三个描述符都链向终端。三、不用缓冲的I/O 函数open、read、write、lseek以及cl... 阅读全文
posted @ 2013-12-28 10:18 ITtecman 阅读(614) 评论(0) 推荐(0) 编辑
摘要:程序清单1-1 列出一个目录中的所有文件(ls命令的简要实现):[root@localhost unix_env_advance_prog]# cat prog1-1.c #include "apue.h"#include int main(int argc, char *argv[]){ DIR *dp; struct dirent *dirp; if(argc != 2) err_quit("Usage: ls directory_name"); if((dp = open... 阅读全文
posted @ 2013-12-28 09:17 ITtecman 阅读(260) 评论(0) 推荐(0) 编辑
摘要:[root@localhost unix_env_advance_prog]# cat error.c #include "apue.h"#include #include static void err_doit(int, int, const char *, va_list);/** Nonfatal error related to a system call.* Print a me... 阅读全文
posted @ 2013-12-28 09:13 ITtecman 阅读(331) 评论(0) 推荐(0) 编辑
摘要:[root@localhost unix_env_advance_prog]# cat apue.h #ifndef _APUE_H#define _APUE_H#define _XOPEN_SOURCE 600#include #include #include #ifndef TIOCGWINSZ#include #endif#include #include #include #inc... 阅读全文
posted @ 2013-12-28 09:11 ITtecman 阅读(924) 评论(0) 推荐(0) 编辑
摘要:首先,明确一个类型DIR的含义:#include DIR A type representing a directory stream. DIR是在目录项格式头文件dirent.h中定义的,它表示一个目录流类型。一、opendir - open a directorySYNOPSIS #include #include DIR *opendir(const char *name); DESCRIPTIONopendir函数打开一个与给定的目录名name相对应的目录流,并返回一个指向该目录流的指针。打开后,该目录流指向了目录中的第一个目录项。 RETURN VALUEopendir函... 阅读全文
posted @ 2013-12-28 08:40 ITtecman 阅读(17521) 评论(0) 推荐(0) 编辑
摘要:UNIX文件系统是目录和文件组成的一种层次结构。目录(directory)是一个包含许多目录项的文件,在逻辑上,可以认为每个目录项都包含一个文件名,同时还包含说明该文件属性的信息。文件属性是指文件类型(是普通文件还是目录)、文件大小、文件所有者、文件权限以及文件最后的修改时间等。stat和fstat函数可获取包含文件所有属性的一个信息结构(可使用man fstat查看这两个函数的帮助信息)。stat, fstat, lstat – 获取文件属性信息SYNOPSIS #include #include #include int stat(const char *path... 阅读全文
posted @ 2013-12-27 21:47 ITtecman 阅读(1824) 评论(0) 推荐(0) 编辑
摘要:一、I/O流操作一般流程:(1)为每一个要打开的文件定义一个FILE *类型的指针变量,这个指针变量将指向I/O流使用的FILE结构体。(2)使用fopen函数打开I/O流。要打开一个I/O流,必须指定要打开的文件(或设备)以及打开后的访问方式(如:只读、只写或读写等)。(3)按照需要的操作读写文件。(4)最后,使用fclose函数关闭该I/O流。在标准流(stdin、stdout和stderr)上进行I/O操作不需要打开和关闭。(stdin、stdout和stderr其实也是执行FILE结构体的指针,它们是由运行时环境提供的)。I/O函数处理数据的方式分为三种:单字符、文本行和二进制数据。不 阅读全文
posted @ 2013-12-27 09:53 ITtecman 阅读(844) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/clarkchen/archive/2011/06/02/2068609.html 我一直没有搞得很清楚,回车和换行符有啥区别。 记得大一时,C语言老师就说过回车、换行,但都没说得那么细。前两天,看写两句Perl代码时,忽然想起区别一下回车和换行(\r和\n)。现在理解清楚了,记个笔记吧。 符号 ASCII码 意义 \... 阅读全文
posted @ 2013-12-26 11:31 ITtecman 阅读(491) 评论(0) 推荐(0) 编辑
摘要:对于库函数出错处理有两个十分有用的函数perror和exit: 一、错误报告 perror函数用一种简单统一的方式报告错误。ANSI C中的许多库函数,尤其是I/O函数,会调用操作系统去执行一些工作。但你要知道,任何时候操作系统都会有出错的可能。例如,一个程序试图去读取一个不存在的磁盘文件,这时操作系统除了提示:“出错了!”,别的它也做不了什么。这时,库函数首先会将代表操作出错的具体原因的错误... 阅读全文
posted @ 2013-12-26 10:45 ITtecman 阅读(450) 评论(0) 推荐(0) 编辑
摘要:参考:http://bbs.csdn.net/topics/290027166我們先一起來看看FILE是怎么定義的:FILEFilecontrolstructureforstreams.typedefstruct{shortlevel;unsignedflags;charfd;unsignedcharhold;shortbsize;unsignedchar*buffer,*curp;unsignedistemp;shorttoken;}FILE;再來看看這個flags是怎么定義的:_F_xxxxFilestatusflagsofstreamsName?Meaning_F_RDWR?Readan 阅读全文
posted @ 2013-12-26 08:28 ITtecman 阅读(970) 评论(0) 推荐(0) 编辑
摘要:上图为UNIX操作系统的体系结构。内核的接口被称为系统调用(system call),公用函数库构建在系统调用接口之上,应用软件既可以使用公用函数库,也可直接使用系统调用。 更详细的说明如下: 所有操作系统都提供多种服务的入口点,程序由此向内核请求服务。各种版本的UNIX实现都提供定义明确、数量有限、可直接进入内核的入口点,这些入口点被称为系统调用。 系统调用接口总是在《UNIX程序员手册》的第2部分中说明,在第3部分定义了程序员可以使用的通用函数。虽然这些函数可能会调用一个或多个内核的系统调用,但是它们并不是内核的入口点。 UNIX所使用的技术是为每个系统调用在标准C库中设置... 阅读全文
posted @ 2013-12-25 22:34 ITtecman 阅读(1222) 评论(0) 推荐(0) 编辑
摘要:本文转自:http://www.vckbase.com/index.php/wv/1592 什么是缓冲区 缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。 为什么要引入缓冲区 我们为什么要引入缓冲区呢? 比如我们... 阅读全文
posted @ 2013-12-25 19:41 ITtecman 阅读(395) 评论(0) 推荐(0) 编辑
摘要:一、研究数据库的人这样理解:http://wenku.baidu.com/view/32b8b13e376baf1ffc4fad7e.html Cache和Buffer是两个不同的概念,简单的说,Cache是加速“读”,而buffer是缓冲“写”,前者解决读的问题,保存从磁盘上读出的数据,后者是解决写的问题,保存即将要写入到磁盘上的数据。在很多情况下,这两个名词并没有严格区分,常常把读写混合类型... 阅读全文
posted @ 2013-12-25 19:31 ITtecman 阅读(330) 评论(0) 推荐(0) 编辑
摘要:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/wzgyantai-logs/24470871.html 当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是 ... 阅读全文
posted @ 2013-12-25 17:05 ITtecman 阅读(537) 评论(0) 推荐(0) 编辑
摘要:参考:http://blog.sina.com.cn/s/blog_674b5aae0100prv3.html 总览 (SYNOPSIS) #include int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int sprintf(char *str, con... 阅读全文
posted @ 2013-12-25 16:05 ITtecman 阅读(2499) 评论(0) 推荐(0) 编辑
摘要:GCC编译C源程序时出现:错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token,通常是因为在函数声明(包括包含的头文件中的函数声明)后面忘记了分号“;”。仔细检查一遍各个函数声明,把遗漏的分号“;”加上去就可以解决此问题。 阅读全文
posted @ 2013-12-25 11:16 ITtecman 阅读(2106) 评论(0) 推荐(0) 编辑
摘要:以下内容出自《Red Hat Linux服务器配置与应用》第17章:Telnet、SSH和VNC服务的配置与应用。俗话说:“前人栽树,后人乘凉”。我懒得再照书本打一遍了,就从这里拷贝了一份留作参考。http://hi.baidu.com/wangpengfeibad/item/60b9a9196f5c89463b176e26TelnetTelnet是进行远程登录的标准协议,它是当今Internet上应用最广泛的协议之一。它把用户正在使用的终端或计算机变成网络某一远程主机的仿真终端,使得用户可以方便地使用远程主机上的软、硬件资源。Telnet服务的安装Telnet有两个安装包:telnet-se 阅读全文
posted @ 2013-12-23 21:16 ITtecman 阅读(1245) 评论(0) 推荐(0) 编辑
摘要:一、NFS服务概述NFS(Network File System),即网络文件系统,是使不同计算机之间能够通过网络进行文件共享的一种网络协议,多用于Linux/Unix网络系统中。一台NFS服务器就如同一台文件服务器,只要将其文件系统共享出来,NFS客户端就可以将它挂载到本地系统中,从而可以像使用本... 阅读全文
posted @ 2013-12-23 08:31 ITtecman 阅读(6204) 评论(0) 推荐(0) 编辑
摘要:一步一学Linux与Windows共享文件Samba(很适合初学者,极力推荐):http://os.51cto.com/art/200709/56395.htm由最简单的一个例子说起,匿名用户可读可写的实现(试验过,确实可行)◆第一步: 更改smb.conf我们来实现一个最简单的功能,让所有用户可以读写一个Samba 服务器共享的一个文件夹;我们要改动一下smb.conf ;首先您要备份一下smb.conf文件;[root@localhost ~]# cd /etc/samba[root@localhost samba]# mv smb.conf smb.confBAK然后我们来重新创建一个s 阅读全文
posted @ 2013-12-22 17:17 ITtecman 阅读(723) 评论(0) 推荐(0) 编辑
摘要:一、复制、剪切和粘贴文本 1、行复制、剪切和粘贴 Alt+6:复制光标所在行。 Ctrl+K:剪切光标所在行。 Ctrl+U:粘贴。 2、自由复制、剪切和粘贴 自由复制: Ctrl+6:设置复制文本的起始位置。 Alt+6:设置复制文本的结束位置。 首先按Ctrl+6组合键,然后使用方向键选择复制区域,选好区域后按Alt+6实现对该区域的复制。 自... 阅读全文
posted @ 2013-12-22 14:14 ITtecman 阅读(15093) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.chinaunix.net/uid-22141042-id-1789605.html不得不说,RedHat的确很邪恶,如果我们直接用他自带的系统碟做YUM源的话,总是会得到类似下面的信息:media://1192656534.547140%232/httpd-2.2.3-11.el5.i386.rpm:[Errno 4] IOError: Trying other mirror.Error: failed to retrieve httpd-2.2.3-11.el5.i386.rpm from rhelerror was [Errno 4] IOError: 不过 阅读全文
posted @ 2013-12-22 09:03 ITtecman 阅读(358) 评论(0) 推荐(0) 编辑
摘要:转自:http://bbs.51cto.com/thread-861410-1.html一、在linux 6.1中本地yum源配置:首先编辑yum源配置文件我们可以再这个目录中新创建一个配置文件,vim yum.repo这里我引用redking大哥的配置文件说明配置文件内容简介:[ ]内的是仓库的名字name是仓库的描述也可以说是名字baseurl 仓库的位置enabled 是否启用这个仓库,1为起用,0为禁用gpgcheck 是否检查GPG签名(用来验证要安装的包是不是REDHAT官方的)我是这样配置的:GPGKEY 的存放地址我们需要命令导入这个签名。才能使用这项功能然后我们将签名写入Yu 阅读全文
posted @ 2013-12-22 08:27 ITtecman 阅读(366) 评论(0) 推荐(0) 编辑
摘要:可以使用set命令的x选项,显示所有命令执行及变量值的变化过程等。 具体使用方法:首先使用set -x开启调试模式,最后使用命令set +x关闭调试模式。 一个简单示例演示如何使用set命令进行脚本调试: [root@localhost shell]# cat hello.sh#!/bin/bash# This is a test script.# 2013/12/20#使用set命令... 阅读全文
posted @ 2013-12-20 21:21 ITtecman 阅读(2062) 评论(0) 推荐(1) 编辑
摘要:Shell脚本给管理和使用系统都带来了巨大的便利,然后在多用户系统中,也带来了许多安全性问题。在脚本中可能存在的安全性问题如下: (1)在脚本中使用cd命令,切换到不安全的目录执行脚本。 (2)在脚本中修改了环境变量的值,从而导致系统产生了变化。 (3)在某个目录中创建了非法的文件。例如使用重定向在目录/etc中创建了文件nologin,这将导致其他用户无法登陆。 在Shell脚本中,提供... 阅读全文
posted @ 2013-12-20 20:56 ITtecman 阅读(1639) 评论(0) 推荐(0) 编辑
摘要:上一篇《运行级别脚本》主要是从概念上认知运行级别脚本。本篇主要记录一些实用性的知识。 一、运行级别脚本的结构 [root@localhost rc0.d]# cat /etc/init.d/ntpd#!/bin/bash## ntpd This shell script takes care of starting and stopping# ... 阅读全文
posted @ 2013-12-20 20:20 ITtecman 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2013-12-20 17:55 ITtecman 阅读(143) 评论(0) 推荐(0) 编辑
摘要:一、break break的功能是跳出循环。如果使用了多个嵌套的循环,还可以指定要跳出的循环数。 [root@localhost shell]# cat test.sh#!/bin/bash#This is a test script.#2013/12/16while truedo while true do echo "inne... 阅读全文
posted @ 2013-12-20 15:34 ITtecman 阅读(172) 评论(0) 推荐(0) 编辑
摘要:一、until语句的基本格式 until 条件测试do 语句块done只要条件测试语句未成功结束,则执行语句块。(如果一开始条件测试语句就成功退出,那么一次也不执行语句块。这里跟C语言中的do...while不同。)二、while语句的基本格式 while 条件测试do 语句块done只要条件测试语句成功退出,则执行语句块。三、until和while的区别until是条件测试... 阅读全文
posted @ 2013-12-20 14:36 ITtecman 阅读(4685) 评论(0) 推荐(0) 编辑
摘要:一、for语句的基本格式 for 变量 in 列表do 语句块done二、使用for语句处理列表(数组) [root@localhost shell]# cat use_for_deal_with_list.sh#!/bin/bash#Use for loop deal with list.#2013.12.20I=1for LOOP in 1 2 3 4 5 6 do ... 阅读全文
posted @ 2013-12-20 09:56 ITtecman 阅读(1125) 评论(0) 推荐(0) 编辑
摘要:一、case语句的基本格式: case 变量 in 模式1) 语句块1 ;; 模式2) 语句块2 ;; ...... ;;esac上面的格式中,每个模式后面的两个分号“;;”是模式结束标记。系统执行模式后面的语句时,不会越过此标记。二、利用case语句处理选项参数 [root@localhost s... 阅读全文
posted @ 2013-12-20 09:32 ITtecman 阅读(3874) 评论(0) 推荐(0) 编辑
摘要:一、简单if语句的格式 if 条件表达式 then 语句1 语句2 ......fi二、if else语句的格式 if 条件测试 then 语句块1else 语句块2fi三、if elif 语句的使用 if 条件测试1 then 语句块1elif 条件测试2 then 语句块2elif 条件测试3 then 语句块3elif 条件... 阅读全文
posted @ 2013-12-19 20:47 ITtecman 阅读(381) 评论(0) 推荐(0) 编辑
摘要:一、退出状态 在Linux系统中,无论是命令、脚本还是程序,执行完成退出后都存在退出状态,退出状态通常保存在预定义变量$?中。大多数情况下,预定义变量只会使用两个数字表示命令、脚本和程序的退出状态。 数字0表示命令、脚本或程序成功执行,没有发生错误。 数字1表示在执行过程中发生了某些错误,没有成功执行。 由于退出状态由程序编写者定义,因此退出状态也可能不是0或1,遇到这种情况时,可能需要查... 阅读全文
posted @ 2013-12-19 11:13 ITtecman 阅读(525) 评论(0) 推荐(1) 编辑
摘要:我们知道,使用位置变量可以获取传递给脚本的参数,但是位置变量最多只能获取9个参数,当要使用的选项、参数大于9时,位置变量就无能为力了。 一、使用shift命令处理参数 参数操作命令shift的用法比较特殊,它没有选项和参数,直接运行命令即可。运行shift命令时,位置变量就像一个可以移动的“指针”,每执行一次,位置变量指向的参数将向后移动一位。即使用shift命令后,位置变量$1的值等于使用s... 阅读全文
posted @ 2013-12-18 10:06 ITtecman 阅读(1128) 评论(0) 推荐(0) 编辑
摘要:[root@localhost shell]# cat monitor_disk.sh #!/bin/bash#This script is used to monitor disk.#2013/12/17function disk_speed(){ A=`df -k | grep "$1" | awk '{print $3}'` sleep 30 ... 阅读全文
posted @ 2013-12-18 09:26 ITtecman 阅读(328) 评论(0) 推荐(0) 编辑
摘要:[root@localhost shell]# cat dep_check.sh #!/bin/bash#This is used to query the package dependencies.#2013/12/17#定义查询函数function query(){ #定义查询包的行、包名称和最大行数三个变量 LINE=0 PACKET=null... 阅读全文
posted @ 2013-12-17 20:10 ITtecman 阅读(548) 评论(0) 推荐(0) 编辑
摘要:需要编写一个较庞大的脚本时,可能会涉及许多函数、变量。这是通常建议将众多的函数、变量放入一个单独的脚本内。这样做的好处很明显,不用担心某个函数、变量是否已经被定义和使用,也不用频繁地定义、清除函数和变量。 一、函数文件的编写 函数文件的格式和脚本文件一样。 [root@localhost shell]# cat function.example #函数文件中也可以不写下面这行Shell... 阅读全文
posted @ 2013-12-17 17:11 ITtecman 阅读(2408) 评论(0) 推荐(0) 编辑
摘要:一、在脚本中定义函数 与变量一样,在使用函数之前应该对函数进行定义。与其他编程类语言相比,由于没有数据类型的概念,因此也不必定义函数的类型。 (1)在脚本中可以使用以下方式定义函数: function_name(){ 语句1 语句2 ...}(2)有时为了便于阅读,也可以使用以下方式定义函数: function function_name(){ 语句1 ... 阅读全文
posted @ 2013-12-17 15:29 ITtecman 阅读(871) 评论(0) 推荐(0) 编辑
摘要:当用户在登录界面正确地输入用户名和密码后,系统就开始为用户构建一个可以使用的用户环境。用户环境包括用户使用的环境变量、快捷键设置及命令别名等。这些设置大多是通过运行全局用户配置文件/etc/profile及用户主目录中的个人用户配置文件profile文件得到的。一、全局用户配置文件/etc/profile/etc/profile是一个全局配置文件,所有用户登录都会使用该文件构建用户环境。这个文件中设置了用户的环境变量、搜索路径等信息。[root@localhost ~]# cat /etc/profile# /etc/profile# System wide environment and s 阅读全文
posted @ 2013-12-17 14:32 ITtecman 阅读(6094) 评论(0) 推荐(0) 编辑
摘要:一、系统初始化脚本 从INIT进程的配置文件中可以看出,INIT进程首先读取了系统默认运行级别,之后立即使用/etc/rc.d/rc.sysinit脚本对系统进行初始化。 系统初始化脚本rc.sysinit在INIT进程被载入之后运行,主要的功能如下: 获取网络环境并设置相关环境变量。 添加/proc、/sysfs文件系统,检测是否存在USB设备,如有则尝试挂载,并载入USB... 阅读全文
posted @ 2013-12-17 13:51 ITtecman 阅读(2164) 评论(0) 推荐(0) 编辑
摘要:系统初始化过程是指从INIT进程成功启动,一直到系统启动并弹出登录提示之间的过程。当INIT进程成功启动后,它会根据配置文件/etc/inittab中的设置初始化系统,这个过程主要完成的工作有:重新挂载文件系统、运行系统需要的进程和服务等。 一、INIT进程的配置文件 INIT进程的配置文件是/etc/inittab,这个配置文件会引导INIT进程初始化系统,开启必要的进程、服务等。 查看i... 阅读全文
posted @ 2013-12-17 08:57 ITtecman 阅读(927) 评论(0) 推荐(0) 编辑
摘要:一、Linux系统的启动步骤 (1)主机加电自检:按下主机电源键之后,启动过程就开始了。系统会首先加载BIOS(Basic Input Output System,基本输入输出系统),检查连接到系统的设备,并枚举和初始化设备。这个过程会初始化所有连接到主机的设备,例如将光驱中的激光头复位、初始化键盘等设备。如果自检过程中没有发现错误,系统会根据BIOS中的设置查找处于活动状态并能用于引导系统的设... 阅读全文
posted @ 2013-12-16 21:39 ITtecman 阅读(424) 评论(0) 推荐(0) 编辑
摘要:一、数组的定义 【数组元素的格式】 ARRAY[index] index从0开始。 【定义数组】 在Bash中定义数组有两种方法: (1)直接在定义时为所有的数组元素赋值: [root@localhost shell]# ARRAY=(1 2 3 4 5)(2)对数组中每个数组元素进行赋值: [root@localhost shell]# ARRAY[0]=1; ARRAY[... 阅读全文
posted @ 2013-12-16 19:57 ITtecman 阅读(676) 评论(0) 推荐(0) 编辑
摘要:注意:与其他编程语言不同,Bash中的变量没有数据类型的区别。变量中的值都是以字符串的形式保存的,如果要进行数值计算,需要进行特殊转换。 Linux Shell下的变量按其使用目的可以分为3中类型。 环境变量:用于保存操作系统运行时使用的环境变量。 位置变量:Bash将传递给脚本的参数保存在位置变量中,以便于在脚本中引用这些参数。 预定义变量:由系统保留和维护的一组特殊的变量,这些变量通常... 阅读全文
posted @ 2013-12-16 19:02 ITtecman 阅读(1364) 评论(0) 推荐(0) 编辑
摘要:Tcsh主要用于Free BSD等UNIX系统中。 一、输出字符串Hello的示例脚本 Tcsh脚本的基本格式、编写方法及脚本中使用的命令等,与Bash脚本完全相同,只需要直接套用即可。 [root@localhost shell]# cat hello.csh#!/bin/tcsh#This is a test script.#This script will output hell... 阅读全文
posted @ 2013-12-15 16:59 ITtecman 阅读(2195) 评论(0) 推荐(0) 编辑
摘要:为实现某个任务,将许多命令组合后,写入一个可执行的文本文件的方法,称为Shell脚本编程。 按照应用的Shell环境不同,可以将Shell脚本分为多种类型。其中最常见的是应用于Bash和Tcsh的脚本,通常将其称为Bash和Tcsh脚本。同Tcsh脚本相比,Bash脚本在Linux中的应用相对较广。 一、Shell脚本的基本内容 Shell脚本其实就是一个文本文件,因此建立新的脚本文件时,可... 阅读全文
posted @ 2013-12-15 16:05 ITtecman 阅读(406) 评论(0) 推荐(0) 编辑
摘要:在安装gtk+编译环境的过程中,你会发现,RPM软件包之间的依赖关系非常复杂。在实际管理过程中,这种依赖关系可能会更加复杂。因此非常有必要寻找一种自动化安装工具,让安装工具自己处理这些关系复杂的依赖关系。幸运的是Red Hat推出了一个名为Yellowdog Updater Modified的包管理器(通常简称为yum)。一、yum简介yum包管理器可以自行计算要安装软件包的依赖性,并自动安装软件包需要的软件包和库文件。使用yum包管理器时,需要为其设置yum使用的软件源(软件源也称为软件仓库,其中包含了若干rpm安装包和yum工作的索引文件)。对于使用Fedora Core Linux发行版 阅读全文
posted @ 2013-12-14 16:44 ITtecman 阅读(1032) 评论(0) 推荐(0) 编辑
摘要:编译安装的优点: 可以获得更新的软件(软件更新时,可能还没来得及制作rpm软件包)。 编译安装的软件可以按需定制。编译安装时可以通过开启、禁用某些功能获得更好的性能。 编译安装软件会按系统硬件的实际情况编译某些模块,因此拥有更好的适用性。 高级用户可以按需要修改源代码,为自己量身定制软件。 一、安装编译环境 在编译安装应用之前,首先需要安装编译环境。Linu... 阅读全文
posted @ 2013-12-14 15:24 ITtecman 阅读(1613) 评论(0) 推荐(0) 编辑
摘要:RPM包管理器是由Red Hat推出的应用软件管理器(过去的RPM就是Red Hat Package Manager的缩写)。RPM包管理器是Linux系统中最早的软件包管理软件之一,也是目前最流行的软件包管理器,许多发行版都使用RPM作为默认的软件包管理软件。一、RPM包管理器简介【软件依赖性】与Windows系统中的软件不同,Linux系统中的软件将不同的功能模块单独写入到不同的软件包中,最后将多个相互依存的软件包结合起来形成一个应用程序。虽然这在Windows中也经常使用,但Linux系统中的软件模块划分得更小、功能更单一。因此在安装功能性软件时,通常需要安装许多与其具有依赖关系的软件包 阅读全文
posted @ 2013-12-14 09:51 ITtecman 阅读(1020) 评论(0) 推荐(0) 编辑
摘要:一、使用gzip压缩文件 gzip是GNU zip的缩写。 【命令格式】 gzip [option] filename 【常用选项】 c:压缩后将结果输出到标准输出,并保留原始文件。 d:解压缩文件。 l:显示压缩文件的详细信息。 r:递归地处理目录下的所有文件及子目录,或递归地解压缩文件内的目录和子目录。 v:显示命令的执行过程。 t:测试压缩文件。 num:num为数字1... 阅读全文
posted @ 2013-12-14 08:23 ITtecman 阅读(4613) 评论(0) 推荐(0) 编辑
摘要:cpio是一个比较古老的备份命令,也是用于磁带机备份的工具。虽然如此,现在许多时候仍然需要使用这个命令。例如定制系统内存映像盘时等。 小知识:系统内存映像盘通常位于引导分区/root中,文件名以initrd开头。该文件主要用于系统启动时加载需要的模块,例如文件系统模块、RAID模块等。 小知识:内存映像,其实就是在内存中创建一个和外存文件完全相同的映像。用户可以将整个文件映射到内存,也可以部分... 阅读全文
posted @ 2013-12-13 20:20 ITtecman 阅读(1420) 评论(0) 推荐(0) 编辑
摘要:一、tar命令的基本格式 在UNIX、Linux系统中,有许多命令可以用于备份数据,其中最常见的命令是tar命令。。tar是UNIX和Linux系统中的打包工具,可以将多个文件或目录打包(也称为归档)成一个文件,因最初设计目的是用于磁带备份(tape archive)而得名。 【命令格式】 tar [option] [file]… 【常用选项】 c:建立一个新归档文件。 f:指定需要归... 阅读全文
posted @ 2013-12-13 18:10 ITtecman 阅读(398) 评论(0) 推荐(0) 编辑
摘要:数据备份的方式有完全备份、差异备份以及增量备份,那么这三种备份方式有什么区别,在具体应用中又该如何选择呢?本文就这些问题作以介绍。一、备份方式简介1、完全备份(Full Backup)备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件。在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份。换言之,清除存档属性。完全备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应用中就是用一盘磁带对整个系统进行完全备份,包括其中的系统和所有数据。这种备份方式最大的好处就是只要用一盘磁带,就可以恢复丢失的数据。因此大大加快了系统或数据的恢复时间。然而它的不足之处在于,各个 阅读全文
posted @ 2013-12-13 15:52 ITtecman 阅读(1267) 评论(0) 推荐(0) 编辑
摘要:如果你是属于如标题这种情况:也就是从实验室换到宿舍或者从宿舍换到实验室,在之前的地方可以上网,但换了地方后就出现只能上QQ而不能打开网页的情况。此时,首先考虑DNS配置,很有可能是因为你搬到了宿舍,但DNS配置里写的还是实验室的DNS。在这种情况下,出现的现象还包括,在你刚从实验室搬到宿舍的开始一段时间还是可以正常上网(但可能出现网速慢的现象),过了一段时间就只能登上QQ而完全打不开网页了。如果是这样就赶紧修改DNS配置吧,改为自动获取或者是目前所在地方(实验室或宿舍)用的DNS。 阅读全文
posted @ 2013-12-13 10:19 ITtecman 阅读(279) 评论(0) 推荐(0) 编辑
摘要:一、syslogd守护进程及其配置文件 系统在运行中可能会产生许多事件,这些事件都会通过日志消息的形式交给日志守护进程。日志守护进程会对这些日志消息进行筛选、分类,然后存放到指定的日志文件中。 RHEL5.3使用的日志服务是syslog(不同发行版本使用的日志服务可能会不同),这是一个标准的日志服务程序,不仅可以记录本地系统产生的消息,还可以记录多个联网的服务器、交换机和路由器等设备的日志。 ... 阅读全文
posted @ 2013-12-13 10:10 ITtecman 阅读(1027) 评论(0) 推荐(0) 编辑
摘要:一、为计划任务提供支持 开始为系统建立计划任务之前,需要为系统添加相关设置,以确保计划任务能够正确运行。计划任务需要的支持主要包括两个方面:正确运行系统服务、准确的系统时间。 1、正确运行系统服务 为系统添加计划任务之前,必须要确保计划任务相关的服务已经正确启动。为计划任务提供支持的系统服务是crond和atd,因此必须保证这两个服务能随系统自动启动。 设置crond、atd服务随系统自动... 阅读全文
posted @ 2013-12-12 22:11 ITtecman 阅读(1748) 评论(0) 推荐(0) 编辑
摘要:小知识:Linux系统启动时,运行的第1个进程名为init。这个进程是所有进程的父进程,其PID永远是1。PID是系统分配给进程的唯一的标识符,虽然系统中可能存在两个名称一样的进程,但PID绝对不同。当系统启动进程时,init会通过系统调用的方式启动新进程,并为新进程分配资源和PID等。而当进程结束时,系统会收回分配给进程的资源和PID等,这些资源和PID可以重复利用,下一次系统可能会将这些资源又... 阅读全文
posted @ 2013-12-12 16:02 ITtecman 阅读(1386) 评论(0) 推荐(2) 编辑
摘要:小知识:服务是指操作系统中提供指定功能的程序或进程。服务也是一种应用程序,不同的是服务一般只在后台运行,且服务的对象一般是本地系统或网络中的主机和用户。 一、查看系统服务 Linux系统中存在许多服务,按服务对象不同,通常可以分为本地系统服务和网络服务两类。本地系统服务主要用于支撑本地系统运行,例如打印、网络支持、防火墙服务、蓝牙支持服务等。网络服务通常用于对网络中的用户或主机提供服务,例如W... 阅读全文
posted @ 2013-12-12 08:29 ITtecman 阅读(492) 评论(0) 推荐(0) 编辑
摘要:一、查看文件系统使用情况命令df [root@localhost home]# dfFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda2 3960348 2391124 1364800 64% //dev/sda3 10216120 ... 阅读全文
posted @ 2013-12-11 19:50 ITtecman 阅读(344) 评论(0) 推荐(0) 编辑
摘要:在多用户系统中,如果没有对用户使用的磁盘空间做出限制,用户无限制地存放数据和文件,可能会导致系统磁盘空间告警。如果存放的是无用数据,就会导致磁盘空间白白浪费。磁盘配额可以限制用户或组在磁盘上存放文件的空间,这样既可以让用户拥有一定的存储空间,又可以避免用户无限制地存放数据导致系统磁盘空间不足。 一、为磁盘配额提供支持 在Linux系统中,为磁盘配额提供支持的是quota软件包,如果系统中没有安... 阅读全文
posted @ 2013-12-11 15:40 ITtecman 阅读(2503) 评论(0) 推荐(0) 编辑
摘要:要使用磁盘存储数据,必须要先分区、建立文件系统,之后才可以挂载并使用文件系统存储数据。但是一些系统中凸显了这种方式的弊端:随着应用的不断扩展,存储的数据越来越多(例如数据库、文件服务器等),分区大小不能在线扩充就成了一个棘手的问题。为了解决问题,管理员们不得不关闭正在提供的业务,然后在线下执行扩展和数据转移工作。由于数据量巨大,线下扩展通常花费的时间很长,这对与关键性业务而言可能是致命的。 可以使... 阅读全文
posted @ 2013-12-11 11:08 ITtecman 阅读(1311) 评论(0) 推荐(0) 编辑
摘要:RAID(Redundant Array of Independent Disk),独立冗余磁盘阵列(通常简称磁盘阵列)。磁盘阵列的实质是将多个磁盘通过RAID控制器组合在一起,形成一个新的磁盘。这个新的磁盘具有更大的容量(将多个磁盘合并使用)、更好的容错性(一份数据多个拷贝),以及更快的读写速度(多磁盘同时读写)等优势。 对与计算机而言,磁盘阵列就是一个磁盘。 一、磁盘阵... 阅读全文
posted @ 2013-12-10 21:48 ITtecman 阅读(571) 评论(0) 推荐(0) 编辑
摘要:1、创建文件系统命令mkfs分区在使用前,应该对其进行初始化(主要目的是将数据组织结构等写入分区),这个过程在Windows系统中叫做格式化,在Linux系统中称为创建文件系统。Linux系统中,创建文件系统可以使用mkfs系列命令(命令提示符下输入mkfs,然后TabTab可以查看一系列的mkfs命令)。按创建的文件系统不同,mkfs系列命令包括:mkfs.ext3、mkfs.ext2和mkfs.vfat等。利用这些命令可以为分区创建相应的文件系统,也可以直接使用mkfs命令创建不同的文件系统。【命令格式】mkfs [option] device【常用选项】t:用于指定创建的文件系统类型。L 阅读全文
posted @ 2013-12-10 19:44 ITtecman 阅读(406) 评论(0) 推荐(0) 编辑
摘要:查看磁盘设备列表命令fdisk【命令格式】fdisk [option] device【常用选项】l:列出当前系统中的磁盘设备及分区详情。提示:在Linux系统中,所有的设备都被放置在/dev/中。对于磁盘等存储设备而言,sd通常表示SCSI磁盘、SATA磁盘、U盘等设备,hd通常表示IDE设备。而软驱通常使用fd表示,光驱则使用hdc或cdrom表示。查看磁盘设备命令hdparmhdparm命令主要用于查看IDE硬盘的工作参数。【命令格式】hdparm [option] device【常用选项】I:显示硬盘提供的硬件信息。T:评估硬盘从快速缓存(cache)中读取数据的速度。t:评估硬盘从缓冲 阅读全文
posted @ 2013-12-10 17:44 ITtecman 阅读(366) 评论(0) 推荐(0) 编辑
摘要:目的:(1)有效管理系统中的用户; (2)运用文件权限使系统中的多个用户同时使用系统,但互不影响。 一、用户管理 系统用户文件概述 (1)系统用户文件: 用于保存系统用户及用户设置的文件是/etc/passwd. [root@localhost test]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashb... 阅读全文
posted @ 2013-12-10 17:01 ITtecman 阅读(2205) 评论(0) 推荐(0) 编辑
摘要:使用Linux自带的split命令,可以将很大的文件分割成若干个小文件,以方便传送和使用。 命令格式: split [option] [input file] [output file] 常用选项: l:按行对文件进行分割。 b:按字节对文件进行分割。 C:按字节对文件进行分割,split会尽量保持一个整行。 d:使用数字作为输出文件的后缀。 在指定输出文件名称后,split会将分... 阅读全文
posted @ 2013-12-09 09:37 ITtecman 阅读(774) 评论(0) 推荐(0) 编辑
摘要:命令uniq经常用于去除一个文本中的重复行。用sort命令也可以去除重复行,但二者有较大区别:用sort去除重复行时,sort将整个文本中的多个重复行去除,仅保留一行,而uniq会将多个连续重复的行去除,仅保留一行。 命令格式: uniq [option] [input [output]] 常用选项: c:输出重复行的重复次数。 d:仅输出重复的行。 f:忽略一些字段,... 阅读全文
posted @ 2013-12-09 09:21 ITtecman 阅读(517) 评论(0) 推荐(0) 编辑
摘要:join主要用来将两个相关联的文件连接起来。两个文件相关联的意思是指这两个文件中有一些字段是关联的,例如两个文件的第1个字段都是学号,且每个学生的学号是唯一的。像这种具有唯一性关联的文件,就可以使用join命令连接。 命令格式: join [option] file1 file2 常用选项: a:用于输出两个文件中有关联的和没有关联的行,将有关联的行执行连接后输出,没有... 阅读全文
posted @ 2013-12-09 08:53 ITtecman 阅读(647) 评论(0) 推荐(0) 编辑
摘要:在Windows中,经常从一个文件将一段文本移动到另一个文件中。在Linux中执行这个任务的是cut和paste命令。 一、数据剪切命令cut 命令格式: cut [option] [file] 常用选项: b:表示要操作的对象是字节。 c:表示要操作的对象是字符。 f:表示要操作的对象是字段。 d:指定字段分隔符,默认情况下是制表符Tab。 s:表示不包含没有字... 阅读全文
posted @ 2013-12-08 22:07 ITtecman 阅读(1364) 评论(0) 推荐(0) 编辑
摘要:Unix和Linux自带的sort命令功能非常强大,其主要功能是对文本内容按不同的方法排序。它不仅可以按一个或多个字段排序,还可以合并文件。使用sort处理一些较大的文件时,可能处理速度会比较慢,但却非常有效。命令格式:sort [option] [file]sort处理的文本可以来自一个文本文件,也可以来自标准输入和管道等。常用选项:b:按字典顺序进行排序,忽略前面的空格或制表符。d:按字典顺序进行排序,将除空格和字母以外的字符排除。f:忽略大小写。g:根据数值进行排序,默认从小到大(可以配合r使用按数值从大到小排序)。i:只考虑可打印的字符。M:将字符按月份进行比较,例如JANstuden 阅读全文
posted @ 2013-12-08 19:22 ITtecman 阅读(1406) 评论(0) 推荐(0) 编辑
摘要:前几篇文章介绍了几个用于处理字符的命令和工具,然而在处理大小写转换、删除重复字符等任务时,这些命令处理起来相对较为麻烦。这里将简单介绍Linux下自带的tr命令,相对于其他命令而言,其语法较为简单,比较方便记忆。 一、tr命令的基本格式 tr命令用于处理字符转换、删除重复字符等任务。 命令格式: tr [option] [string1] [string2] 在tr的基本命令格式... 阅读全文
posted @ 2013-12-08 16:39 ITtecman 阅读(682) 评论(0) 推荐(0) 编辑
摘要:在管理和维护Linux系统过程中,有时可能需要从一个具有一定格式的文本(格式化文本)中抽取数据,这时可以使用awk编辑器来完成这项任务。发明这个工具的作者是Aho、Weinberg和Kernighan,取三个人名的首字母而得名awk。 与sed相比,awk更擅长处理格式化文本。格式化文本一般使用某个特定的字符(称为域分隔符)将文本中不同的字段(称为域)隔开。例如用于保存用户信息的系统用户文件/e... 阅读全文
posted @ 2013-12-08 15:47 ITtecman 阅读(4211) 评论(0) 推荐(2) 编辑
摘要:sed与grep一样,都起源于老式的ed编辑器,因其是一个流编辑器(stream editor)而得名。与vi等编辑器不同,sed是一种非交互式编辑器(即用户不必参与编辑过程),它使用预先设定好的编辑指令对输入的文本进行编辑,完成之后再输出编辑结果。 sed工作时,首先读取文本中的第1行,将其放入一个被称为模式空间的临时缓冲区内。然后再读取第一条编辑指令,使用指令中定义的模式和行号查找、编辑文本... 阅读全文
posted @ 2013-12-07 19:35 ITtecman 阅读(1598) 评论(0) 推荐(3) 编辑
摘要:许多时候需要从一大堆的命令输出或文本内容中找出一两行关键的内容,例如从系统用户文件中查找某个用户。如果不借助工具,这将是一项非常繁琐的工作,这时可以使用grep工具对内容进行筛选。grep(global regular expression print,全局正则表达式打印),来源于最早的行编辑器ed。grep是管理和维护系统时经常用到的一个工具。一、grep的基本格式命令格式:grep [option] pattern [file(file-list)]grep工具在文件file中查找与字符串pattern匹配的内容,如果找到,则将整行输出到标准输出。常用选项:i:忽略大小写。n:将结果输出的 阅读全文
posted @ 2013-12-07 10:44 ITtecman 阅读(955) 评论(0) 推荐(0) 编辑
摘要:与locate、whereis命令相比,find具有本质的区别: 首先,find是从指定的位置进行遍历查找(可以理解为对文件和目录进行逐一查找)。 其次,find可以查找具有某一类特征的文件(例如查找具有某个权限特征的文件等),非常适合于批量处理具有某一类特征的文件。 一、find基本格式 命令格式: find [path] [expression] 参数解析: path:find查... 阅读全文
posted @ 2013-12-07 09:03 ITtecman 阅读(551) 评论(0) 推荐(0) 编辑
摘要:使用文件名通配符模糊查找文件非常高效,而如果要在命令输出或文本中筛选内容时使用模糊查找,就需要使用正则表达式。 正则表达式是一套由多个元字符组成的模糊查找模式,使用正则表达式可以快速查找和定位文本中指定的内容。 Linux系统中许多工具都可以使用正则表达式,这些工具包括grep、awk、sed和vi等。 正则表达式主要由一些元字符和匹配模式组成,常用的元字符和匹配模式介绍如下: 1、单字符... 阅读全文
posted @ 2013-12-06 15:17 ITtecman 阅读(374) 评论(0) 推荐(0) 编辑
摘要:1、逻辑或“||” 运算符格式:command1 || command2 执行命令时,先执行command1,如果command1执行成功,则跳过命令command2,执行后面的内容;如果command1执行失败才会执行command2. 用法示例: (1)下面是一个读取邮件的例子: [zhu@localhost ~]$ mail -f /root/mbox || echo "Pe... 阅读全文
posted @ 2013-12-06 11:08 ITtecman 阅读(1136) 评论(0) 推荐(0) 编辑
摘要:提示:在Windows中通常将一些正则表达式的基本字符称为通配符,而在Linux操作系统中人们则将这些基本字符称为元字符。使用多个元字符组成的查找表达式称为匹配模式,使用匹配模式查找的过程称为(模式)匹配。1、单字符匹配元字符“?”元字符“?”表示匹配文件名中任意一个字符,连续使用多个元字符“?”可以表示多个任意字符。(1)例如要查看有两个字符且第一个字母是a的文件:[root@localhost zhu]# ls -l a?-rw-r--r-- 1 root root 0 Dec 6 09:46 ab-rw-r--r-- 1 root root 0 Dec 6 09:46 ac-rw-r.. 阅读全文
posted @ 2013-12-06 10:17 ITtecman 阅读(1839) 评论(0) 推荐(0) 编辑
摘要:一、字符串引用符双引号和单引号 1、双引号 双引号“”通常用来表示引用一个字符串,有时能屏蔽一些标点等特殊符号。在命令中使用双引号时,一般表示引用的部分是一个不可分割的整体。 通常可以理解为所有放入双引号中的内容都按照字符串来处理,除非有另一个引用号告知某个特殊字符串具有特殊含义(例如变量等)。 (1)屏蔽特殊字符 [root@localhost ~]# echo Tom Jim ... 阅读全文
posted @ 2013-12-06 09:12 ITtecman 阅读(740) 评论(0) 推荐(0) 编辑
摘要:一、回显命令echo 功能:将参数指定的字符串输出到标准输出。 格式:echo [option] string 常用选项: E:禁用转义字符(默认)。 e:启用转义字符。 n:输出结束后不换行。 用法示例: (1)echo命令最常用的是输出字符串(不加任何选项时,默认是屏蔽转义字符的): [root@localhost ~]# echo "The first line.\n... 阅读全文
posted @ 2013-12-05 11:04 ITtecman 阅读(691) 评论(0) 推荐(0) 编辑
摘要:在Linux系统中,root用户拥有至高无上的权限,使用root用户登录可能会由于人为的误操作导致数据丢失.因此一般情况下都不建议使用root用户登录系统,以免无意中损坏数据.通用的做法是使用普通用户登录并使用系统,当需要执行管理操作时,再切换到root用户执行管理操作.1、临时切换用户命令susu命令用于临时切换到指定的用户。当用户使用此命令切换用户后,执行的操作将以切换后的用户身份执行,直到用户执行exit命令为止。(1)例如要切换到root用户:[zhu@localhost ~]$ whoamizhu[zhu@localhost ~]$ su rootPassword:[root@loc 阅读全文
posted @ 2013-12-04 20:56 ITtecman 阅读(982) 评论(0) 推荐(0) 编辑
摘要:1、查看联线用户命令who、finger和w (1)使用who命令查看当前联线到系统中的用户: [root@localhost ~]# whoroot tty1 2013-11-19 20:50zhu pts/0 2013-12-03 09:56 (192.168.1.6)who命令输出了所有联线的用户、登录的终端时间和IP等信息。(2)使... 阅读全文
posted @ 2013-12-03 10:22 ITtecman 阅读(307) 评论(0) 推荐(0) 编辑
摘要:1、查看日期时间命令date 目前大多数Unix和Linux系统,都使用自1970年1月1日至今的秒数计算并保存时间,因此Linux系统中的时间计算多使用秒数。 命令格式: date [option] [+FORMAT] 常用选项: date命令的常用选项只有一个s,其作用是从指定的字符串中读取并设置当前系统的时间。 用法实例: (1)使用date命令查看系统时间 [root... 阅读全文
posted @ 2013-12-03 09:35 ITtecman 阅读(752) 评论(0) 推荐(0) 编辑
摘要:1、查看文本文件内容命令cat 命令格式:cat [option] filename cat命令常用的选项只有v,其功能是显示文件内容的同时,也显示文件中的控制字符,这个选项可以非常方便的查看脚本中不能识别的控制字符。 2、从文本尾查看文本内容命令tail(默认查看文件的最后10行) tail命令是从文本最后一行开始查看文本,这是一个非常有用的命令,管理员经常使用这个命令查看新产生的日志消... 阅读全文
posted @ 2013-12-02 21:47 ITtecman 阅读(318) 评论(0) 推荐(0) 编辑
摘要:Linux系统的文件命名规则与Windows系统相差较大: (1)文件命名规则 Linux系统中的文件名最长可以有256个字符,文件名称可以由大小写字母、数字、下划线、减号及一些特殊符号组成。这些特殊符号可以是空格、$、?、*等,这些特殊符号通常都具有特殊的含义,因此在创建文件时通常不推荐使用这些符号。除此之外,由于斜杠“/”是路径分隔符,因此也不能在文件名中使用。 (2)文件扩展名 Li... 阅读全文
posted @ 2013-12-02 21:11 ITtecman 阅读(329) 评论(0) 推荐(0) 编辑
摘要:1、切换工作目录命令cd 2、查看当前路径命令pwd 3、查看文件列表命令ls 4、文件链接命令ln 命令格式:ln [option] Target Link_name ln命令最常用的选项为s,使用该选项之后创建的将是软链接,否则为硬链接。 注意:在使用文件链接时,硬链接不能跨越文件系统(即分区),而软链接可以跨越文件系统。 阅读全文
posted @ 2013-12-02 20:31 ITtecman 阅读(191) 评论(0) 推荐(0) 编辑
摘要:1、管道 (1)管道使用“|”作为操作符,这个符号通常位于键盘上的Enter或者退格键BackSpace附近。管道的格式为: #command1 | command2 | command3 ...系统执行上面的命令时,会先执行命令command1,并通过管道将command1的输出结果交给命令command2处理.然后再将command2的结果传给下一个命令command3,这样一直将结... 阅读全文
posted @ 2013-12-02 20:16 ITtecman 阅读(1272) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示