Linux开发基础命令(全)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux 开发基础 <1>
一.常见命令测试
1.访问/网站了解最新的Linux内核发布情况
2.掌握Linux登录的两种方式
(1)正常的图形用户界面登录,优点:操作界面美观,熟悉,缺点:图形界面会占用系统一部分资源
(2)修改/etc/inittab文件中的
Vi /etc/inittab
把5改为3,保存设置,重起Linux系统后会进入如下界面
优点:会使系统资源得到充分的利用,充分体会到Linux系统编程的方便之处
缺点:需要习惯在命令行下操作
3.关机命令
分别用shutdown --help和init --help命令查看帮助信息,记下如下两条命令的作用
分别用man shutdown和man init命令查看帮助信息,记下如下两条命令的作用Shutdown -h now
Init 0
思考:若计划在5分钟后关机,该输入啥命令,在16:30分关机,,该输入啥命令
提示部分:Runlevels 0, 1, and 6 are reserved. Runlevel 0 is used to halt the sys- tem, runlevel 6 is used to reboot the system, and runlevel 1 is used to
get the system down into single user mode.
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
[时间] 设置多久时间后执行shutdown命令。
时间参数有hh:mm或+m两种模式。
hh:
mm格式表示在几点几分执行shutdown命令。
例如“shutdown 10:45”表示将在10:45执行shutdown。
+m表示m分钟后执行shutdown。
比较特别的用法是以now表示立即执行shutdown。
值得注意的是这部分参数不能省略。
Shutdown –h +5 Shutdown –h 16:30 4.关机前发送广播命令wall ,通知大家保存信息
[root@localhost root]# wall computer will shutdown in 3minutes ,please save what you are doing Broadcast message from root (pts/0) (Fri Jun 15 10:19:57 2007):
computer will shutdown in 3minutes ,please save what you are doing
5.退出服务器或当前用户命令:exit
6.查看当前系统支持的shell
[root@localhost root]# ls /bin/*sh*
/bin/ash /bin/ash.static /bin/bash /bin/bash2 /bin/bsh /bin/csh /bin/sh /bin/tcsh 7.查看命令的返回值
[root@localhost root]# ls /bin/*sh
/bin/ash /bin/bash /bin/bsh /bin/csh /bin/sh /bin/tcsh
[root@localhost root]# echo $?
[root@localhost root]# $?
-bash: 0: command not found
[root@localhost root]# echo $?
127
[root@localhost root]#
8.KDEVELOP IDE编程界面的介绍
关于KDEVELOP使用的详细内容,请参考KDEVELOP的帮助文档,也可访问/,这里只做简单介绍
在KDEVELOP环境下建立hello world 工程,熟悉其建立过程,并编译9.修改用户口令
[root@localhost root]# passwd
Changing password for user root.
New password:
BAD PASSWORD: it is too simplistic/systematic
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost root]#
10. 用户认证
[root@localhost root]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) [root@localhost root]# su qianzg
[qianzg@localhost root]$ id
uid=500(qianzg) gid=500(qianzg) groups=500(qianzg)
[qianzg@localhost root]$
10.查看当前用户命令who
11.Echo 命令–在终端显示字符串
12.Cat命令查看文件内容
[root@localhost root]# echo how are you
how are you
[root@localhost root]# echo how are you > aa
[root@localhost root]# cat aa
how are you
[root@localhost root]#
13.Date 显示或设置日期或时间
请设置当前时间为:2008年10月23日14点25分
[root@localhost root]# date
五6月15 16:08:33 CST 2007
[root@localhost root]# date 10231425
二10月23 14:25:00 CST 2007
[root@localhost root]# date 102314252008
四10月23 14:25:00 CST 2008
[root@localhost root]#
14.
[root@localhost root]# cal
六月2007
日一二三四五六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
[root@localhost root]# cal 7 2008
七月2008
日一二三四五六
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
[root@localhost root]# cal 07
7
一月二月三月
日一二三四五六日一二三四五六日一二三四五六
1 1
2
3
4
5 1 2 3 4 5
2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
23 24 25 26 27 28 29 27 28 27 28 29 30 31
30 31
四月五月六月
日一二三四五六日一二三四五六日一二三四五六
1 2 1 2 3 4 5 6 7 1 2 3 4 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11
10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18
17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25
24 25 26 27 28 29 30 29 30 31 26 27 28 29 30
七月八月九月
日一二三四五六日一二三四五六日一二三四五六
1 2 1 2 3 4 5 6 1 2 3 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10 10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17
17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24
24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30
31
十月十一月十二月
日一二三四五六日一二三四五六日一二三四五六
1 1
2
3
4
5 1 2 3
2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17
16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24
23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31
30 31
15.Clear 清除当前屏幕显示内容
16.
二.文件与目录命令测试:
1.Ls命令查看当前目录下的文件
Ls /root/; ls /.
Ls /root/ -a
Ls /root/ -l
2.Cat命令查看文件内容
Cat /root/.bash_profile
3.More命令,分页查看文件内容
More /etc/inittab
2.3.5 改变工作目录
语法:cd [name]
n a m e:目录名、路径或目录缩写。
例如:
cd 改变目录位置至用户登录时的工作目录。
cd dir1 改变目录位置至d i r 1目录下。
cd ~user 改变目录位置至用户的工作目录。
cd .. 改变目录位置至当前目录的父目录。
cd ../user 改变目录位置至相对路径user 的目录下。
cd /../.. 改变目录位置至绝对路径的目录位置下。
cd ~ 改变目录位置至用户登录时的工作目录。
2.3.6 复制文件
语法: cp [-r] 源地址目的地址
例如:
cp file1 file2 将文件file1 复制成f i l e 2。
cp file1 dir1 将文件file1 复制到目录dir1 下,文件名仍为f i l e 1。
cp /tmp/file1 . 将目录/tmp 下的文件file1 复制到当前目录下,文件名仍为f i l e 1。
cp /tmp/file1 file2 将目录/tmp 下的文件file1 复制到当前目录下,文件名为f i l e 2。
cp -r dir1 dir2 复制整个目录。
2.3.7 移动或更改文件、目录名称
语法: mv 源地址目的地址
例如:
mv file1 file2 将文件file1更名为file2。
mv file1 dir1 将文件file1移到目录dir1 下,文件名仍为file1。
mv dir1 dir2 将目录dir1 更改为目录dir2。
2.3.8 建立新目录
语法: mkdir 目录名
例如:
mkdir dir1 建立一新目录d i r 1。
2.3.9 删除目录
语法: rmdir 目录名或rm 目录名
例如:
rmdir dir1 删除目录dir1,但dir1 下必须没有文件存在,否则无法删除。
rm -r dir1 删除目录dir1及其子目录下所有文件。
2.3.10 删除文件
语法: rm 文件名
例如:
rm file1 删除文件名为file1 的文件。
rm file? 删除文件名中有五个字符且前四个字符为file 的所有文件。
rm f* 删除文件名中以f 为字首的所有文件。
2.3.11 列出当前所在的目录位置
语法: pwd
2.3.12 查看文件内容
语法: cat 文件名
例如:
cat file1 以连续显示方式,查看文件名file1 的内容。
2.3.13 分页查看文件内容
语法: more 文件名或cat 文件名| more
例如:
more file1 以分页方式查看文件名file1 的内容。
cat file1 | more 以分页方式查看文件名file1 的内容。
2.3.131 使用less命令浏览文件
l e s s命令多少有点象m o r e命令,但是l e s s命令的功能比m o r e命令更强大。
l e s s命令和m o r e命令一样都是页命令。
但是它的编写者Mark Nudelman,改进了m o r e命令中的一些特色,并又添加了许多其他的特色。
l e s s命令提供了许多比m o r e命令优秀的功能:
• 可以使用光标键在文本文件中前后滚屏。
• 可以用行号或百分比作为书签来浏览文件。
• 可以实现在多个文件中进行复杂的检索、格式匹配、高亮度显示等操作。
• 键盘操作与字处理程序如e m a c s兼容。
• 阅读到文件结束或者标准输入结束的时候l e s s命令不会退出。
• 屏幕底部的信息提示更容易控制使用,而且提供了更多的信息。
• 带有许多的附件,包括一个独立的键定义程序l e s s k e y,这样就可以定义使用哪些按键来控制l e s s命令.
2.3.14 查看目录所占磁盘容量
语法: du [-s] 目录
例如:
du dir1 显示目录dir1 的总容量及其子目录的容量(以KB 为单位)。
du -s dir1 显示目录dir1 的总容量。
2.3.16 文件权限的设定
1. 改变文件或目录的读、写、执行权限
语法:chmod [-R] mode name
n a m e :文件名或目录名。
mode: 3个8位数字或r w x的组合。
r- r e a d (读),w - w r i t e (写),x - e x e c u t e (执行),u - u s e r (当前用
户),g - g r o u p(组),o - o t h e r(其他用户)。
例如:
chmod 755 dir1 对于目录d i r 1,设定成任何使用者皆有读取及执行的权利,但只有所
有者可做修改。
chmod 700 file1 对于文件f i l e 1,设定只有所有者可以读、写和执行的权利。
chmod u+x file2 对于文件f i l e 2,增加当前用户可以执行的权利。
chmod g+x file3 对于文件f i l e 3,增加工作组使用者可执行的权利。
chmod o-r file4 对于文件f i l e 4,删除其他使用者可读取的权利。
2.改变文件或目录的所有权
语法:chown [-R] 用户名name
n a m e:文件名或目录名。
例如:
chown user file1 将文件file1 改为用户user 所有。
chown -R user dir1 将目录d i r 1及其子目录下面的所有文件改为用户user 所有。
2.3.17 检查自己所属的工作组名称
语法:g r o u p s
2.3.18 改变文件或目录工作组所有权
语法:chgrp [-R] 工作组名name
n a m e:文件名或目录名
例如:
chgrp vlsi file1 将文件file1 的工作组所有权改为vlsi 工作组所有。
chgrp -R image dir1 将目录d i r 1及其子目录下面的所有文件,改为image 工作组所有。
[root@localhost qianzg]# ls -l
总用量 90756
drwxr-xr-x 19 qianzg qianzg 4096 5月 31 21:15 basic
[root@localhost qianzg]# chgrp -R root basic
[root@localhost qianzg]# ls -l
总用量 90756
drwxr-xr-x 19 qianzg root 4096 5月 31 21:15 basic
2.3.19 改变文件或目录的最后修改时间
语法:touch name
n a m e:文件名或目录名。
[root@localhost root]# ls net.sh -l
-rwxrwxrwx 1 root root 85 5月 27 20:44 net.sh
[root@localhost root]# touch net.sh
[root@localhost root]# ls net.sh -l
-rwxrwxrwx 1 root root 85 6月 15 16:13 net.sh
2.3.20 文件的链接
同一文件,可拥有一个以上的名称,也就是把一个文件进行链接。
语法:ln 老文件名新文件名
例如:
ln file1 file2 将文件f i l e 2链接至文件f i l e 1。
语法:ln -s 老文件名新文件名
例如:
ln -s file3 file4 将文件file4 链接至文件f i l e 3。
2.3.21 文件中字符串的查寻
语法:grep string file
例如:
grep abc file1 寻找文件f i l e 1中包含字符串abc 所在行的文本内容。
2.3.22 查寻文件或命令的路径
语法:whereis command 显示命令的路径。
语法:which command 显示命令的路径,及使用者所定义的别名。
语法:whatis command 显示命令功能的摘要。
语法:find search-path -name filename -print 搜寻指定路径下某文件的路径。
例如:
find / -name file1 -print 自根目录下寻找文件file1 的路径。
2.3.23 比较文件或目录的内容
语法:diff [-r] name1 name2
name1 name2:可同时为文件名或目录名。
例如:
d i ff file1 file2 比较文件file1 与file2 内各行的不同之处。
d i ff -r dir1 dir2 比较目录dir1 与dir2 内各文件的不同之处。
2.3.24 使用head或tail命令阅读文件的开头和结尾
head用来显示文件开头x行的-n x
tail用来显示文件开尾x行的-n x
[qianzg@localhost s3c2410]$ head -n 5 nand_read.c
/*
* vivi/s3c2410/nand_read.c: Simple NAND read functions for booting from NAND *
* Copyright (C) 2002 MIZI Research, Inc.
*[qianzg@localhost s3c2410]$ tail -n 5 nand_read.c
/* chip Disable */
NFCONF |= 0x800; /* chip disable */
return 0;
}
2.3.25file 命令查看文件属性
[qianzg@localhost 03_tty]$ file tty.c
tty.c: ASCII C program text
[qianzg@localhost 03_tty]$ file term
term: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
2.3.26 wc命令
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
语法:wc [选项] 文件…
说明:该命令统计给定文件中的字节数、字数、行数。
如果没有给出文件名,则从标准输入读取。
wc同时也给出所有指定文件的总统计数。
字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
- c 统计字节数。
- l 统计行数。
- w 统计字数。
这些选项可以组合使用。
输出列的顺序和数目不受选项的顺序和数目的影响。
总是按下述顺序显示并且每项最多一列。
行数、字数、字节数、文件名
如果命令行中没有文件名,则输出中不出现文件名。
例如:
$ wc - lcw file1 file2
4 33 file1
7 52 file2
11 11 85 total
省略任选项-lcw,wc命令的执行结果与上面一样。
三. 标准输入输出与重定向及管道
1.标准输入与输出
我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。
进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
我们以cat命令为例,cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。
若使用如下命令:
$ cat config
将会把文件config的内容依次显示到屏幕上。
但是,如果cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。
例如:
$ cat
Hello world
Hello world
Bye
Bye
$
用户输入的每一行都立刻被cat命令输出到屏幕上。
直接使用标准输入/输出文件存在以下问题:
输入数据从终端输入时,用户费了半天劲输入的数据只能用一次。
下次再想用这些数据时就得重新输入。
而且在终端上输入时,若输入有误修改起来不是很方便。
输出到终端屏幕上的信息只能看不能动。
我们无法对此输出作更多处理,如将输出作为另一命令的输入进行进一步的处理等。
为了解决上述问题,Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。
2. 输入重定向
输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。
也就是说,输入可以不来自键盘,而来自一个指定的文件。
所以说,输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。
例如,命令wc统计指定文件包含的行数、单词数和字符数。
如果仅在命令行上键入:$ wc
wc将等待用户告诉它统计什么,这时shell就好象死了一样,从键盘键入的所有文本都出现在屏幕上,但并没有什么结果,直至按下<ctrl+d>,wc才将命令结果写在屏幕上。
如果给出一个文件名作为wc命令的参数,如下例所示,wc将返回该文件所包含的行数、单词数和字符数。
$ wc /etc/passwd
20 23 726 /etc/passwd
$
另一种把/etc/passwd文件内容传给wc命令的方法是重定向wc的输入。
输入重定向的一般形式为:命令<文件名。
可以用下面的命令把wc命令的输入重定向为/etc/passwd文件:$ wc < /etc/passwd
20 23 726
$
3. 输出重定向
输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。
这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。
输出重定向比输入重定向更常用,很多情况下都可以使用这种功能。
例如,如果某个命令的输出很多,在屏幕上不能完全显示,那么将输出重定向到一个文件中,然后再用文本编辑器打开这个文件,就可以查看输出信息;如果想保存一个命令的输出,也可以使用这种方法。
还有,输出重定向可以用于把一个命令的输出当作另一个命令的输入(还有一种更简单的方法,就是使用管道,将在下面介绍)。
输出重定向的一般形式为:命令>文件名。
例如:
$ ls > directory.out
$ cat directory.out
ch1.doc ch2.doc ch3.doc chimp config mail/ test/
$
如果要将一条命令的输出结果追加到指定文件的后面,可以使用追加重定向操作符>>。
形式为:命令>>文件名。
例如:
$ ls *.doc>>directory.out
$ cat directory.out
ch1.doc ch2.doc ch3.doc chimp config mail/ test/
ch1.doc ch2.doc ch3.doc
$
和程序的标准输出重定向一样,程序的错误输出也可以重新定向。
使用符号2>(或追加符号2>>)表示对错误输出设备重定向。
例如下面的命令:
$ ls /usr/tmp 2> err.file
可在屏幕上看到程序的正常输出结果,但又将程序的任何错误信息送到文件err.file中,以备将来检查用。
还可以使用另一个输出重定向操作符(&>)将标准输出和错误输出同时送到同一文件中。
例如:
$ ls /usr/tmp &> output.file
利用重定向将命令组合在一起,可实现系统单个命令不能提供的新功能。
例如使用下面的命令序列:
$ ls /usr/bin > /tmp/dir
$ wc –w < /tmp/dir
459
统计了/usr/bin目录下的文件个数。
4. 管道
将一个程序或命令的输出作为另一个程序或命令的输入,有两种方法,一种是通过一个临时文件将两个命令或程序结合在一起,例如上个例子中的/tmp/dir文件将ls和wc命令联在一起;另一种是Linux所提供的管道功能。
这种方法比前一种方法更好。
管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。
显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。
通过使用管道符“|”来建立一个管道行。
用管道重写上面的例子:
$ ls /usr/bin|wc -w
1789
再如:
$ cat sample.txt|grep "High"|wc -l
管道将cat命令(列出一个文件的内容)的输出送给grep命令。
grep命令在输入里查找单词High,grep命令的输出则是所有包含单词High的行,这个输出又被送给wc命令,wc命令统计出输入中的行数。
假设sample.txt文件的内容如下:
Things to do today:
Low:Go grocery shopping
High:Return movie
High:Clear level 3 in Alien vs. Predator
Medium:Pick up clothes from dry cleaner
那么该管道行的结果是2。
Tee命令
功能说明:读取标准输入的数据,并将其内容输出成文件。
语法:tee [-ai][--help][--version][文件…]
补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
我们可利用tee把管道导入的数据存成文件,甚至一次保存数份文件。
参数:-a 附加到既有文件的后面,而非覆盖它。
如果给予tee指令的文件名称已经存在,预设会覆盖该文件的内容。
加上此参数后,数据会新增在该文件内容的最后面,而不会删除原先之内容。
-i 忽略中断信号
--help 在线帮助
--version 显示版本信息
范例:
列出文本文件slayers.story的内容,同时复制3份副本,文件名称分别为ss-copy1、ss-copy2、ss-copy3:
$ cat slayers.story |tee ss-copy1 ss-copy2 ss-copy3
四. Linux帮助系统
1.Help命令
ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuSUX nor --sort.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not hide entries starting with .
-A, --almost-all do not list implied . and ..
--author print the author of each file
-b, --escape print octal escapes for nongraphic characters --block-size=SIZE use SIZE-byte blocks
-B, --ignore-backups do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last modification of file status information)
with -l: show ctime and sort by name
otherwise: sort by ctime
……………………………………………………………………………………………2.man 命令
man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if
none of -cftuSUX nor --sort.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not hide entries starting with .
-A, --almost-all
do not list implied . and ..
--author
print the author of each file
-b, --escape
print octal escapes for nongraphic characters
--block-size=SIZE
use SIZE-byte blocks ……………………………………………………………………………………………
五.Linux下的网络服务
[qianzg@localhost 01_hello]$ cat /etc/resolv.conf nameserver 202.106.0.20
search localdomain
[qianzg@localhost 01_hello]$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
[qianzg@localhost 01_hello]$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
less /etc/rc.d/rc3.d/S10network
#! /bin/bash
#
# network Bring up/down networking
#
# chkconfig: 2345 10 90
# description: Activates/Deactivates all network interfaces configured to \
# start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
### END INIT INFO
# Source function library.
. /etc/init.d/functions
if [ ! -f /etc/sysconfig/network ]; then
exit 0
fi
. /etc/sysconfig/network ………………………………………………………………………………………………
使用ifconfig 命令:
如ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up
Route 添加网关
Route add default gw 192.168.0.254 dev eth0
Netstat 查看网络状态
qianzg@localhost 01_hello]$ netstat -ar
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.0.255 192.168.0.254 255.255.255.255 UGH 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.254 0.0.0.0 UG 0 0 0 eth0
inetd守护进程监听所有的端口,如果某端口上有请求到达,就启动相应服务器进行处理,完成后退出此服务器
[/mnt/yaffs]cat /etc/services
# service-name port/protocol [aliases ...] [# comment]
tcpmux 1/tcp
echo 7/tcp
echo 7/udp
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
ftp-data 20/tcp
ftp 21/tcp
ssh 22/tcp
ssh 22/udp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
nameserver 42/tcp name
whois 43/tcp nicname
bootps 67/tcp # BOOTP server
bootps 67/udp
bootpc 68/tcp # BOOTP client
bootpc 68/udp
tftp 69/udp
finger 79/tcp
www 80/tcp http
www 80/udp
pop3 110/tcp pop-3
pop3 110/udp pop-3
sunrpc 111/tcp portmapper
sunrpc 111/udp portmapper
auth 113/tcp authentication tap ident
nntp 119/tcp readnews untp
ntp 123/tcp
ntp 123/udp
snmp 161/udp
snmp-trap 162/udp snmptrap
补充:Diff创建软件补丁,用patch打补丁
diff 是生成源码补丁的必备工具。
其命令格式为:
diff [命令行选项] 原始文件新文件
常用命令行选项如下:
-r 递归处理目录-u 输出统一格式(unified format)
-N patch 里包含新文件-a patch 里可以包含二进制文件
它的输出在stdout 上,所以你可能需要把它重定向到一个文件。
输出格式保存了上下文(缺省是上下各三行,最少需要两行),这样,patch 的时候可以允许行号不精确匹配的情况出现。
另外,在patch 文件的开头明确地用---和+++标示出原始文件和当前文件,也方便阅读。
通常,我们需要对整个软件包做修改,并生成一个patch 文件,下面是典型的操作过程。
tar xzvf software.tar.gz # 展开原始软件包,其目录为software
cp _a software software-orig # 做个修改前的备份
cd software
[修改,测试……]
cd ..
diff -ruNa software-orig software > software-my.patch
现在我们就可以保存software-my.patch 做为这次修改的结果,至于原始软件包,可以不必保存。
等到下次需要再修改的时候,可以用patch 命令把这个补丁打进原始包,再继续工作。
比如是在linux kernel 上做的工作,就不必每次保存几十兆修改后的源码了。
这是好处之一,好处之二是维护方便,由于unified patch 格式有一定的模糊匹配能力,能减少原软件包升级带来的维护工作量。
patch
patch 程序根据补丁(patch)文件修改一个文件。
补丁文件通常是使用diff 程序建立的一个列表,这个列表包含如何修改原始文件的一些指令。
由于节省时间和空间,Patch 经常用于源代码的修补。
可以想象一个有1MB 的程序包,这个程序包的下一个版本仅仅改变了前面一个版本的两个文件的内容,这个新版本可以完全以一个1MB 的新版本进行发布或者以一个仅仅有1KB 的补丁文件进行发布。
这个补丁文件可以对第一个版本的进行更新,更新后的版本就和第二个版本完全一致了。
因此,如果已经下载了第一个版本,那么为了下一个版本而进行的大数据量下载工作就可以有效地避免。
常用命令行选项:
patch [命令行选项] [待patch 的文件[patch]]
-pn patch level(n 是数字) -b[后缀] 生成备份,缺省是.orig,为了说明什么是patch level,这里看一个patch 文件的头标记。
diff -ruNa xc.orig/config/cf/Imake.cfxc.bsd/config/cf/Imake.cf
--- xc.orig/config/cf/Imake.cf Fri Jul 30 12:45:47 1999
+++ xc.new/config/cf/Imake.cf Fri Jan 21 13:48:44 2000
这个patch 如果直接应用,它会去找xc.orig/config/cf 目录下的Imake.cf 文件,假如你的源码树的根目录是缺省的xc 而不是xc.orig,除了mv xc xc.orig 之外,有无简单的方法应用此patch呢?patch level 就是为此而设:patch 会把目标路径名砍去开头patch level 个节(由/分开的部分)。
在本例中,可以用下述命令:
cd xc; patch -p1 < /pathname/xxx.patch
完成操作。
注意,由于没有指定patch 文件,patch 程序默认从stdin 读入,所以用了输入重定向。
又例如:
diff -r dir1 dir2 >patch20020523.patch
递归的比较目录dir1 与dir2 内,所有各文件之不同处,并将不同处记录到patch20020523.patch 文件中。
patch -p1 < [patchfile]
-p1 选项代表patchfile 中文件名左边目录的层数,顶层目录在不同的机器上有所不同。
要使用这个选项,就要把你的patch 放在要被打补丁的目录下,然后在这个目录中运行path -p1 < [patchfile]。