持续更新笔记/资料/命令详解

回复 收藏
第二讲:
一、 yum
作用:
                    yum 命令是在Fedora 和RedHat 以及SUSE 中基于rpm 的软件包管理器,它可以使系统管理人员交互和自动化地更新与管理RPM软件包, 能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系, 并且一次安装所有依赖的软件包, 无需繁琐地一次次下载安装。yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简单又好记。
语法:
yum (选项)(参数)
选项:
          -c    指定配置文件
                    -C    完全从缓存中运行,而不去下载或者更新任何头文件

                    -d    设置调试级别(0-10)

                    -e    设置错误等级 (0-10)
                    -h    显示帮助信息

                    -q    安静模式

                    -R    设置yum 处理的一个命令的最大等待时间

                    -v     详细模式

                    -y     对所有提问回答‘yes‘
参数:
install: 安装rpm 软件包
update:更新rpm软件包
check-update:检查是否有可用的更新rpm软件包
remove:删除指定的rpm软件包
list: 显示软件包的信息
search: 检查软件包的信息
info: 显示指定的rpm阮家宝的描述信息和概要信息
clean:清理yum过期的缓存
shell:进入yum 的shell提示符
resolvedep: 显示rpm软件包的依赖关系
localinstall : 安装本地的rpm软件包
localupdate:显示本地rpm软件包进行更新
deplist: 显示rpm软件包的所有依赖关系


二、单用户模式
作用:
Linux环境下忘记root 密码以及磁盘自动挂载后,丢失磁盘等情况下,无法正常进入Linux系统。为了解决这一情况, Linux系统提供的单用户模式进入修改密码
操作:
root 密码忘记
1.重启电脑: reboot / init 6 / shutdown -r now
2.在倒计时5秒内键入
3.选中内核 - 键入e编辑 grub 菜单选项- root/kernel  选中kernel 键入e编辑 -  ......rhgb quite - 1/S/single  回车 -   b  boot启动  - 进入单用户模式 - runlevel  查看运行级别 - 修改密码 passwd  - 键入新密码 -reboot .
4.使用新密码登陆  (删除进度条:/boot/grub/grub.conf  删除rhgb )

磁盘扇区错乱:
1.系统启动时磁盘可能有坏道或者扇区错乱(数据损坏)的情况, 多由于异常断电,不正常关机导致。   
2. 系统启动时,屏幕显示 Press root passwoed or ctrl+D :
3.输入root密码系统自动进入单用户模式,输入“fsck -y /dev/hda6” 系统检测修复发生错误的磁盘分区
4.reboot 重启

GRUB选项设置错误:Error 15: file not found
1.grub 选项设置错误:键入任意键修改grub 配置文件 - 回车保存 - b boot 启动 - 进入系统修改grub.conf 配置文件相同错误。
2.grub引导故障排除:Linux启动后直接进入GRUB命令行界面(只有”grub>“提示符), 一般而言常见原因有两个:一是GRUB配置文件中选项设置错误;二是GRUB配置文件丢失(少数原因,如内核文件或镜像文件损坏、丢失,/boot 目录误删除等), 如果是第一种,可以首先通过GRUB命令引导系统后修复。 二种,则要使用Linux救援模式修复。

样例: ”title Fedora Core(2.6.18-1.2798.fc6)“ 段被误删除
1.查找/boot/grub/grub.conf 文件所在分区 ,GRUB> find /boot/grub/grub.conf  (hd0,0)
2.查看grub.conf 文件错误,GRUB> cat (hd0,0) /boot/grub/grub.conf
3.先通过命令行方式完成GRUB引导,进入系统后再行修复grub.conf 文件错误,
指定/boot分区: root (hd0,0)
指定内核加载: kernel /boot/vmlinuz-...../rhcb quite
指定镜像文件所在位置: initrd /boot/initrd-....img
4.从/boot分区启动, 命令行模式可以在GRUB菜单模式中通过键入”c“ 调用,也可以用于测试新编译的内核(设置kernel,initrd引导新内核以及镜像文件)。增加对GRUb引导以及linux系统引导的了解。

注意事项:
Linux引导进入根shell ,网络被禁用,只有少数进程运行。 单用户模式可以用来修改文件系统损坏,还原配置文件。移动用户数据等。

三、救援模式
作用:
当系统连单用户模式都无法进入或出现GRUB命令行也不能解决的引导问题的时候,我们就需要使用Linux救援模式来进行故障排除。
操作:
1.将Linux安装盘放入光驱,设置BIOS为光盘引导, 在”Boot“ 提示符后输入”linux rescue“ 回车进入救援模式
2.系统会检测硬件, 引导光盘上的Linux环境,一次提示选择救援模式下的使用语言,键盘设置以及网络设置等。
3.接下来系统将试图查找根分区。
默认在救援模式下,硬盘的根分区将挂在到光盘Linux 环境的/mnt/sysimage目录下, 默认选项continue 表示挂在权限为读写; Read-only 为只读,如果出现检测失败可以选择skip 跳过, 因为要对系统进行修复,一般选择continue进入下一步,系统提示执行”chroot /mnt/sysimage“ 命令,,可以将根目录挂在到我们硬盘系统的根目录中。
样例:
双系统启动修复:当我们安装双系统环境,先安装Linux再安装Windows ,或者已经安装好双系统环境的Windows损坏,在重新安装Windows后, 保存GRUB的MBR会被Windows系统的自举程序NTLDR 所覆盖,造成Linux系统无法引导。
1.恢复双系统引导,先进入救援模式,执行chroot 命令:  chroot /mnt/sysimage
2.将根目录切换到硬盘系统的根目录中,执行grub-install 命令重新安装GRUB:grub install /dev/hda   具体硬盘名称需调整
3.一次执行exit命令, 退出chroot模式以及救援模式。 执行两次exit命令
4.系统重启。

