http://blog.163.com/minnie_slj/blog/static/9914117220081098284406/
为了在终端中运行程序,需要 shell 。shell 是操作系统的一部分,用来与用户打交道,并且可以用来协调各个命令。
第一个真正的 Unix shell -- 'sh' ,亦称为'Bourne shell' ,诞生于 1975 年,作者是 Steve Bourne 。很快,出现了其他 shell ,如基于原始'Bourne shell' 的'ksh' 、'zsh' ,后者常用作专属 Unixes 系统中的标准 shell ;也有一些从 C 语言中衍生出来的 shell ,如'csh' 或'tcsh' 。
在 Linux 中,标注的 shell 是'bash' ,即 the GNU Bourne-Again Shell (有点玩笑的味道…… )。这个 shell 功能非常强大(甚至有人觉得太庞大了),压缩的 man page 就有 50 KB 。
好了,还是讲点实用的东西比较直观,常用命令简单抛个砖。。。。。。用到哪个man 一下或者google 下就有了。。。。。。
一、文件目录类命令
1 、 查看联机帮助信息(man ,info )
man 命令 如:#man ls
info 命令 如:#info cd
2 、列出当前目录或指定目录的文件名和目录名(ls )
ls [ 选项] 文件或目录
常用[ 选项] 如下:
-a: 显示所有的文件,包括以“.” 开头的隐含文件。
-l: 长格式输出
-m: 宽行输出
-F: 以各种符号表示不同的文件类型
--color: 彩色输出
-R: 递归输出
3 、touch
功能:修改文件的创建日期或以当前系统日期创建一个空文件。
-d: 修改文件的日期。
#touch –d 20030123 test.txt
4 、cp
功能:复制文件
用法:cp [ 选项] 源文件或目录 目标文件或目录
选项:
a : 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR 选项的组合。
- d 拷贝时保留链接。
- f 删除已经存在的目标文件而不提示。
- i 和f 选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y 时目标文件将被覆盖,是交互式拷贝。
- p 此时cp 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
- r 若给出的源文件是一目录文件,此时cp 将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
5 、mv
功能:给文件或目录改名或将一个文件或目录移到另一个目录
用法:mv [ 选项] 源文件或目录 目标文件或目录
-i 交互方式操作。如果mv 操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y 或n ,这样可以避免误覆盖文件。
- f 禁止交互操作。在mv 操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i 选项将不再起作用。
6 、rm
功能:删除文件或目录
用法:rm [ 选项] 文件…
- f 强制删除
- r 指示rm 将参数中列出的全部目录和子目录均递归地删除。
- i 进行交互式删除
7 、cd
功能:改变工作目录。
语法:cd [directory]
用法:
#cd .. 返回上一层目录
#cd ~ 进入自家目录
8 、pwd
功能:显示当前工作目录
用法:#pwd
9 、mkdir
功能:创建一个目录(类似MSDOS 下的md 命令)。
语法:mkdir [ 选项] dir-name
- m 对新建目录设置存取权限。也可以用chmod 命令设置。
- p 可以是一个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
#mkdir –m a=rwx test
#mkdir –m u=rwx,g=rx,o=rx test1
#mkdir –m 755 test2
#mkdir –p test3/test4(test3 和test4 均为新目录)
10 、rmdir
功能:删除空目录。
语法:rmdir [ 选项] dir-name
- p 递归删除目录dirname ,当子目录删除后其父目录为空时,也一同被删除。
11 、file
功能:查看文件类型
语法:file 文件名
12 、cat
功能:查看文本文件的内容
语法:cat 文件名
13 、more
功能:分屏显示文本文件的内容。
14 、less
功能:显示文本文件的内容,可使用pageup 和pagedown 上翻页下翻页。
15 、head
功能:查看文件的开头部分内容
语法:head [ 行数] 文件名
用法:#head test.txt: 显示前10 行内容
#head -20 test.txt 显示前20 行内容。
16 、tail
功能:查看文件的结尾部分内容。
语法:tail [ 行数] 文件名
默认的行数为10 行。
17 、sort
功能:对文本文件中的各行进行排序
用法:sort 文件名
例:#sort 123.txt >456.txt 将123.txt 排序后重定向到456.txt 文件中。
18 、uniq
功能:将重复行从输出文件中删除,只留下每条记录的唯一样本
语法: uniq 文件名
#uniq 456.txt 文件中的重复行删除后输出
19 、pr
功能:处理文件以便打印,输出到标准输出
语法:pr [ 参数] 文件名列表
[ 参数]
-d: 将输出的每一行后加一新的空白行
-n: 输出行号
如:#pr –n 123.txt
20 、ln
功能:建立链接文件
语法:ls [-s] 源文件名 目标文件名
说 明:链接文件分为硬连接和软连接,硬连接相当于一个数据源有两个文件名,删除一个文件另一个文件不变,修改一个文件的内容另一个文件的内容也跟着改变。硬 连接不能和另一个目录链接,也不能和其他文件系统的文件进行链接。软链接相当于快捷方式,没有上面的限制,加-s 参数创建软链接。
21 、wc
功能:统计文件的行数、字符数和单词数。
语法:wc [-lwc] 文件名
-l: 只显示行数,-w :只显示单词数,-c :只显示字符总数。
22 、whatis
功能:可以用一行内容显示对命令行后输入的关键词的说明。
语法:whatis 关键词
用法:#whatis find whereis
23 、Whereis
功能:确定指定文件的源程序/ 二进制程序和手册部分的位置。
用法:#whereis ls
24 、which
功能:显示可执行命令的路径和它的别名。
用法:#which ls
25 、locate
功能:可以查找具体文件或命令的路径,可以查找具体的字符串或子串
用法:locate 文件名或关键字
26 、du
功能:统计文件和目录所占用的磁盘空间
语法:du [-ask] 文件名或目录名
-a: 显示对涉及到的所有文件的统计,而不仅仅统计目录
-s: 只打印出合计数
-k: 以kB 字节数显示
27 、Find 使用范例
find . -name ls.txt
find . -name ls.txt –print
find / -name 'c??’ –print
find / -name 'f*’ –print
find . -name 'f*’ –exec ls –l {} /;
find . -name f/* –ok rm {} /; (交互式提问)
find . -perm 644 –mtime 4
find . -name 'c??’ –o -name 'd??’
28 、grep
功能:在文件中搜寻匹配的行并进行输出
语法:grep [ 参数]< 要找的字串>< 原文件>
-num: 输出匹配行前后各num 行的内容
-A num: 输出匹配行后num 行的内容
-B num: 输出匹配行前num 行的内容
-i :忽略大小写的区别
-v: 只显示出那些不包括某字串的行和文件,和默认的相反
二、文件压缩和归档类命令
1 、gzip
功能:是一种压缩程序,特点是可以得到最佳的压缩率,但速度较慢。
语法:gzip [-vd9] 文件名
-v: 冗长型选项,可以显示每个文件的大小等
-d :解压
-9 :产生最佳压缩效果,但速度较慢。
2 、gunzip
功能:可以把压缩的文件解压成原始文件状态,可以解压扩展名为.gz,.z,.Z 和.tgz 等类型的压缩文件
语法:gunzip [-v] 文件名
-v: 显示解压缩文件的冗长结果
3 、tar
功能:可以归档多个文件和目录到一个.tar 文件下,还可以从一个归档文件中抽取一个文件和目录。
语法:tar [-c][-r][-t][-x][-v][-z][f 文件名] 文件和目录名
-c: 创建归档文件
-r: 增加文件到归档文件中
-t: 查看归档文件中的文件
-x :解开归档文件
-v: 显示冗长信息
-z :进行压缩和解压
如: #tar –cvf back.tar 文件1 目录1 文件2
#tar –rvf back.tar 文件3
#tar –tf back.tar
#tar –xvf back.tar
#tar –czvf back.tar.gz 文件1 目录1 文件2
#tar –xzvf back.tar.gz
4 、安装以rpm 方式提供的软件
Rpm(the red hat package manager) 是一个开放的软件包管理系统。
功能:可以安装和卸载RPM 包的软件
#rpm –ivh *.rpm 安装RPM 包;
#rpm –ivh –force *.rpm 在原先安装的基础上再强行安装一次;
#rpm –Uvh *.rpm 升级rpm 包
#rpm –qa 查找列出系统中所有安装的rpm 包
#rpm –q sendmail :查看sendmail 包的情况
#rpm –ql sendmail: 查看sendmail 安装的位置
#rpm –e *.rpm 卸载rpm 包
#rpm - qlp name.rpm 查看name.rpm 有哪些文件
#rpm - qf name.rpm 查看已经装好的文件属于哪个rpm 包
#rpm2cpio filename.rpm 使用“rpm2cpio” 来从RPM 文档中提取文件
5 、安装以源代码方式提供的软件
(1 )、解包解压:
#tar –xzvf *.tar.gz 解包解压后会在当前目录下建立一个子目录, 如xxxx
(2 )、#cd xxxx
(3 )、#./configure
(4 )、#make
(5 )、#make install
三、系统状态类命令
1 、dmesg
功能:显示引导时内核显示的状态信息
#dmesg |grep -4 “eth0” 显示状态信息中与eth0 相关的前后4 行内容
2 、uname
功能:显示当前的系统信息
#uname -a
3 、uptime
功能:显示当前时间,自从上次重新引导之后系统运行的时间,服务器和多少用户链接以及系统前1 、5 、15 分钟的负载信息。
4 、who (后面详讲)
功能:显示当前登录在系统上的用户信息。
-r: 查看系统运行等级
-w ,在登录帐号后面显示一个字符来表示用户的信息状态:
+ :允许写信息; - :不允许写信息; ? :不能找到终端设备
5 、w
功能:查看其他登录的用户(who 增强版)
第一行输出内容:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1 秒、5 秒和15 秒的平均负载
第二行输出内容:登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPU 、PCPU 、当前正在运行进程的命令行。
*JCPU 时间指的是和该终端(tty )连接的所有进程占用的时间
*PCPU 时间则是指当前进程(即在WHAT 项中显示的进程)所占用的时间
6 、whoami
功能:显示当前用户名
7 、hostname
功能:显示系统的主机名
8 、cal [ 月份] [ 年份]
功能:显示日历
9 、bc
功能:计算器,使用quit 退出
10 、date
功能:显示或修改日期时间。
11 、df
功能:报告文件系统磁盘空间的使用情况
语法:df[ 参数]
[ 参数]
-h :用常见的格式显示出大小(例如:1K,23M,2G 等)
-t :只显示指定类型的文件系统
12 、free
功能:查看当前内存和交换空间的使用情况
四、网络类命令
1 、write
功能:向另外一个用户发信息,以Ctrl+D 作为结束,普通用户发信息受到mesg 状态影响。
语法:write < 用户名>
2 、wall
功能:向所有用户广播信息,普通用户受到mesg 状态影响。
语法:wall [message]
3 、mesg
功能:显示或设置是否接受其他用户发来的信息。
语法:mesg [ 参数]
[ 参数]
y: 接受从其他用户发来的信息
n :不接受从其他用户发来的信息
#mesg
显示当前是否接受其他用户发来的信息
4 、ping
功能:通过检查网络中其他主机的应答信息,来确认网络的连通性。
语法:ping [ 参数] 主机名(或ip 地址)
参数:
-c count :共发出count 次信息。
-R :显示路由表的详细信息
5 、telnet
功能:远程登录
语法:telnet [< 主机名>][ :端口号]
6 、ifconfig
功能:配置网络接口
语法:
ifconfig [interface] [up][down][netmask mask]
#ifconfig
#ifconfig eth0 192.168.0.3 netmask 255.255.255.0 up
7 、netstat
功能:显示本地系统的网络连接状态
语法:netstat [-a][-r][-c][-i]
-a :显示所有本地系统中的网络连接
-r :显示路由表
-c :显示连续的网络连接状态
-i :显示全部网络接口信息。
8 、ftp
功能:文件传输
语法:ftp [< 主机名>]
子命令:
? :列出所有的FTP 命令;
pwd: 显示远程主机的当前目录
lcd :切换和显示本机主机的当前目录
ls :列出远程主机当前目录下的内容
!dir: 列出本机主机的当前目录下的内容
cd: 切换远程主机的目录
get: 下载一个文件
mget :成批下载文件
put :上传一个文件
mput :成批上传文件
prompt :使用mget 和mput 时是否采用交互式询问
bye :中止一个FTP 连接
open :打开一个FTP 连接
close :关闭一个FTP 连接
binary :采用二进制模式传输
ascii :采用ascii 模式传输
type :查看传输模式
五、其他
passwd
1. 作用
passwd 命令原来修改账户的登陆密码,使用权限是所有用户。
2. 格式
passwd [ 选项] 账户名称
3. 主要参数
-l :锁定已经命名的账户名称,只有具备超级用户权限的使用者方可使用。
-u :解开账户锁定状态,只有具备超级用户权限的使用者方可使用。
-x, --maximum=DAYS :最大密码使用时间(天),只有具备超级用户权限的使用者方可使用。
-n, --minimum=DAYS :最小密码使用时间(天),只有具备超级用户权限的使用者方可使用。
-d :删除使用者的密码, 只有具备超级用户权限的使用者方可使用。
-S :检查指定使用者的密码认证种类, 只有具备超级用户权限的使用者方可使用。
4. 应用实例
$ passwd
Changing password for user cao.
Changing password for cao
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
从上面可以看到,使用passwd 命令需要输入旧的密码,然后再输入两次新密码。
su
1. 作用
su 的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。
2. 格式
su [ 选项]... [-] [USER [ARG]...]
3. 主要参数
-f , --fast :不必读启动文件(如 csh.cshrc 等),仅用于csh 或tcsh 两种Shell 。
-l , --login :加了这个参数之后,就好像是重新登陆为该使用者一样,大部分环境变 量(例如HOME 、SHELL 和USER 等)都是以该使用者(USER )为主,并且工作目录也会改变。如果没有指定USER ,缺省情况是root 。
-m , -p ,--preserve-environment :执行su 时不改变环境变数。
-c command :变更账号为USER 的使用者,并执行指令(command )后再变回原来使用者。
USER :欲变更的使用者账号,ARG 传入新的Shell 参数。
4. 应用实例
变更账号为超级用户,并在执行df 命令后还原使用者。 su -c df root
umask
1. 作用
umask 设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile 文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。
2. 格式
umask [-p] [-S] [mode]
3. 参数
-S :确定当前的umask 设置。
-p :修改umask 设置。
[mode] :修改数值。
4. 说明
传统Unix 的umask 值是022 ,这样就可以防止同属于该组的其它用户及别的组的用户修改该用户的文件。既然每 个用户都拥有并属于一个自己的私有组,那么这种“ 组保护模式” 就不在需要了。严密的权限设定构成了Linux 安全的基础,在权限上犯错误是致命的。需要注 意的是,umask 命令用来设置进程所创建的文件的读写权限,最保险的值是0077 ,即关闭创建文件的进程以外的所有进程的读写权限,表示为-rw--- ---- 。在~/.bash_profile 中,加上一行命令umask 0077 可以保证每次启动Shell 后, 进程的 umask 权限都可以被正确设定。
5. 应用实例
umask -S
u=rwx,g=rx,o=rx
umask -p 177
umask -S
u=rw,g=,o=
上述5 行命令,首先显示当前状态,然后把umask 值改为177 ,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的设置。
chgrp
1. 作用
chgrp 表示修改一个或多个文件或目录所属的组。使用权限是超级用户。
2. 格式
chgrp [ 选项]... 组 文件...
或
chgrp [ 选项]... --reference= 参考文件 文件...
将每个< 文件> 的所属组设定为< 组> 。
3. 参数
-c, --changes :像 --verbose ,但只在有更改时才显示结果。
--dereference :会影响符号链接所指示的对象,而非符号链接本身。
-h, --no-dereference :会影响符号链接本身,而非符号链接所指示的目的地( 当系统支持更改符号链接的所有者,此选项才有效) 。
-f, --silent, --quiet :去除大部分的错误信息。
--reference= 参考文件:使用< 参考文件> 的所属组,而非指定的< 组> 。
-R, --recursive :递归处理所有的文件及子目录。
-v, --verbose :处理任何文件都会显示信息。
4. 应用说明
该命令改变指定指定文件所属的用户组。其中group 可以是用户组ID ,也可以是/etc/group 文件中用户组 的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
5. 应用实例
改变/opt/local /book/ 及其子目录下的所有文件的属组为book ,命令如下:
$ chgrp - R book /opt/local /book
chmod
Chmod 使用格式:
Chmod [ 参数][ 模式]< 文件或目录>
参数:-R :改变目录及其所有子目录的文件权限。
举例:
#chmod u+x inittab
#chmod ug+wx,o-x inittab
#chmod 0644 inittab
#chmod 0755 inittab
#chmod –R 700 ~
目录权限的补充说明:
1 、目录的只读访问不允许使用cd 进入目录,必须要有执行的权限才能进入。
2 、只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需要可读权限。
3 、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外
对 特殊位的举例说明: 操作这些特殊位与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作, 1) chmod u+s temp : 为temp 文件加上setuid 标志. (setuid 只对文件有效) chmod g+s tempdir :为tempdir 目录加上setgid 标志 (setgid 只对目录有效) chmod o+t tempdir : 为temp 文件加上sticky 标志 (sticky 只对目录有效)
2) 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644 等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777 等.
设 置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如 rwsrw-r-- 表示有setuid 标志 rwxrwsrw- 表示有setgid 标志 rwxrw-rwt 表示有sticky 标志 那么原来的执行标志x 到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
1. 作用
chmod 命令是非常重要的,用于改变文件或目录的访问权限,用户可以用它控制文件或目录的访问权限,使用权限是超级用户。
2. 格式
chmod 命令有两种用法。一种是包含字母和操作符表达式的字符设定法(相对权限设定);另一种是包含数字的数字设定法(绝对权限设定)。
(1 )字符设定法
chmod [who] [+ | - | =] [mode] 文件名
◆ 操作对象who 可以是下述字母中的任一个或它们的组合
u :表示用户,即文件或目录的所有者。
g :表示同组用户,即与文件属主有相同组ID 的所有用户。
o :表示其它用户。
a :表示所有用户,它是系统默认值。
◆ 操作符号
+ :添加某个权限。
- :取消某个权限。
= :赋予给定权限,并取消其它所有权限(如果有的话)。
◆ 设置mode 的权限可用下述字母的任意组合
r :可读。
w :可写。
x :可执行。
X :只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s :文件执行时把进程的属主或组ID 置为该文件的文件属主。方式“u +s” 设置文件的用户ID 位,“g +s” 设置组ID 位。
t :保存程序的文本到交换设备上。
u :与文件属主拥有一样的权限。
g :与和文件属主同组的用户拥有一样的权限。
o :与其它用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
一个命令行中可以给出多个权限方式,其间用逗号隔开。
(2 ) 数字设定法
数字设定法的一般形式为: chmod [mode] 文件名
数字属性的格式应为3 个0 到7 的八进制数,其顺序是(u)(g)(o) 文件名,以空格分开的要改变权限的文件列表,支持通配符。
数字表示的权限的含义如下:0001 为所有者的执行权限;0002 为所有者的写权限;0004 为所有者的读权限; 0010 为组的执行权限;0020 为组的写权限;0040 为组的读权限;0100 为其他人的执行权限;0200 为其他人的写权限;0400 为其他人的读权 限;1000 为粘贴位置位;2000 表示假如这个文件是可执行文件,则为组ID 为位置位,否则其中文件锁定位置位;4000 表示假如这个文件是可执行文 件,则为用户ID 为位置位。
3. 实例
如果一个系统管理员写了一个表格(tem) 让所有用户填写,那么必须授权用户对这个文件有读写权限,可以使用命令:#chmod 666 tem
上面代码中,这个666 数字是如何计算出来的呢?0002 为所有者的写权限,0004 为所有者的读权限,0020 为 组的写权限,0040 为组的读权限,0200 为其他人的写权限,0400 为其他人的读权限,这6 个数字相加就是666 (注以上数字都是八进制数),结果见 图1 所示。
图1 用chmod 数字方法设定文件权限
从图1 可以看出,tem 文件的权限是-rw-rw-rw- ,即用户对这个文件有读写权限。
如果用字符权限设定使用下面命令:
#chmod a =wx tem
chown
1. 作用
更改一个或多个文件或目录的属主和属组。使用权限是超级用户。
2. 格式
chown [ 选项] 用户或组 文件
3. 主要参数
--dereference :受影响的是符号链接所指示的对象,而非符号链接本身。
-h, --no-dereference :会影响符号链接本身,而非符号链接所指示的目的地( 当系统支持更改符号链接的所有者,此选项才有效) 。
--from= 目前所有者: 目前组只当每个文件的所有者和组符合选项所指定的,才会更改所有者和组。其中一个可以省略,这已省略的属性就不需要符合原有的属性。
-f, --silent, --quiet :去除大部分的错误信息。
-R, --recursive :递归处理所有的文件及子目录。
-v, --verbose :处理任何文件都会显示信息。
4. 说明
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或用户ID ;组可以是组名或组ID ;文件是以空 格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown 命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。
5. 应用实例
1. 把文件shiyan.c 的所有者改为wan
$ chown wan shiyan.c
2. 把目录/hi 及其下的所有文件和子目录的属主改成wan ,属组改成users 。
$ chown - R wan.users /hi
chattr
1. 作用
修改ext2 和ext3 文件系统属性(attribute) ,使用权限超级用户。
2. 格式
chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录
3. 主要参数
-R :递归处理所有的文件及子目录。
-V :详细显示修改内容,并打印输出。
-:失效属性。
+:激活属性。
= :指定属性。
A :Atime ,告诉系统不要修改对这个文件的最后访问时间。
S :Sync ,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a :Append Only ,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
i :Immutable ,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
D :检查压缩文件中的错误。
d :No dump ,在进行文件系统备份时,dump 程序将忽略这个文件。
C :Compress ,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
s :Secure Delete ,让系统在删除这个文件时,使用0 填充文件所在的区域。
u :Undelete ,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
4. 说明
chattr 命令的作用很大,其中一些功能是由Linux 内核版本来支持的,如果Linux 内核版本低于2.2 ,那 么许多功能不能实现。同样-D 检查压缩文件中的错误的功能,需要2.5.19 以上内核才能支持。另外,通过chattr 命令修改属性能够提高系统的安全 性,但是它并不适合所有的目录。chattr 命令不能保护/ 、/dev 、/tmp 、/var 目录。
5. 应用实例
1. 恢复/root 目录, 即子目录的所有文件
# chattr -R +u/root
2. 用chattr 命令防止系统中某个关键文件被修改
在Linux 下,有些配置文件(passwd ,fatab) 是不允许任何人修改的,为了防止被误删除或修改,可以设定该文件的“ 不可修改位(immutable)” ,命令如下:
# chattr +i /etc/fstab
sudo
1. 作用
sudo 是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令,权限是所有用户。
2. 格式
sudo [-bhHpV] [-s <shell>] [-u < 用户>] [ 指令]
sudo [-klv]
3. 主要参数
-b :在后台执行命令。
-h :显示帮助。
-H :将HOME 环境变量设为新身份的HOME 环境变量。
-k :结束密码的有效期,即下次将需要输入密码。
-l :列出当前用户可以使用的命令。
-p :改变询问密码的提示符号。
-s <shell> :执行指定的Shell 。
-u < 用户> :以指定的用户为新身份,不使用时默认为root 。
-v :延长密码有效期5 分钟。
4. 说明
sudo 命令的配置在/etc/sudoers 文件中。当用户使用sudo 时,需要输入口令以验证使用者身份。随后 的一段时间内可以使用定义好的命令,当使用配置文件中没有的命令时,将会有报警的记录。sudo 是系统管理员用来允许某些用户以root 身份运行部分/ 全 部系统命令的程序。一个明显的用途是增强了站点的安全性,如果需要每天以超级用户的身份做一些日常工作,经常执行一些固定的几个只有超级用户身份才能执行 的命令,那么用sudo 是非常适合的。
ps
1. 作用
ps 显示瞬间进程 (process) 的动态,使用权限是所有使用者。
2. 格式
ps [options] [--help]
3. 主要参数
ps 的参数非常多, 此出仅列出几个常用的参数。
-A :列出所有的进程。
-l :显示长列表。
-m :显示内存信息。
-w :显示加宽可以显示较多的信息。
-e :显示所有进程。
a :显示终端上的所有进程, 包括其它用户的进程。
-au :显示较详细的信息。
-aux :显示所有包含其它使用者的进程。
4. 说明
要对进程进行监测和控制,首先要了解当前进程的情况,也就是需要查看当前进程。ps 命令就是最基本、也是非常强大的 进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等。图2 给出了ps-aux 命令详解。大部分信息都可以通过执行该命令得到。最常用的三个参数是u 、a 、x 。下面就结合这三个参数详细说明ps 命令的作用:ps aux
图2 ps-aux 命令详解
图2 第2 行代码中,USER 表示进程拥有者;PID 表示进程标示符;%CPU 表示占用的CPU 使用率;%MEM 占用的物理内存使用率;VSZ 表示占用的虚拟内存大小;RSS 为进程占用的物理内存值;TTY 为终端的次要装置号码。
STAT 表示进程的状态,其中D 为不可中断的静止(I/O 动作);R 正在执行中;S 静止状态;T 暂停执行;Z 不存在,但暂时无法消除;W 没有 足够的内存分页可分配;高优先序的进程;N 低优先序的进程;L 有内存分页分配并锁在内存体内 ( 实时系统或 I/O) 。START 为 进程开始时间。TIME 为执行的时间。COMMAND 是所执行的指令。
4. 应用实例
在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量进程的情况。除了可以使用top 命令查看内存使用情况之外,还可以使用下面的命令:
ps aux | sort +5n
who
1. 作用
who 显示系统中有哪些用户登陆系统,显示的资料包含了使用者ID 、使用的登陆终端、上线时间、呆滞时间、CPU 占用,以及做了些什么。 使用权限为所有用户。
2. 格式
who - [husfV] [user]
3. 主要参数
-h :不要显示标题列。
-u :不要显示使用者的动作/ 工作。
-s :使用简短的格式来显示。
-f :不要显示使用者的上线位置。
-V :显示程序版本。
4. 说明
该命令主要用于查看当前在线上的用户情况。如果用户想和其它用户建立即时通信,比如使用talk 命令,那么首先要确 定的就是该用户确实在线上, 不然talk 进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who 命令。who 命 令应用起来非常简单,可以比较准确地掌握用户的情况, 所以使用非常广泛。