Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117689
  • 博文数量: 42
  • 博客积分: 932
  • 博客等级: 准尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-18 22:33
文章分类
文章存档

2011年(42)

分类: LINUX

2011-07-29 20:33:36

  1. LINUX下的文件搜索功能
  2. 网络客户端命令
  3. LINUX文件系统
  4. 任务的定期执行
  5. 如何在脚本中捕捉信号

LINUX下的文件搜索功能:

我们知道在LINUX的哲学思想里 一切皆文件!

所以在LINUX浩如烟海的文件里我们怎么找到一个特定的文件呢?

首先要说明的是,这跟此前学的grep,egrep是俩个不同的概念,grep,egrep是对文本文件中的内容

字符串进行过滤的,而这里的文件搜索是在某个特定的目录下有没有一个特定的文件!

下面说说LIUX系统下给我们提供的最常用的文件搜索工具吧!

locate 查找事先生成的文件数据库 速度快 做模糊匹配

find  实时查找 精确匹配文件名

locate的使用方法 很简单  locate filename 如我们要查找passwd 就可以用

locate passwd 即可 不过它查找的不是精确的文件名 可能是名字中含有这个字符串的文件,

或路径中含有这个名字的文件!

在新装得系统中是没有这个数据库的,使用 updatedb命令建立locate查找文件数据库!

常用的选项

 -i 忽略名字的大小写

 -n N 只显示查找到的前N行
这个命令还不是很常用!

下面介绍第二种!最重要的查找文件的方法!

find

find的使用方法:

find [DIR ....]         CRITERIA       ACCTION
     指定在那些路径查找  指定查找的标准  查找到后的动作即怎么处理

默认的ACCTION是 print
默认的路径是 当前目录  指定的目录可以有多个 中间以空格分开

find命令受权限的约束,要保证查找的用户对相应的目录要有访问的权限!

重点来了指定查找标准 CRITERIA 有一堆的选项组成下面介绍最常用的选项

-name 跟据文件名查找

-iname 根据文件名查找但不区分大小写

支持globbing,文件名通配
*  任意长度的任意字符
? 任意一个单个字符
[] 指定范围内的单个字符

根据文件的属主属组来超找
-user  查找属主是某个用户的文件
-group 查找属组是某个组的文件
-nouser  没有属主的文件
-nogroup 没有属组的文件

 

-uid 用户已删除但属于用户的文件尚未删除 可以用-uid 加原来用户的ID号可以查找这些文件
-gid 类似于-uid不详述了

根据文件的时间来查找
-atime [+/-]N
-mtime 最后修改的时间
-ctime 属性改变的时间
time 的单位是天

-amin [+/-]N
-mmin
-cmin
min 的单位是分钟 其它的跟time意义相同

按时间查找 肯定指定的是过去的某段时间这点应该很容易理解吧!


相对比较的查找
-anewer  file 访问时间比某个文件最近访问时间还要近的文件
-cnewer       属性改变时间比某个文件最近属性改变时间还要近的文件
-newer=(mnewer)内容改变时间比某个文件最近内容改变时间还要近的文件       

根据文件类型查找

-type
  f 普通文件
  d 目录文件
  l 链接
  s 硬链接
  b 块儿设备
  c 字符设备
  p 管道


根据文件大小查找
-size
 [+/-]N 可以跟的单位有 K  M  G  N是1的时候跟 找到的是 小于1 K M G的所有文件


根据文件的权限来查找

-perm [+-/]mode +跟/的意义一样+已经不常用了
如 find/tem -perm 755 精确匹配权限
                  -222  每一类用户都要匹配 即每一类用户都有写权限
                   /222 只要有某一类用户有一位权限符合即可

-a 连接俩个查找条件 与关系 
-o 或关系
-not 非关系  可以用这些将以上的查找标准组合起来进行查找

ACTION常用的几个

-print 默认的动作 打印出来

-ls

-ok  COMMAND 对每个操作进行确认

-exec COMMAND 跟-ok相同但不进行确认

find有个固定写法如:find ./ -perm /001 -not -type d -exec chmod 0o-x {} \;

后面{} \;这是固定的写法 {}代表前面找到的内容 作为后面命令或者说处理动作的对象

并且必须以\;结尾!

find .... | xargs ... 跟ok  exec 功能差不多
以上就是find的用法了,将其组合起来能实现很多强大的功能!这有待于以后的慢慢发现!和多多使用,所以就不一一举例了!

 

