Linux编程中不熟悉的15个命令

文件处理命令

 

1.dd命令用来复制文件,并根据参数将数据转换和格式化。

格式:dd [options]

 

主要参数

bs=字节:强迫 ibs=<字节>及obs=<字节>。

cbs=字节:每次转换指定的<字节>。

conv=关键字:根据以逗号分隔的关键字表示的方式来转换文件。

count=块数目:只复制指定<块数目>的输入数据。

ibs=字节:每次读取指定的<字节>。

if=文件:读取<文件>内容,而非标准输入的数据。

obs=字节:每次写入指定的<字节>。

of=文件:将数据写入<文件>,而不在标准输出显示。

seek=块数目:先略过以obs为单位的指定<块数目>的输出数据。

skip=块数目:先略过以ibs为单位的指定<块数目>的输入数据。

 

应用实例:

dd命令常常用来制作Linux启动盘。先找一个可引导内核,令它的根设备指向正确的根分区,然后使用dd命令将其写入软盘:

$ rdev vmlinuz /dev/hda

$dd if=vmlinuz of=/dev/fd0

上面代码说明,使用rdev命令将可引导内核vmlinuz中的根设备指向/dev/hda,请把“hda”换成自己的根分区,接下来用dd命令将该内核写入软盘。

 

2.find命令的作用是在目录中搜索文件,它的使用权限是所有用户。

格式:find [path][options][expression]

path指定目录路径,系统从这里开始沿着目录树向下查找文件。它是一个路径列表,相互用空格分离,如果不写path,那么默认为当前目录。

 

主要参数:

depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容。

maxdepth levels:表示至多查找到开始目录的第level层子目录。level是一个非负数,如果level是0的话表示仅在当前目录中查找。

mindepth levels:表示至少查找到开始目录的第level层子目录。

mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找。

version:打印版本。

[expression]是匹配表达式,是find命令接受的表达式,find命令的所有操作都是针对表达式的。它的参数非常多,这里只介绍一些常用的参数。

—name:支持统配符*和?。

atime n:搜索在过去n天读取过的文件。

ctime n:搜索在过去n天修改过的文件。

group grpoupname:搜索所有组为grpoupname的文件。

user 用户名:搜索所有文件属主为用户名(ID或名称)的文件。

size n:搜索文件大小是n个block的文件。

print:输出搜索结果,并且打印。

 

应用技巧

 

find命令查找文件的几种方法:

1)根据文件名查找

例如,我们想要查找一个文件名是lilo.conf的文件,可以使用如下命令:

find / -name lilo.conf

find命令后的“/”表示搜索整个硬盘。

2)快速查找文件

根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时间,特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中,那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件,从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内,此时可以使用下面命令:

find /etc -name smb.conf

这样,使用“快速查找文件”方式可以缩短时间。

3)根据部分文件名查找方法

有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令:

find / -name '*abvd*'

输入这个命令以后,Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*是通配符),比如abvdrmyz等符合条件的文件都能显示出来。

(4) 使用混合查找方式查找文件

find命令可以使用混合查找的方法,例如,我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件,则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。

find /etc -size +500000c -and -mtime +1

 

 

 

3.diff命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户。

格式:diff [options] 源文件 目标文件

 

主要参数

-a:将所有文件当作文本文件来处理。

-b:忽略空格造成的不同。

-B:忽略空行造成的不同。

-c:使用纲要输出格式。

-H:利用试探法加速对大文件的搜索。

-I:忽略大小写的变化

-n --rcs:输出RCS格式。

 

 

4.cmp“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户。

格式:cmp[options] 文件名

主要参数

-l: 将字节以十进制的方式输出,并方便将两个文件中不同的以八进制的方式输出。

 

 

5.cat“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户。

格式:cat [options] 文件1 文件2……

 

主要参数:

n:由第一行开始对所有输出的行数编号。

b:和-n相似,只不过对于空白行不编号。

s:当遇到有连续两行以上的空白行时,就代换为一行的空白行。

 

应用举例