系统配置文件丢失修复:系统引导期间,很重要的一个过程就是init进程读取其配置文件/etc/inittab,启动系统基本服务程序以及默认运行级别的服务程序完成系统引导,如果inittab 误删除或者修改错误,Linux将无法正常启动。 此时只有救援模式可以解决。
1.有备份文件的恢复办法: 进入救援模式,执行chroot命令后, 直接拷贝备份文件,退出重启即可。如果是配置文件修改错误,可以直接修改恢复。  chroot /mnt/sysimage    ;cp /etc/inittab.bak /etc/inittab
2.没有备份文件的恢复办法: 重新安装软件包来恢复丢失文件。 chroot /mnt/sysimage ; rpm -qf /etc/inittab ;退出chroot模式 exit;  覆盖安装inittab 文件所在的RPM包, rpm -ivh --replacepkgs --root /mnt/sysimage /mnt/source/Fodora/RPMS/initscripts-8.45.3-1.i386.rpm。
如果只是提取inittab文件的话,进入救援模式后执行:rpm2cpio /mnt/source/Fedora/RPMS/initscripts-8.45.3-1.i386.rpm | cpio -idv ./etc/inittab; cp etc/inittab /mnt/sysimage/etc。此命令执行时不能讲文件直接恢复至/etc目录, 只能提取到当前目录下, 且恢复的文件所在路径要是绝对路径, 提取成功后, 将文件复制到/mnt/sysimage 目录下的对应目录即可。

参考:
无法挂载根分区                         救援模式
无法使用的内核                         救援模式,引导光盘
无法使用的引导装载程序                  救援模式,引导光盘
错误指定的根分区(内核挂载)             grub编辑(指定正确的分区)
rc.sysinit使用的设置错误的配置文件       gurb附加  emergency (或者init=/bin/sh)
错误指定的根分区(rc.sysinit重新挂载)   gurb附加  emergency (或者init=/bin/sh)
服务脚本设置错误的配置文件               grub附加(1 或者 s)
错误配置的认证(或者根口令丢失)          grub附加(1 或者 s)
虚拟机中:


1.关机 - 右键电源 - 启动时进入BIOS - Boot - +/- 号移动CD-ROM Driver 至首位 - F10 保存启动 - Rescue installed system - 选择语言 English - network start  yes -  continue  读写 -  /mnt/sysimage  -  shell start shell -   bash-4.1# -  chroot /mnt/sysimage - sh-4.1# -  修复操作  -  exit chroot - reboot

以上信息均从网络上摘抄, 如有错误,请帮忙指出...







2015-03-20 20:47 举报
已邀请:
0

sundan

赞同来自:

第三讲
一、ls 命令
作用:用来显示目录列表。
语法: ls  (选项) (参数)
选项:
-a: 显示所有档案以及目录(ls内定将档案或目录名称为“./..”的视为隐藏)
-A: 显示除隐藏文件“./..”以外的所有文件列表
-b: 将文件中的不可输出的字符以反斜线加字符编码的方式输出

-c : 与”-lt“ 选项连用时,按照文件状态时间排序输出目录内容, 排序的依据是文件的索引节点中的ctime 字段。 与”-l“连用时,排序的依据是文件的状态改变时间。
-C: 多列显示输出结果(只有文件名信息)
-d : 仅显示目录名,而不显示目录下的内容列表, 显示符号链接文件本身, 而不显示其指定的目录列表。
-F:  在每个输出项后最佳文件的类型标识符, * 可执行权限的普通文件,/ 表示目录, @ 表示符号链接,|表示命令管道, = 表示sockets 套接字,  普通文件不输出标识符。
-h: 以human易读格式显示, 文件大小以kb,mb显示
-i :  显示文件索引节点号(inode),一个索引节点代表一个文件
-l : 以长格式显示目录下的内容列表,输出信息:文件名,文件类型,权限模式,硬链接数,所有者,组,文件大小, 文件最后修改时间。
-L : 如果遇到性质为符号链接的文件或目录, 直接列出该链接所造的原始文件或目录
-m: 以逗号分隔每个文件和目录的名称
-n : 以用户标志码和群组识别码替代其名称uid /gid
-r : 以文件名反序排序并输出目录内容列表
-R:递归处理,将制定目录下的所有文件及子目录一并处理
-s : 显示文件和目录的大小, 以区块为单位
-t : 用文件和目录的更改时间排序
参数:
目录:制定要显示列表的文件,也可以是具体的目录
实例:
ls -lX/ -l --sort=extension":扩展名排序
ls -lhS" ,文件从大到小排序
ls -l --si : si以1000为单位,而-h以1024为单位。
ls -l --block-size=M: 设置文件显示单位

二、alias 命令
作用:
设置命令别名,可以将较长的命令进行简化,使用alias 时,用户必须使用单引号将原来的命令引起来,防止特殊字符导致错误。
如要永久生效则将alias 命令存放到bash 的初始化文件 /etc/bashrc中。
语法:

alias (选项)(参数)

选项:

-p: 打印已经设置的目录别名
参数:

命令别名 = 实际命令
实例:
alias 新命令= '原命令 -选项/ 参数'
alias l  ='ls -lsh'
删除别名: unalias 别名
查看系统设置的别名:   键入 alias

三、目录结构

目录:
/ 根目录
/bin      存放必要的命令
/sbin     存放系统管理程序

/boot   存放内核以及启动所需的文件等
/dev     存放设备文件

/etc      存放系统的配置文件
/home  用户文件的主目录,用户数据存放在其主目录中
/lib        存放必要的运行库
/mnt     存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下。
/proc     存放存储进程和系统信息
/root     超级用户的主目录
/tmp     存放临时文件的目录
/usr       包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。
/var       包含系统产生的经常变化的文件,例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及 一些应用程序的数据文件等等。建议单独的放在一个分区。
http://yangrong.blog.51cto.com/6945369/1288072
http://www.cnblogs.com/LinuxSuDa/p/4252560.html
四、ldd 命令
作用:
打印程序或者库文件所依赖的共享库列表
语法:
ldd (选项)(参数)
选项:
-v:详细信息模式,打印所有相关信息
-u:打印未使用的直接依赖
-d:执行重定位和报告任何丢失的对象
-r:执行数据对象和函数的重定位,而且报告任何丢失的对象和函数
参数:
文件: 指定可执行程序或文库
其他:
ldd 不是一个可执行程序,而是一个shell脚本,ldd 能够显示可执行模块的依赖管理的模块,其原理是通过设置一系列的环境变量(LD_TRACE_LOADED_OBJECTS,LD_WARN,LD_BIND_NOW,LD_LIBRARY_VERSION,LD_VERBOSE),当环境变量不为空时, 任何可执行程序在运行时,它都只显示依赖模块, 程序并不执行。  本质是通过ld-linux.so (elf动态库的装载器)来实现的, ld-linux.so 会先于executable 模块程序工作, 并获得控制权, 因此当环境变量被设置时, ld-linux.so选择了可执行模块的依赖模块。
五、cd 命令
作用:
cd 用来切换目录,目录表示法可为绝对路径或相对路径, 若目录名称省略,则变换至使用者的登陆目录。 ~ 可表示为家目录,.为当前目录,..为上级目录
语法:
cd (选项)(参数)
选项:
-p: 如果要切换到的目标目录是一个符号链接,直接切换到符号链接所指定的目标目录
-L: 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
实例:
cd    : 进入用户主目录
cd ~: 进入用户主目录
cd - : 返回上次进入的目录
cd .. : 返回上级目录
cd ../../: 返回上两级目录
六、pwd 命令
作用:
以绝对路径的方式显示用户当前工作目录, 命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用‘/’分隔,第一个‘/’表示根目录,最后一个目录是当前目录。执行pwd 命令可立刻知道您目前所在的工作目录的绝对路径名称。

