2008年12月14日星期日
转 安装RTlinux
1、安装RED HAT。
我下载了RED HAT9.0,并且用VMWARE 5.0新建了128M内存的Linux系统然后正在安装中。我设置的是完全安装,选择的语言是ENGLISH,在392M SDR内存+赛扬800的机器上,同时用电脑做着别的事情要装3小时左右。实际上,RT-Linux的安装向导说:
When installing RedHat you need to perform a Custom install and select
Development, Kernel Development, Utilities, and Select Individual
Packages.
At the Individual Package Selection screen, go to Development -->
Languages and select compat-egcs. Next go to Development --> Libraries and select compat-glibc. Select any other packages you wish to install and continue the installation.
我选择完全安装应该没有问题吧。
2、以ROOT登录。
3、下载内核。
Linux我用的是2.4.28内核,可以去:http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.28.tar.gz下载。
RT-Linux我用的是3.2-rc1,可以去:http://www.rtlinuxfree.com/index.php?option=com_remository&Itemid=41&func=selectcat&cat=1下载。下载之前要注册登陆。
将下载的两个文件放置到/var/tmp目录。
4、解压。
rm -rf /usr/src/rtlinux
mkdir /usr/src/rtlinux
cd /usr/src/rtlinux
tar -xzf /var/tmp/linux-2.4.28.tar.gz
tar -xzf /var/tmp/rtlinux-3.2-rc1.tgz
最后tar命令的文件名当然要看情况而定。
5、将RT-Linux打包到Linux核中。
cd linux-2.24.28
patch -p1 < /usr/src/rtlinux/rtlinux-3.2-rc1/patches/kernel_patch-2.4.28-rtl3.2-rc1
6、配置内核
网狐的教程说:“ 如果你使用的是RedHat7.0,那么就需要首先编辑Makefile并将其中所有的gcc替换为kgcc。首先需要从redhat7.0安装光盘上安装kgcc,若没有采取这一步,那么得到的内核将会显示kernel panics信息。Redhat7.0带的gcc2.96有很多的bug。所有的内核编译都应该使用kgcc来完成。 ”
这个MAKEFILE一般是/usr/src/rtlinux/linux/Makefile。
暂时不知道RedHat9.0是否需要。
在linux-2.24.28目录下可以运行make config 或者 make menuconfig或者make xconfig来配置内核——我用的是make xconfig,比较直观^_^。
需要保证CPU类型的正确性(Processor type and features),以及禁用高级电源管理(否则会影响实时性,在General Setup里面Advanced Power Management BIOS support)。一般默认设置就能检测到CPU类型并且禁用了APM。
7、编译和安装
make dep 我用了10分钟
make bzImage 我用了30分钟
make modules
make modules_install
cp arch/i386/boot/bzImage /boot/rtzImage
修改了grub之后,重启却总是kernel panic,初步估计是rt无法通过vmware访问硬盘... 后来直接装在裸机上就ok了。
嵌入式操作系统开源项目列表
嵌入式操作系统开源项目列表
目前,网上有很多开源的嵌入式OS项目,对嵌入式RTOS感兴趣的朋友不妨关注一下:)
1. t-kernel。这是目前嵌入式领域应用最为广泛的开源实时内核,为日本开发,开源站点为:http://www.t-engine.org/
2. uc/os。http://www.micrium.com/ micrium公司的站点,站点上有很多uc/os相关的资料,是开发uc/os系统的官方站点。
3. uclinux。在通用linux平台的基础上,去除了MMU内存管理单元,精简了glibc等应用程序库,适合在无需虚拟内存的嵌入式环境下应用。官方站点:http://www.uclinux.org/
4. ecos。Ecos是一个开源,完全免费的实时嵌入式操作系统,官方站点:http://ecos.sourceware.org/
5. rtlinux。在同用linux平台的基础上构建的实时Linux系统,在实时性较强的环境中应用。开源站点为:http://en.wikipedia.org/wiki/RTLinux,http://www.rtlinuxfree.com/
6. lxRTOS。爱好者自己开发的开源微系统实时内核,只能用于学习,不可商用。官方站点:http://www.lx-rtos.com/
7. Nucleus Plus。美国源代码操作系统商ATI公司推出的新一代嵌入式操作系统,属于抢先式实时多任务操作系统内核, 95%的代码使用ANSI C编写,非常便于移植于各种处理器。相关站点:http://en.wikipedia.org/wiki/Nucleus_RTOS,
8. Windows CE。这是微软开源的嵌入式操作系统,http://en.wikipedia.org/wiki/Windows_CE
9. tinyos。应用于无线传感器网络领域的嵌入式操作系统,由美国伯克利分校完成。相关资源:http://www.tinyos.net/,http://en.wikipedia.org/wiki/TinyOS
嵌入式实时操作系统μC/OS-II与eCos的比较
随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛:从民用的电视、手机等电路设备到军用的飞机、坦克等武器系 统,到处都有嵌入式系统的身影。在嵌入式系统的应用开发中,采和嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同 时能够提高系统的稳定性和可靠性。这已逐渐成为嵌入式系统开发的一个发展方向。
2 嵌入式操作系统概述
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件。它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底 层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越 来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、标准设备驱动程序以及工具集等。与通用操作 系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
嵌入式系统的出现至今已经有30多年的历史。纵观嵌入式技术的发展过程,大致经历了四个阶段。
(1)无操作系统的嵌入式算法阶段
这一阶段的嵌入式系统是以单芯片为核心的系统,具有与一些监测、伺服、指示设备相配合的功能。一般没有明显的操作系统支持,而是通过汇编语言编程对系统进行直接控制。主要特点是系统结构和功能都相对单一,针对性强,无操作系统支持,几乎没有用户接口。
(2)简单监控式的实时操作系统阶段
这一阶段的嵌入式系统主要以嵌入式式器为基础、以简单监控式操作系统为核心。系统的特点是:处理器种类繁多,通用性比较弱;开销小,效率高;一般配备系统仿真器,具有一定的兼容性和扩展性;用户界面不够友好,主要用来控制系统负载以及监控应用程序运行。
(3)通用的嵌入式实时操作系统阶段
以通用型嵌入式实时操作系统为标志的嵌入式系统,如VxWorks、pSos、 Windows CE就是这一阶段的典型代表。这一阶段嵌入式系统的特点是:能运行在各种不同的微处理器上;具有强大的能用型操作系统的功能,如具备了文 件和目录管理、多任务、设备驱动支持、网络支持、图形窗口以及用户界面等功能;具有丰富的API和嵌入式应用软件。
(4)以Internet为标志的嵌入式系统
伴随着通用型嵌入式实时操作系统的发展,面向Internet网络和特定应用的嵌入式操作系统正日益引起人们的重视,成为重要的发展方向。嵌入式系统与Internet的真正结合、嵌入式操作系统与应用设备的无缝结合代表着嵌入式操作系统发展的未来。
3 两种源码开放的RTOS
嵌入式实时操作系统有很多,如VxWorks、PalmOS、WindowsCE等。这些操作系统均属于商品化产品,价格昂贵且由于源泉代 码不公开导致了诸如对设备的支持、应用软件的移植等一系列的问题;而开放源码的RTOS在成本和技术上有其特有的优势,在RTOS领域占有越来越重要的地 位,本文将介绍μC/OS-II和eCos两种优秀的源码公开的实时操作系统,通过对它们各自的特点和性能进行分析和比较,给出相关的数据,为选择一种合 适的RTOS提供参考。
3.1 μC/OS-II
μC/OS-II的前射是μC/OS,最早出自于1992年美国嵌入式系统专家 Jean J.Labrosse在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把μC/OS的源码发布在该杂志的BBS上。当时就有500 多人下载了这份源码。世界上数以千计的工程技术人员将μC/OS应用到了各个领域,如照相机业、发动机控制、网络接入设备、高速公路电话系统、ATM机和 工业机器人等。许多大学用μC/OS作教材,用于实时系统教学。1998年,作者决定出版μC/OS的第二本书《μC/OS- II The Real Time Kernel》,并设立了正式的网站:www. ΜC/OS-II.com,给μC/OS-II增加了一些新的功能, 并且增加了约200页的解释。
μC/OS和μC/OS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU硬件相关部分是用汇编语言编写的、 总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。许多移植的范例可以从网站上得到。用户只要有标准的ANSI的 C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS嵌入到开发的产品中。
μC/OS具有执行效率高、占用空间小、实时性能优良和可扩展性能等特点,最小内核可编译至2KB。μC/OS-II已经移植到了几乎所有知名的CPU上。
3.2 eCos
eCos(embedded Configurable operating system),即嵌入式可配置操 作系统,最初起源于美国的Cygnus Solutions公司。Cygnus公司于1998年11月发布了第一个eCos版本eCos1.1,当时只支 持有限的几种处理器结构。1999年11月,RedHat公司以6.74亿美元收购了Cygnus公司。在此后的几年里,eCos成为其嵌入式领域的关键 产品,得到了迅速的发展。2002年,RedHat公司由于财务方面的原因,裁剪了eCos开发队伍,但并没有停止eCos的发展。RedHat公司随后 宣称将继续支持eCos的发展,而由原eCos主要开发人员组建了eCos Centric公司,并于2003年5月正式发布了eCos2.0。
虽然eCos是RedHat的产品,但是eCos并不是Linux或Linux的派生,eCos弥补了Linux在嵌入式应用领域的不足。 目前,一个最小配置的Linux内核大概有500KB,需要占用1.5MB的内存空间,这还不包括应用程序和其它所需的服务;eCos可以提供实时嵌入式 应用所需的基本运行基件,而只占用几十KB或几百KB的内存空间。eCOS是一个源码开放的可配置、可移植、无版税、面向深嵌入式应用的实时操作系统。从 eCOS的名称可以看出,它最大的特点在于它是一个配置灵活的系统。ECOS的核心部分是由不同的组件组成的,包括内核、C语言库和底层运行包等。每个组 件以能提供大量的可配置选项,利用eCOS提供的配置工具可以很方便地进行配置。通过不同的配置使得eCOS能够满足不同的嵌入式应用。
4 μC/OS-II与eCOS的比较
对于以上两种源泉码公开的实时操作系统,我们主要从以下几个方面进行比较。通过比较,能够为大家选择适合自己系统的RTOS提供参考。
4.1 内核调度机制
RTOS内核的核心是调度器。当系统包含多个任务或多个线程时,必须使用调度器来决定当前执行哪一个任务或线程。调度器对线程的运行进行控制,并为线程提供一种同步机制。表1列出了这两种RTOS调度器(调度机制)的比较。
μC/OS只支持固定优先级抢占式,不支持时间片轮转调度,调度方法简单、实时性好,用法也简单;eCOS调度方法丰富,适应性好。当然,目前的eCOS只允许在其目标系统中使用一个单独的调度器,未来的版本将可以允许多个调度器协同工作。
4.2 任务间同步、通信机制
RTOS的功能一般要通过若干任务和中断服务程序共同完成,任务与任务之间、任务与中断服务程序之间必须协调动作,互相配合,这就牵涉到任务间的同步与通信问题。表2为这两种操作系统同步与通信机制的比较。
4.3 任务切换时间和中断延迟时间
任务切换时间和中断延迟时间是评估RTOS性能的两个重要指标。任务切换时间可以反映出RTOS执行任务的速度,而中断延迟时间可以反映出RTOS对外界变化的反应速度。表3为这两种操作系统任务切换时间和中断延迟时间的比较。
4.4 对硬件的支持
μC/OS-II和eCOS支持当前流行的大部分嵌入式CPU,都具有很好的可移植特性。μC/OS-II支持从8位到32位的CPU;而 eCOS可以在16位、32位和64位等不同体系结构之间移植。μC/OS-II和eCOS由于本身内核就很小,经过裁剪后的代码最小可以分别为小于 2KB和10KB,所需的最小数据RAM空间可以为4KB和10KB,因此它们对硬件的要求很低,具有极高的经济性。
结语
通过比较可以看到:μC/OS-II相对eCOS来说,源代码最小很多,特别适合学习和研究。它最大的特点是小巧,适合应用在一些RAM和 ROM有限的小型嵌入式系统中,如单片机系统。ECOS最大的特点是配置灵活,适合于用在一些商业级或工业级的嵌入式系统,如一些消费电子、汽车领域等 等。总之,选用什么样的操作系统,要根据目标系统的硬件条件和用户应用程序的复杂度来确定。
2008年12月7日星期日
激光测距仪
In ideal conditions, the LMS 200 is capable of measuring out to 80m over a 180° arc. For an object with only 10% reflectivity (such as matt black cardboard), the LMS 200 can measure out to 10m. The sensor is best for indoor use as it can be dazzled by sunlight (causing it to give erroneous readings).
2008年12月3日星期三
转:Tar用法
tar 使用的选项有:
-c — 创建一个新归档。
-f — 当与 -c 选项一起使用时,创建的 tar 文件使用该选项指定的文件名;当与 -x 选项一起使用时,则解除该选项指定的归档。
-t — 显示包括在 tar 文件中的文件列表。
-v — 显示文件的归档进度。
-x — 从归档中抽取文件。
-z — 使用 gzip 来压缩 tar 文件。
-j — 使用 bzip2 来压缩 tar 文件。
要创建一个 tar 文件,键入:
tar -cvf filename.tar directory/file
在以上的例子中,filename.tar 代表你创建的文件,directory/file 代表你想放入归档文件内的文件和目录。
你可以使用 tar 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:
tar -cvf filename.tar /home/mine/work /home/mine/school
上面的命令把 /home/mine 目录下的 work 和 school 子目录内的所有文件都放入当前目录中一个叫做 filename.tar 的新文件里。
要列出 tar 文件的内容,键入:
tar -tvf filename.tar
要抽取 tar 文件的内容,键入:
tar -xvf filename.tar
这 个命令不会删除 tar 文件,但是它会把被解除归档的内容复制到当前的工作目录下,并保留归档文件所使用的任何目录结构。譬如,如果这个 tar 文件中包含一个叫做 bar.txt 的文件,而这个文件包含在 foo/ 目录中,那么,抽取归档文件将会导致在你当前的工作目录中创建 foo/ 目录,该目录中包含 bar.txt 文件。
请记住,tar 默认不压缩文件。要创建一个使用 tar 和 bzip 来归档压缩的文件,使用 -j 选项:
tar -cjvf filename.tbz file
按照约定俗成,用 bzip2 压缩的 tar 文件具有 .tbz 扩展名。不过,有时用户使用 tar.bz2 扩展名来归档他们的文件。
以上命令创建了一个归档文件,然后将其压缩为 filename.tbz 文件。如果你使用 bunzip2 命令为 filename.tbz 文件解压,filename.tbz 文件会被删除,继之以 filename.tar 文件。
你还可以用一个命令来扩展并解除归档 bzip tar 文件:
tar -xjvf filename.tbz
要创建一个用 tar 和 gzip 归档并压缩的文件,使用 -z 选项:
tar -czvf filename.tgz file
按照约定俗成,使用 gzip 来压缩的 tar 文件具有 .tgz 扩展名。
这 个命令创建归档文件 filename.tar,然后把它压缩为 filename.tgz 文件(文件 filename.tar 不被保留)。如果你使用 gunzip 命令来给 filename.tgz 文件解压,filename.tgz 文件会被删除,并被替换为 filename.tar。
你可以用单个命令来扩展 gzip tar 文件:
tar -xzvf filename.tgz
Linux常用网址
http://linux.chinaitlab.com/special/linuxcom/Index.html
基本操作命令:
----------------------------------------------------------------------
----------------------------------------------------------------------
ls #以默认方式显示当前目录文件列表
ls –a #显示所有文件包括隐藏文件
ls –l #显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行
ls --color=never *.so > obj #不显示文字颜色,将所有so文件记录到obj文件中
----------------------------------------------------------------------
cd dir #切换到当前目录下的dir目录
cd / #切换到根目录
cd .. #切换到到上一级目录
cd ../.. #切换到上二级目录
cd ~ #切换到用户目录,比如是root用户,则切换到/root下
----------------------------------------------------------------------
rm file #删除某一个文件
rm -fr dir #删除当前目录下叫dir的整个目录
----------------------------------------------------------------------
cp source target #将文件source 复制为 target
cp /root/source . #将/root下的文件source复制到当前目录
cp –av soure_dir target_dir #将整个目录复制,两目录完全一样
cp –fr source_dir target_dir #将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同
----------------------------------------------------------------------
mv source target #将文件source更名为target
----------------------------------------------------------------------
diff dir1 dir2 #比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不同则列出
diff file1 file2 #比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的
comm file1 file2 #比较文件,显示两个文件不相同的内容
----------------------------------------------------------------------
echo message #显示一串字符
echo "message message2" #显示不连续的字符串
cat:
cat file #显示文件的内容,和DOS的type相同
cat file | more #显示文件的内容并传输到more程序实现分页显示,使用命令less file可实现相同的功能
more #分页命令,一般通过管道将内容传给它,如ls | more
----------------------------------------------------------------------
export LC_ALL=zh_CN.GB2312 #将环境变量LC_ALL的值设为zh_CN.GB2312
export DISPLAY=0:0 #通过该设置,当前字符终端下运行的图形程序可直接运行于Xserver
date #显示当前日期时间
date -s 20:30:30 #设置系统时间为20:30:30
date -s 2002-3-5 #设置系统时期为2003-3-5
clock –r #对系统Bios中读取时间参数
clock –w #将系统时间(如由date设置的时间)写入Bios
----------------------------------------------------------------------
eject #umout掉CDROM并将光碟弹出,但cdrom不能处于busy的状态,否则无效
----------------------------------------------------------------------
du #计算当前目录的容量
du -sm /root #计算/root目录的容量并以M为单位
find -name /path file #在/path目录下查找看是否有文件file
grep -ir “chars” #在当前目录的所有文件查找字串chars,并忽略大小写,-i为大小写,-r为下一级目录
----------------------------------------------------------------------
vi file #编辑文件file
vi 原基本使用及命令:
输入命令的方式为先按ctrl+c, 然后输入:x(退出),:x!(退出并保存) :w(写入文件),:w!(不询问方式写入文件), :r file(读文件file) ,:%s/oldchars/newchars/g(将所有字串oldchars换成newchars) 这一类的命令进行操作
----------------------------------------------------------------------
man ls #读取关于ls命令的帮助
man ls | grep color #读取关于ls命令的帮助并通过grep程序在其中查找color字串
----------------------------------------------------------------------
startx #运行Linux图形有环境
Xfree86 #只运行X图形server
----------------------------------------------------------------------
reboot #重新启动计算机
halt #关闭计算机
init 0 #关闭所有应用程序和服务,进入纯净的操作环境
init 1 #重新启动应用及服务
init 6 #重新启动计算机
----------------------------------------------------------------------
扩展命令
----------------------------------------------------------------------
----------------------------------------------------------------------
tar xfzv file.tgz #将文件file.tgz解压
tar xfzv file.tgz -C target_path #将文件file.tgz解压到target_path目录下
tar cfzv file.tgz source_path #将文件source_path压缩为file.tgz
tar c directory > directory.tar #将目录directory打包成不压缩的directory.tar
gzip directory.tar #将覆盖原文件生成压缩的 directory.tar.gz
gunzip directory.tar.gz #覆盖原文件解压生成不压缩的 directory.tar。
tar xf directory.tar #可将不压缩的文件解包
----------------------------------------------------------------------
dmesg #显示kernle启动及驱动装载信息
uname #显示操作系统的类型
uname -R #显示操作系统内核的version
----------------------------------------------------------------------
strings file 显示file文件中的ASCII字符内容
----------------------------------------------------------------------
rpm -ihv program.rpm #安装程序program并显示安装进程
rpm2targz program.rpm program.tgz #将rpm格式的文件转换成tarball格式
----------------------------------------------------------------------
su root #切换到超级用户
sulogin /dev/tty4 #在tty4即alt+F4终端等待用户登陆或直接登陆开启一个shell
chmod a+x file #将file文件设置为可执行,脚本类文件一定要这样设置一个,否则得用bash file才能执行
chmod 666 file #将文件file设置为可读写
chown user /dir #将/dir目录设置为user所有
----------------------------------------------------------------------
mknod /dev/hda1 b 3 1 #创建块设备hda1,主设备号为3,从设备号为1,即master硬盘的的第一个分区
mknod /dev/tty1 c 4 1 #创建字符设备tty1,主设备号为4,众设备号为1,即第一个tty终端
----------------------------------------------------------------------
touch /tmp/running #在/tmp下创建一个临时文件running,重新启动后消失
----------------------------------------------------------------------
sleep 9 #系统挂起9秒钟的时间
----------------------------------------------------------------------
lpd stop 或 cups stop #停止打印服务程序
lpd start 或 cups start #启动打印服务程序
lpd restart 或 cups restart #重新启动打印服务程序
lpr file.txt #打印文件file.txt
----------------------------------------------------------------------
fdisk /dev/hda #就像执行了dos的fdisk一样
cfdisk /dev/hda #比fdisk界面稍为友好些
mount -t ext2 /dev/hda1 /mnt #把/dev/hda1装载到 /mnt目录
df #显示文件系统装载的相关信息
mount -t iso9660 /dev/cdrom /mnt/cdrom #将光驱加载到/mnt/cdrom目录
mount-t smb //192.168.1.5/sharedir /mnt -o username=tomlinux,password=tomlinux #将windows的的共享目录加载到/mnt/smb目录,用户名及密码均为tomlinux
mount -t nfs 192.168.1.1:/sharedir /mnt #将nfs服务的共享目录sharedir加载到/mnt/nfs目录
umount /mnt #将/mnt目录卸载,/mnt目录必须处于空闲状态
umount /dev/hda1 #将/dev/hda1设备卸载,设备必须处于空亲状态
sync #将cache中的内容与磁盘同步,在Linux中复制文件,一般要系统空闲才去写文件
e2fsck /dev/hda1 #检查/dev/hda1是否有文件系统错误,提示修复方式
e2fsck -p /dev/hda1#检查/dev/hda1是否有错误,如果有则自动修复
e2fsck -y /dev/hda1#检查错误,所有提问均于yes方式执行
e2fsck -c /dev/hda1#检查磁盘是否有坏区
mkfs /dev/hda1 #格式化/dev/hda1为ext2格式
mkfs.minix /dev/hda1 #格式化/dev/hda1为minix格式文件系统
mfks /dev/hda9 #格工化/dev/hda9为Linux swap格式
swapon /dev/hda9 #将swap分区装载当作内存来用
swapoff /dev/hda9 #将swap分区卸载
----------------------------------------------------------------------
lilo #运行lilo程序,程序自动查找/etc/lilo.conf并按该配置生效
lilo -C /root/lilo.conf #lilo程序按/root/lilo.conf配置生效
grub #在Linux shell状态下运行boot loader设置程序
grub-install #安装grub磁盘引导程序,成功后升级内核无须像lilo一样要重新启动系统,只需修改/etc/grub.conf即可实现新引导配置
rdev bzImage #显示kernel的根分区信息
rdev bzImage /dev/hda1 #将kernel的根分区设置为/dev/hda1,这在没有lilo等引导程序的系统中非常重要.
----------------------------------------------------------------------
dd if=/dev/fd0 of=floppy.fd #将软盘的内容复制成一个镜像,功能与旧石器时代常用的hd-copy相同
dd if=/dev/zero of=root.ram bs=1024,count=1024 #生成一个大小为1M的块设备,可以把它当作硬盘的一个分区来用
mkfs root.ram #将块设备格式化为ext2格式
dd if=root.ram of=/dev/ram0 #将init.rd格式的root.ram的内容导入内存
mount /dev/ram0 /mnt #ramdisk /dev/ram0装载到/mnt 目录
----------------------------------------------------------------------
gcc hello.c #将hello.c编译成名为a.out二进制执行文件
gcc hello.c -o hello #将hello.c编译成名为hello的二进制执行文件
gcc -static -o hello hello.c #将hello.c编译成名为hello的二进制静态执行文件
ldd program #显示程序所使用了哪些库
objcopy -S program #将程序中的符号表及无用的调试信息去掉,可以小很多
----------------------------------------------------------------------
strace netscape #跟踪程序netscape的执行,看调用的库,环境变量设置,配置文件,使用的设备,调用的其它应用程序等,在strace下,程序干了什么东东一目了然。
ps #显示当前系统进程信息
ps –ef #显示系统所有进程信息
kill -9 500 #将进程编号为500的程序干掉
killall -9 netscape #将所有名字为netscape的程序杀死,kill不是万能的,对僵死的程序则无效。
top #显示系统进程的活动情况,按占CPU资源百分比来分
free #显示系统内存及swap使用情况
time program #在program程序结束后,将计算出program运行所使用的时间
----------------------------------------------------------------------
chroot . #将根目录切换至当前目录,调试新系统时使用
chroot /tomlinux #将根目录切换至/tomlinux目录
chroot /tomlinux sbin/init #将根目录切换至/tomlinux并执行sbin/init
adduser id #增加一个叫id的用户
userdel id #增除叫id的用户
userlist #显示已登陆的用户列表
passwd id #修改用户id的密码
passwd -d root #将root用户的密码删除
chown id /work #指定/work目录为id用户所拥有
----------------------------------------------------------------------
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 #设置网卡1的地址192.168.1.1,掩码为255.255.255.0,不写netmask参数则默认为255.255.255.0
ifconfig eth0:1 192.168.1.2 #捆绑网卡1的第二个地址为192.168.1.2
ifconfig eth0:x 192.168.1.x #捆绑网卡1的第二个地址为192.168.1.x
ifconfig down eth1 #关闭第二块网卡,使其停止工作
hostname -F tomlinux.com #将主机名设置为tomlinux.com
route #显示当前路由设置情况
route add default gw 192.168.1.1 metric 1 #设置192.168.1.1为默认的路由
route del default #将默认的路由删除
dhcp #启动dhcp服务
dhclient #启动dhcp终端并自动获取IP地址
ping 163.com #测试与163.com的连接
ping 202.96.128.68 #测试与IP 202。96.128.68的连接
----------------------------------------------------------------------
probe rtl8139 #检查驱动程序rtl8139.o是否正常工作
lsmod #显示已装载的驱动程序
insmod rtl8139.o #装载驱动程序rtl8139.o
insmod sb.o io=0x280 irq=7 dma=3 dma16=7 mpu_io=330 #装载驱动程序并设置相关的irq,dma参数
rmmod rtl8139 #删除名为rtl8139的驱动模块
gpm -k #停止字符状态下的mouse服务
gpm -t ps2 #在字符状态下以ps2类型启动mouse的服务
----------------------------------------------------------------------
telnet 192.168.1.1 #登陆IP为192.168.1.1的telnet服务器
telnet iserver.com #登陆域名为iserver.com的telnet服务器
ftp 192.168.1.1 或 ftp iserver.com #登陆到ftp服务
Linux开发中的常用命令(cygwin环境也同样适用)
以下转自2sLow`s BLOG
cp [选项] 源文件或目录 目标文件或目录
- a 保留链接、文件属性,并递归地拷贝目录,一般在拷贝目录时使用。
- d 拷贝时保留链接。
- f 删除已经存在的目标文件而不提示。
- i 在覆盖目标文件之前将给出提示要求用户确认,进行交互式拷贝。
- p 将文件的修改时间和访问权限也复制到新文件中。
- r 目标文件必须为一个目录名,此时cp将递归复制该目录下所有的子目录和文件。
- l 不作拷贝,只是链接文件。
scp 源文件 目标文件
* 当从另一台服务器复制文件本地到时:scp root@192.168.1.2:/home/root/simple.txt ~/
tar [选项] 文件目录列表
-c 建立新的归档文件
-r 向归档文件末尾追加文件
-x 从归档文件中解出文件
-O 将文件解开到标准输出
-v 处理过程中输出相关信息
-f 对普通文件操作
-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩
-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩
* 打包当前目录下所有文件 tar -cf ./* archive.tar
* 将打包文件解包 tar -xf archive.tar
* 压缩当前目录下所有文件 tar -zcf ./* zipfile.tar.gz
* 解压缩 tar -xzf zipfile.tar.gz
ln [-s] 目标目录 源目录/文件
-s 建立软连接
当含有-s选项是,只会建立源文件的链接,而不会完全拷贝源文件(不占用磁盘空间)。
当没有-s选项是,会建立源文件的完全镜像(占用磁盘空间)。
不管是软连接还是硬链接,都是完全同步的。
* 在/var/www/下,放置/var/www/test/log/目录的软连接
ln -s /var/www/test/log/ /var/www/
chmod [-cfvR] [--help] [--version] [ugoa...][[+-=][rwxX]…][,...] 目标文件1[,目标文件.....]
-c 若该档案权限确实已经更改,才显示其更改动作
-f 若该档案权限无法被更改也不要显示错误讯息
-v 显示权限变更的详细资料
-R 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help 显示辅助说明
–version 显示版本
u 表示该档案的拥有者
g 表示与该档案的拥有者属于同一个群体(group)者
o 表示其他以外的人
a 表示这三者皆
+ 表示增加权限
- 表示取消权限
= 表示唯一设定权限。
r 表示可读取
w 表示可写入
x 表示可执行
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
* 将档案 file1.txt 设为所有人皆可读取 chmod ugo+r file1.txt
* 将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 chmod ug+w,o-w file1.txt file2.txt
* 通过数字设定权限 设定file1.txt的权限为所有人均可读写执行 chmod 777 file1.txt
* 使文件具有root权限(限root使用)chmod 4755 filename
ps [options] [--help]
a 显示现行终端机下的所有程序,包括其他用户的程序。
-A 显示所有程序。
c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
-e 此参数的效果和指定”A”参数相同。
e 列出程序时,显示每个程序所使用的环境变量。
f 用ASCII字符显示树状结构,表达程序间的相互关系。
-H 显示树状结构,表示程序间的相互关系。
-N 显示所有的程序,除了执行ps指令终端机下的程序之外。
s 采用程序信号的格式显示程序状况。
S 列出程序时,包括已中断的子程序资料。
-t 终端机编号,指定终端机编号,并列出属于该终端机的程序的状况。
u 以用户为主的格式来显示程序状况。
x 显示所有程序,不以终端机来区分。
* 显示所有httpd的进程 ps -aux | grep httpd
top [选项]
- d:指定更新的间隔,以秒计算。
- q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
- c:显示进程完整的路径与名称。
- S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。
- s:安全模式。
- i:不显示任何闲置(Idle)或无用(Zombie)的行程。
- n:显示更新的次数,完成后将会退出to
显示参数:
- 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配置文件的推荐方法。
du [选项] [目录名]
-s 对每个Names参数只给出占用的数据块总数。
-a 递归地显示指定目录中各文件及子孙目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-b 以字节为单位列出磁盘空间使用情况(系统缺省以k字节为单位)。
-k 以1024字节为单位列出磁盘空间使用情况。
-c 最后再加上一个总计(系统缺省设置)。
-l 计算所有的文件大小,对硬链接文件,则计算多次。
-x 跳过在不同文件系统上的目录不予统计。
tail [选项] [文件名]
+行数 从[行数]开始显示文本。
-行数 显示本文最后[行数]的内容。
-f 实时监控文本的内容