Linux的man很强大,该手册分成很多section,使用man时可以指定不同的section来浏览,各个section意义如下: 1 - commands

2 - system calls

3 - library calls

4 - special files

5 - file formats and convertions

6 - games for linux

7 - macro packages and conventions

8 - system management commands

9 - 其他

解释一下, 1是普通的命令

2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)

3是库函数,如printf,fread

4是特殊文件,也就是/dev下的各种设备文件

5是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义

6是给游戏留的,由各个游戏自己定义

7是附件还有一些变量,比如向environ这种全局变量在这里就有说明

8是系统管理用的命令,这些命令只能由root使用,如ifconfig

想要指定section就直接在man的后面加上数字,比如 :

man 1 ls

man 3 printf

等等

对于像open,kill这种既有命令,又有系统调用的来说,man

open则显示的是open(1),也就是从最前面的section开始,如果想查看open系统调用的话,就得man 2

open

关于库函数和系统调用

库函数是高层的,完全运行在用户空间,

为程序员提供调用真正的在幕后完成实际事务的系统调用的更方便的接口。系统调用在内核态运行并且由内核自己提供。标准C库函数printf()

可以被看做是一个通用的输出语句,但它实际做的是将数据转化为符合格式的字符串并且调用系统调用 write()

输出这些字符串。

是否想看一看printf()

究竟使用了哪些系统调用? 这很容易,编译下面的代码。

#i nclude

int main(void)

{ printf("hello"); return 0; }

使用命令gcc -Wall -o hello

hello.c 编译。用命令 strace

hello跟踪该可执行文件。是否很惊讶? 每一行都和一个系统调用相对应。

strace是一个非常有用的程序,它可以告诉你程序使用了哪些系统调用和这些系统调用的参数,返回值。

这是一个极有价值的查看程序在干什么的工具。在输出的末尾,你应该看到这样类似的一行 write(1,

"hello", 5hello) 。这就是我们要找的。藏在面具printf()

的真实面目。既然绝大多数人使用库函数来对文件I/O进行操作(像 fopen, fputs, fclose)。

你可以查看man说明的第二部分使用命令man 2

write 。man说明的第二部分专门介绍系统调用(像kill()

和read()

)。 man说明的第三部分则专门介绍你可能更熟悉的库函数(像cosh()

和random()

)。

你甚至可以编写代码去覆盖系统调用,正如我们不久要做的。骇客常这样做来为系统安装后门或木马。

但你可以用它来完成一些更有益的事,像让内核在每次某人删除文件时输出 “ Tee hee,

that tickles! ” 的信息。

自己总结:

从程序完成的功能来看,函数库提供的函数通常是不需要操作系统的服务,函数是在用户空间内执行的,除非函数涉及到I/O操作等,一般是不会切到核心态的。系统调用 是要求操作系统为用户提供进程,提供某种服务,通常是涉及系统的硬件资源和一些敏感的软件资源等。

函数库的函数,尤其与输入输出相关的函数,大多必须通过Linux的系统调用来完成。因此我们可以将函数库的函数当成应用程序设计人员与系统调用程序之间

一个中间层,通过这个中间层,我们可以用一致的接口来安全的调用系统调用。这样程序员可以只要写一次代码就能够在不同版本的linux系统间使用积压种具

体实现完全不同的系统调用。至于如何实现对不同的系统调用的兼容性问题,那是函数库开发者所关心的问题。

从程序执行效率来看,系统调用的执行效率大多要比函数高,尤其是处理输入输出的函数。当处理的数据量比较小时,函数库的函数执行效率可能比较好,因为函数

库的作法是将要处理的数据先存入

缓冲区内,等到缓冲区装满了,再将数据一次写入或者读出。这种方式处理小量数据时效率比较高,但是在进行系统调用时,因为用户进程从用户模式进入系统核心

模式,中间涉及了许多额外的任务的切换工作,这些操作称为上下文切换,此类的额外工作会影响系统的执行效率。但是当要处理的数据量比较大时,例如当输入输

出的数据量超过文件系统定义的尽寸时,利用系统调用可获得较高的效率。

从程序的可移植性的角度来看,相对于系统调用,C语言的标准备函数库(ANSI C)

具备较高的可移植性,在不同的系统环境下,只要做很少的修改,通常情况是不需要修改的。

2)man的一些常用参数和用法

man -a cmd 打开所有领域内的同名帮助,例如 man fam ,你首先会进入一个fam(1M)的命令版fam帮助,你再按q键

就会进入FAM(3X),库函数版的帮助

man -aw cmd

显示所有cmd的所有手册文件的路径,如 man -aw fam 就是

/usr/share/man/man1/fam.1m.gz

/usr/share/man/man3/fam.3x.gz

man 领域代号 cmd

直接指定特定领域内搜索手册页,如 man 3 fam 直接进入库函数版的帮助

man -M cmd

指定手册文件的搜索路径,如 man -M /home/mysql/man mysql 显示的就是你安装的mysql的帮助,

而不是系统自带的旧版mysql的帮助

man cmd| col -b > cmd.txt

把man手册信息输出到文本文件

LANG=语言代号

man -w cmd

man 特定语言manpage文件的路径

查看特定语言版本的手册页

例如,要查看mplayer的中文man

shell> LANG=zh

shell> man -w mplayer /usr/share/man/zh/man1/mplayer.1.gz