七、环境变量
查看:
单个环境变量:echo $PATH
所有环境变量:env
本地定义变量:set
删除:
unset
常见变量:
PATH: 决定了shell 将到那些目录中寻找命令或程序
HOME:当前用户主目录
HISTSIZE:历史记录数
LOGNAME:当前用户登录名
HOSTNAME:主机名称
SHELL: 当前用户shell 类型
LANGUGE: 语言相关的环境变量
MAIL:当前用户的邮件存放目录
PS1:基本提示符,对root是# ,普通用户是$
永久修改:
1. /etc/profile: 对所有用户生效;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile/目录的配置文件中搜集shell 的设置
vi /etc/profile
export CLASS_PATH = /.JAVA_HOME/lib;$JAVA_HOME/jre/lib
重新登录或者 source /etc/profile 生效
2. /etc/bashrc:对所哟用户生效; 为每一个运行bash shell 的用户执行此文件 ,当bash shell 被打开时,该文件被读取。设置方法同上。
3.~/.bash_profile: 仅对当前用户生效,每个用户都可以使用该文件输入专用于自己使用的shell信息, 当用户登陆时,该文件仅仅执行一次。 设置方法同上
4.~/.bashrc:仅对当前用户有效; 该文件包含专用于bash shell 的bash 信息,当登录时以及每次打开新的shell时,该文件被读取,另~/.bashrc等中设定的变量只能继承/etc/profile 中的变量, 他们是继承父子关系。
临时修改:
1.使用export命令声明即可,变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,在关闭shell后失效,再打开新的shell时就没有这个变量, 需要使用的话还需要重新定义。
export 变量名= 变量值  
八、快捷键
Ctrl+c  取消命令
Ctrl+z 暂停命令
Ctrl+a 光标到行首
Ctrl+e 光标到行尾
Ctrl+u 删除光标前所有字符
Ctrl+k 删除光标后所有字符
Ctrl+l 清屏
Ctrl+d 退出登录 == exit
Ctrl+s 锁住命令终端,按任何键都不会有反应
Ctrl+q 解锁命令终端




0

sundan

赞同来自:

第四讲
一.帮助+基本文件管理+用户管理
  1.怎么查看命令帮助
    ls --help
    man ls :查看命令/man 5 file:查看配置文件

二.基本文件管理,通过{查,建,删,改} 四个维度介绍了不同的命令
*查:
  ls : 查看文件等信息
    /cat: 查看文件只显示最后一页、
    /cat > filename:创建新文件
    /cat file1 file2 > file:合并文件
    / -A : 全文显示
    / -b :对非空输出行编号
    / -n: 全文显示并编行号
  tac: 文件最后一页并使文件内容前后颠倒
  more:分屏显示,按空格翻页,无法前翻
    /(Ctrl+B 返回上一屏/Ctrl+F(空格): 向下滚动一屏) /
    / +/string 搜寻该字串,前两行之后开始显示 /
    / ls -l | more -5: 分页显示文件,每页5条
  less:可上下滚动查看文件内容(空格翻页,上下箭头换行,PgUp/PgDn:翻已存在的页面)
    /ps -ef |less: 分页显示进程
    /ctrl + F - 向前移动一屏
    /ctrl + B - 向后移动一屏
    /ctrl + D - 向前移动半屏
    /ctrl + U - 向后移动半屏
  head:默认查看文件前10行
    /head -n 5 file: 显示file前5 行的数据
  tail:默认查看文件后10行
    /tail -n 5 file: 显示file后5行的数据
  rev:使文件左右颠倒

*建       
  mkdir:创建一个目录       
    /mkdir a b c :创建同级目录
    /mkdir -p aa/bb/cc: 递归创建目录
  touch:修改文件时间戳,或者新建一个不存在的文件
    /-a 更改存取时间
    /m 更改变动时间
    /-t 使用指定的日期时间
*删
  cp:复制文件
    /cp -r:复制目录
    /bin/cp -f: 复制文件并覆盖已有文件(写命令的绝对路径/bin/)
    /cp /ect/passwd .:将其他文件复制到当前目录
    /-n :不要覆盖已存在的文件
    /-f: force如果目标文件无法打开则将其移除并重试       
    /-i: 覆盖前询问
    /-R/r:复制目录及目录内的所有项目
  mv:移动文件
    /-b :若需覆盖文件,则覆盖前先行备份。
    /-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
    /-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
    /-t : 选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后
    /-u :若目标文件已经存在,且 source 比较新,才会更新(update)       
    /mv * ../:移动当前文件夹下的所有文件到上一级目录
  rm:删除文件
    /-f, --force 忽略不存在的文件,从不给出提示。
    /-i, --interactive 进行交互式删除
    /-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
    /-v, --verbose 详细显示进行的步骤
    --help 显示此帮助信息并退出
    --version 输出版本信息并退出、
  rmdir:删除目录
    /-p :当子目录被删除后使它也成为空目录的话,则顺便一并删除
    /-v, --verbose 显示指令执行过程
*改
   vim :修改文件
  模式: 默认进来是一般模式、i 编辑模式、esc 退出编辑 、shift+: 底行模式
  参数: w: write/q:quit/! force
  编辑模式:
    /a:光标之后插入内容
    /A:光标最后插入内容
    /o:当前光标下新行插入内容
    /O:当前光标上新行插入内容
    /x:向后删除
    /X:向前删除
    /u:撤销当前操作
    /U:撤销所有操作
    /shift+D :删除光标之后的字符

  一般模式:       
    /^:跳到行首
    /$:跳到行尾
    /ndd:删除n行,从光标起
    /nyy:复制n行
    /p :粘贴
    /gg:文件首行
    /G :文件尾行
    /g :全局替换 1,$s/root/ROOT/g 1,$s#root#ROOT#g
    /1, $s#\/#\\/#g: 脱意:\,去掉特殊符号的意思
    /: 查找字符, n: 查找下一个 N:查找上一个
    /dw:删除词语
  底行模式:
    set number: 显示行号
    set nonu: 不显示行号
    r file: 合并文件