网络客户端命令的使用

elinks,links 这俩个命令时 基于纯字符模式查看www服务的浏览器 也算是个命令了

俩个选项

-dump 以纯文本的方式显示对应网页内容 只是把网页的内容以文本的内容倾倒在屏幕上后就退出了

-source 以源码的方式显示

elinks用于探测网站服务是否正常

wget 基于字符界面下的网路下载工具 支持http ftp协议 非交互式的下载工具 不支持多线程

用法 wget [option] ..[url]...

常用的选项

 --tries 尝试多次下载

-o 保存下载信息

 -r 递归下载,即当指定的是一个下载目录的时候可以将目录及目录里面的内容一起下载下来

axel Linux字符界面下 支持多线程的下载工具 用法 axel -n 20 暂时还未安装 以后学编译安装再进行补充!

ssh:Secure Shell 是用来代替 telnet 的远程登录协议

C/S模式的工具 :

LINUX的开源版本:OpenSSH

服务端:sshd

客户端:ssh

ssh命令是用来远程连接服务端的工具。

使用格式: USERNAME@host 或 ssh -l USERNAME host

SSH是如何进行连接的?首先要知道实现密码加密的方式3种:

对称加密  公钥加密  单向加密

SSH用户的认证方法

基于口令的认证
基于密钥的认证

私钥自己保存
公钥 放到远程服务器上放在主机上某个用户的家目录下有个隐藏目录.ssh下的/authorized_keys文件中

ssh-keygen可以生成密钥对 -t 指定类型 常用的公钥算法俩种 dsa,rsa 一般使用rsa的算法功能强大如:

ssh-keygen -t rsa 即可生成一对密钥 私钥公钥对  私钥:/root/.ssh/id_rsa 公钥:/root/.ssh/id_rsa.pub

ssh-copy-id 这个命令用于将公钥文件复制到特定的主机上并存放在.ssh/authorized_keys里