1)cat命令一个最简单的用处是显示文本文件的内容。例如,我们想在命令行看一下README文件的内容,可以使用命令:

$ cat README 

2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个单独的输出文件。cat命令在其输入上接受一个或多个文件,并将它们作为一个单独的文件打印到它的输出。例如,把README和INSTALL的文件内容加上行号(空白行不加)之后,将内容附加到一个新文本文件File1 中:

$ cat README INSTALL File1

3)cat还有一个重要的功能就是可以对行进行编号。这种功能对于程序文档的编制,以及法律和科学文档的编制很方便,打印在左边的行号使得参考文档的某一部分变得容易,这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的。

$ cat -b /etc/named.conf

 

系统管理命令
1.df用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。

格式df [options]

 

主要参数
s:对每个Names参数只给出占用的数据块总数。
a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
k:以1024字节为单位列出磁盘空间使用情况。
x:跳过在不同文件系统上的目录不予统计。
l:计算所有的文件大小,对硬链接文件则计算多次。
i:显示inode信息而非块使用量。
h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。
P:使用POSIX输出格式。
T:显示文件系统类型。

 

说明
df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等。

超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支配。也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作。

 

应用实例
Linux支持的文件系统非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T命令查看磁盘空间时还可以得到文件系统的信息:

df -T
文件系统                类型        1K-块    已用     可用 已用% 挂载点

/dev/mapper/centos-root xfs      17811456 4593928 13217528   26% /

devtmpfs                devtmpfs   917600       0   917600    0% /dev

tmpfs                   tmpfs      933524       0   933524    0% /dev/shm

tmpfs                   tmpfs      933524    9164   924360    1% /run

tmpfs                   tmpfs      933524       0   933524    0% /sys/fs/cgroup

/dev/sda1               xfs       1038336  182376   855960   18% /boot

tmpfs                   tmpfs      186708      24   186684    1% /run/user/0

从上面除了可以看到磁盘空间的容量、使用情况外,分区的文件系统类型、挂载点等信息也一览无遗。

 

 


2.top用来显示执行中的程序进程,使用权限是所有用户。

 

格式top [-] [d delay] [q] [c] [S] [s] [i] [n]

主要参数
d:指定更新的间隔,以秒计算。
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
c:显示进程完整的路径与名称。
S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。
s:安全模式。
i:不显示任何闲置(Idle)或无用(Zombie)的行程。
n:显示更新的次数,完成后将会退出top。

 