三.inode 详解
1.inode 解析:
存储文件元信息(文件创建者,创建日期,大小等)的区域叫做inode即 索引节点。
2.inode 内容:
文件字节数、拥有者UserID,GroupID,读写执行权限,时间戳,链接数,block位置
3.inode 大小
inode 也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成连个区域, 一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。每个inode节点的大小,一般是128 字节或256字节。inode节点的总数,在格式化时就给定,一般是每1kb 或2kb 就设置一个inode, 假定在一块1GB的硬盘中,每个inode节点的大小为128字节, 每1KB就设置一个inode,那么inode table 的大小就会达到128MB, 占整个硬盘的12.8%

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df 命令;
df -i
查看每个inode节点的大小,可以用如下命令
sudo dumpe2fs -h /dev/hda |grep "Inode size"
(由于每个文件都必须有一个inode,因此有可能发生inode 已经用光,但是应胖还未存满的情况, 这时,就无法再硬盘上创建为新文件。)
4.inode号码
每个inode 都有一个号码,操作系统用inode号码来识别不同的文件。
Unix、Linux系统内部都不使用文件名,而通过inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的名称或绰号。 表面上,用户通过文件名打开文件。实际上,系统内部这个过程分为三步:首先,系统找到这个文件名对应的inode号码, 其次,通过inode号码,获取inode信息, 最后,根据inode信息,找到文件数据所在的block,读取数据。
5.目录文件
Unlx/Linux 系统中,目录也是一种文件。打开目录,就是打开目录文件。
目录文件的结构非常简单,就是一系列目录项的列表,每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码
6.硬链接
一般情况下,文件名和inode号码是一一对应的关系,每个inode号码对应一个文件名。 但是,Unix、Linux 系统允许对个文件名指向同一个inode号码,这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是删除一个文件名,不影响另一个文件名的访问。这种情况被称为“硬链接”
任何一个目录的‘硬链接’总数总是等于2加上它的子目录总数。
7.软链接
文件A和文件B的inode号码不同,但是文件A的内容是文件B的路径,读取文件A时,系统工会自动将访问者导向文件B,因此,无论打开哪一个文件,最后读取的都是文件B,这时,文件A就称为文件B的软链接 或者符号链接。
这意味着,文件A依赖文件B存在,如果删除文件B,打开文件A报错,没有相关文件或目录。 这时软硬链接的区别, 文件A指向文件B的文件名,而不是文件B的inode号码。 文件B的inode 链接数不会发生改变。
8.inode 的特殊作用
*有时文件名包含特殊字符,无法正常删除,这时,删除inode节点,就能祈祷删除文件的作用。
*移动文件或重命名文件,只是改变文件名,不改变inode号码
*打开文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。 因此,一般系统无法从inode号码得知文件名。
9. 实际问题
在一台配置较低的Linux服务器(内存,硬盘比较小)的/data 分区内创建文件时,系统提示磁盘空间不足,用df -h 命令查看一下磁盘使用情况, 发现/data 分区只使用66% , 还有12G的剩余空间。  之后df -i查看 /data 分区的索引节点,发现已经用满了。导致系统无法创建新目录和文件。
查找原因: /data/cache 目录中存在数量非常多的小字节缓存文件, 占用的blcok不多, 但是占用了大量的inode空间。
解决方案: 1.删除/data/cache 目录中的部分文件,释放/data分区的一部分inode
           2.用软链接将空闲分区/opt 中的newcache 目录链接到/data/cache ,使用/opt分区的inode来缓解 /data 分区inode不足的问题
ln -s /opt/newcache /data/cache
四、特殊权限
 1.SUID :         Set User ID (find / -perm -04000 -type f -ls查找设置SUID的程序)
    作用:临时赋予用户二进制文档的拥有者的权限(主要用于让普通用户可以使用某些特殊命令)
    语法1:chmod u+s file(增加s权限)
    语法2:chmod u-s file(减去s权限)
    使用限制与环境:
      1、仅对于二进制文件有效;
      2、执行者必须对文件拥有x权限(否则即使设置了SUID,由于你对文件根本无法执行SUID此时也无效,此时权限位显示S);
      3、权限只是在执行过程中拥有。
      4、执行者必须对文件拥有x权限(否则即使设置了SUID,由于你对文件根本无法执行SUID此时也无效,此时权限位显示S);
      PS:例如passwd命令,路径/usr/bin/passwd,权限为"-rwsr-xr-x"。(passwd命令会修改"/etc/shadow")
      PS:SUID只可用于二进制文件,不可用于shell script文件。
2.SGID : Set Group ID:继承上一级目录的所属组权限
  对于文件
    作用:临时赋予用户二进制文档的拥有组的权限(多用于让普通用户可以使用某些特殊命令,和suid类似)
    语法1:chmod g+s file(增加s权限)
    语法2:chmod g-s file(减去s权限)
    使用限制与环境:
      1、仅对于二进制文件有效;
      2、执行者必须对文件拥有x权限(否则根本无法执行文件,更别谈SGID赋予权限,此时权限位显示S);
      3、权限只是在执行过程中拥有。     
      4、执行者必须对文件拥有x权限(否则根本无法执行文件,更别谈SGID赋予权限,此时权限位显示S);
      PS:例如locate命令,路径/usr/bin/locate,权限为"rwx--s--x"。
      ( locate命令会读取"/var/lib/mlocate/mlocate.db")
  对于目录
    作用:临时将用户的effective group修改成该目录的的群组
    语法1:chmod g+s dir(增加s权限)
    语法2:chmod g-s dir(减去s权限)
    使用限制与环境:      
    1、文件的所属组是用户的主组,如果在设置了SGID目录下建立文件,则文件的所属组是继承目录的属组,并且新建立的目录也继承g+s权限
    2、若用户对此目录拥有w权限,由于effective group被修改成该目录的group,所以用户在此目录下创建任何文件,属组该目录的用户组。
    3、在group位的x显示为S或s,s代表包含了x权限,S代表未包含x权、
    4、使用者必须对该目录拥有x权限(否则无法进入,更别谈SUID赋予权限,此时权限位显示S);
