linux问题

2019-03-04 11:58

Linux问题集

1 linux环境变量设置及保存地点 1. 显示环境变量HOME $ echo $HOME /home/terry

2. 设置一个新的环境变量WELCOME $ export WELCOME=\$ echo $WELCOME Hello!

3. 使用env命令显示所有的环境变量 $ env

HOSTNAME=terry.mykms.org PVM_RSH=/usr/bin/rsh SHELL=/bin/bash TERM=xterm HISTSIZE=1000 ...

4. 使用set命令显示所有本地定义的Shell变量 $ set

BASH=/bin/bash

BASH_VERSINFO=([0]=\BASH_VERSION='2.05b.0(1)-release' COLORS=/etc/DIR_COLORS.xterm COLUMNS=80 DIRSTACK=() DISPLAY=:0.0 ...

5. 使用unset命令来清除环境变量

set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下:

$ export TEST=\增加一个环境变量TEST

$ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了 TEST=Test...

$ unset $TEST #删除环境变量TEST

$ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了

6. 使用readonly命令设置只读变量

如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下: $ export TEST=\增加一个环境变量TEST $ readonly TEST #将环境变量TEST设为只读 $ unset TEST #会发现此变量不能被删除

-bash: unset: TEST: cannot unset: readonly variable $ TEST=\会发现此也变量不能被修改 -bash: TEST: readonly variable

环境变量的全局设置位于/etc/profile文件,如果需要增加新的环境变量可以添加下属行 export PATH=$PATH:/path1:/path2:/pahtN

2 ubuntu下安装删除命令 apt表示是advanced pacakge Tool.

apt-cache search package 搜索包

apt-cache show packagename 获取包的信息如版本和大小。 apt-get install packagename 安装包。 apt-get install pacekage --reinstall 重新安装 apt-get -f install packagename 强行安装 apt-get remove packagename apt-get autoremove

apt-get update apt-get upgrade

apt-cache depends pacakgename 了解使用的依赖,很少用 apt-cache rdepends packagename 了解具体的依赖。

apt-get build-dep packagename 安装相关的编译环境。这个有时需要用。 apt-get source package

apt-get clean apt-get autoclean apt-get check

可以通过man apt获得更为详细的解释。

清理下载文件存档。

检查是否有损坏的依赖,很少用。

下载安装该包的源码,编程时有时需要看

更新已经安装的包 升级系统,没用过

apt-get dist-upgrade

删除某个程序 自动删除不要的包

apt-get remove packagename --pure 干净的卸掉

3 如何让linux在启动时自动加载脚本 1 先编写脚本,比如名字为a.sh

2 保存路径为:/etc/rc.d/a.sh 3 修改/etc/rc.d/rc.local

在该文件末尾加入a.sh脚本的存放路径:/etc/rc.d/a.sh 保存,退出 ,就OK了。

4 mount 和 umount 命令 mount语法:

mount [选项] <-t 类型> [-o 挂载选项] <设备> <挂载点>

-t 选项用于指定分区上文件系统的类型。您最常遇到的文件系统应该是 ext2FS(GNU/Linux 文件系统)或 ext3FS(改进了日志性能的 ext2FS),VFAT(适用于所有 DOS/Windows? 分区:FAT 12, 16 or 32)以及 ISO9660(CD-ROM 文件系统)。如果您不指定任何类型,mount 将会试着读取分区中的超块来猜测文件系统。 -o 选项用于指定一个或多个挂载选项。可供选择的选项视文件系统类型不同而有所不同。请参看 mount(8) 手册页中的细节。通常将分区挂载在 /mnt 或其它挂载点(挂载点必须已经存在) 。 举例:

$ mount -t ext3 /dev/hdb1 /mnt

要卸下分区,可使用 umount 命令,语法: umount <挂载点|设备> 举例:

$ umount /mnt 或者: $ umount /dev/hdb1

提示:有些时候,可能某些设备(通常是 CD-ROM)正忙或无法响应。此时,大多数用户的解决办法是重新启动计算机。我们大可不必这么做。例如,如果 umount /dev/hdc 失败的话,您可以试试“lazy” umount。语法十分简单:

umount -l <挂载点|设备>

此命令将会断开设备并关闭打开该设备的全部句柄。通常,您可以使用 eject <挂载点|设备>命令弹出碟片。所以,如果 eject 命令失效而您又不想重新启动,请使用 lazy umount。

如果我们想让系统在启动的时候自动挂载某些分区,则应该编辑 /etc/fstab 文件。该文件的每一行对应一组挂载关系,包括文件系统、挂载点以及其它选项。这里是该文件的一个例子:

/dev/hda1 / ext2 defaults 1 1 /dev/hda5 /home ext2 defaults 1 2 /dev/hda6 swap swap defaults 0 0

none /mnt/cdrom supermount dev=/dev/scd0,fs=udf:iso9660,ro,-- 0 0 none /mnt/floppy supermount dev=/dev/fd0,fs=ext2:vfat,--,sync,umask=0 0 0 none /proc proc defaults 0 0 none /dev/pts devpts mode=0622 0 0

每行都由以下内容组成: 文件系统所在的设备; 挂载点; 文件系统类型; 挂载选项;

dump 工具备份标志;

fsck(文件系统检查(FileSystem ChecK))的检查顺序。

总是有一行说明了根文件系统。swap 分区是一种特殊的分区,因为您无法在树形结构中找到其对应位置,而且这些分区的挂载点域只写着 swap 关键字。至于 /proc 文件系统,我们会在第 10 章 /proc 文件系统中有更详细的描述。另外一种特殊的文件系统是 /dev/pts。

举例个例子,如果想把/dev/hdb1自动挂载到 /usr ,就得在 /etc/fstab 文件中添加下面一行: /dev/hdb1 /usr ext2 defaults 1 2 这样,分区将会在每次启动时自动挂载,并且必要时检查错误。

现在我们来介绍两个特殊选项:noauto 和 user。noauto 选项指定了文件系统不应该在启动时挂载,而只应该在您想要挂载的时候才挂载。而 user 选项指定了任何用户都可以挂载或卸下文件系统。这两个选项通常用于 CD-ROM 和软盘驱动器。有关 /etc/fstab 中其它选项的详情,请您查看 fstab(5) 手册页。

使用 /etc/fstab 的好处在于,它将极大简化 mount 命令的语法。要挂载文件中描述的文件系统,您只需要引用挂载点或设备。要挂载软盘,您可以只输入: $ mount /mnt/floppy 或:

$ mount /dev/fd0

5 文件的加锁问题

问:用fcntl给文件加锁, 在一个进程中加给一个文件多次加同一类型的锁,不会报错吗?

答:如果一个进程对一个文件区间已经有一把锁,后来该进程又企图在同一文件区间再加一把锁,那么新锁将替换老锁。

6 framebuffer简介

FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。这种接口将显示设备抽象为帧缓冲区。用户可

以将它看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。该驱动程序的设备文件一般是 /dev/fb0、/dev/fb1 等等。比如,假设现在的显示模式是 1024x768-8 位色,则可以通过如下的命令清空屏幕:

$ dd if=/dev/zero of=/dev/fb0 bs=1024 count=768

在应用程序中,一般通过将 FrameBuffer 设备映射到进程地址空间的方式使用,比如下面的程序就打开 /dev/fb0 设备,并通过 mmap 系统调用进行地址映射,随后用 memset 将屏幕清空(这里假设显示模式是 1024x768-8 位色模式,线性内存模式):

int fb;

unsigned char* fb_mem;

fb = open (\

fb_mem = mmap (NULL, 1024*768, PROT_READ|PROT_WRITE,MAP_SHARED,fb,0); memset (fb_mem, 0, 1024*768);

FrameBuffer 设备还提供了若干 ioctl 命令,通过这些命令,可以获得显示设备的一些固定信息(比如显示内存大小)、与显示模式相关的可变信息(比如分辨率、象素结构、每扫描线的字节宽度),以及伪彩色模式下的调色板信息等等。

通过 FrameBuffer 设备,还可以获得当前内核所支持的加速显示卡的类型(通过固定信息得到),这种类型通常是和特定显示芯片相关的。比如目前最新的内核(2.4.9)中,就包含有对 S3、Matrox、nVidia、3Dfx 等等流行显示芯片的加速支持。在获得了加速芯片类型之后,应用程序就可以将 PCI 设备的内存I/O(memio)映射到进程的地址空间。这些 memio 一般是用来控制显示卡的寄存器,通过对这些寄存器的操作,应用程序就可以控制特定显卡的加速功能。

PCI 设备可以将自己的控制寄存器映射到物理内存空间,而后,对这些控制寄存器的访问,给变成了对物理内存的访问。因此,这些寄存器又被称为\。一旦被映射到物理内存,Linux 的普通进程就可以通过 mmap 将这些内存 I/O 映射到进程地址空间,这样就可以直接访问这些寄存器了。

当然,因为不同的显示芯片具有不同的加速能力,对memio 的使用和定义也各自不同,这时,就需要针对加速芯片的不同类型来编写实现不同的加速功能。比如大多数芯片都提供了对矩形填充的硬件加速支持,但不同的芯片实现方式不同,这时,就需要针对不同的芯片类型编写不同的用来完成填充矩形的函数。

说到这里,读者可能已经意识到 FrameBuffer 只是一个提供显示内存和显示芯片寄存器从物理内存映射到进程地址空间中的设备。所以,对于应用程序而言,如果希望在 FrameBuffer 之上进行图形编程,还需要完成其他许多工作。举个例子来讲,FrameBuffer 就像一张画布,使用什么样子的画笔,如何画画,还需要你自己动手完成。

7 strings命令的作用

一些二进制格式的文件。你想知道里面有哪些常量字符串。就非常有用。比如你生成这样一个程序,a.c: int main (void) {


linux问题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一炼铁烧结考核试题 - 2010年第二季度

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: