linux 程序设计常用知识:

来源:互联网 发布:服务器如何绑定域名 编辑:程序博客网 时间:2024/05/16 13:49

Rpm 命令
-ivh:安装显示安装进度–install–verbose–hash
-Uvh:升级软件包–Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包
-a 查询所有包

yum 命令:基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
1. 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1

  1. 更新和升级
    yum update 全部更新
    yum update package1 更新指定程序包package1
    yum check-update 检查可更新的程序

3.查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1

4.删除程序
yum remove package
erase package1 删除程序包package1

linux文件类型:
普通文件
设备文件
字符特殊文件
块特殊文件
socket文件
符号链接
目录文件

进程:进程是一个正在执行的程序实例,由操作程序、它的当前值、状态信息以及通过操作系统管理此进程执行情况的资源组成。

基本的linux命令
nohup 忽略终端信号
nice 指定任务进程的优先级,任务优先级的范围是-20,19之间
命令 输出 解释
nice 0 当前程序的优先级0
nice nice 10
nice nice nice 19
renice重新分配进程的优先级

man -k命令:查找命令的命令
如果你不知道完成某个特定任务所需要命令的名称,可以使用一个关键字通过Linux apropos实用程序来搜索它。该实用程序可以搜索关键字并且显示所有包含匹配项的man页面的简短描述。
例如:
man -k print
会把系统中所有的与“print”相匹配的命令找出来

man 加上数字参数可以指定章节
1是普通的命令
2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3是库函数,如printf,fread
4是特殊文件,也就是/dev下的各种设备文件
5是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6是给游戏留的,由各个游戏自己定义
7是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8是系统管理用的命令,这些命令只能由root使用,如ifconfig
比如 man 1 passwd ,man 5 passwd

uname 命令
uname -a

操作系统内核名称 uname -s

主机在网络节点上的名称 uname -n

linux操作系统内核版本号 uname -r

第几个version (uname -v)

对称多处理任务结构

操作系统安装时间

主机的硬件(Cpu)名(uname -m),硬件平台类型(-i),cpu类型(32位结构)(-p)

shell 编程

read 命令:
read -p(提示语句)-n(字符个数) -t(等待时间) -s(不回显)
echo -n “Enter your name:” //参数-n的作用是不换行,echo默认是换行
read name //从键盘输入
等价于
read -p “Enter your name:” name

计时输入: -t 数字 等待多少秒输入

参数变量和内部变量
#       传递到脚本程序的参数个数0 脚本程序的名字
1,2 脚本程序的参数
,@ 全体参数组成的清单

VFS 虚拟文件系统组成:
1. super block
super_operations *s_op 关键成员,报告read_inode 和write_inode等函数
unsigned long s_magic 魔数

  1. i-node object 结构
    loff_t i_size 为文件大小
    inode_operations *i_op; 为文件的基本操作的函数集合
    file_operations *i_fop ;
  2. file对象
    file_operations *f_op 为文件操作的函数集
  3. dentry 对象
    两个很重要的字段 inode * d_inode(该文件指针),int d_mountedd(该文件挂载的文件数量)

硬链接和软链接有什么区别
硬链接:
1. 不同的文件名对应同一个inode
2. 不能跨越文件系统
3. 对象系统调用link
软链接
1. 储存被链接文件的文件名(而不是inode)实现链接
2. 可跨越文件系统
3. 对应系统调用symlink

模块参数传递
1. 参数在模块加载时传递
#insmod hello.ko test=2
2. 参数需要使用module_param宏来声明
module_param(变量名称,类型,访问许可掩码)
ex.
Static int test;
module_param(test,int,0644);

linux 内核编程与一般的C编程的区别

C语言程序
运行:用户空间
入口:main()
出口:无
运行: 直接运行
调试:Gdb

linux内核模块
运行:内核空间
入口:module_init()指定
出口:module_exit()指定
运行:insmod
调试:Kdbug,kdb,kgdb

内核编程的注意点:
1. 不能使用C库来开发驱动程序
2. 没有内存保护机制
3. 小内核栈
4.并发上的考虑

cd – 命令可以快速回到上一个目录

xargs命令是用来辅助管道的,一些不支持管道的命令可以用xargs来指定输入,即用前一个输出作为后一个的输入.ex.
搜索当前目录下,文件类型为.php,内容包含feng的文件
find ./ -name “*.php” | xargs grep “feng”

Linux shell编程的注意点 :
1.比较字符串的时候注意空格,[] 与[[]] 是不一样的,赋值语句=两边不能有空格,但是作为判断两个字符串相等的石猴两边都需要空格,
ex.
if [ $quit != “y” ] #这里[] != 与变量和字符串之间都有空格
then

替代test语句的[ ]和[[ ]]表达式区别:
参考链接:http://blog.chinaunix.net/uid-20006382-id-1987674.html
不同点:
1. []是一个test命令,[[ ]] 是一个关键字
2. [[的行为相对地更接近于其他语言,例如”&&”而不是”-a”表示逻辑”与”,用”||”而不是”-o”表示逻 辑”或”。
3.[ … ]为shell命令,串比较操作符”>” 与”<”必须转义,否则就变成IO改向操作符了(请参看上面2中的例子)。在[[中”<”与”>”不需转义;
4.[[ … ]]进行算术扩展,而[ … ]不做。
相同点:
都支持算数表达式和字符串表达式运算

0 0
原创粉丝点击