3.SBIT Sticky Bit, 只对目录有效,对文件无效,防止删除其他用户的资料
  作用:限制目录下不同用户之间对于其他用户文档或目录的编辑权限。
  语法1:chmod o+t dir(增加t权限)
  语法2:chmod o-t dir(减去t权限)
  使用限制与环境
    1、只能针对目录;
    2、必须有x和w权限(否则无法进入和编辑,更不用谈sbit权限,此时权限位显示T);
    3、用户自身创建的文档和目录,只有自己和root可以编辑(重命名、修改内容、复制、删除等)
     4、必须有x和w权限(否则无法进入和编辑,更不用谈sbit权限,此时权限位显示T);
赋予权限
chmod 4777 //是设sid
chmod 2777 //是设置gid
chmod 1777 //是设sticky-- t 该位可以理解为防删除位. 一个文件是否可以被>某用户删除,主要取决于
        该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不
        能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则
        可以对文件使用sticky bit位
0: 不设置特殊权限
1: 只设置sticky
2 : 只设置SGID
3: 只设置SGID和sticky
4 : 只设置SUID
5 : 只设置SUID和sticky
6 : 只设置SUID和SGID
7 : 设置3种权限


4.chmod
  作用:修改文件权限(= 赋值不管存在与否, + 增加权限)
  语法1:chmod u=rwx,g=r--,o=r--(ugo=r) filename
  语法2:chmod 744 filename
  语法3:chmod u+x filename

  chmod go+x install.log
  chmod go=rw
5.chown
  作用:修改文件属主、属组
  语法:chown user:group filename
  PS:还可以单独修改属主或属组,命令语法为chown user filename和chown :group filename
6.umask 参考:http://blog.itpub.net/7318139/viewspace-920215/
  作用:通过设置umask值,来控制新建目录文件及普通文件的初始权限(指定在建立文件时预设的权限掩码)
  语法:umask=022(可自定义)
  原理:目录文件的默认完整权限是777(rwxrwxrwx),减掉umask的022(----w--w-),所以新建目录文件权限为(rwxr-xr-x)755;
  普通文件的默认完整权限是666(rw-rw-rw-),减掉umask的022(----w--w-),所以新建目录文件权限为(rw-r--r--)644。
  (对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,  这样针对目录来 说,umask中各个数字最大可以到7)
  一个文件是否可以被删除取决于上级目录权限
7.rwx
其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是1,表示有相应的权限,如果是0则没有相应权限
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于三组rwx位
11 10 9 8 7 6 5 4 3 2 1 0
S G T r w x r w x r w x
第9位表示文件类型,可以为p、d、l、s、c、b和-:
p表示命名管道文件 -pipe
d表示目录文件        -directory
l表示符号连接文件 -link
-表示普通文件 -
s表示socket文件 -socket
c表示字符设备文件 -Character device
b表示块设备文件 -block
第8-6位、5-3位、2-0位分别表示文件所有者的权限,同组用户的权限,其他用户的权限,其形式为rwx:
(以上的其他用户,不包括root这个super user。)
r表示可读,可以读出文件的内容 --数字4表示
w表示可写,可以修改文件的内容 --数字2表示
x表示可执行,可运行这个程序 --数字1表示
没有权限的位置用-表示

五、查询文件等
1.输入输出重定向
  ls -l /dev/stdin -> /proc/self/fd/0
  标准输入 设备:键盘 标记:0
  ls -l /dev/stdout -> /proc/self/fd/1
  标准输出 设备:屏幕 标记:1
  ls -l /dev/stderr -> /proc/self/fd/2
  错误输出 设备:屏幕 标记:2

  ls /etc/passwd /etc/passwd1 1>1.log 2>2.log
  将正确输出1 写入1.log ,将错误输出写入2.log
  ls /etc/passwd /etc/passwd1 &>all.log
  将正确输出和错误输出一同写入all.log
  ls /etc/passwd /etc/passwd1 1>lei.log 2>&1
  将正确输出和错误输出一同写入lei.log
  ls /etc/passwd /etc/passwd1 /dev/null 2>&1
  系统的黑洞:不占用磁盘空间
  dd if=/dev/zero of=aaa.log bs=1 count=1M
  零发射器,将1M数据写入文件

  echo "aaa" > aaa.log
  将字符写入文件
  echo "bbb" >>aaa.log
  将字符追加写入文件

  cat < aaa.log
  将文件的内容作为cat 的输入

| 管道妙用
  将上一个命令的标准输出,传递给下一个命令做标准输入
  cat /etc/passwd | head -n 3 | cut -d: -f 1,3,7 |sort -rt: -k 2 |tr [a-z] [A-Z]

--通配符
  *:匹配任意长度的任意字符
  ?:匹配任意一个字符
  []:任意属于字符组的字符
  {}:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件
  >>:附加到指定文件的结尾
  >:输出重定向
  <:输入重定向
  |:管道符,用于连接多个命令,前一个命令的输出作为后一个命令的输入
  ||:逻辑或
  &&:逻辑与
  &:在后台执行


2.wc: Word Count
作用:计算文件的单词数,行数,字符数,并将统计结果显示输出
参数:-c 统计字节数。
  -l 统计行数。
  -m 统计字符数。这个标志不能与 -c 标志一起使用。
  -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
  -L 打印最长行的长度。
  -help 显示帮助信息
  --version 显示版本信息
语法:wc fileNM
  7 8 70 test.txt
  行数 单词数 字节数 文件名

3.grep :http://www.cnblogs.com/peida/a ... .html
作用:用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活
参数:-a --text #不要忽略二进制的数据。
  -c --count #计算符合样式的列数。
  -i --ignore-case #忽略字符大小写的差别。
  -v --revert-match #显示不包含匹配文本的所有行。
  -n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。