新开一个shell窗口(或在原窗口 shell> LANG=en_US.UTF-8)

shell> man /usr/share/man/zh/man1/mplayer.1.gz

3)man的配置文件/etc/man.config

如果你不想每次man cmd都要用-M指定路径,那么可以通过修改配置文件,添加内容如

MANPATH /home/mysql/man

man在各领域的搜索次序可以通过修改

MANSECT 1:8:2:3:4:5:6:7:9:tcl:n:l:p:o

linux 查看 man 路径配置文件 man.config,linux man 1,2,3....相关推荐

  1. linux 查看 man 路径配置文件 man.config,linux中的man(zz)

    Linux中 man命令是初学者必须要掌握的一个Linux重要命令,这个命令可以帮助在学习中遇到的各种不会使用的命令问题,每个命令的不同的使用方法都可以在这里查找的到,获得相关的帮助信息. (1)ma ...

  2. Linux 查看命令路径 以及相关信息

    Linux  查看命令路径  以及相关信息 一.在linux下通过type命令可以察看命令的路径(外部命令以及相关信息 使用如下: type   java    将显示java执行的目录 参见一下使用 ...

  3. linux查看日志的几种命令,Linux查看日志三种命令(转载)

    第一种:查看实时变化的日志(比较吃内存) 最常用的: tail -f filename (默认最后10行,相当于增加参数 -n 10) Ctrl+c 是退出tail命令 其他情况: tail -n 2 ...

  4. linux查看进程运行命令行参数,linux查看进程运行命令

    Linux系统下想要查看运行中的进程,那我们该使用那个命令呢?下面由学习啦小编为大家整理了linux查看进程运行的命令的相关知识,希望对大家有帮助. 1.linux查看进程命令详解 ps命令查找与进程 ...

  5. linux查看防火墙有没关闭了,linux查看防火墙是否关闭的实例方法

    linux查看防火墙是否关闭的实例方法 一.service方式 查看防火墙状态: [root@centos6 ~]# service iptables status iptables:未运行防火墙. ...

  6. linux查看内存_盘点腾讯linux C++后台开发面试题

    鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言,之前面试Java的公司侧重还是在数据结构.网络.框架.数据库和分布式.所以O ...

  7. linux查看一个进程最大tcp连接数,linux修改TCP最大连接数

    环境 操作系统: oracle-linux7.3 修改系统支持的最大TCP连接 最大tcp连接数和系统允许打开的最大文件数,用户允许打开的最大文件数,TCP网络连接可用的端口范围有关,取上述的最小值: ...

  8. linux查看以i开头的文件,Linux文件查找Day.13

    一.为什么要有文件查找 因为资料有很多,会忘记放在了什么位置,所以需要通过查找的方式进行搜索.(相当于windows查找文件  计算机--->搜索框) 二.Linux中怎么查找文件查找 因为li ...

  9. linux查看磁盘分区恢复磁盘,在Linux,误删磁盘分区怎么恢复呢【转】

    在我们运维工作中,频繁的操作,可能命令写入错误,造成磁盘分区的删除,那么应该怎么办呢?怎么恢复磁盘分区呢? 一不小心删除了磁盘分区.如下图,删除了sda磁盘的第一个分区,为系统boot分区,系统如果重 ...

最新文章

  1. 第二十七课.深度强化学习(二)
  2. 过程改进建设中的常见奖励措施
  3. 工作区 暂存区 版本库之间的关系
  4. android java和c混合编程_C/C++在Java、Android和Objective-C三大平台下实现混合编程
  5. Tomcat设置Http自动跳转Https
  6. 网信号好怎么不显示无服务器,苹果iPhone12经常出现无服务状态 信号不好怎么解决...
  7. 「软件项目管理」一文详解软件项目质量计划
  8. win7输入密码界面背景怎么更改
  9. redis 公网 安全_请务必注意 Redis 安全配置,否则将导致轻松被入侵
  10. 初学python之路-day11
  11. iOS语言中的代理模式
  12. php 页面缓存的做法,使用php进行页面缓存
  13. idea简单破解方式
  14. 京东联盟API接口-单页市场-提高商品转化率-京东高级API接口
  15. Tensorflow中axis的理解
  16. InnoDB怎么解决幻读的?
  17. 5G LTE窄带物联网(NB-IoT) 9
  18. myeclipse building workspace如何禁止及提高myeclipse速度
  19. 点云孔洞定位_一种对具有孔洞的三维点云的检测与识别方法与流程
  20. 【Web技术】772- Web 中文字体性能优化实践

热门文章

  1. vue之打印表格的实现
  2. 京东云 linux无法远程,问题解读 | Linux系统SSH无法远程登录时该怎么办?这里有篇小攻...
  3. android 手机短信恢复,安卓手机短信删除了怎么恢复?简单恢复的方法
  4. 平均股价的时间序列图形_数据可视化——pandas绘制股票走势图
  5. ae字体预设下载_AE超强文字预设包(附插件和教程)Videohive 2D Text Preset Pack for Animation Composer Plug-in...
  6. 高并发(水平扩展,垂直扩展)
  7. 召唤神龙~让我们来看看源码及简单的修改分析,讲的很清楚哦
  8. 文章推荐列表(个人收藏)
  9. 互联网金融热浪下丨看看美国的互联网金融怎么玩?
  10. matplotlib中的imshow()绘图长宽比例失调,调整长宽比(备忘)