FUSE
一、FUSE简介FUSE(用户空间文件系统)是这样一个框架,它使得FUSE用户在用户态下编写文件系统成为可能,而不必和内核打交道。FUSE由三个部分组成,linux内核模块、FUSE库以及mount 工具。用户关心的只是FUSE库和mount工具,内核模块仅仅提供kernel的接入口,给了文件系统一个框架,而文件系统本身的主要实现代码位于用户空间中。 FUSE库给用户提供了编程的接口,而mount工具则用于挂在用户编写的文件系统。 FUSE起初是为了研究AVFS(A Virtual Filesystem)而设计的,而现在已经成为SourceForge的一个独立项目,目前适用的平台有Linux, FreeBSD, NetBSD, OpenSolaris和Mac OS X。官方的linux kernel版本到2.6.14才添加了FUSE模块,因此2.4的内核模块下,用户如果要在FUSE中创建一个文件系统,需要先安装一个FUSE内核模块,然后使用FUSE库和API来创建。 二、FUSE特性 库文件和 API简单,极大地方便了用户的使用 安装简便,不需要加补丁或者重新编译 kernel ...
Linux用户管理
一、用户管理:Linux系统用户分为三类:超级用户、普通用户和伪用户。其具体区别如下: 超级用户:具有管理系统的一切权限。UID为0。 普通用户:具有有限的权限。UID从500到6000。 伪用户:在/etc/passwd中有记录,但因记录中shell为空,所以不能登录系统。其作用是为了方便管理系统,满足相应的系统进程对文件属主的需要。 用户帐号的配置文件是/etc/passwd,可用sudo gedit /etc/passwd命令查看和修改。文件内容格式如下: 1234567891011121314 root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/ ...
Linux权限管理
Linux权限管理是其一大特色,优秀的权限管理机制为Linux安全性提供了可靠的保障。 一、用户权限管理:root用户是系统的超级用户,是Linux系统的CEO,它具有最高的管理权限,所以一般不用该用户登录系统进行日常的操作与维护,root可将某些权限赋予其他用户来管理系统的某些资源。 su命令用来切换用户,用该命令切换用户时,用户身份和环境变量都发生改变。例如: kelvin@kelvin-laptop:~$ ls examples.desktop workplace 公共的 模板 视频 图片 文档 下载 音乐 桌面 kelvin@kelvin-laptop:~$ su ws 密码: ws@kelvin-laptop:/home/kelvin$ 在ubuntu系统中,有些动作需要管理员的权限才能执行,可用sudo来提升权限。若在/etc/目录下建立nologin文件,则只允许root用户登录。相反,删除该文件则所有用户都可以登录系统。 二、文件权限管理:使用ls -l命令可以以长格式显示该目录下文件和子目录信息。如: kelvin@kelvin-laptop: ...
Make
一、make的功能:make是一个用来维护程序模块关系和生产可执行文件的工具,他可以根据程序修改的情况重新编译链接生成的中间代码或最终的可执行文件。执行make命令需要一个Makefile文件,来定义整个项目的编译规则。makefile定义了模块间的依赖关系,指定文件的编译顺序,以及编译所使用的命令。有了make和Makefile文件,整个项目的源程序可以自动编译,极大的提高了软件开发效率。 二、Make的一般使用:1、Makefile的基本构成: Makefile由规则构成,一条规则生成一个或多个目标文件,其格式如下: 目标文件列表 分隔符 依赖文件列表 [;命令] //[]中的内容可选 [命令] [命令] 例如: main:main.o module1.o module2.o gcc main.o module1.o module2.o -o main 第二行是命令必须以Tab键开头,第一行是说明模块间的依赖关系,所以不加Tab,若加Tab,make就认为这是一条命令。以#开头的行为注释行,makefile中若用到#,可用#;同样,$应该用$$。在依赖 ...
perf ,比较好的一个程序性能测试工具
面对一个问题程序,最好采用自顶向下的策略。先整体看看该程序运行时各种统计事件的大概,再针对某些方向深入细节。而不要一下子扎进琐碎细节,会一叶障目的。 对于优化自己写的代码,cpu bound 型 和 IO bound 型是不一样的: cpu bound 型:所谓cpu bound型指的是程序大部分时间都在使用CPU。 IO bound 型:由cpu bound型的定义就不难推出了。 perf stat 命令用于统计进程总体的信息1234567891011121314151617/*******************************************************************************/$ perf stat ./Joseph_ring Performance counter stats for './Joseph_ring': 19.755435 task-clock # 0.000 CPUs utilized ...
Linux shell 程序设计5——shell中一些特殊符号的用法总结
1、{} 大括号: eg: ls my_{finger,toe}s 这条命令相当于如下两个命令的组合: ls my_fingers ; ls my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin, userB-data, userC-home, userC-bin, userC-data,这几个目录 大括号也可用于语句块的构造,命令之间可用回车隔开 2、[] 中括号:允许匹配方括号中任何一个单个字符 eg: ls /[eh][to][cm]* 相当于执行 ls /etc 和 ls /home。 常出现在流程控制中,其作用是括住判断式。注意:[、] 与表达式之间有空格。 eg: if [ "$?" != 0 ] then echo "Executes error" fi 3、command 反引号:反引号中的 ...
Linux shell 程序设计4——shell变量
1、shell变量没有类型,所有变量都被当作字符串来处理。 2、shell变量的命名和c语言相同。 3、shell变量赋值和c语言略有不同,shell赋值要求等号的两边不能出现空格,而在linux C 中,一般为了增强代码的可读性,等号的两边都加一个空格。如果shell变量的赋值为字符串,而且字符串中含有空格,则必须给该字符串加单引号或双引号。 4、shell变量不同于c语言,无需定义可直接赋值使用。例如: #!/bin/bash #This is an example to show how to use variables version="2.6.24" name="linux-headers-2.6.24" echo -e "name:$name\nversion:$version" 执行结果: name:linux-headers-2.6.24 version:2.6.24 5、shell变量的作用范围是本shell环境。例如: 我们编写如下脚本: #!/bin/bash #script name: exam ...
Linux shell 程序设计3——命令行程序
1、date:显示、设置系统的日期和时间。 $date 2011年 01月 30日 星期日 14:43:35 CST $date 012309232011 执行结果:设置主机的时间日期为:2011/01/23 09:23 $date +'%d %H %M' 以一定的格式显示时间或日期信息,常见有如下的格式: %d :显示日 $date +'%d' 30 %D :显示日期 $date +'%D' 01/30/11 %e :不足二位数的部分不用0补而是用空格补 %m :显示月份 %Y :显示公元年 $date +'%Y' 2011 %m :显示月 %M :显示分钟 %S :显示秒 %s :显示自1970年1月1日 00:00:00开始到现在的秒数 $date +'%s' 1296371799 $date -R :产生与RFC-2822兼容的时间字符串 $date -R Sun, 30 Jan 2011 15:20:17 +0800 2、cat:连接文件并显示 cat file1 显 ...
Linux shell 程序设计2——bash的内置命令
常用的内置命令忽略,来看看shell编程中其他一些重要的内置命令: 1、help:显示所有内置命令列表,或显示一个具体命令的用法。 -s: 表示列出命令的语法格式 例子: help -s help help: help [-dms] [pattern …] 2、echo:用来显示一行文字。默认自动换行。 -n:取消自动换行。 -e:让字符串中的特殊字符起作用,即使字符串在单引号中。 例子: echo hello world 或 echo ‘hello world’ 或 echo “hello world” 输出结果为:hello world $echo -e “hello \n world” hello world $ echo -e ‘hello \n world’ hello world 3、printf:显示格式字符串,类似于c中的printf函数 格式:printf “格式字符串” 参数 -v :不显示到标准输出,而是赋值给-v选项后面的变量 例子: str= "hello world" printf "%s\n" "$st ...
Linux shell 程序设计1——安装及入门
1、什么是shell? shell是linux内核的“壳”,是用户和内核的桥梁。它类似于windows下的命令提示符,将用户输入的命令解释给内核执行,并返回给用户结果。与windows命令提示符不同的是,shell还是一种脚本语言,可以按一定的流程将命令组合在一起使用,方便了用户。 2、shell的安装: 在ftp.gnu.org/gnu/bash可下载到bash的源码包: bash-4.1.tar.gz 用 tar xzvf bash-4.1.tar.gz 解压,生成bash-4.1目录 使用cd 命令进入该目录,在该目录下执行./configure命令生成配置文件,再使用make命令编译,使用make install命令安装。 在/etc/shells文件中列出的shell才是合法的shell,所以要使用安装的shell必须把它加到该文件中。加入之后就可以通过chsh命令来切换shell。 3、shell中的特殊符号: http://blogold.chinaunix.net/u2/75431/showart_1110962.html 4、shell的程序结构: 以#!开头,指名要 ...