说明
top命令是Linux系统管理的一个主要命令,通过它可以获得许多信息。第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的进程、目前运行的、挂起 (Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。第六行显示的项目最多,下面列出了详细解释。
PID(Process ID):进程标示号。
USER:进程所有者的用户名。
PR:进程的优先级别。
NI:进程的优先级别数值。
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
%CPU:该进程占用的CPU使用率。
%MEM:该进程占用的物理内存和总内存的百分比。
TIME+:该进程启动后占用的总的CPU时间。
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
<空格>:立刻刷新。
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

 


3.quota命令用来显示磁盘使用情况和限制情况,使用权限超级用户。

格式quota [-g][-u][-v][-p] 用户名 组名

 

参数
g:显示用户所在组的磁盘使用限制。
u:显示用户的磁盘使用限制。
v:显示没有分配空间的文件系统的分配情况。
p:显示简化信息。

 

应用实例
在企业应用中磁盘配额非常重要,普通用户要学会看懂自己的磁盘使用情况。要查询自己的磁盘配额可以使用下面命令(下例中用户账号是caojh):

quota caojh
Disk quotas for user caojh(uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 58 200000 400000 41 500 1000

以上显示ID号为502的caojh账号,文件个数设置为500~1000个,硬盘空间限制设置为200MB~400MB。一旦磁盘配额要用完时,就需要删除一些垃圾文件或向系统管理员请求追加配额。

 


4.at命令用来在指定时刻执行指定的命令序列。

格式at [-V] [-q x] [-f file] [-m] time

 

主要参数
V:显示标准错误输出。
q:许多队列输出。
f:从文件中读取作业。
m:执行完作业后发送电子邮件到用户。
time:设定作业执行的时间。time格式有严格的要求,由小时、分钟、日期和时间的偏移量组成,其中日期的格式为MM.DD.YY,MM是分钟,DD是日期,YY是指年份。偏移量的格式为时间+偏移量,单位是minutes、hours和days。

 

应用实例
at -f data 15:30 +2 days

上面命令表示让系统在两天后的17:30执行文件data中指明的作业。

 

5.crontab:使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。
格式:crontab [ -u user ] 文件
        crontab [ -u user ] { -l | -r | -e }

 

主要参数
e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。
r:删除目前的时程表。
l:列出目前的时程表。

crontab 文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。

 

说明
at命令相比,crontab命令适合完成固定周期的任务。

 

 

系统安全命令

1.umask:设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。

 

 格式:umask [-p] [-S] [mode]

 

-S:确定当前的umask设置

 

-p:修改umask设置

 

[mode]:修改数值

 

例:umask -S u=rwx,g=rx,o=rx     

Umask -p 177  

umask -S u=rw,g=,o=

 

 

2.chgrp:表示修改一个或多个文件或目录所属的组

 

 格式:   chgrp [选项]  组文件    

 chgrp  [选项]   --reference=参考文件。。。文件

 

 将每个<文件>的所属组设定为<组>

 

  -c  :只有在更改时才显示结果

 

  --dereference:会影响符号链接所指向的对象,而非符号链接本身

 

  -h,--no--dereference:会影响符号链接本身,而非符号链接所指向的目的地

 

  -f,--silent,--quiet:去除大部分的错误信息

 

  --reference=参考文件:使用<参考文件>的所属组,而非指定的<组>

 

  -R:递归处理所有的文件及子目录

 

  -v:处理任何文件都会显示信息

 

 例:chgrp  -R  book /opt/local/book

 

 

3.chown:更改一个会多个文件或目录的属主和属组

 

 格式:chown  [选项]  用户或组  文件

 

  --dereference:受影响的是符号链接所指向的对象

 

  -h,--no-dereference:会影响符号链接本身

 

  --from=目前所有者:目前组织当每个文件的所有者和组符合选项所制定的,才会更改所有者和组

 

  -f,--silent,--quiet:去除大部分的错误信息

 

  -R:递归处理所有的文件及子目录

 

  -v:处理任何文件都会显示信息

 

 例:chown  nobody file1

 

 

4.chattr修改ext2和ext3文件系统属性(attribute),使用权限超级用户。

 

格式:chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录

 

主要参数

R:递归处理所有的文件及子目录。

V:详细显示修改内容,并打印输出。

-:失效属性。

+:激活属性。

= :指定属性。

A:Atime,告诉系统不要修改对这个文件的最后访问时间。

S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。

a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

D:检查压缩文件中的错误。

d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。

C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。

s:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。

u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。

 

说明

chattr 命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

 

应用实例

1.恢复/root目录,即子目录的所有文件

# chattr -R +u/root

 

2.用chattr命令防止系统中某个关键文件被修改

Linux下,有些配置文件(passwd ,fatab)是不允许任何人修改的,为了防止被误删除或修改,可以设定该文件的“不可修改位(immutable)”,命令如下:

# chattr +i /etc/fstab

 

 

5.ps:显示瞬间进程 (process) 的动态,使用权限是所有使用者。
格式:ps [选项] [--help]

主要参数ps的参数非常多, 此出仅列出几个常用的参数。

-A:列出所有的进程。
-l:显示长列表。
-m:显示内存信息。
-w:显示加宽可以显示较多的信息。
-e:显示所有进程。
a:显示终端上的所有进程,包括其它用户的进程。
-au:显示较详细的信息。
-aux:显示所有包含其它使用者的进程。

应用实例
在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量进程的情况。除了可以使用top命令查看内存使用情况之外,还可以使用下面的命令:
   ps aux | sort +5n

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值