如:ssh-copy-id -i(#用于指定公钥文件) ./ssh/id_rsa.pub root(必须指定一个用户因为这个公钥是存放在某个用户家目录下.ssh/authorized_keys里的)@192.168.0.182这样就完成了,下次再远程登录的时候就不用输密码了!

跨主机复制

scp 用法:scp SOURCE DEST
如: scp root@192.168.0.182:/root/id_rsa_1024.pub./
默认只复制文件不复制目录
-r 复制目录
-p 保留属主信息
-a=-rp
-C 在复制过程中先压缩再复制

 

FTP服务工具
ftp 交互式的命令

在ftp里面!引导的命令可以执行SHELL命令
使用get 命令能在ftp里下载文件
lcd 能指定下载目录
put 上传
mput 一次上传多个
mget 一次下载多个文件                                                                
bye退出

lftp比ftp更好用
mirror下载目录 将某个目录镜像到本机
-u 指定以某个用户的身份登录  user ,passwd
lftpget 能支持断点续传 -c

gftp图形界面的ftp工具

ping命令比较常用了不多做解释几个选项

ping
-c 指定ping的次数
-w ping的时间间隔
-l 指定数据包长度

traceroute 追踪路由

DNS服务
dig
正向 -t A FQDN
反向 -x IP
host -t
正向:host -t A FQDN
反向: host -t PTR IP

netstat
 -t tcp已经建立的TCP连接
 -u udp已经通信的UDP连接
 -l 显示可以向外提供的服务
 -n 以数字的方式显示地址信息
 -p 可以显示提供的服务是有那个进程提供的
 -r 查看路由表


常用的组合
-rn
-tnl
-unl
-tunl
-tunlp

这些按以上的信息组合起来查看

此命令十分强大这里只学习了简但的用法!

Linux支持的文件系统有:
ext3,ext2,ext4,xfs,jfs,jfs2,reiserfs,光盘iso9660,swap
FAT32  NTFS等

什么是文件系统呢?其实文件系统就是方便文件管理的软件!Linux还有个附着的抽象层称为虚拟的文件系统使得Linux支持的文件系统很多!

为了使用的方便,我们在使用的时候要先对磁盘进行分区,然后对分区进行格式化创建不同的文件系统!我们知道我们只能有3个主分区和一个扩展分区或4个主分区吧!有些同学可能对此不是十分了解,其实刚开始的时候我也说不清楚,但是上课的时候老师解释的比较清楚在此做下总结!补充几个概念!

首先,硬盘到现在为止采用的仍是最古老的温彻斯特封装技术,具体是什么在网上搜的时候杂乱的信息太多没找到,大致说的是硬盘是封闭的内部几乎处于真空状态,里面有多个高速旋转的盘片,这些磁盘同轴旋转双面可读写,为了能存储数据,盘片被划分成不同的磁道!下面了解几个概念

磁道:磁盘被划分为由外向内编号的同心圆。

柱面:位于同一盘片不同盘面和不同盘片上相同编号的磁道的集合称为柱面。

扇区:为了减免空间的浪费将磁道划分为更小的存储空间就是扇区

低格的过程就是划分磁道创建扇区的过程

位于0磁道0扇区的空间不会划分给任何一个分区,这个空间一共512个字节,称为引导扇区 Boot sector

前446个字节安装了一段程序 boot loader 引导某个分区的操作系统用的!紧接着的64个字节,存放磁盘分区表,16个字节可以引导一个分区,因此就出现了只能有4个主分区或3个主分区一个扩展分区的概念!扩展分区只是一个指针指向磁盘分区表,可以对起进行下一步的划分称为逻辑分区。不知道这样说清楚了没?如果有人发现有错也希望能指出!


下面继续说Linux的文件系统

格式化就是创建文件系统的过程

使用ls -i可以看到每个文件的索引节点号

索引里放什么 文件存放在那些块 文件类型  文件大小 文件权限 属主属组 时间戳 称为元数据信息

删除文件的时候是删除索引表 并不删除块里的内容
移动文件 在同一个分区的时候改变的是索引表里的索引信息 并不改变文件         内容所以很快
         跨分区的时候要重建文件内容因此比较慢

复制都一样慢
目录 里存放的是文件名 和 文件对应索引表的编号  用于实现文件路径分类映射 降低

 

块位图实现避免实时查找 大大加快文件索引速度
df -lh 可以查看当期文件系统 所有的分区及相关的目录


链接文件
硬链接 同一个节点号有俩个路径可以找到
软链接 独特 节点号里没有放索引号 放的是另一个文件的路径

硬链接
不能对目录创建硬链接
不能跨分区
改变链接计数
符号链接
可以对目录创建符号链接
可以跨文件系统
不改变链接计数

如何创建链接

ln [options] SRC DST
 -s 创建软链接
 -v 显示创建过程

 

df:disk free  -h 能做单位换算 -i 显示节点号
du:disk usage  查看目录
-s 统计目录有多大
-h 单位换算 human-readable
特f殊文件不需要大小 仅仅对应一个特定设备的入口 俩个数字代表设备的类型 前一个是大类 后一个是小类 主设备号 次设备号


 

 

关于任务的定期执行:
at/batch 实现定期执行 一次性的定时执行一个任务
at [options] TIME
at>这里是交互的提示符,可以写你想要做的事
at>
Ctrl+d 设定完后 使用这个组合键提交
at -l  atq 查看当前有多少at作业等待执行
at -q可以指定队列
at -d可以删除等待执行的作业
   -f从某个文件中读取at命令一一执行

batch 不需要指定时间
#mail
d命令可以删除邮件
d*删除所有邮件

如at now+2min

> ls /etc

> cp /etc/inittab /tmp

然后按Ctrl+d提交
 
crond 周期性的执行
按照某个周期固定执行某个特定的任务
service crond status
系统cron
/etc/crontab
min hour day month week user COMMAND


用户cron
/var/spool/cron/USERNAME 跟用户相关的cron
min hour day month week COMMAND
min 0-59
hour 0-23
day 1-31*
month 1-12
week 0-7
/ 每
,离散时间点
PATH
只在 /bin:/sbin:/usr/bin:/usr/sbin 中查找

如 10 02 03 * * /bin/ls /etc
如 */5 * * * * date 每隔5分钟 执行一次
如 20,50 * * * * date 每半个小时执行一次
如10 00 * * 1-5 每

crontab
 -e 编辑自己的cron
 -r 删除所有的作业列表
 -l
 -u USERAME
到期不执行 就不再执行 缺陷

anacron
etc/anacrontab
最小单位是天
用于补充crontab
 

 

如何在脚本中捕捉信号:
 trap 'COMMAND ' SIGNAL
kill信号无法捕捉

后面的内容就是俩个命令就不详细说明了!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

阅读(1362) | 评论(0) | 转发(0) |
0

上一篇:LINUX学习之路5

下一篇:LINUX学习之路9

给主人留下些什么吧!~~