规则表达式:^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
  $ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
  . #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
  * #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
  .* #一起用代表任意字符。
  [] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
  [^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
  \(..\) #标记匹配字符,如'\(love\)',love被标记为1。
  \< #锚定单词的开始,如:'\   \> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
  x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
  x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
  x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
  \w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
  \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
  \b #单词锁定符,如: '\bgrep\b'只匹配grep。
语法: grep '^string' file
  grep 'string$' file
  grep -c 'string' file


4. tr
作用:标准输入中通过替换或删除操作进行字符转换
语法:tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
参数:-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
  -d 删除字符串1中所有输入字符。
  -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
  input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
字符范围:指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
  [a-z] a-z内的字符组成的字符串。
  [A-Z] A-Z内的字符组成的字符串。
  [0-9] 数字串。
  \octal 一个三位的八进制数,对应有效的ASCII字符。
  [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
 tr中特定控制字符的不同表达方式
  速记符含义八进制方式
  \a Ctrl-G 铃声\007
  \b Ctrl-H 退格符\010
  \f Ctrl-L 走行换页\014
  \n Ctrl-J 新行\012
  \r Ctrl-M 回车\015
  \t Ctrl-I tab键\011
  \v Ctrl-X \030
 语法:cat file | tr "abc" "xyz" > new_file
  将文件中的abc 替换为 xyz
  cat file | tr -d "Snail" > new_file
  凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串
  cat file | tr -d "\n\t" > new_file
  删除文件file中出现的换行'\n'、制表'\t'字符
  cat file | tr -d "\n\t" > new_file
  删除文件file中出现的换行'\n'、制表'\t'字符
  cat file | tr -s [a-zA-Z] > new_file
  删除“连续着的”重复字母,只保留第一个
  cat file | tr -s "\n" > new_file
  删除空行
5.sort
作用:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序       
参数: -b 忽略每行前面开始出的空格字符。
  -c 检查文件是否已经按照顺序排序。
  -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  -f 排序时,将小写字母视为大写字母。
  -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  -k 选择以哪个区间进行排序。
  -m 将几个排序好的文件进行合并。
  -M 将前面3个字母依照月份的缩写进行排序。
  -n 依照数值的大小排序。
  -o<输出文件> 将排序后的结果存入指定的文件。
  -r 以相反的顺序来排序。
  -t<分隔字符> 指定排序时所用的栏位分隔字符。
  -u 去除重复行

  +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
语法:sort -n -t 'ch' -k num file
  ch 字符的第num 段按照数值排序

6.cut
 作用:按列提取文件
 参数: -d 指明列分隔符 -f 选择输出的区域 -c 指定字符位置
  -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  -c :以字符为单位进行分割。
  -d :自定义分隔符,默认为制表符。
  -f :与-d一起使用,指定显示哪个区域。
  -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除
 语法: cut -b 8,3-5
  3-5,8:cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦
  cut -b -3
  -3表示从第一个字节到第三个字节
  cut -b 3-
  3-表示从第三个字节到行尾
  cut -b -3,3-
  输出整行,不会出现连续两个重叠的
  cut -c
  -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码. 当遇到多字节字符时,可以使用-n选项,
  cut -d : -f 1,3-5
  提取按照:分割的第一列,第三列到第五列
  sed -n l file
  空格到底是由若干个空格组成的还是由一个制表符组成,-n 后L的小写字母

7.which
  作用:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
  参数:-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
     -p  与-n参数相同,但此处的包括了文件的路径。
     -w  指定输出时栏位的宽度。
       -V  显示版本信息       

  语法: which 命令       

8.whereis
  作用:whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
  参数:-b 定位可执行文件。
      -m 定位帮助文件。
     -s 定位源代码文件。
      -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
      -B 指定搜索可执行文件的路径。
      -M 指定搜索帮助文件的路径。
      -S 指定搜索源代码文件的路径。
9.locate :http://www.cnblogs.com/peida/a ... .html
  作用:locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,是最近才建立或刚更名的数据,可能会找不到,执行updatedb则会更新数据库。
  参数:-e 将排除在寻找的范围之外。
    -1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到        的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的        权限资料。     实际搜寻硬盘查询文件名称
    -f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案        放在资料库中。
    -q 安静模式,不会显示任何错误讯息。
    -n 至多显示 n个输出。
    -r 使用正规运算式 做寻找的条件。
    -o 指定资料库存的名称。
    -d 指定资料库的路径
    -h 显示辅助讯息
    -V 显示程式的版本讯息


10.find
  作用:用于在文件树种查找文件,并作出相应的处理 (硬盘)
  格式:find pathname -options [-print -exec -ok ...]
  格式参数:pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
    -print: find命令将匹配的文件输出到标准输出。
    -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
    -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
  命令选项:-name 按照文件名查找文件。
    -perm 按照文件权限来查找文件。
    -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
    -user 按照文件属主来查找文件。
    -group 按照文件所属的组来查找文件。
    -mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,
    -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
    -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
    -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
    -type 查找某一类型的文件,诸如:
      b - 块设备文件。
      d - 目录。
      c - 字符设备文件。
      p - 管道文件。
      l - 符号链接文件。
      f - 普通文件。
    -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
    -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
    -mount:在查找文件时不跨越文件系统mount点。
    -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
    -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
    另外,下面三个的区别:
    -amin n 查找系统中最后N分钟访问的文件
    -atime n 查找系统中最后n*24小时访问的文件
    -cmin n 查找系统中最后N分钟被改变文件状态的文件
    -ctime n 查找系统中最后n*24小时被改变文件状态的文件
    -mmin n 查找系统中最后N分钟被改变文件数据的文件
    -mtime n 查找系统中最后n*24小时被改变文件数据的文件
  语法   :find -atime -2 :查找指定时间内修改过的文件
      find -name "*.log" :根据关键字查找
      find /opt/soft/test/ -perm 777:按照目录或文件的权限来查找文件
      find -type f -name "*.log":按类型查找
      find -type d | sort:查找当前所有目录并排序
      find -size +1M -print:按大小查找文件并输出
      find -name "*.log" |xargs rm -rf: 删除查找文件
      find -name "*.log" -exec ls -l {}; 以长格式显示查找文件
      find -name "*.log" -exec rm -f {}; 删除查找文件
      find -name "*.log" -ok rm -f {}; 交互删除文件

六、ln 命令
  作用:它的功能是为某一个文件在另外一个位置建立一个同步的链接
  参数:必要参数:
    -b 删除,覆盖以前建立的链接
    -d 允许超级用户制作目录的硬链接
    -f 强制执行
    -i 交互模式,文件存在则提示用户是否覆盖
    -n 把符号链接视为一般目录
    -s 软链接(符号链接)
    -v 显示详细的处理过程
  选择参数:
    -S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
    -V “-V<备份方式>”或“--version-control=<备份方式>”
    辨析:


硬链接和软连接
  硬链接:ln file1 file2 : 文件内容一致,inode一致,同时引用了一个inode编号
  软连接:ln -s file1 file2 : 文件内容一致,inode不一致,记录的是原始文件的路径名称
  创建连接:         硬链接不产生新的inode, 软连接生成新inode
  删除源文件: 硬链接无影响, 软连接同时删除。
  修改源文件: 连接文件同时修改 。
  创建目录:         硬链接无法指向目录, 软连接可以指向目录。
  分区创建: 硬链接无法跨分区设备连接,软连接可以跨分区设备连接。

  功能区别:Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个    档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文    件系统。
  软链接:
    1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
    2.软链接可以 跨文件系统 ,硬链接不可以
    3.软链接可以对一个不存在的文件名进行链接
    4.软链接可以对目录进行链接
  硬链接:
    1.硬链接,以文件副本的形式存在。但不占用实际空间。
    2.不允许给目录创建硬链接
    3.硬链接只有在同一个文件系统中才能创建

  注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
  第二,ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文 件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
     ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。





0

定海偶然

赞同来自:

好顶赞~~~
0

sundan

赞同来自:

cut
 作用:按列提取文件
 参数: -d 指明列分隔符 -f 选择输出的区域 -c 指定字符位置
  -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  -c :以字符为单位进行分割。
  -d :自定义分隔符,默认为制表符。
  -f :与-d一起使用,指定显示哪个区域。
  -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除
 语法: cut -b 8,3-5
  3-5,8:cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦
  cut -b -3
  -3表示从第一个字节到第三个字节
  cut -b 3-
  3-表示从第三个字节到行尾
  cut -b -3,3-
  输出整行,不会出现连续两个重叠的
  cut -c
  -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码. 当遇到多字节字符时,可以使用-n选项,
cut -d : -f 1,3-5
  提取按照:分割的第一列,第三列到第五列
  sed -n l file
  空格到底是由若干个空格组成的还是由一个制表符组成,-n 后L的小写字母
0

sundan

赞同来自:

find
  作用:用于在文件树种查找文件,并作出相应的处理 (硬盘)
  格式:find pathname -options [-print -exec -ok ...]
  格式参数:pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
    -print: find命令将匹配的文件输出到标准输出。
    -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
    -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
  命令选项:-name 按照文件名查找文件。
    -perm 按照文件权限来查找文件。
    -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
    -user 按照文件属主来查找文件。
    -group 按照文件所属的组来查找文件。
    -mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,
    -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
    -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
    -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
    -type 查找某一类型的文件,诸如:
      b - 块设备文件。
      d - 目录。
      c - 字符设备文件。
      p - 管道文件。
      l - 符号链接文件。
      f - 普通文件。
    -size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
    -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
    -mount:在查找文件时不跨越文件系统mount点。
    -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
    -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
    另外,下面三个的区别:
    -amin n 查找系统中最后N分钟访问的文件
    -atime n 查找系统中最后n*24小时访问的文件
    -cmin n 查找系统中最后N分钟被改变文件状态的文件
    -ctime n 查找系统中最后n*24小时被改变文件状态的文件
    -mmin n 查找系统中最后N分钟被改变文件数据的文件
    -mtime n 查找系统中最后n*24小时被改变文件数据的文件
  语法   :find -atime -2 :查找指定时间内修改过的文件
      find -name "*.log" :根据关键字查找
      find /opt/soft/test/ -perm 777:按照目录或文件的权限来查找文件
      find -type f -name "*.log":按类型查找
      find -type d | sort:查找当前所有目录并排序
      find -size +1M -print:按大小查找文件并输出
      find -name "*.log" |xargs rm -rf: 删除查找文件
      find -name "*.log" -exec ls -l {}; 以长格式显示查找文件
      find -name "*.log" -exec rm -f {}; 删除查找文件
      find -name "*.log" -ok rm -f {}; 交互删除文件
0

sundan

赞同来自:

grep :http://www.cnblogs.com/peida/a ... .html
作用:用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活
参数:-a --text #不要忽略二进制的数据。
  -c --count #计算符合样式的列数。
  -i --ignore-case #忽略字符大小写的差别。
  -v --revert-match #显示不包含匹配文本的所有行。
  -n --line-number #在显示符合样式的那一行之前,标示出该行的列数编号。

规则表达式:^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
  $ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
  . #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
  * #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
  .* #一起用代表任意字符。
  [] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
  [^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
  \(..\) #标记匹配字符,如'\(love\)',love被标记为1。
  \< #锚定单词的开始,如:'\   \> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
  x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
  x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
  x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
  \w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
  \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
  \b #单词锁定符,如: '\bgrep\b'只匹配grep。
语法: grep '^string' file
  grep 'string$' file
  grep -c 'string' file
0

sundan

赞同来自:

1.inode 解析:
存储文件元信息(文件创建者,创建日期,大小等)的区域叫做inode即 索引节点。
2.inode 内容:
文件字节数、拥有者UserID,GroupID,读写执行权限,时间戳,链接数,block位置
3.inode 大小
inode 也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成连个区域, 一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。每个inode节点的大小,一般是128 字节或256字节。inode节点的总数,在格式化时就给定,一般是每1kb 或2kb 就设置一个inode, 假定在一块1GB的硬盘中,每个inode节点的大小为128字节, 每1KB就设置一个inode,那么inode table 的大小就会达到128MB, 占整个硬盘的12.8%
查看每个硬盘分区的inode总数和已经使用的数量,可以使用df 命令;
df -i
查看每个inode节点的大小,可以用如下命令
sudo dumpe2fs -h /dev/hda |grep "Inode size"
(由于每个文件都必须有一个inode,因此有可能发生inode 已经用光,但是应胖还未存满的情况, 这时,就无法再硬盘上创建为新文件。)
4.inode号码
每个inode 都有一个号码,操作系统用inode号码来识别不同的文件。
Unix、Linux系统内部都不使用文件名,而通过inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的名称或绰号。 表面上,用户通过文件名打开文件。实际上,系统内部这个过程分为三步:首先,系统找到这个文件名对应的inode号码, 其次,通过inode号码,获取inode信息, 最后,根据inode信息,找到文件数据所在的block,读取数据。
5.目录文件
Unlx/Linux 系统中,目录也是一种文件。打开目录,就是打开目录文件。
目录文件的结构非常简单,就是一系列目录项的列表,每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码
6.硬链接
一般情况下,文件名和inode号码是一一对应的关系,每个inode号码对应一个文件名。 但是,Unix、Linux 系统允许对个文件名指向同一个inode号码,这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是删除一个文件名,不影响另一个文件名的访问。这种情况被称为“硬链接”
任何一个目录的‘硬链接’总数总是等于2加上它的子目录总数。
7.软链接
文件A和文件B的inode号码不同,但是文件A的内容是文件B的路径,读取文件A时,系统工会自动将访问者导向文件B,因此,无论打开哪一个文件,最后读取的都是文件B,这时,文件A就称为文件B的软链接 或者符号链接。
这意味着,文件A依赖文件B存在,如果删除文件B,打开文件A报错,没有相关文件或目录。 这时软硬链接的区别, 文件A指向文件B的文件名,而不是文件B的inode号码。 文件B的inode 链接数不会发生改变。
8.inode 的特殊作用
*有时文件名包含特殊字符,无法正常删除,这时,删除inode节点,就能祈祷删除文件的作用。
*移动文件或重命名文件,只是改变文件名,不改变inode号码
*打开文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。 因此,一般系统无法从inode号码得知文件名。
9. 实际问题
在一台配置较低的Linux服务器(内存,硬盘比较小)的/data 分区内创建文件时,系统提示磁盘空间不足,用df -h 命令查看一下磁盘使用情况, 发现/data 分区只使用66% , 还有12G的剩余空间。  之后df -i查看 /data 分区的索引节点,发现已经用满了。导致系统无法创建新目录和文件。
查找原因: /data/cache 目录中存在数量非常多的小字节缓存文件, 占用的blcok不多, 但是占用了大量的inode空间。
解决方案: 1.删除/data/cache 目录中的部分文件,释放/data分区的一部分inode
           2.用软链接将空闲分区/opt 中的newcache 目录链接到/data/cache ,使用/opt分区的inode来缓解 /data 分区inode不足的问题
ln -s /opt/newcache /data/cache
0

sundan

赞同来自:

ldd 命令
作用:
打印程序或者库文件所依赖的共享库列表
语法:
ldd (选项)(参数)
选项:
-v:详细信息模式,打印所有相关信息
-u:打印未使用的直接依赖
-d:执行重定位和报告任何丢失的对象
-r:执行数据对象和函数的重定位,而且报告任何丢失的对象和函数
参数:
文件: 指定可执行程序或文库
其他:
ldd 不是一个可执行程序,而是一个shell脚本,ldd 能够显示可执行模块的依赖管理的模块,其原理是通过设置一系列的环境变量(LD_TRACE_LOADED_OBJECTS,LD_WARN,LD_BIND_NOW,LD_LIBRARY_VERSION,LD_VERBOSE),当环境变量不为空时, 任何可执行程序在运行时,它都只显示依赖模块, 程序并不执行。  本质是通过ld-linux.so (elf动态库的装载器)来实现的, ld-linux.so 会先于executable 模块程序工作, 并获得控制权, 因此当环境变量被设置时, ld-linux.so选择了可执行模块的依赖模块。
0

sundan

赞同来自:

ln 命令
  作用:它的功能是为某一个文件在另外一个位置建立一个同步的链接
  参数:必要参数:
    -b 删除,覆盖以前建立的链接
    -d 允许超级用户制作目录的硬链接
    -f 强制执行
    -i 交互模式,文件存在则提示用户是否覆盖
    -n 把符号链接视为一般目录
    -s 软链接(符号链接)
    -v 显示详细的处理过程
  选择参数:
    -S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
    -V “-V<备份方式>”或“--version-control=<备份方式>”
    辨析:
硬链接和软连接
  硬链接:ln file1 file2 : 文件内容一致,inode一致,同时引用了一个inode编号
  软连接:ln -s file1 file2 : 文件内容一致,inode不一致,记录的是原始文件的路径名称
  创建连接:         硬链接不产生新的inode, 软连接生成新inode
  删除源文件: 硬链接无影响, 软连接同时删除。
  修改源文件: 连接文件同时修改 。
  创建目录:         硬链接无法指向目录, 软连接可以指向目录。
  分区创建: 硬链接无法跨分区设备连接,软连接可以跨分区设备连接。
  功能区别:Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个    档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文    件系统。
  软链接:
    1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
    2.软链接可以 跨文件系统 ,硬链接不可以
    3.软链接可以对一个不存在的文件名进行链接
    4.软链接可以对目录进行链接
  硬链接:
    1.硬链接,以文件副本的形式存在。但不占用实际空间。
    2.不允许给目录创建硬链接
    3.硬链接只有在同一个文件系统中才能创建

  注意:第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
  第二,ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文 件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。
     ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
0

sundan

赞同来自:

locate :http://www.cnblogs.com/peida/a ... .html
  作用:locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,是最近才建立或刚更名的数据,可能会找不到,执行updatedb则会更新数据库。
  参数:-e 将排除在寻找的范围之外。
    -1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到        的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的        权限资料。     实际搜寻硬盘查询文件名称
    -f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案        放在资料库中。
    -q 安静模式,不会显示任何错误讯息。
    -n 至多显示 n个输出。
    -r 使用正规运算式 做寻找的条件。
    -o 指定资料库存的名称。
    -d 指定资料库的路径
    -h 显示辅助讯息
    -V 显示程式的版本讯息
0

sundan

赞同来自:

rmdir
作用:
rmdir 命令用来创建目录,该命令创建由dirname 命名的目录。如果在目录名的前面没有添加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。 在创建目录时, 应保证新建的目录与它所在的目录下没有重名文件。
注意:
在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过他们来更有效的组织文件。 最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以大写字母开头,这样,在目录列表中目录名就会出现前面。 目录也是文件, 他们和普通文件一样遵循相同的命令规则,并且利用全路径可以唯一指定一个目录。
语法:
mkdir (选项)(参数)
选项:
-z 设置安全上下文, 当使用SELinux 时有效
-m <目标属性>或-mode<目标属性>建立目录的同时设置目录的权限
-p 或 --parent 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
参数:
目录:指定要创建的目录列表,多个目录用空格隔开
实例:
在目录/usr/meng下创建子目录 test ,并且只有文件主有读写执行权限, 其他人无权访问。
mkdir -m 700 /usr/meng/test
在当前目录下创建bin 和/bin/os_1 目录, 权限设置为文件主读写可执行,同组用户读写,其他用户无权访问
mkdir -p-m 750 bin/os_1
0

sundan

赞同来自:

rmdir
作用:
用来删除空目录, 当目录不再被使用时, 或者磁盘空间已达到使用限定值, 就需要删除失去价值的目录。 利用rmdir 命令可以从一个目录中删除一个或多个空的子目录。 该命令从一个目录中删除一个或多个子目录。
语法:
rmdir(选项)(参数)
选项:
-p :或--parent ,删除目录后,若该目录的上层目录已变成空目录,则将其一并删除。
--ignore-fail-on-non-empty: 此选项使rmdir命令忽略由于删除非空目录时导致的错误信息。
-v: 显示命令的详细执行过程。
参数:
目录列表: 要删除的空目录列表, 当删除多个空目录时,目录名之间使用个空格隔开。

实例:
删除子目录和其父目录
rmdir -p /bin/os_1

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: