Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2304031
  • 博文数量: 318
  • 博客积分: 8752
  • 博客等级: 中将
  • 技术积分: 4944
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-23 07:56
文章分类

全部博文(318)

文章存档

2019年(1)

2017年(2)

2016年(12)

2015年(2)

2014年(1)

2013年(17)

2012年(22)

2011年(9)

2010年(37)

2009年(33)

2008年(44)

2007年(43)

2006年(95)

分类: LINUX

2007-03-15 17:59:55

第1章 文件安全与权限
1.文件的权限位
chmod [who] operator [permission] filename
 who: u g o a  ; operator: + - =
 permission: r w x s(suid和guid) t(粘性位) l(给文件加锁,使其他用户无法访问)
chmod [mode] filename
 mode: xxxx 4位8进制数,分别用于:文件属主和组set-id,属主权限,组权限,其他用户权限
       r(4) w(2) x(1) suid(4) guid(2)
eg: -rwxr-xr-- 为754,-rwsr-xr-x为4755, -rwsr-sr-x为6755
  在设置suid或guid的同时,相应的执行权限x位必须要被设置,如果不设置x位,则s位会作大写S,表示s位无意义。-rwxrwSr-- 为2764

2.目录文件的权限位(r w x)
r 可以列出目录中的内容
w 可以在该目录中创建、修改文件。w位不设置,即使拥有目录中的文件的w权限也不能写那个文件。
x 可以搜索和访问该目录。x位不设置,不能访问目录下的任何文件。

3.umask 确定了系统创建文件时的缺省权限位。
umask值=777-文件缺省权限值。系统不允许你在创建一个文件时就赋予它执行权限,即umask值为002时,创建文件的缺省权限值为665,创建目录的缺省权限值为775。

4.符号链接 ln -s source_path target_path
不管是否在同一个文件系统中,都可以创建链接。在创建链接的时候,不要忘记在原有目录设置执行权限。链接一旦创建,链接目录将具有权限777或rwx rwx rwx,但是实际的原有文件的权限并未改变。

第2章 使用find和xargs
5.find命令
find pathname -options [-print -exec|-ok ]
 pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
 -print:   find命令将匹配的文件输出到标准输出
 -exec command {} ;   :find命令对匹配的文件执行参数command所给出的shell命令
 -ok command {} ;     :同上,只是以一种更为安全的模式来执行,在执行每一个命令之前,会给出提示,让用户来确定是否执行。
 find命令选项:
  -name 文件名模式(要用双引号)或filename  :按照文件名查找文件。
  -perm xxx  :按照文件权限来查找文件。当只是想匹配u、g或o中某个的权限位而不论其他的,则其他的位填0,并在xxx前加上一个横杠-。eg:$ find . -perm -007 (查找所有用户都可rwx的文件)
  -prune dir  :查找文件时希望忽略某个目录,如果同时使用了depth选项,那么prune选项将被忽略。
  -user username  :按照文件属主来查找文件。
  -nouser  :查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
  -group groupname  :按照文件所属的组来查找文件
  -nogroup   :查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
  -mtime -n|+n  :按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前
  -newer file1 [! file2]  :查找更改时间比文件file1新但比文件file2旧的文件。
  -type b|c|d|p|l|f  :查找某一类型的文件(块设备 字符设备 目录 管道 符号链接 普通文件)
  -size [+]n[c]  :查找文件长度为n块的文件,带有c时表示文件长度以字节计,+表示长度大于n
  -depth   :在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
  -fstype fs-typename  :查找位于某一类型文件系统中的文件,eg:vfat ext2等等
  -mount  :在查找文件时不跨越文件系统mount点
  -follow  :如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
  -cpio cpio选项   :对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
 
6.xargs command 从管道中获取command的参数
xargs常常与find命令一起使用,用于取代find的-exec参数。find命令把匹配到的文件传递给xargs命
令,而xargs命令每次只获取一部分文件而不是全部,不像- exec选项那样。使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,而不是将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。
eg: 在/apps/audit目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
    find /apps/audit -perm -7 -print | xargs chmod o-w
    用grep命令在当前目录下的所有普通文件中搜索DBO这个词:
    find . -name "*" -type f -print | xargs grep "DBO"

第3章 后台执行命令
7.cron和crontab
cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。
创建用户crontab文件:
  crontab文件的格式:分<>时<>日<>月<>星期<>要运行的命令
   星期0~6(0表示星期天),小时1~23(0表示子夜)
   其中<>表示空格,在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作业,那么可以在星期域使用1-5来表示。还可以在这些域中使用逗号“,”,例如你希望星期一和星期四运行某个作业,只需要使用1 , 4来表示。可以用星号*来表示连续的时间段。如果你对某个表示时间的域没有特别的限定,也应该在该域填入*。该文件的每一个条目必须含有5个时间域,而且每个域之间要用空格分隔。该文件中所有的注释行要在行首用#来表示。
   crontab文件条目举例:   10 1 * * 6,0 /bin/find -name "core" -exec rm {} ;
                   上面的例子表示每周六、周日的1:10运行一个find命令。
提交用户crontab文件: crontab crontab-userfile
  实际上是将crontab-userfile中的条目写入/var/spool/cron/文件中。
编辑cron文件:  Crontab [-u user] -e -l -r
  -u 用户名, -e 编辑crontab文件, -l 列出crontab文件中的内容, -r 删除crontab文件。

