问题:Linux系统中以什么方式访问设备的?
回答:Linux系统中,以 文件 方式访问设备 。
什么是Linux文件系统?
问:Linux内核引导文件系统是?
答:Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统。
/etc/fstab文件系统详解:
通常情况下,一个Linux系统将拥有很多的文件系统,然而,仅仅通过一个或非常少的文件系统来配置Linux系统也是可能的,你希望创建多个文件系统 的一个原因就是通过使用/etc/fstab文件中指定的mount选项来控制对它们的访问.
/etc/fstab文件的内容主要包括六项:
/dev/hda1 / ext3 defaults 1 1
/dev/hda5 /usr ext3 defaults 1 2
/dev/hda1 /home ext3 defaults 1 2
/dev/hda6 /var ext3 defaults 1 1
/dev/hda7 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext3 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
none /proc proc defaults 0 0
第一列:设备名或者设备卷标名,(/dev/sda10 或者 LABEL=/)
第二列:设备挂载目录 (例如上面的"/"或者"/mnt/D/")
第三列:设备文件系统 (例如上面的"ext3"或者"vfat")
第四列:挂载参数 (看帮助man mount)
对于已经挂载好的设备,例如上面的/dev/sda2,现在要改变挂载参数,这时可以不用卸载该设备,而可以使用下面的命令(没有挂载的设 备,remount 这个参数无效)
#mount /mnt/cdrom/ -o remount,ro (改defaults为ro)
为了安全起见,可以指明其他挂载参数,例如:
default 设置该安装选项为rw,suid(允许SUID和SGID执行),dev(允许字符和块专用设备),exec(允许二进制文件的执行),auto(允许 mount -a),nouser(只有根用户能配置该文件系统,不允许普通用户挂载)和async(异步I/O)
nodev 不解释或允许在该文件系统上创建字符或块专用文件(设备文件),(不允许挂载设备文件)
noexec 在该文件系统上不允许二进制文件或脚本的执行,(不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了,连mount 命令都无法使用了,这时只有重新做系统了!
ro 设置此文件系统为只读
user 允许除根用户以外的用户配置该文件系统.除非被明令撤销否则该选项会自动设置noexec,nosuid和nodev选项
nosuid,nosgid 不允许SUID或SGID对该文件系统产生作用(不允许有suid和sgid属性)
noatime 取缔在此文件系统内所有文件和目录上的访问时间更新,该选项在2.2.x版及其之后的内核中可以使用
第五列:指明是否要备份,(0为不备份,1为要备份,一般根分区要备份)
第六列:指明自检顺序. (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)
问:Linux文件系统用什么来标识?
答:Linux文件系统中每个文件用 i节点 来标识。
Linux文件系统详解:
1 fstab文件的作用
文件/etc/fstab存放的是系统中的文件系统信息.当正确的设置了该文件,则可以通过"mount /directoryname"命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开.同时fsck、 mount、umount的等命令都利用该程序.
2. fstab文件格式
下面是/etc/fatab文件的一个示例行:
fs_spec fs_file fs_type fs_options fs_dump fs_pass
/dev/hda1 / ext2 defaults 1 1
fs_spec - 该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说:IDE设备一般描述为/dev/hdaXN,X是IDE设备通道 (a, b, or c),N代表分区号;SCSI设备一描述为/dev/sdaXN.对于NFS情况,格式一般为:
,例如:`knuth.aeb.nl:/'.对于procfs,使用`proc'来定义.
fs_file - 该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格.
fs_type - 定义了该设备上的文件系统,一般常见的文件类型为ext2 (Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等.
问:Linux磁盘块由哪个部分组成?
答:全部磁盘块由四个部分组成,分别为引导块 、专用块 、 i节点表块 和数据存储块。
Linux磁盘块管理详解:
Liunx系统中,如何有效地对存储空间加以使用和管理,是一项非常重要的技术.本章讲述如何查看系统中存储空间的使用情况、如何进行文件的转储、以及如 何进行软盘的格式化.
磁盘空间管理
系统软件和应用软件,都要以文件的形式存储在计算机的磁盘空间中.因此,应该随时监视磁盘空间的使用情况.Linux系统提供了一组有关磁盘空间管理的命 令.
df命令
功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息.
语法:df [选项]
说明:df命令可显示所有文件系统对i节点和磁盘块的使用情况.
该命令各个选项的含义如下:
-a 显示所有文件系统的磁盘使用情况,包括0块(block)的文件系统,如/proc文件系统.
-k 以k字节为单位显示.
-i 显示i节点信息,而不是磁盘块.
-t 显示各指定类型的文件系统的磁盘空间使用情况.
-x 列出不是某一指定类型文件系统的磁盘空间使用情况(与t选项相反).
-T 显示文件系统类型.
例1:列出各文件系统的磁盘空间使用情况.
$ df
Filesystem 1 K-blocks Used Available Use% Mounted on
/dev/hda2 1361587 1246406 44823 97% /
df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的数据块(1024字节)的数目;第3,4 列分别表示已用的和可用的数据块数目.用户也许会感到奇怪的是,第3,4列块数之和不等于第2列中的块数.这是因为缺省的每个分区都留了少量空间供系统管 理员使用.即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间.清单中Use% 列表示普通用户空间使用的百分比,即使这一数字达到100%,分区仍然留有系统管理员使用的空间.最后,Mounted on列表示文件系统的安装点.
问:Linux链接分为?
答:链接分为 硬链接 和 符号链接 。
Linux链接详解:
一、软链接(符号链接)
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接.因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同 机器、不同网络对文件进行链接.
建立软链接,只要在ln后面加上选项 –s.
二、硬链接
硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode.可以用:ln命令来建立硬链接.语法
ln [options] existingfile newfile
ln[options] existingfile-list directory
用法: 第一种:为"existingfile"创建硬链接,文件名为"newfile".第二种:在"directory"目录中, 为"existingfile-list"中包含的所有文件创建一个同名的硬链接.常用可选[options] –f 无论"newfile"存在与否,都创建链接.-n 如果"newfile"已存在,就不创建链接.
问:Linux超级块包含哪些文件系统信息?
答:超级块包含了i节点表 和 空闲块表 等重要的文件系统信息。
Linux超级块详解:
Linux系统中的每个文件都被赋予一个唯一的数值,这个数值称做索引节点.索引节点存储在一个称作索引节点表< inode table>中,该表在磁盘格式化时被分配.每个实际的磁盘或分区都有其自己的索引节点表.一个索引节点包含文件的所有信息,包括磁盘上数据的地址 和文件类型.文件类型包括如普通文件、目录和特殊文件这样的信息.
linux硬盘组织方式为:引导区、超级块(superblock),索引结点(inode),数据块(datablock),目录块 (diredtory block).其中超级块中包含了关于该硬盘或分区上的文件系统的整体信息,如文件系统的大小等;超级块后面的数据结构是索引结点,它包含了针对某一个具 体文件的几乎全部信息,如文件的存取权限、所有者、大小、建立时间以及对应的目录块和数据块等;数据块是真正存储文件内容的位置.但是索引结点中不包括文 件的名字,文件名是放在目录块里的.目录块里包含有文件的名字以及此文件的索引结点编号.
问:某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限?
答:用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 。
问:Linux前台起动的进程使用哪个组合快捷键停止?
答:前台起动的进程使用 Ctrl+c 终止。
Linux快捷链详解:
Linux基本的键盘输入快捷键和一些常用命令
切换到第一个文本终端.在Linux下你可以有多达六个不同的终端.这个命令的意思是:"同时按住
切换到第n个文本终端.(你也可以使用不是很经常用到的命令chvt n
来实现,n指的是第n个文本终端).在文本终端下(不是在X窗口),你也可以简单使用
打印出你正在使用的终端名称,如果你希望知道终端的名字,可以使用命令fgconsole.
切换到第一个图形用户界面(一般来说X-window在第七个终端)
切换到第n个图形用户街面.根据缺省,第一个X-Window在第7个终端运行,从第8到第12什么也没有,当然你可以逐个启动这些图形用户界面.
(在文本终端下)可以使用TAB自动完成命令,或者显示所有的可选项.这个快捷键真的非常好用,经常使用你会发觉它可以节约你很多的时间.
(在文本终端或者X窗口下)滚动和编辑以前输入的命令.按
回滚
滚动终端输出.对于登录提示也起作用,所以你可以使用它回滚启动信息.你显卡的内存大小决定你可以回滚多少内容
回滚终端输出
(在X窗口下) 改变X服务器的屏幕解析率 (如果你设置X服务器有多个不同的屏幕解析率).比如对于我的标准SVGA卡和显示器,在文件/etc/X11/XF86Config有以下的设置行: (从缺省开始,到可以支持的最大虚拟屏幕解析率)
Modes "1024x768" "800x600" "640x480" "512x384" "480x300" "400x300" "1152x864"Z
当然,首先我必须设置我的X服务器,可以使用using Xconfigurator, xf86config, 也可以手工编辑文件:/etc/X11/XF86Config.XFdrake (Mandrake使用图形用户界面进行配置 ).你也可以参考命令xvidtune和xvidgen.
(在X窗口下)把X服务器的屏幕解析率修改到上一次的设置.
(在X窗口,KDE下)关闭我鼠标将要指向的窗口(鼠标的光标形状会有所改变).同样的效果也可以使用命令xkill(在X终端上)来实现.当一个程序窗 口被挂住的时候特别有用.
(在X窗口下) 终止当前的 X窗口服务.如果X窗口不能正常退出时可以使用.
(适用于文本终端下)关机和重新启动.这是一个在文本终端下的正常关机命令,千万不要按计算机上的reset键来重新关机和重新启动!
终止当前进程(对于一般的小型文本模式的应用程序)
(在一个空白的命令行上输入)退出当前的终端.参加下一个命令.
给当前的进程送文件结束符合.不要按两次否则你会把自己退出系统.
停止终端传输
从新开始终端传输.如果你的终端突然莫名其妙的停止响应,可以参考上一条命令.
把当前进程送到后台处理.
exit
退出系统.我也可以使用logout命令达到同样效果.(如果你启动了第二个shell程序,比如,使用bash,这条命令将使你退出第二个shell回 到第一个shell,但是不会退出系统.当然,可以再一次使用exit退出)
reset
恢复崩溃的终端(有些终端显示一些奇怪的字符)到缺省的设置.当你使用cat命令准备显示一个二进制文件时,你可能看不到你所输入的命令,尽管命令仍然照 常工作.
<鼠标的中间键>
粘贴当前选择的文本.这是一个常规的Linux"复制-粘贴"操作.它是对被广泛采用的通信用户界面下"复制-粘贴"操作的一个非常有用的扩展(但是它不 支持旧版本的NetScape,因为在旧版的NetScape只能使用MAC/Windows风格的"复制-粘贴"操作.如果你运行"setup"程序进 行设置,你可以在文本终端下使用这个功能.而且它在大多数的对话框里也能很好的工作,真的非常方便!)如果你有一个"Linux-Ready"的鼠标 (logitec或者其类似产品)或者你通过使用"模拟三键鼠标",这个功能可以得到最大限度的发挥.一般来说,"第三键"的模拟是通过同时点击左右两个 鼠标键来实现.
~
(水文符合) 我的主目录(一般来书是/home/我的登录名).举例,命令~/my_dir将修改我的工作目录到我的主目录的子目录"my_dir"下.相对于输 入"cd ~",你也可以只输入"cd",我把我的所有文件都放在自己的主目录下.
.
(点符号) 当前目录.举例:./my_program 将试图执行当前目录下的"my_program"文件
(两个点)到当前的上一级目录(也叫"父目录").举个例子,命令"cd"将修改我的当前工作目录到上一级目录.
一些KDE的快捷键(很有用,但不是非要不可的)
切换不同的程序窗口.往回切换,使用
切换不同的桌面.往回切换,使用
显示我系统里正在运行的进程列表.允许我终止那些由我启动的进程(或者送信号给这些进程)
访问K菜单 (对等于微软Windows的的"开始"菜单).
使用键盘上的箭号键模拟鼠标的操作
拖曳并移动一个窗口.一般来说,我通过拖曳窗口的题目栏来移动一个窗口.有些时候,我用它把
一个窗口移动到屏幕之外.使用这个功能,我可以把窗口移动到屏幕的任何位置.
把当前屏幕的快照存到剪贴板
把当前桌面的快照存到剪贴板
锁定桌面
切换隐藏/显示桌面的功能(当老板走过来的时候迅速藏起你的纸牌接龙游戏非常管用哦!)
这是在Linux的内核(底层内核)上支持的一组组合键.它意味着这些组合键在大部分情况下都是有效的.组合键主要是针对开发人员的程序调试目的或者在紧
急场合下才使用;你也可以使用其他的办法,安全第一.
终止在当前虚拟终端上运行的所有进程(包括X窗口).这个组合键被称为"安全访问键"(SAK).
发送 TERM 信号(结束信号)到除了init进程以外的所有运行进程,要求其退出
发送 KILL (终止信号)到除了init进程以外的所有运行进程, 这个组合键比上一个更加有效,但是也可能引起一些程序被异常终止.
发送KILL命令到所有运行进程(包括init),系统将不再能够使用
在所有的挂载文件系统上运行紧急同步(缓存写) .这可以保护数据丢失
以只读模式重新挂载所有已加载的文件系统.这和上面的同步组合键有相同的功能,但是另外有一个好处:如果操作顺利完成,下一次硬件重新启动时,fsck将 不会重新检查所有的文件系统.
程序启动.
不进行同步和卸载就立刻重新启动系统.之后你可能会碰到一下错误信息.
关机 (如果正确设置以后)
导出当前的寄存器和标志到控制台 导出当前任务和相关信息到控制台 导出内存的内容到控制台
"数字"从0到9.设置控制台记录的级别,用于控制哪一些内核信息将被显示在控制台上.举例,"0"意味着只有象PANIC和OOPS的之类的紧急信息才
被显示在控制台上. 显示帮助信息.还有,任何其他不被支持的 问:Linux网络管理的重要任务是? 答:网络管理的重要任务是: 控制 和 监控 。 问:Linux系统对硬盘分区时,必须有哪两种分区类型? 答:安装Linux系统对硬盘分区时,必须有两种分区类型: 文件系统分区 和 交换分区 。 问:Linux内核分为哪几个子系统? 答:内核分为 进程管理系统 、 内存管理系统 、 I/O管理系统 和文件管理系统 等四个子系统。 问:RIP 协议是? 答:RIP 协议是最为普遍的一种内部协议,一般称为动态路由信息协议。 问:Linux系统网络管理员的管理对象是? 答:系统网络管理员的管理对象是服务器、 用户 和服务器的进程 以及系统的各种资源。 问:Linux网络管理通常由几部分组成? 答:网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。 问:Linux vi编辑器具有两种工作模式? 问:Linux进程可以具有的基本状态有? 答:进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的基本状态为: 运行态 、 就绪态 和 等待态(阻塞态) 。 问:Linux DNS作用? 答:DNS实际上是分布在internet上的主机信息的数据库,其作用是实现 IP地址和主机名 之间的转换。 问:Linux系统上做备份可以有两种类型? 答:在Linux系统上做备份可以有两种类型:系统备份 和 用户备份 。其中前者是指对 操作系统 的备份,后者是指对
应用程序和用户文件的备份。 问:Linux CD-ROM标准的文件系统类型是? 答:CD-ROM标准的文件系统类型是 iso9660 。 问:使lilo.conf生效的命令是? 答:当lilo.conf配置完毕后,使之生效,应运行的命令及参数是 lilo 。 问:Linux限制用户使用磁盘空间的命令是? 答:设定限制用户使用磁盘空间的命令是 quota 。 Linux quota命令详解: 什么是 Quota? Quota 让你可以从两方面指定磁盘的储存限制: 使用者所能够支配的索引 节点(inodes)数量;以及使用者可以取用的磁盘区块数量. Quota 背後的含意是强制使用者在大部分的时间中保持在他们的磁盘使用 限制之下,取消他们在系统上无限制地使用磁盘空间的能力. Quota 是以每一使用者,每一文件系统为基础的.如果使用者可能在超过 一个以上的文件系统上建立文件,那么必须在每一文件系统上分别设定 quota. Quota 目前在 Linux 上的情况 Quota 的支持据我所知自从 1.3.8x 版开始已经整合到核心之中,而且它 也在 2.0 版的核心里.如果你的系统不支持 quota 那么我建议你来次 更新. 目前为止,quota 只能在 ext2 文件系统上运作. 在 Linux 上使用 Quota 的需求 核心 2.x 版的核心可以从这里取得 Quota 软件 端视你的 Linux 发行套件而定,在你的系统上可能已经装好也可能没有 quota 软件.quota 软件的原始程序代码可以从这里取得 ---------------------------------------------------------------- 在 Linux 上设定 quota - 第一部份: 配置 1. 配置你的核心 重新配置你的核心并且对这个选项回答 y 以加入 quota 的支持: Quota support (CONFIG_QUOTA) [n] y 2. 编译并安装 quota 软件 Quota 软件的原始程序代码可以从这里取得 3. 修改你系统的启动脚本文件以检查 quota 并且在启动时期打开 quota 这里有个范例: # Check quota and then turn quota on. if [ -x /usr/sbin/quotacheck ] then echo "Checking quotas. This may take some time." /usr/sbin/quotacheck -avug echo " Done." fi if [ -x /usr/sbin/quotaon ] then echo "Turning on quota." /usr/sbin/quotaon -avug fi 不变的规则是*永远*得要在挂入你 /etc/fstab 里的文件系统*之后* 打开 quota , 否则 quota 将不会运作.我建议在你系统的启动脚本文件 最后面打开 quota , 或者,如果你喜欢,在你的系统脚本文件刚挂入文件 系统之处打开它. 4. 修改 /etc/fstab 还没有启用 quota 的分割区一般看起来像: /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults 1 1 要在文件系统上加入 quota 的话,在包含 "defaults" 这个字的第四个 字段加上 "usrquota" . /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota 1 1 如果你需要在一文件系统中的群组 quota 支持,将 "usrquota" 改为 "grpquota". /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,grpquota 1 1 如果要同时支持使用者 quota 与群组 quota 的话 /dev/hda1 / ext2 defaults 1 1 /dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1 5. 建立 "quota.user" 这个 quota 记录 这个 quota 记录档,quota.user , 应该由 root 拥有,而且 root 有 读写的权限而其它任何人都没有. 以 root 的身分登录.进入你想要启用 quota 之分割区的最上层,并且 这样建立 quota.user: touch /partition/quota.user touch /partition/quota.group chmod 600 /partition/quota.user chmod 600 /partition/quota.group 6. 重新启动 现在重新启动系统以便让你所作的切换生效. 同时注意以后对于你还想要启用 quota 的其它分割区只需要步骤 4, 5, 以及 6 . 在 Linux 上设定 quota - 第二部份: 为使用者及群组指定 Quota 这项操作是使用 edquota 指令执行的.(详情参考 man edquota). 我通常在编辑 quota 之前会先使用 quotacheck 并加上参数 -avug 以 取得最新的文件系统使用状况.这只是一个个人习惯,并非必要步骤. 为特定使用者指定 quota 这儿有个例子.在我的系统上有一个名叫 bob 的使用者.使用 "edquota bob" 这个指令将会把你带进 vi (或是在你的 $EDITOR 环 境变量中所指定的编辑器)以便为使用者 "bob" 编辑在每个启用 quota 的分割区上的 quota : Quotas for user bob: /dev/hda2: blocks in use: 2594, limits (soft = 5120, hard = 6400) inodes in use: 356, limits (soft = 1000, hard = 1500) "blocks in use" 是使用者在某个分割区上已经使用的区块总数(以千位 元组为单位) "inodes in use" 是使用者在某个分割区上所拥有的文件总数. 为特定群组指定 quota 现在在我的系统上有一群组叫 games."edquota -g games" 再度将我带入 vi 以便为 games 群组编辑 quota : Quotas for group games: /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard =
10000) inodes in use: 1454, limits (soft = 3000, hard = 4000) 为一群使用者指定相同的 quota 值 为了快速地为我系统上的一群使用者,例如一百名,设定和 bob 相同的 quota 值,我首先以手动编辑 bob 的 quota 信息,然后执行: edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd` 这是假设你使用 csh,并且你的使用者 UID 从 500 开始. 除了 edquota 之外,还有三个你应该熟习的其它专有名词: 软性限制, 硬性限制,以及缓冲期间. 软性限制 一般来说,软性限制指出 quota 使用者在分割区上拥有的磁盘用量总数 .但是合并使用缓冲期间的时候,它的动作就如同一道临界线,当 quota 使用者超越时便发出有关他即将违犯 quota 的警告. 硬性限制 硬性限制只在设定有缓冲期间时才会运作.它指出磁盘用量的绝对限制, quota 使用者不能超越他的硬性限制. 缓冲期间 以 "edquota -t" 指令执行,缓冲期间是对 quota 使用者实行软性限制 之前的时间限制.可以使用的时间单位是秒、分、小时、日、星期、以及 月.这是你使用 "edquota -t" 指令将会见到的: Time units may be: days, hours, minutes, or seconds Grace period before enforcing soft limits for users: /dev/hda2: block grace period: 0 days, file grace period: 0 days 把 0 days 这个部份切换为你觉得合理的任何期限.我个人选择 7 days (或是 1 week ). ---------------------------------------------------------------- 其它的 Quota 指令 Quotacheck Quotacheck 是用来扫描文件系统的磁盘用量,并更新 "quota.user" 此 quota 记录档到最新的状态.我建议定期在系统启动时执行 quotacheck 或藉由 cronjob 每隔一段时间执行一次(像是,一星期? ). Repquota Repquota 产生文件系统之摘要 quota 信息.这里有份 repquota 所得 的输出范例: # repquota -a Block limits File limits User used soft hard grace used soft hard
grace root -- 175419 0 0 14679 0 0 bin -- 18000 0 0 735 0 0 uucp -- 729 0 0 23 0 0 man -- 57 0 0 10 0 0 user1 -- 13046 15360 19200 806 1500 2250 user2 -- 2838 5120 6400 377 1000 1500 Quotaon 以及 Quotaoff Quotaon 是用来打开 quota 的计算; quotaoff 则是将其关闭.实际上 两者很类似.它们是在系统启动与关机时执行的. 问:Linux中用来存放系统所需要的配置文件和子目录的目录是? 答:在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是 /etc 。 问:Linux结束后台进程的命令是? 答:kill Linux kill命令详解: 当需要中断一个前台进程的时候,通常是使用< Ctrl+c
>组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令.该命令可以终止后台进程.至于终止后台进程的原
因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死.总之这种情况是经常发生的.
kill命令是通过向进程发送指定的信号来结束进程的.如果没有指定发送信号,那么默认值为TERM信号.TERM信号将终止所有不能捕获该信号的进程.
至于那些可以捕获该信号的进程可能就需要使用kill(9)信号了,该信号是不能被捕捉的. kill命令的语法格式很简单,大致有以下两种方式: kill [-s 信号 | -p ] [ -a ] 进程号 … kill -l [信号] -s 指定需要送出的信号.既可以是信号名也可以对应数字. -p 指定kill命令只是显示进程的pid,并不真正送出结束信号. -l 显示信号名称列表,这也可以在/usr/include/linux/signal.h文件中找到. kill命令的使用 下面看看该命令的使用. [例24] 在执行一条find指令时由于时间过长,决定终止该进程. 首先应该使用ps命令来查看该进程对应的PID,键入ps,显示如下: PID TTY TIME COMMAND 285 1 00:00:00 -bash 287 3 00:00:00 -bash 289 5 00:00:00 /sbin/mingetty tty5 290 6 00:00:00 /sbin/mingetty tty6 312 3 00:00:00 telnet bbs3 341 4 00:00:00 /sbin/mingetty tty4 345 1 00:00:00 find / -name foxy.jpg 348 1 00:00:00 ps 可以看到该进程对应的PID是345,现在使用kill命令来终止该进程.键入: # kill 345 再用ps命令查看,就可以看到,find进程已经被杀掉了. [例25] 杀掉进程11721 # ps PID TTY TIME COMMAND 11668 p1 00:00:00 -tcsh 11721 p1 00:00:00 cat 11737 p1 00:00:00 ps # kill 11721 [1] Terminated cat #
有时候可能会遇到这样的情况,某个进程已经挂死或闲置,使用kill命令却杀不掉.这时候就必须发送信号9,强行关闭此进程.当然这种"野蛮"的方法很可
能会导致打开的文件出现错误或者数据丢失之类的错误.所以不到万不得已不要使用强制结束的办法.如果连信号9都不响应,那恐怕就只有重新启动计算机了. 控制多个进程命令 Linux可使用户同时运行多个进程,还允许用户或系统管理员能控制正在运行的进程. nohup命令
理论上,我们一般退出Linux系统时,会把所有的程序全部结束掉,包括那些后台程序.但有时候,例如您正在编辑一个很长的程序,但是您下班或是有事需要
先退出系统,这时您又不希望系统把您编辑那么久的程序结束掉,希望退出系统时,程序还能继续执行.这时,我们就可以使用nohup命令使进程在用户退出后
仍继续执行.
一般这些进程我们都是让它在后台执行,结果则会写到用户自己的目录下的nohup.out这个文件里(也可以使用输出重定向,让它输出到一个特定的文
件). [例26] $ nohup sort sales.dat &
这条命令告诉sort命令忽略用户已退出系统,它应该一直运行,直到进程完成.利用这种方法,可以启动一个要运行几天甚至几周的进程,而且在它运行时,用
户不需要去登录.
nohup命令把一条命令的所有输出和错误信息送到nohup.out文件中.若将输出重定向,则只有错误信息放在nohup.out文件中. renice命令 renice命令允许用户修改一个正在运行进程的优先权. 利用renice命令可以在命令执行时调整其优先权.其格式如下: $ renice -number PID 其中,参数number与nice命令的number意义相同. 注: (1) 用户只能对自己所有的进程使用renice命令. (2) root用户可以在任何进程上使用renice命令. (3) 只有root用户才能提高进程的优先权. :Linux进程的运行有两种方式是?
答:进程的运行有两种方式,即 独立运行和使用父进程运行 。 问:Linux Links分为哪两种? 答:Links分为 硬链接和符号链接 。 问:Linux查看全部进程的命令是? 答:在超级用户下显示Linux系统中正在运行的全部进程,应使用的命令及参数是 ps -aux 。 Linux ps命令详解: 1)ps a 显示现行终端机下的所有程序,包括其他用户的程序. 2)ps -A 显示所有程序. 3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示. 4)ps -e 此参数的效果和指定"A"参数相同. 5)ps e 列出程序时,显示每个程序所使用的环境变量. 6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系. 7)ps -H 显示树状结构,表示程序间的相互关系. 8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外. 9)ps s 采用程序信号的格式显示程序状况. 10)ps S 列出程序时,包括已中断的子程序资料. 11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况. 12)ps u 以用户为主的格式来显示程序状况. 13)ps x 显示所有程序,不以终端机来区分. 最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作. 问:Linux进行远程登录的命令是? 答:进行远程登录的命令是 telnet 。 linux telnet命令详解: 语 法:telnet
[-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名
称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端
口>] 补充说明:执行telnet指令开启终端机阶段作业,并登入远端主机. 参 数: -8 允许使用8位字符资料,包括输入与输出. -a 尝试自动登入远端系统. -b<主机别名> 使用别名指定远端主机名称. -c 不读取用户专属目录里的.telnetrc文件. -d 启动排错模式. -e<脱离字符> 设置脱离字符. -E 滤除脱离字符. -f 此参数的效果和指定"-F"参数相同. -F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机. -k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名. -K 不自动登入远端主机. -l<用户名称> 指定要登入远端主机的用户名称. -L 允许输出8位字符资料. -n<记录文件> 指定文件记录相关信息. -r 使用类似rlogin指令的用户界面. -S<服务类型> 设置telnet连线所需的IP TOS信息. -x 假设主机有支持数据加密的功能,就使用它. -X<认证形态> 关闭指定的认证形态. 问:Apache服务器进程配置文件是? 答:Apache服务器进程配置文件是 httpd.conf 。 apache服务器配置详解: # 基于 NCSA 服务的配置文件. # #这是Apache服务器主要配置文件. #它包含服务器的影响服务器运行的配置指令. #参见<
href=""
target="_blank">以取得关于这些指令
的详细信息 # #不要只是简单的阅读这些指令信息而不去理解它. #这里只是做了简单的说明,如果你没有参考在线文件,你就会被警告. # #这些配置指令被分为下面三个部分: #1. 控制整个Apache服务器行为的部分(即全局环境变量) #2. 定义主要或者默认服务参数的指令,也为所有虚拟主机提供默认的设置参数 #3. 虚拟主机的设置参数 # #配置和日志文件名:如果你指定的文件名以"/"开始(win32下以"dirver:/"), #服务器将使用绝对路径,如果文件名不是以"/"开始的,那么它将把ServerRoot #的值附加在文件名的前面,例如,对"logs/foo.log",如果ServerRoot的值 #为"/usr/local/apache2",则该文件应为"/usr/local/apache2/logs/foo.log" # ##第一区:全局环境参数 # #这里设置的参数将影响整个Apache服务器的行为; #例如Apache能够处理的并发请求的数量等. # #ServerRoot:指出服务器保存其配置、出错和日志文件等的根目录. # #注意!如果你想要将它指定为NFS或其它网络上的位置, #请一定要去阅读与LockFile有关的文档(可能在 #<
href=""
target="_blank">…n.html#lockfile>
). #这将会使你自己也能解决很多问题. # #路径的结尾不要添加斜线. # ServerRoot "/usr/loacl/apache2" # #串行访问的锁文件必须保存在本地磁盘上 # #LockFile logs/accept.lock #ScoreBoardFile:用来保存内部服务进程信息的文件. #如果未指明(默认),记分板(scoreboard)将被保存在一个匿名的共享内存段中, #并且它不能被第三方软件所使用. #如果指定了,要确保不能使用两个Apache使用同一个记分板文件, #这个记分板文件必须保存在本地磁盘上. # #ScoreBoardFile logs/apache_runtime_status # #PidFile:记录服务器启动进程号的文件. # PidFile logs/httpd.pid # #Timeout:接收和发送前超时秒数 # Timeout 300 # #KeepAlive:是否允许稳固的连接(每个连接有多个请求), #设为"Off"则停用. # KeepAlive On # #MaxKeepAliveRequests:在稳固连接期间允许的最大请求数, #设为0表示无限制接入. #我们推荐你将其设为一个较大的值,以便提高性能 MaxKeepAliveRequests 100 # #KeepAliveTimeout:在同一个连接上从同一台客户上接收请求的秒数 # KeepAliveTimeout 15 ## ##Server-Pool大小设定(针对MPM的) ## # prefork MPM # StartServers:启动时服务器启动的进程数 # MinSpareServers:保有的备用进程的最小数目 # MaxSpareServers:保有的备用进程的最大数目 # MaxClients:服务器允许启动的最大进程数 # MaxRequestsPerChild:一个服务进程允许的最大请求数 StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestPerChild 0 # worker MPM # StartServers:服务器启动时的服务进程数目 # MaxClients:允许同时连接的最大用户数目 # MinSpareThreads:保有的最小工作线程数目 # MaxSpareThreads:允许保有的最大工作线程数目 # ThreadsPerChild:每个服务进程中的工作线程常数 # MaxRequestsPerChild:服务进程中允许的最大请求数目 StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 # perchild MPM # NumServers:服务进程数量 # StartThreads:每个服务进程中的起始线程数量 # MinSpareThreads:保有的最小线程数量 # MaxSpareThreads:保有的最大线程数量 # MaxThreadsPerChild:每个服务进程允许的最大线程数 # MaxRequestsPerChild:每个服务进程允许连接的最大数量 NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 MaxRequestsPerChild 0 # WinNT MPM # ThreadsPerChild:服务进程中工作线程常数 # MaxRequestsPerChild:服务进程允许的最大请求数 ThreadsPerChild 250 MaxRequestsPerChild 0 # BeOS MPM # StartThreads:服务器启动时启动的线程数 # MaxClients:可以启动的最大线程数(一个线程等于一个用户) # MaxRequestsPerThread:每个线程允许的最大请求数 StartThreads 10 MaxClients 50 MaxRequestsPerThread 10000 # NetWare MPM # ThreadStachSize:为每个工作线程分配的堆栈尺寸 # StartThreads:服务器启动时启动的线程数 # MinSpareThreads:用于处理实发请求的空闲线程数 # MaxSpareThreads:空闲线程的最大数量 # MaxThreads:在同一时间活动的最大线程数 # MaxRequestPerChild:一个线程服务请求的最大数量, # 推荐将其设置为0,以实现无限制的接入 ThreadStackSize 65536 StartThreads 250 MinSpareThreads 25 MaxSpareThreads 250 MaxThreads 1000 MaxRequestPerChild 0 # OS/2 MPM # StartServers:启动的服务进程数量 # MinSpareThreads:每个进程允许的最小空闲线程 # MaxSpareThreads:每个进程允许的最大空闲线程 # MaxRequestsPerChild:每个服务进程允许的最大连接数 StartServers 2 MinSpareThreads 5 MaxSpareThreads 10 MaxRequestsPerChild 0 # # Listen:允许你绑定Apache服务到指定的IP地址和端口上,以取代默认值 # 参见 # 使用如下命令使Apache只在指定的IP地址上监听, # 以防止它在IP地址0.0.0.0上监听 # # Listen 12.34.56.78:80 Listen 80 # # 动态共享支持(DSO) # # 为了能够使用那些以DSO模式编译的模块中的函数,你必须有相应的"LoadModule"行, # 因此,在这里包含了这些指令,以便能在使用它之前激活. # 那些静态编译的模块不需要在这里列出 (即以"httpd -l"列出的模块) # # 示例: # LoadModule foo_module modules/mod_foo.so # # # ExtendedStatus:当调用"server-status"时,控制Apache是产生"全"状态 # 信息(ExtendedStatus On),还是产生基本信息(ExtendedStatus Off). # 默认为off # # ExtendedStatus On ### 第二区:"主"服务配置 # # 这一区建立被 "主" 服务器用的指令值,以回应那些不被 # 定义处理的任何请求. # 这些数值也提供默认值给后面定义的 # 如果 # # # # 如果你想使httpd以另外的用户或组来运行,你必须在开始时以root方式启动 # 然后再将它切换为你想要使用的用户或组. # # User/Group:运行httpd的用户和组 # 在SCO (ODT3)上使用"User nouser"和"Group nogroup" # 在HPUX上,你可能不能以nobody身份使用共享内存,建议创建一个www用户. # 注意一些核心(kernel)在组ID大于60000时拒绝setgid(Group)或semctl(IPC_SET), #节在这些系统上不要使用"Group #-1". # User nobody Group #-1 # # ServerAdmin:你的邮件地址,当发生问题时Apache将向你发出邮件. # 作为一个出错文档,这个地址显示在server-generated页上, # 例如:admin@your-domain.com # ServerAdmin [email]kreny@sina.com[/email] # # ServerName指定Apache用于识别自身的名字和端口号. # 通常这个值是自动指定的,但是我们推荐你显式的指定它以防止启动时出错 # # 如果你为你的主机指定了一个无效的DNS名,server-generated重定向将不能工作. # 参见UseCanonicalName指令 # # 如果你的主机没有注册DNS名,在这里键入它的IP地址 # 无论如何,你必须使用它的IP地址来提供服务, # 这里使用一种容易理解的方式重定向服务 # # UseCanonicalName:决定Apache如何构造URLS和 SERVER_NAME 和 SERVER_PORT
的指令. # 当设置为 "Off"时,Apache会使用用户端提供的主机名和端口号. # 当设置为"On",Apache会使用ServerName指令的值. # UseCanonicalName Off # # DocumentRoot:你的文档的根目录.默认情况下,所有的请求从这个目录进行应答. # 但是可以使用符号链接和别名来指向到其他的位置. # DocumentRoot "/home/redhat/public_html" # # Apache可以存取的每个目录都可以配置存取权限(包括它的子目录). # # 首先,我们配置一个高限制的特征. # 这将禁止访问文件系统所在的目录,并添加你希望允许访问的目录块. # 如下所示 Order Deny,Allow Deny from all # # 注意从这里开始你一定要明确地允许哪些特别的特征能够被使用. # - 所以,如果Apache没有象你所期待的那样工作的话, # 请检查你是否在下面明确的指定它可用. # # # 这将改变到你设置的DocumentRoot # # # Options:这个指令的值可以是"None","All",或者下列选项的任意组合: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI
MultiViews # # 注意,"MultiViews"必须被显式的指定,"Options All"不能为你提供这个特性. # # 这个指令既复杂又重要,请参见 # Options FollowSymLinks # # AllowOverride控制那些被放置在.htaccess文件中的指令. # 它可以是"All","None",或者下列指令的组合: # Options FileInfo AuthConfig Limit # AllowOverride None # # 控制谁可以获得服务. # Order allow,deny Allow from all # # UserDir:指定在得到一个~user请求时将会添加到用户home目录后的目录名. # UserDir public_html # 为防止在UserDir指令上的漏洞,对root用户设置 # 象"./"这样的UserDir是非常有用的. # 如果你使用Apache 1.3或以上版本,我们强烈建议你 # 在你的服务器配置文件中包含下面的行 UserDir disabled root # # 下面是一个使用UserDir指令使一个站点的目录具有只读属性的示例: # # # AllowOverride FileInfo AuthConfig Limit Indexes # Options MultiViews Indexes SymLinksIfOwnerMatch IncludeNoExec # # Order allow,deny # Allow from all # # # Order deny,allow # Deny from all # # # # DirectoryIndex:定义请求是一个目录时,Apache向用户提供服务的文件名 # # index.html.var文件(一个类型映象文件)用于提供一个文档处理列表, # 出于同样的目的,也可以使用MultiViews选项,但是它会非常慢. # DirectoryIndex index.php index.html index.html.var # # AccessFileName:在每个目录中查询为目录提供附加配置指令的文件的文件名. # 参见AllowOverride指令. # AccessFileName .htaccess # # 下面的行防止.htaccess和.htpasswd文件被Web客户查看. # Order allow,deny Deny from all # # Typeconfig:定义在哪里查询mime.types文件. # TypeConfig conf/mime.types # # DefaultType:定义当不能确定MIME类型时服务器提供的默认MIME类型. # 如果你的服务主要包含text或HTML文档,"text/plain"是一个好的选择; # 如果大多是二进制文档,诸如软件或图像,你应使用 # "application/octer-stream"来防止浏览器象显示文本那样显示二进制文件. # DefaultType text/plain # # mod_mime_magic允许服务器从自己定义自己类型的文件中使用不同的线索(hints), # 这个MIMEMagicFile指令定义hints定义所在的文件. # MIMEMagicFile conf/magic # # HostnameLookups:指定记录用户端的名字还是IP地址,例如,本指令为on时 # 记录主机名,如为off时记录IP地址,204.62.129.132. # 默认值为off,这要比设为on好得多,因为如果设为on则每个用户端请求都将会 # 至少造成对 nameserver 进行一次查询. # HostnameLookups Off # # EnableMMAP:控制是否进行内存转储(如果操作系统支持的话). # 默认为on,如果你的服务器安装在网络文件系统上(NFS),请关闭它. # 在一些系统上,关闭它会提升系统性能(与文件系统类型无关); # 具体情况请参阅…html#enablemmap # # EnableMMAP off # # EnableSendfile:控制是否使用sendfile kernel支持发送文件 # (如果操作系统支持的话).默认为on,如果你的服务器安装在网络文件系统 # (NFS)上,请你关闭它. # 参见…#enablesendfile # # EnableSendfile off # # ErrorLog:错误日志文件定位. # 如果你没有在 # 将记录在这里.如果你在那儿定义了ErrorLog,这些错误信息将记录在你所 # 定义的文件里,而不是这儿定义的文件. # ErrorLog logs/error_log # # LogLevel:控制记录在错误日志文件中的日志信息数量. # 可能的值包括:debug,info,notice,warn,error,crit,alert,emerg. # LogLevel warn # # 下面的指令为CustomLog指令定义格式别名. # LogFormat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%i -> %U" referer LogFormat "%i" agent # 你需要安装了mod_logio.c模块才能使用%I和%O. # LogFormat "%h %l %u %t \"%r\" %>s %b \"%i\" \"%i\" %I %O"
combinedio # # 指定接入日志文件的定位和格式(一般日志格式). # 如果你没有在 # 如果你定义了这个指令,则记录在你指定的位置,而不是这儿定义的位置. # CustomLog logs/access_log common # # 如果你想要记录agent和referer信息,可以使用下面的指令 # # CustomLog logs/referer_log referer # CustomLog logs/agent_log agent # # 如果你想要使用一个文件记录access,agent和referer信息, # 你可以如下定义这个指令: # # CustomLog logs/access_log combined # # ServerTokens # 这个指令定义包含在HTTP回应头中的信息类型.默认为"Full", # 这表示在回应头中将包含模块中的操作系统类型和编译信息. # 可以设为列各值中的一个: # Full | OS | Minor | Minimal | Major | Prod # Full传达的信息最多,而Prod最少. # ServerTokens Full # # 随意的添加包含服务器版本和虚拟主机名字一行信息到server-generated输出页中 # (内部错误文档,FTP目录列表,mod_status和mod_info输出等等,除了CGI错误 # 或自定义的错误文档以外). # 设为"EMail"将包含一个指向ServerAdmin的mailto:连接. # 可以为如下值:On | Off | EMail # ServerSignature On # # Aliases:在这时添加你需要的别名,格式如下: # Alias 别名 真实名 # # 注意,如果你在别名的未尾包含了"/",那么在URL中也需要包含"/". # 因此,"/icons"不是这个示例中的别名. # 如果别名中以"/"结尾,那么真实名也必须以"/"结尾, # 如果别名中省略了结尾的"/",那么真实名也必须省略. # # 我们使用别名"/icons/"来表示FancyIndexed目录列表,如果你不使用、 # FancyIndexing,你可以注释掉它. # # Alias /icons/ "/usr/local/apache2/icons/" # # Options Indexes MultiViews # AllowOverride None # Order allow,deny ## Allow from all # # # 这将改变ServerRoot/manual.这个别名提供了手册页所在的位置, # 即使你改变了你的DocumentRoot.如果你对有无手册页并不在意的话, # 你可以注释掉它. # Alias /manual "/usr/loacl/apache2/manual" Options Indexes FollowSymLinks MultiViews IncludesNoExec AddOutputFilter Includes html Order allow,deny Allow from all # # ScriptAlias:指定包含服务脚本的目录. # ScriptAliases 本质上与Aliases一样,除了这里的文档在请求时做为程序处理处理以外. # 尾部的"/"规则与Alias一样 # ScriptAlias /cgi-bin/ "/usr/loacl/apache2/cgi-bin/" # 这里是添加php 4支持的指令 AddType application/x-httpd-php .php LoadModule php4_module modules/libphp4.so # # 添加mod_cgid.c设置,mod_cgid提供使用cgid进行通讯的UNIX套接字的 # 脚本接口路径. # # Scriptsock logs/cgisock # # 将"/usr/local/apache2/cgi-bin"改为你的ScriptAliased指定的CGI目录, # 如果你配置了的话. # AllowOverride None Options None Order allow,deny Allow from all # # Redirect允许你告诉客户端使用存在于服务器名字空间中的文档, # 而不是现在的,这帮助客户定位那些改变了位置的文档. # 例如: # # 控制server-generated目录列表显示的指令 # # # IndexOptions:控制server-generated目录列表显示特征. # IndexOptions FancyIndexing VersionSort # # AddIcon* 指令告诉服务器不同扩展名的图象文件如何显示, # 只适用于FancyIndexed指令 # 问:Linux解压缩.gz文件的命令是? 答:在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。 gzip解压命令详解: ~]# tar [-cxtzjvfpPN] 文件与目录 … 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩. -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩? -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩? -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程! -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! 例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成 『 tar -zcvPf tfile sfile』才对喔! -p :使用原文件的原来属性(属性不会依据使用者而变) -P :可以使用绝对路径来压缩! -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中! --exclude FILE:在压缩的过程中,不要将 FILE 打包! 范例: 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar [root@linux ~]# tar -cvf /tmp/etc.tar /etc tar -zcvf /tmp/etc.tar.gz /etc [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc # 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识. # 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~ # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~ # 上述指令在执行的时候,会显示一个警告讯息: # 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定. 范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件? [root@linux ~]# tar -ztvf /tmp/etc.tar.gz # 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时, # 就得要加上 z 这个参数了!这很重要的! 范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下 [root@linux ~]# cd /usr/local/src [root@linux src]# tar -zxvf /tmp/etc.tar.gz # 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说, # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz , # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc # 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔! 范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已 [root@linux ~]# cd /tmp [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd # 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件, # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了! 范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限! [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时! 范例六:在 /home 当中,比 2005/06/01 新的文件才备份 [root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home 范例七:我要备份 /home, /etc ,但不要 /home/dmtsai [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc 范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件! [root@linux ~]# cd /tmp [root@linux tmp]# tar -cvf - /etc | tar -xvf - # 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的! # 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~ # 这分别代表 standard output, standard input 与管线命令啦! # 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰! gzip, zcat 命令 [root@linux ~]# gzip [-cdt#] 档名 [root@linux ~]# zcat 档名.gz 参数: -c :将压缩的资料输出到萤幕上,可透过资料流重导向来处理; -d :解压缩的参数; -t :可以用来检验一个压缩档的一致性~看看文件有无错误; -# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6 ~ 范例: 范例一:将 /etc/man.config 复制到 /tmp ,并且以 gzip 压缩 [root@linux ~]# cd /tmp [root@linux tmp]# cp /etc/man.config . [root@linux tmp]# gzip man.config # 此时 man.config 会变成 man.config.gz ! 范例二:将范例一的文件内容读出来! [root@linux tmp]# zcat man.config.gz # 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容!! 范例三:将范例一的文件解压缩 [root@linux tmp]# gzip -d man.config.gz 范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件 [root@linux tmp]# gzip -9 -c man.config > man.config.gz bzip2, bzcat 命令 [root@linux ~]# bzip2 [-cdz] 档名 [root@linux ~]# bzcat 档名.bz2 参数: -c :将压缩的过程产生的资料输出到萤幕上! -d :解压缩的参数 -z :压缩的参数 -# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快! 范例: 范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩 [root@linux tmp]# bzip2 -z man.config # 此时 man.config 会变成 man.config.bz2 ! 范例二:将范例一的文件内容读出来! [root@linux tmp]# bzcat man.config.bz2 # 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!! 范例三:将范例一的文件解压缩 [root@linux tmp]# bzip2 -d man.config.bz2 范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件 [root@linux tmp]# bzip2 -9 -c man.config > man.config.bz2 compress 命令 [root@linux ~]# compress [-dcr] 文件或目录 参数: -d :用来解压缩的参数 -r :可以连同目录下的文件也同时给予压缩呢! -c :将压缩资料输出成为 standard output (输出到萤幕) 范例: 范例一:将 /etc/man.config 复制到 /tmp ,并加以压缩 [root@linux ~]# cd /tmp [root@linux tmp]# cp /etc/man.config . [root@linux tmp]# compress man.config [root@linux tmp]# ls -l -rw-r--r-- 1 root root 2605 Jul 27 11:43 man.config.Z 范例二:将刚刚的压缩档解开 [root@linux tmp]# compress -d man.config.Z 范例三:将 man.config 压缩成另外一个文件来备份 [root@linux tmp]# compress -c man.config > man.config.back.Z [root@linux tmp]# ll man.config* -rw-r--r-- 1 root root 4506 Jul 27 11:43 man.config -rw-r--r-- 1 root root 2605 Jul 27 11:46 man.config.back.Z # 这个 -c 的参数比较有趣!他会将压缩过程的资料输出到萤幕上,而不是写入成为 # file.Z 文件.所以,我们可以透过资料流重导向的方法将资料输出成为另一个档名. # 关於资料流重导向,我们会在 bash shell 当中详细谈论的啦! dd 命令 [root@linux ~]# dd if="input_file" of="outptu_file" bs="block_size" \ count="number" 参数: if :就是 input file 啰~也可以是装置喔! of :就是 output file 喔~也可以是装置; bs :规划的一个 block 的大小,如果没有设定时,预设是 512 bytes count:多少个 bs 的意思. 范例: 范例一:将 /etc/passwd 备份到 /tmp/passwd.back 当中 [root@linux ~]# dd if=/etc/passwd of=/tmp/passwd.back 3+1 records in 3+1 records out [root@linux ~]# ll /etc/passwd /tmp/passwd.back -rw-r--r-- 1 root root 1746 Aug 25 14:16 /etc/passwd -rw-r--r-- 1 root root 1746 Aug 29 16:57 /tmp/passwd.back # 仔细的看一下,我的 /etc/passwd 文件大小为 1746 bytes,因为我没有设定 bs , # 所以预设是 512 bytes 为一个单位,因此,上面那个 3+1 表示有 3 个完整的 # 512 bytes,以及未满 512 bytes 的另一个 block 的意思啦! # 事实上,感觉好像是 cp 这个指令啦~ 范例二:备份 /dev/hda 的 MBR [root@linux ~]# dd if=/dev/hda of=/tmp/mbr.back bs=512 count=1 1+0 records in 1+0 records out # 这就得好好了解一下啰~我们知道整颗硬盘的 MBR 为 512 bytes, # 就是放在硬盘的第一个 sector 啦,因此,我可以利用这个方式来将 # MBR 内的所有资料都纪录下来,真的很厉害吧! ^_^ 范例三:将整个 /dev/hda1 partition 备份下来. [root@linux ~]# dd if=/dev/hda1 of=/some/path/filenaem # 这个指令很厉害啊!将整个 partition 的内容全部备份下来~ # 后面接的 of 必须要不是在 /dev/hda1 的目录内啊~否则,怎么读也读不完~ # 这个动作是很有效用的,如果改天你必须要完整的将整个 partition 的内容填回去, # 则可以利用 dd if=/some/file of=/dev/hda1 来将资料写入到硬盘当中. # 如果想要整个硬盘备份的话,就类似 Norton 的 ghost 软体一般, # 由 disk 到 disk ,嘿嘿~利用 dd 就可以啦~厉害厉害! cpio 命令 [root@linux ~]# cpio -covB > [file|device] [root@linux ~]# cpio -icduv 参数: -o :将资料 copy 输出到文件或装置上 -i :将资料自文件或装置 copy 出来系统当中 -t :查看 cpio 建立的文件或装置的内容 -c :一种较新的 portable format 方式储存 -v :让储存的过程中文件名称可以在萤幕上显示 -B :让预设的 Blocks 可以增加至 5120 bytes ,预设是 512 bytes ! 这样的好处是可以让大文件的储存速度加快(请参考 i-nodes 的观念) -d :自动建立目录!由於 cpio 的内容可能不是在同一个目录内, 如此的话在反备份的过程会有问题! 这个时候加上 -d 的话, 就可以自动的将需要的目录建立起来了! -u :自动的将较新的文件覆盖较旧的文件! 范例: 范例一:将所有系统上的资料通通写入磁带机内! [root@linux ~]# find / -print | cpio -covB > /dev/st0 # 一般来说,使用 SCSI 介面的磁带机,代号是 /dev/st0 喔! 范例二:检查磁带机上面有什么文件? [root@linux ~]# cpio -icdvt [root@linux ~]# cpio -icdvt /tmp/content # 第一个动作当中,会将磁带机内的档名列出到萤幕上面,而我们可以透过第二个动作, # 将所有的档名通通纪录到 /tmp/content 文件去! 范例三:将磁带上的资料还原回来~ [root@linux ~]# cpio -icduv # 一般来说,使用 SCSI 介面的磁带机,代号是 /dev/st0 喔! 范例四:将 /etc 底下的所有『文件』都备份到 /root/etc.cpio 中! [root@linux ~]# find /etc -type f | cpio -o > /root/etc.cpio # 这样就能够备份啰~您也可以将资料以 cpio -i 问:vi编辑器保存文件的命令是? 答:在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt 。 vi编辑器命令详解: vi命令是unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件.若在vi执行时 没有指定一个文件,那么vi命令会自动产生一个无名的空的工作文件.若指定的文件不存在, 那么就按指定的文件名创建一个新的文件.若对文件的修改不保存的话,v i命令并不改变原 来文件的内容. 注意:vi命令并不锁住所编辑的文件,因此多个用户可能在同时编辑一个文件,那么最后 保存的文件版本将被保留. 下面是vi命令使用的一些选项及含义: -c sub-command 在对指定的文件编辑前,先执行指定的命令 sub-command . -r filename 恢复指定的文件filename . -R 将指定的文件以只读的方式放入编辑器中,这样不会保存对文件的任何修 改. -y number 将编辑窗口的大小设为number行. 下面是vi编辑所处的三种模式: .命令模式 进入vi时所处的模式.在此模式下用户可输入各种子命令对进行*作,如删除行、 粘贴行、移向下一个字、移向不同行等. .文本输入模式 在此模式下可以修改一行的内容并增添新行.在命令模式下键入a 、i 或 c键可进入文本输入模式,按Escape键可返回命令模式. .命令项模式 在此模式下,可以通过子命令输入更多的参数.如:w子命令要求输入一文 件名,"/"子命令要求输入一个查找项.用户使用Escape键返回命令模式. 下面是自命令模式下执行的,在同一行上移动的自命令: h 将光标左移一格. l 将光标右移一格. j 将光标下移一格. k 将光标上移一格. w 将光标移到下一个小字的前面. W 将光标移到下一个大字的前面. b 将光标移到前一个小字的前面. B 将光标移到前一个大字的前面. e 将光标移到下一个小字的后面. E 将光标移到前一个大字的后面. fc 把光标移到同一行的下一个c字符处. Fc 把光标移到同一行的前一个c字符处. tc 把光标移到同一行的下一个字符c的前一格. Tc 把光标移到同一行的前一个字符c的后一格. number| 把光标移到递number列上. 下面是命令模式下在行间移动的子命令: +或Enter 把光标移至下一行第一个非空白字符. - 把光标移至上一行第一个非空白字符. 0 把光标移到当前行的第一个字符处. $ 把光标移到当前行的最后一个字符处. H 把光标移到屏幕最顶端一行. L 把光标移到屏幕最底端一行. M 把光标移到屏幕中间. 下面是命令模式下改变屏幕显示的子命令: z- 把当前行作为屏幕的最后一行,并重新显示屏幕. z. 把当前行作为屏幕的中间一行,并重新显示屏幕. Ctrl+l 重新显示屏幕当前内容. /pattern/z- 寻找pattern的下一个位置,并把所在行设为屏幕的最后一行. 下面是在命令模式下用来显示页面的子命令: Ctrl + f向后滚一页. Ctrl + d向后滚半页. Ctrl + b向前滚一页. Ctrl + u向前滚半页. Ctrl + e屏幕向下滚一行. Ctrl + y屏幕项上滚一行. 下面是在命令模式下用来查找字符串所使用的子命令: /pattern 向后寻找指定的pattern ,若遇到文件尾,则从头再开始. ?pattern 向前寻找指定的pattern ,若遇到文件头,则从尾再开始. n 在上次指定的方向上,再次执行上次定义的查找. N 在上次指定的方向的相反方向上,再次执行上次定义的查找. /pattern/+number 将光标停在包含pattern的行后面第number行上. /pattern/-number 将光标停在包含pattern的行前面第number行上. % 移到匹配的"()"或"{}"上. 下面是在文本输入模式下用来输入文本的子命令(用户可在任何时候按Escape返回到命令模式): a 在光标之后开始输入文本. A在行尾开始输入文本. i在光标之前开始输入文本. I在行首第一个非空白字符前输入文本. o在光标所在行后插入一空行. O在光标所在行前插入一空行. 下面是在命令模式下改变文本所使用的子命令(用户可在任何的时候按Escape键返回到命令模式): cc或S 修改一整行. C 改变一行光标位置以后的部分. cw 改变光标所在单词. dd删除当前行. D 删除光标所在行光标后面的内容. dw删除光标所在的单词. J 把下一行内容加到本行行尾. rc把光符所在字符替换成c . R 覆盖本行内容. u恢复上一次的修改. x删除光标所在的字符. ~ 改变光标所在出字符的大小写. . 重复上一个*作. <<把当前行移到左边. >>把当前行移到右边. 下面是用于文件中拷贝文本的字命令: p 将缓冲区内容取到光标所在行的下面一行. P 将缓冲区内容取到光标所在行的上面一行. "bd 将文本删除至有名缓冲区b . "bp 张贴有名缓冲区b中内容. yy把当前行放入缓冲区. Y 把当前行放入缓冲区. Yw把光标所在的单词放入缓冲区. 下面是用于保存文件的子命令: :w 回写修改后的文件. :w filename 当filename不存在时,把修改后的文件存为文件filename ,当文件filename 存在时,报错. !w filename 如果文件filename存在时,把修改后的文件保存为文件filename . 下面列出了在vi编辑的多个文件之间切换所用的子命令: :n开始编辑vi激活的文件列表中的下一个文件. :n filenames 指定将被编辑的新的文件列表. 下面列出了用于在当前文件和另外一个文件间切换的子命令: :e filename 使用filename激活vi (在vi中装入另一个文件filename). e!重新装入当前文件,若当前文件有改动,则丢弃以前的改动. :e+filename 使用filename激活vi ,并从文件尾部开始编辑. :e+number filename 使用filename激活vi ,并在第number行开始编辑. :e# 开始编辑另外一个文件. 下面是在本文件中加入其他文件代码所使用的子命令: :r filename读取filename文件,并将其内容加到当前文件后. :r ! command执行command文件,并将其输出加到当前文件后. 下面是vi中其他的子命令: ctrl+g 取得正在编辑文件的有关信息. :sh启动sh ,从sh中返回可用exit或ctrl+d . :! Command 执行命令command . !!重新执行上次的:! Command子命令. :q退出vi ,若用户对编辑的文件有所修改,系统不会让用户使用q命令退出. :q!退出vi而不管是否对文件有改动. ZZ或:wq 保存对文件的修改并退出vi . 用户可在一个特殊的文件.exrc中定义特殊的vi命令.在vi中使用这些命令时,必须在该 命令前加上一个冒号( :) . 命令状态: 2007-06-05 15:37命令状态: j,k,h,l:上下左右 0: 行首 $: 行尾 i,I :插入命令,i 在当前光标处插入 I 行首插入 a,A:追加命令,a 在当前光标后追加,A 在行末追加 o,O:打开命令,o 在当前行下打开一行,O在当前行上插入一行 r,R :替换命令,r 替换当前光标处字符,R从光标处开始替换 数字s: 替换指定数量字符 x: 删除光标处字符 dd: 删除当前行 d0: 删除光标前半行 d$: 删除光标后半行 ctrl+f :后翻页 ctrl+b:前翻页 G : 文件尾 数字G: 数字所指定行 /string 查找字符串 n 继续查找 N 反向继续查找 % 查找对应括号 u 取消上次操作 ex命令状态 :set number 显示行号 :set smd 显示显示状态 :0 文件首 :1,5 copy 7 块拷贝 :1,5 del 块删除 :1,5 move 7 块移动 :1,$s/string1/string2/g 全文件查找string1并替换为string2 :wq! 存盘退出 问:Linux下显示整年日历的命令是? 答:可以在标准输出上显示整年日历的命令及参数是 cal -y 。 问:Windows9.x与Unix/Linux共享的工具是? 答:在Windows9.x环境下共享Unix/Linux中的用户目录的一个工具是 Samba服务器 。 Samba服务器详解: ======================= Global Settings
===================================== [global] //设置samba服务整体环境 workgroup = hackase //设置工作组名 server string = angel server //服务器的名说明 ; hosts allow = 192.168.1. 192.168.2. 127. //限制可访问此服务的IP范围,默认是全部 允许的,要是想设设置去掉前面的";" printcap name = /etc/printcap //打印机配置文件 load printers = yes //是否共享打印机 # bsd, sysv, plp, lprng, aix, hpux, qnx, cups printing = cups //打印机的类型.标准打印机类型包括以上几种. ; guest account = pcguest //pcguest为用户名.可改去掉前边的";"让用户以 pcguest身份匿名登录,但保证/etc/passwd中有此人. log file = /var/log/samba/%m.log //为登录服务器的用户建立不同的日志文件. max log size = 0 //日志文件的大小,"0"代表无限制 //以下是smb.conf文件对服务器安全级别的设置 security = SHARE //安全性的级别共四种.share、user、server、domain ; password server = 密码验证服务器. ; password level = 8 //密码级别 ; username level = 8 encrypt passwords = yes //用户密码加密,当然也可以不加密 smb passwd file = /etc/samba/smbpasswd //将密码服务器设置为samba server.需 要这个东东来指定验证文件.这个是文件 的路径,如果samba server是指定的win server这个不须要 ; ssl CA certFile = /usr/share/ssl/certs/ca-bundle.crt unix password sync = Yes passwd program = /usr/bin/passwd %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n
*passwd:*all*authentication*tokens*updated*successfully* pam password change = yes ; username map = /etc/samba/smbusers
//如果每个windows用户在samba服务器中有帐户这 个可以不设 ; include = /etc/samba/smb.conf.%m obey pam restrictions = yes ; interfaces = 192.168.12.2/24 192.168.13.2/24 如果多网段要在这里列出 ; remote announce = 192.168.1.255 192.168.2.44 ; local master = no ; os level = 33 ; domain master = yes ; preferred master = yes ; domain logons = yes ; logon script = %m.bat ; logon script = %U.bat ; logon path = ; wins support = yes //wins server支持 ; wins server = w.x.y.z ; wins proxy = yes //wins 代理设置 dns proxy = no //dns代理设置 ; preserve case = no ; short preserve case = no ; default case = lower ; case sensitive = no #============================ Share Definitions
============================== [homes] //用户访问自已目录的设置 comment = Home Directories //说明(以下同理) browseable = no//设定目录可不可以别人浏览 writeable = yes//用户写入自己的权限 valid users = %S create mode = 0664 directory mode = 0775 ; [netlogon] //此段域用户登录目录设置 ; comment = Network Logon Service ; path = /usr/local/samba/lib/netlogon ; guest ok = yes ; writable = no ; share modes = no ;[Profiles] ; path = /usr/local/samba/profiles ; browseable = no ; guest ok = yes [printers] //打印机设置 comment = All Printers path = /var/spool/samba browseable = no printable = yes ;[tmp] //用户共享资源设置 ; comment = Temporary file space ; path = /tmp //可以自定义目录,去掉前边的";"就OK了 ; read only = no //是否只读或可写 ; public = yes ;[public] //用户共享资源设置 ; comment = Public Stuff ; path = /home/samba ; public = yes ; writable = yes ; printable = no ; write list = @staff ;[fredsprn] ; comment = Fred's Printer ; valid users = fred ; path = /home/fred ; printer = freds_printer ; public = no ; writable = no ; printable = yes ;[fredsdir] ; comment = Fred's Service ; path = /usr/somewhere/private ; valid users = fred ; public = no ; writable = yes ; printable = no ;[pchome] ; comment = PC Directories ; path = /usr/local/pc/%m ; public = no ; writable = yes ;[public] ; path = /usr/somewhere/else/public ; public = yes ; only guest = yes ; writable = yes ; printable = no ;[myshare] ; comment = Mary's and Fred's stuff ; path = /usr/somewhere/shared ; valid users = mary fred ; public = no ; writable = yes ; printable = no ; create mask = 0765 [my work] //偶的东东 comment = is me work path = /root/my work valid users angel public = yes writeable = yes _content>好了,了解smb.conf的文件就好办了.我们开始对samba server的四个安全级别分别讲解. 1、share级配置 这个在四个等级中是最低的,方法也是最简单.我们只要对smb.conf文件修改一下就可以了. workgroup = hackase server string = angel server hosts allow = 192.168.1. //限制192.168.1的IP网段可以防问 printcap name = /etc/printcap load printers = yes //共享打印机 printing = cups //打印机用linux标准的 guest account = angel log file = /var/log/samba/%m.log max log size = 20 security = share
=================================================================== 其他的设置默认就可以了,也可以像我把所有的注释删除.[tmp]这个字段的";"去掉.路径可以更改. 重启一下服务
/etc/samba/smb restart // service smb restart 也可 用testparm测试我们配置的文件是否正确:
=================================================================== [root@localhost root]# testparm //测试时[printers]注释掉了所以这里没有. Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[tmp]" Processing section "[my]" Loaded services file OK. //如有错误,会在这列出错误的地方. Press enter to see a dump of your service definitions
================================================================== 用smbclient命令查看网络共享情况
=================================================================== [root@localhost etc]# smbclient -L localhost //本机名为localhost Password: Domain=[HACKBASE] OS=[Unix] Server=[Samba 2.2.7a] Sharename Type Comment --------- ---- ------- tmp Disk Temporary file space my Disk is me IPC$ IPC IPC Service (angel server) ADMIN$ Disk IPC Service (angel server) root Printer Home Directories Server Comment --------- ------- Workgroup Master --------- -------
======================================================================= 2、user级配置 user比share级安全级别高一点点,很简单的,可以在share基础上改一下就可以了. 改一下security = share字段为:security = user.在加上如下字段: guest 问:Linux系统管理员的职责是? 答:Linux系统管理员的职责是进行系统资源管理、系统性能管理、设备管理、安全管理和 系统性能监测 。 问:Linux DNS解析是否正确的命令是? 答:在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup 。 问:如何修改Linux的系统IP地址? 答:如果只是要修改系统的IP地址,应修改 /etc/rc.d/rc.inet1 配置文件。 问:Linux局域网内的用户可以使用计算机名互相访问时,应配置哪个文件? 答:当LAN内没有条件建立DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置 /etc/hosts 文件。 问:Linux DHCP是? 答:DHCP是动态主机配置协议的简称,其作用是:为网络中的主机分配IP地址 。 问:试列举mv 命令的作用 答:mv 命令可以移动文件和目录,还可以为文件和目录重新命名。