8.at  允许用户向cron守护进程提交作业,使其在指定的稍后时间运行。
一旦一个作业被提交,at命令将会保留所有当前的环境变量,包括路径,不象crontab,只提供缺省的环境。该作业的所有输出都将以电子邮件的形式发送给用户,除非你对其输出进行了重定向,绝大多数情况下是重定向到某个文件中。
at [-f script-filename] [-m -l ][ -r jobnum] [time] [date]
  -f script-filename  :是所要提交的脚本或命令。
  -l   :列出当前所有等待运行的作业。atq命令具有相同的作用。
  -r jobnum  :清除作业,要提供相应的作业标识(ID);有些UNIX变体只接受atrm作为清除命令。
  -m   :作业完成后给用户发邮件。
  time  :at命令的时间格式非常灵活;可以是H、HH.MM、HH:MM或H:M等。还可以使用a.m .或p.m .。
  date  :日期格式可以是月份数或日期数,而且at命令还能够识别诸如today、tomorrow这样的词。

9.&命令  把作业放到后台执行
该命令的一般形式为:command &
作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:   command >out.file 2>&1 &
  eg: find /etc -name "srm.conf" -print >find.dt 2>&1 &

10.nohup   nohup命令可以在你退出帐户之后继续运行相应的进程
该命令的一般形式为:nohup command &
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件: nohup command > myout.file 2>&1 &

第4章 文件名置换
11.元字符
   使用星号* ,可以匹配文件名中的任何字符串
   使用问号?,可以匹配文件名中的任何单个字符
   使用[...] ,可以匹配方括号[]中的任何字符。还可以使用-来连接两个字母或数字,以此来表示一个范围。
   使用[!...] ,可以匹配[]中不是感叹号!之后的字符。

第5章 shell输入与输出
12.read  可以使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。
它的一般形式为:read varible1 varible2 ...
如果只指定了一个变量,那么read将会把所有的输入赋给该变量,直至遇到第一个文件结束符或回车。

13.cat  一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制字符。
显示文件内容: cat myfile | more #cat命令不会在文件分页符处停下来;它会一下显示完整个文件
创建文件: cat file1 file2 file3 > bigfile #创建一个名为bigfile的文件,包含上述三个文件的内容
              cat >myfile  #创建一个新文件,并向其中输入一些内容,输入完毕后按结束输入
显示文件中控制字符: cat -v filename

14.管道  可以通过管道把一个命令的输出传递给另一个命令作为输入。管道用竖杠|表示。
一般形式为: 命令1 | 命令2

15.tee  它把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中
一般形式为:tee -a filename   #其中,- a表示追加到文件末尾。

16.echo  可以显示文本行或变量,或者把字符串输入到文件。
它的一般形式为:echo [选项] string
  string支持转义符。c 不换行,f 进纸,t 跳格,n 换行, a 响铃 ...
  如果是LINUX系统,必须使用- n选项来禁止echo命令输出后换行,必须使用-e选项才能使转义符生效.

17.标准输入、输出和错误
标准输入:文件描述符0。它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。
标准输出:文件描述符1。它是命令的输出,缺省是屏幕,也可以是文件。
标准错误:文件描述符2。它是命令错误的输出,缺省是屏幕,同样也可以是文件。

18.文件重定向
在使用sort或其他含有相似输入文件参数的命令时,重定向符号一定要离开sort命令两个空格,否则sort命令会把它当作输入文件。
重定向标准输出
  command > filename   把把标准输出重定向到一个新文件中
  command >> filename  把把标准输出重定向到一个文件中(追加)
  command 1 > fielname 把把标准输出重定向到一个文件中
   > myfile              创建一个长度为0的空文件
重定向标准输入
  command < filename       把command命令以filename文件作为标准输入
  command < file1 > file2  把command命令以file1文件作为标准输入,以file2文件作为标准输出
  command << delimiter     把从标准输入中读入,直至遇到delimiter分界符
重定向标准错误
  command 2 > filename   把把标准错误重定向到一个文件中
  command 2 >> filename  把把标准输出重定向到一个文件中(追加)
结合使用标准输出和标准错误
  command 1 > file1 2 > file2  将输出重定向到file1中,然后再把标准错误重定向到file2中
合并标准输出和标准错误
  command > filename 2>&1  把把标准输出和标准错误一起重定向到一个文件中
  command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中(追加)
  command > filename 2>&1 << delimiter 

19.exec  exec命令可以用来替代当前shell
exec命令并没有启动子shell。使用这一命令时任何现有环境都将会被清除,并重新启动一个shell。exec在对文件描述符进行操作的时候(也只有在这时),它不会覆盖你当前的shell。
一般形式为:exec command   #其中的command通常是一个shell脚本。

20.使用文件描述符  系统中实际上有12个文件描述符,用户可以任意使用文件描述符3到9。
command <&m   把文件描述符m作为标准输入
command >&m   把标准输出重定向到文件描述符m中
command <&-   关闭标准输入

第6章 命令执行顺序
21.使用&&   命令1 && 命令2
&左边的命令1返回真(即返回0,成功被执行)后,& &右边的命令2才能够被执行
eg: mv /apps/bin /apps/dev/bin && rm -r /apps/bin

22.使用||   命令1 || 命令2
如果||左边的命令1未执行成功,那么就执行||右边的命令2
eg: cp file1 file2 || echo "if you are seeing this,cp failed"

23.用()和{}将命令结合在一起
(命令1;命令2;. . .)  当前shell中执行一组命令
{命令1;命令2;. . .}  类上,相应的命令将在子shell而不是当前shell中作为一   个整体被执行
()、{}一般和&&或||一起使用
  eg: cp file1 file2 || (echo "cp failed" |mail df620; exit)

阅读(1312) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~