新手任务之入门篇入门―指令篇

ARM汇编编程基础之三&——&基本寻址方式与基本指令
要想进行ARM的汇编编程,首当其冲要知道最基本、最常用的指令,而要了解指令则必须要了解寻址方式。所以本文将聚焦在——基本寻址方式和基本指令。
首先,来看一看我们已经见过的2条指令:MOV pc, BL addsub
最简单的汇编指令格式是操作码(例如:MOV、BL)和操作数(例如:pc, lr,
addsub)。操作码易于理解,例如MOV表示将某个值从一处传送到另一处,BL表示跳转到某处;而操作数则表示一处和另一处到底是哪里(是在寄存器中还是内存中),要跳转的位置在哪里(或者是绝对地址或者是相对地址)。
操作数部分要解决的问题是:到哪里去获得操作数?因此就有了寻址方式的分类。基本上来讲,ARM共有8种寻址方式,本文我们了解其中最基本的3种寻址方式:寄存器寻址、立即数寻址、寄存器间接寻址。
1、寄存器寻址
MOV pc, lr
表示操作数来源于寄存器(pc和lr)。这种寻址方式,在指令的32位机器码中的地址码部分,存放的是寄存器(pc和lr)的编号,故称之为寄存器寻址。
2、立即数寻址
MOV pc, #64
表示将常数64放入寄存器pc,其中常数64被称为立即数。立即数寻址指令中的地址码部分就是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(故称为立即数)。
这里,可能大家会看出一个问题:由于立即数是位于32位机器码中的,而32位机器码中除了操作数外还有操作码,这就意味着不可能用全部32bit来表示立即数。事实上,ARM机器指令中,仅用了最低的12bit来表示立即数。那么我们自然推论立即数的范围是-2048——2047,这意味着MOV
pc, #8192这样的指令是非法的。但事实情况并非如此,MOV
pc,#8192是合法且能正常运行的。真实情况是,ARM机器指令可以表示的立即数范围是-2^31--2^31-1,只不过它只能表示这其中的2^12个数而已。ARM是这样用12bit来表示1个立即数的:将12bit划分为2部分——高4位和低8位,将低8位补0扩展为32位,然后循环右移X位(X
= 高4位表示的无符号整数*2),例如:如果32位机器码中低12bit为0x512,则其表示的立即数为0x
这里,请大家不妨现在先思考2个问题,我们将在后续文章中予以解答:
1)、为什么ARM要这样设计,而不是按照我们最常见的想法(即:12bit就表示-2^11 -- 2^11-1中的数)
2)、如果我们需要mov r0, #10000这样的指令,应该怎么办?(常数10000不能按照如上的方法进行表示)
3、寄存器间接寻址
寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。例如:
LDR R0, [R2]表示将R2的值作为内存地址,到该内存处取出存放的数,放到寄存器R0中
&&&&&& 执行LDR R0,
[R2]前的情况&&&&&&&&&&&&&&&&&&&&
执行LDR R0, [R2]后的情况
了解了基本的寻址方式后,我们现在来看一看最常用的汇编指令
1、单寄存器加载指令。主要有
加载字指令:LDR r0, [r1],将内存中的一个字(4个字节)加载到寄存器r0中
加载字节指令:LDRB r0, [r1],将内存中的一个字节加载到寄存器r0中
有符号数加载字节指令:LDRSB r0,
[r1],这条指令与上一条指令的不同之处在于,由于加载的是一个字节,而不是一个字,所以需要确定寄存器r0的高24bit是什么。对于上一条指令,r0的高24bit补0,而本条指令,r0的高24bit补符号位,也就是补r0的bit7
2、单寄存器存储指令。主要有
存储字指令:STR r0, [r1],将r0中的值存储到内存的4个字节中
存储字节指令:STRB r0, [r1],将r0的低8bit存储到内存的1个字节中
3、分支指令,共3条:B、BL、BX
B label :跳转到标号label处,也就是说在该条b指令执行后,下一条执行的指令是标号label处的指令。
:与B指令的功能相同,也实现跳转,不同之处在于,bl在跳转的同时还要将返回地址(bl指令的下一条指令的地址)保存到lr中
:将r0的值作为地址,跳转到该地址处,并根据r0的值决定是否在ARM和thumb态之间进行切换。(关于BX指令,以及ARM态和thumb态的切换,详见“ARM程序与thumb程序的切换”一文)
特别说明:
B和BL指令,其跳转范围限制在当前指令的±32M字节地址内(ARM指令为字对齐,最低2位地址固定为0)。这是为什么呢?详见“杂项解释”一文。
4、数据处理指令
MOV r0, r1:将r1的值赋给r0
ADD(SUB) r0, r1, r2:将r1的值加上(减去)r2的值,结果存放到r0中
AND(ORR, EOR) r0, r1, r2:将r1的值与(或、异或)r2的值,结果存放到r0中
CMP r1, r2:比较r1与r2值的大小
特别需要说明的问题:
r1,r2,其作用细节是:执行r1-r2的操作,如果结果为负数,则置位CPSR的N位,清零Z位;结果为0,则清零CPSR的N位,置位Z位;结果为正,则清零CPSR的N位,清零Z位。但r1-r2的结果并不保存。CMP指令通常用于分支跳转。例如,如下的C程序
int i,j;
if (i == j) {
} else {
如果使用汇编语句改写的话,就应该写为:
使用ldr指令将变量i的值放入r0
使用ldr指令将变量j的值放入r1
cmp r0, r1
addeq r0, r0, #1
使用streq指令将r0的值放入变量i中
add r1, r1, #1
使用str指令将r1的值放入变量j中
label&& 其它代码
其中addeq, streq, beq这几条指令,是add, str,
b指令的条件执行版本。讲到这里就不得不讲解一下什么是条件执行了。ARM指令集的所有指令均支持条件执行,条件执行指的是,指令可以根据执行时的情况(CPSR的条件代码标志位)决定自身是否被执行。eq表示如果CPSR的Z位为1(对于本程序,实际上就是r0的值与r1的值相等,因为cmp会根据r0与r1的值设置Z位)的情况下,该指令要执行,否则不执行。
其它条件助记符如下:
条件助记符
无符号数大于或等于
无符号数小于
无符号数大于
无符号数小于或等于
有符号数大于或等于
有符号数小于
有符号数大于
有符号数小于或等于
无条件执行 (指令默认条件)
从不执行(不要使用)
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。DOS 命令集锦——最常用命令 
cd 改变当前目录 sys 制作DOS系统盘 copy 拷贝文件 del 删除文件 deltree 删除目录树 dir 列文件名 diskcopy 制磁盘 edit 文本编辑 format 格式化磁盘 md 建立子目录 mem 查看内存状况 type 显示文件内
&cd     改变当前目录      sys   制作DOS系统盘
copy    拷贝文件         del   删除文件
deltree   删除目录树       && dir   列文件名
diskcopy  制磁盘          edit  文本编辑
format    格式化磁盘       & md   建立子目录
mem     查看内存状况     type  显示文件内容
rd     删除目录         ren   改变文件名
  记得多少啊,忘了就去上课看看,下面四个命令是新的,给出命令格式,你自己试试看,学电脑重要的就是摸索。
  cls     清屏
[适用场合]  屏幕上太乱了,或是屏幕上出现乱码了, 清除屏幕上显示内容但不
影响电脑内部任何信息
[用  法]  cls  回车
  move     移动文件,改目录名 
[适用场合]  移动文件到别的目录
[用  法]  move [文件名] [目录]        移动文件至新目录下
        move [目录名] [目录名]       改目录名
[例  子]  c:\&move c:\autoexec.bat c:\old?
        移动autoexec.bat文件至old目录下
        c:\&move c:\config.sys c:\temp?
        移动config.sys文件至old目录下
  more    分屏显示
[适用场合]  当输出很多一屏显示不下时采用,几乎适合所有命令,尤其是type
等命令时很有用。 使用more时磁盘不能有写保护,也不适合光驱。
[用  法]  type [文件名] | more        分屏显示文件内容
        more & [文件名]          分屏显示文件内容
[例  子]  C:\&type msdos.w40 | more
  xcopy    拷贝目录和文件
[适用场合]  在进行连同子目录一起拷贝时很有用,在拷贝大量文件时比COPY命令
[用  法]  xcopy [文件名] [目录]       将指定文件拷贝到指定目录
        xcopy [源目录] [目的目录]  将源目录连子目录考到目的目录下
        xcopy *.* [目录] /s   将文件与非空子目录拷贝到指定目录
        其它常用参数还有: v 拷贝后校验,会影响速度
e 与s 相似,但即使子目录是空的也会拷贝。
 那该怎样查一个命令的用法呢?这就要用到help命令,它可提供所有命令的帮助。
  help    帮助
[适用场合]  当您想具体了解DOS命令的使用方法时使用
[用  法]  help                提供所有DOS命令帮助
        help [DOS命令]           提供有关命令的帮助
  如果你只大致记得某个命令,可以在提示符后直接输入help命令,然后将出现下面的画面:
  将光标移至需查询的命令,回车后可查询到其语法格式,比如 cd 命令吧:
  将光标移至&Notes&,回车后可查询到其详细语法及功能的解释;将光标移至&Examples&,回车后可查询到其语法的详细举例,我们常用举例功能,下面是点&Examples&后出现的画面
  如你记得是什么命令就好办了,可以按Alt+S键选择&Find&(查找),则会弹出下面的对话框
  输入需查找的DOS命令,回车后可立即查询到有关命令的详细信息。 (责任编辑:电脑入门到精通网 )
------分隔线----------------------------
相关热门文章!
电脑知识栏目列表
热门电脑知识学习
推荐电脑知识学习posts - 286,&
comments - 1542,&
trackbacks - 0
蜜果私塾:常用Linux命令合集
——基本操作篇
文:阿蜜果
日期:转载请注明出处:
看到有朋友在技术博客上汇总自己常用的Linux命令,我常用的Linux命令都记在各个备忘录中,不够集中,今天顺便做个合集吧!以便自己和他人更好的查看。&&& doc文件下载地址:蜜果私塾:常用Linux命令合集-.rar1.1 文件和目录管理
1.1.1&创建文件:touch 文件名&&&&&&&& touch 文件名:用于新建文本文件,若文件已存在时,更改最新时间,但内容不变。
&&&&&&&& 例如在所在目录创建amigo.txt文件,命令为:
[sn@minicc&~]$&touch&amigo.txt
1.1.2 查看文件内容并分屏:more 文件名
&&&&&&&& more 文件名:该命令用于显示文件内容,当文件内容很多时,进行分屏显示,按Enter键向下滚动,按“Ctrl+C”取消查看,例如分屏显示amigo.txt文件的内容:
[sn@minicc&~]$&more&amigo.txttesttesttesttest…--More—(61%)
1.1.3 查看文件内容并不分屏显示:cat 文件名
&&&&&&&& cat 文件名:该命令与“more 文件名”类似,但是它不会进行分屏显示。
1.1.4&创建目录:mkdir 目录名&&&&&&&& 该命令用于创建目录,例如在当前目录创建amigodir目录,命令如下:
[sn@minicc&~]$&mkdir&amigodir
&&&&&&&& 如果创建的目录已经存在,错误信息参考如下:
[sn@minicc&~]$&mkdir&amigodirmkdir:&cannot&create&directory&`amigodir':&File&exists
1.1.5 更改文件名或目录名:mv 原文件名或目录名 新文件名或目录名
&&&&&&&& Linux中没有rename命令,使用mv(移动)命令进行文件或目录名的更改,例如将amigo.txt文件名更改为amigo1121.txt,命令参考如下:
[sn@minicc&~]$&mv&amigo.txt&amigo1121.txt
&&&&&&&& 又例如将amigodir目录更名为amigo1121dir目录,命令如下:
[sn@minicc&~]$&mv&amigodir&amigo1121dir
&&&&&&& mv命令执行后,只有新文件(目录)名的文件(目录)存在。
1.1.6 拷贝文件或目录:cp 原文件或目录 新文件或目录&&&&&&&& cp命令用于进行文件或目录的拷贝,例如将amigo1121.txt文件拷贝到amigo.txt文件(内容也被拷贝)中,所用命令为:
[sn@minicc&~]$&cp&amigo1121.txt&amigo.txt
&&&&&&&& 将amigo1121dir目录复制一份到amigodir目录,若amigodir目录不存在,创建新目录,并将amigo1121dir目录下的子文件也拷贝过去,命令参考如下:
[sn@minicc&~]$&cp&-r&amigo1121dir&amigodir
1.1.7 删除空目录:rmdir 空目录名&&&&&&&& 该命令只能删除空目录,若目录下面有文件,会提示如下错误:
[sn@minicc&~]$&rmdir&amigodirrmdir:&amigodir:&Directory&not&empty
1.1.8 删除目录或文件:rm 名称(目录或文件名)&&&&&&&& 笔者一般使用命令:rm –rf 目录或文件名,用于强制删除后面所接名称的目录或文件名,例如强制删除当前目录下amigo1121dir文件夹,所用命令为:
[sn@minicc&~]$&rm&-rf&amigo1121dir
&&&&&&&& 说明:操作该命令时一定要小心,笔者公司有位实习生就发生过这样一个悲剧,在一台重要机器的/home目录下,她运行一个“rm -rf *”,将下面所有的东西都删除了,哈哈!
1.1.9 显示目录内容:ls 选项&[目录名]&&&&& 该命令用于显示目录内容,有多个选项,常用的选项如下:
-a:列出目录下的所有文件,包括以“.”开头的隐含文件;
-k:以k字节的形式表示文件的大小;
-l:列出文件的详细信息;
-s:在每个文件名后输出该文件的大小。
笔者常用的命令为:ls –al [目录名],例如显示当前目录下所有文件和目录:
[sn@minicc&~]$&ls&-altotal&84980drwxrwxr-x&13&sn&&&oinstall&&&&&4096&Jul&25&22:17&.drwxr-xr-x&32&root&root&&&&&&&&&4096&Jul&11&20:05&..drwxr-xr-x&2&sn&&&oinstall&&&&&4096&Jul&25&22:18&amigo1121dir-rw-r--r--&1&sn&&&oinstall&&&&&&341&Jul&25&21:43&amigo1121.txt-rw-------&1&sn&&&oinstall&&&&22266&Jul&25&19:30&.bash_history-rw-r--r--&1&sn&&&oinstall&&&&&&&33&Aug&9&2010&.bash_logout-rw-r--r--&1&sn&&&oinstall&&&&&&647&Apr&21&10:46&.bash_profile-rw-r--r--&1&sn&&&oinstall&&&&&&124&Aug&9&2010&.bashrc……
若当前目录下文件众多,想查看以amigo开头的文件或目录的详细信息,可使用:
[sn@minicc&~]$&ls&-al&amigo*-rw-r--r--&1&sn&oinstall&341&Jul&25&21:43&amigo1121.txt-rw-r--r--&1&sn&oinstall&341&Jul&25&21:54&amigo.txtamigo1121dir:total&8drwxr-xr-x&2&sn&oinstall&4096&Jul&25&22:18&.drwxrwxr-x&13&sn&oinstall&4096&Jul&25&22:17&..
1.1.10 显示当前所在目录:pwd
&&&&&&&& 该命令用于显示当前所在的详细路径,参考运行结果:
[sn@minicc&~]$&pwd/home/sn
1.1.11 改变当前目录:cd [目录名]
&&&&&&&& 该命令可以用于切换目录,常用的有:
&&&&&&&& cd ..:切换到当前目录的上一级目录,参考如下:
[sn@minicc&~]$&cd&amigo1121dir[sn@minicc&amigo1121dir]$&pwd/home/sn/amigo1121dir[sn@minicc&amigo1121dir]$&cd&..[sn@minicc&~]$&pwd/home/sn[sn@minicc&~]$
&&&&&&&& 从上可以看出,运行“cd ..”命令后,目录从/home/sn/amigo1121dir切换到了它的上级目录:/home/sn目录。
&&&&&&&& 如下cd命令下不加任何东西,表示切换到该用户的根目录,例如在sn用户下运行cd命令,切换到/home/sn目录。
&&&&&&&& cd 目录名:例如如上运行的:cd amigo1121dir,表示切换到当前目录的子目录amigo1121dir。目录名也可以详细的名称,例如:
[sn@minicc&~]$&cd&/home/sn/amigo1121dir/test222[sn@minicc&test222]$&pwd/home/sn/amigo1121dir/test222[sn@minicc&test222]$
1.1.12 更改文件或目录权限:chmod 权限设定字符串 文件或目录名
&&&&&&&& 该命令用于更改文件或目录的读、写和执行权限,有关权限代号的部分,列表于下:
&& r:读取权限,数字代号为"4"。
&& w:写入权限,数字代号为"2"。
&& x:执行或切换权限,数字代号为"1"。
&& -:不具任何权限,数字代号为"0"。
&&&&&&&& 一般设定权限为777(可读、可写和可执行)或755(可读、可执行),
&&&&&&&& 例如将当前目录下的amigo.txt文件的权限改成可读、可写、可执行,参考命令如下:
[sn@minicc&~]$&chmod&777&amigo.txt
&&&&&&&& 如果要将某个目录也改成可读、可写、可执行,例如将amigo1121dir目录的权限进行修改,参考命令如下:
[sn@minicc&~]$&chmod&777&amigo1121dir
&&&&&&& 需要注意的是,如上命令只会改变所操作的目录,若想将该目录下的所有文件、子目录都改成777的权限,比上加上“-R”,例如将amigo1121dir目录下的所有文件或子目录修改成777权限,所用命令为:
[sn@minicc&~]$&chmod&777&-R&amigo1121dir
1.2 用户和用户组管理
1.2.1 创建用户:useradd [-u UID] [-g initial_group] [-G other_group] [-d 用户目录]&&&&&&&& 添加Linux用户一般使用root用户来添加。Useradd命令不指定-d参数时,表示该用户的home目录为:/home/用户名。
&&例如添加所属组为mysql组的用户名为amigo的用户,所用命令参考如下:
[root@minicc&~]#&useradd&-g&mysql&amigo
1.2.2&设置用户密码:passwd 用户名&&&&&&&& 使用passwd命令设置用户的密码,例如设置amigo用户的密码,可使用:
[root@minicc&~]#&passwd&amigo&Changing&password&for&user&amigo.New&UNIX&password:
&&&&&&&& 输入一次密码,按Enter,再输入确认密码按Enter后完成设置。
&&&&&&&& 若要设置root用户的密码,直接用“passwd”命令,后面不用加用户名就可以。
1.2.3 删除用户:userdel [-r] [用户帐号]&&&&&&&& userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。-f 删除用户登入目录以及目录中所有文件。
&&&&&&&& 例如:删除amigo1121用户,但不删除其所在的目录(例如:/home/amigo1121目录),参考命令为:
[root@minicc&~]#&userdel&amigo1121
&&&&&&&& 如果想删除用户的同时,将其用户目录删除,例如删除amigo用户及其用户目录,参考命令为:
[root@minicc&home]#&userdel&-r&amigo
1.2.4 切换用户:su - 用户名
&&&&&&&& 在某个用户下面操作时,可以进行用户切换,例如在sn用户下切换到amigo用户,所用命令为:
[sn@minicc&~]$&su&-&amigoPassword:
&&&&&&&& 输入amigo用户的密码后按Enter成功进行切换。若在root用户下进行用户切换,只需要运行“su – 用户名”,不用输入密码就能切换,因为root用户具有最高权限。
1.2.5 设置用户环境变量:.bash_profile&&&&&&&& 在Windows下点击“我的电脑”-&“属性”-&“高级”-&“环境变量”,可以进行用户环境变量的设置,在Linux下用户的环境变量在该用户根目录(例如:/home/amigo目录)的.bash_profile文件中,可使用vi等文件编辑命令进行设置。
& 该文件的初始内容参考如下:
#&.bash_profile#&Get&the&aliases&and&functionsif&[&-f&~/.bashrc&];&then&&&&&&&&.&~/.bashrcfi#&User&specific&environment&and&startup&programsPATH=$PATH:$HOME/binexport&PATH
&& 例如,若想在该用户下配置MySQL数据库的访问,.bash_profile文件修改参考如下:
#&.bash_profile#&Get&the&aliases&and&functionsif&[&-f&~/.bashrc&];&then&&&&&&&&.&~/.bashrcfi#&User&specific&environment&and&startup&programsSDFDB=host@localhost:user@mysql:passwd@mysql123:db@sdp:charset@utf8:export&SDFDB&MYSQLDIR=/home/mysqlexport&MYSQLDIRPATH=$PATH:$MYSQLDIR/binLD_LIBRARY_PATH=$MYSQLDIR/lib/mysql:$LD_LIBRARY_PATHexport&LD_LIBRARY_PATHPATH=$PATH:$HOME/binexport&PATHexport&DBTESTPORT=22unset&USERNAME
&&&需要注意的是,要使该文件生效,需要在编辑完.bash_profile文件后运行如下命令:
[amigo@minicc ~]$ source .bash_profile
&&&&&&&&若要使所设置的用户环境变量在该用户启动的应用程序生效,最好关闭该窗口,新开一个窗口,执行该应用程序的重启操作。
1.2.6&创建工作组:groupadd 工作组名&&&&&&&&若要创建test1121的工作组,参考命令如下:
[root@minicc&~]#&groupadd&test1121
1.2.7 删除工作组:groupdel 工作组名
&&&&&&&& 例如,删除test1121的工作组,参考命令如下:
[root@minicc&~]#&groupdel&test1121
1.2.8 更改用户所属工作组:usermod -g 工作组名 用户名
&&&&&&&& 例如更改amigo用户(创建时设置的工作组为mysql)的工作组为test1121,命令如下:
[root@minicc&~]#&usermod&-g&test1121&amigo
1.2.9 查看用户的身份:id用户名
&&&&&&&& 查看用户的身份可使用id命令,例如查看amigo用户的身份,参考运行结果如下:
[root@minicc&~]#&id&amigouid=543(amigo)&gid=542(test1121)&groups=542(test1121)
&&&&&&&& 如果要查看root用户的身份,可直接使用“id”命令,参考结果如下:
[root@minicc&~]#&iduid=0(root)&gid=0(root)&groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
1.3 Linux系统管理
1.3.1 重启Linux启动:reboot&&&&&&&& 使用reboot命令相当于Windows下的重新启动。
1.3.2 关闭Linux系统:shutdown -h now&&&&&&&& 使用该命令立即关闭所在的Linux系统。
1.3.3 查看各分区的使用情况:df -k或使用df -h&&&&&&&& 笔者一般使用df –k查看硬盘的使用情况,命令参考返回结果如下:
[root@minicc&~]#&df&-kFilesystem&&&&&&&&&&&1K-blocks&&&&&&Used&Available&Use%&Mounted&on/dev/sda3&&&&&&&&&&&&%&//dev/sda1&&&&&&&&&&&&&&&101086&&&&&11846&&&&&84021&13%&/boottmpfs&&&&&&&&&&&&&&&&&&1029784&&&&&&&&&0&&&1029784&&&0%&/dev/shm[root@minicc&~]#&df&-hFilesystem&&&&&&&&&&&&Size&Used&Avail&Use%&Mounted&on/dev/sda3&&&&&&&&&&&&&143G&&&25G&111G&19%&//dev/sda1&&&&&&&&&&&&&&99M&&&12M&&&83M&13%&/boottmpfs&&&&&&&&&&&&&&&&1006M&&&&&0&1006M&&&0%&/dev/shm
1.3.4 查看内核/操作系统/CPU信息:uname -a
&&&&&&&& 该命令的参考返回结果如下所示:
[root@minicc&~]#&uname&-aLinux&minicc&2.6.18-164.el5&#1&SMP&Thu&Sep&3&03:28:30&EDT&&x86_64&x86_64&GNU/Linux
1.3.5 查看计算机名:hostname
&&&&&&&& 该命令用于查看当前计算机名,参考运行结果如下:
[root@minicc&~]#&hostnameminicc
1.3.6 查看内存使用量和交换区使用量:free –m
&&&&&&&& 命令参考返回结果如下:
[root@minicc&~]#&free&-m&&&&&&&&&&&&&&total&&&&&&&used&&&&&&&free&&&&&shared&&&&buffers&&&&&cachedMem:&&&&&&&&&&2011&&&&&&&1973&&&&&&&&&37&&&&&&&&&&0&&&&&&&&105&&&&&&&&866-/+&buffers/cache:&&&&&&&1000&&&&&&&1010Swap:&&&&&&&&&2047&&&&&&&&940&&&&&&&1106
1.3.7 查看系统进程信息:top
&&&&&&该命令在分析系统的进程的CPU、内存等的占有率时很有用,在做性能测试或性能分析时常被用到,命令参考实时运行结果如下:
top&-&10:58:06&up&36&days,&2:24,&9&users,&load&average:&0.35,&0.65,&0.68Tasks:&191&total,&&&5&running,&186&sleeping,&&&0&stopped,&&&0&zombieCpu(s):&0.0%us,&0.2%sy,&0.0%ni,&99.7%id,&0.2%wa,&0.0%hi,&0.0%si,&0.0%stMem:&&&2059568k&total,&2021772k&used,&&&&37796k&free,&&&108396k&buffersSwap:&2096472k&total,&&&963064k&used,&1133408k&free,&&&887800k&cached&PID&USER&&&&&&PR&NI&VIRT&RES&SHR&S&%CPU&%MEM&&&&TIME+&COMMAND&&19338&root&&&&&&15&&&0&&816&R&0.3&0.1&&&0:00.06&top&&&&&&&&&&&&&&&&&&&&&&&1&root&&&&&&15&&&0&8&S&0.0&0.0&&&0:05.31&init&&&&&&&&&&&&&&&&&&&&&&2&root&&&&&&RT&-5&&&&&0&&&&0&&&&0&S&0.0&0.0&&&0:00.65&migration/0&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&3&root&&&&&&34&19&&&&&0&&&&0&&&&0&S&0.0&0.0&&&0:01.10&ksoftirqd/0&&&&&&&&&&&&&&&&&4&root&&&&&&RT&-5&&&&&0&&&0&&&&0&S&0.0&0.0&&&0:00.00&watchdog/0&……
&&& 前五行是系统整体的统计信息。第一行是任务队列信息,第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。
最后两行为内存信息。内容如下:
Mem:2059568k total 物理内存总量,2021772k used 使用的物理内存总量,37796k free 空闲内存总量,108396k buffers 用作内核缓存的内存量。
Swap:2096472k total 交换区总量,963064k used 使用的交换区总量,1133408k free 空闲交换区总量,887800k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
接下来是进程信息区,统计信息区域的下方显示了各个进程的详细信息。
1.3.8 实时查看服务器信息:vmstat 刷新间隔(单位:秒)&&&&&&&& 该命令常用来做Linux服务器监控,用该命令可以收集服务器信息来展现服务器情况,直接运行“vmstat”命令收集的是当前的情况,若想实时的一直查看服务器的状况,可使用“vmstat 刷新间隔(单位:秒)”表示隔多少秒显示一次实时运行结果,例如间隔3秒显示vmstat的结果,参考命令如下:
[root@minicc&~]#&vmstat&3procs&-----------memory----------&---swap--&-----io----&--system--&-----cpu------&r&b&&&swpd&&&free&&&buff&cache&&&si&&&so&&&&bi&&&&bo&&&in&&&cs&us&sy&id&wa&st&0&0&68&540&&&&0&&&&0&&&&&2&&&&20&&&&1&&&&0&0&0&100&0&0&4&0&68&540&&&&0&&&&0&&&&&0&&&&56&&0&0&100&0&0&1&0&68&540&&&&0&&&&0&&&&&0&&&&16&&0&0&100&0&0
1.3.9 查看进程信息:ps [–u 用户名]
&&&&&&&& 这个命令很常用,一般与kill命令配合使用,用于首先查看所需要杀掉的进程的id,接着使用kill命令将其杀掉。
&&&&&&&& 例如,查看sn用户下进程的运行情况,命令参考返回结果如下:
[sn@minicc&~]$&ps&-u&sn&PID&TTY&&&&&&&&&&TIME&CMD13138&?&&&&&&&&00:00:00&ininit13139&?&&&&&&&&00:00:00&sipgw13140&?&&&&&&&&00:00:00&manager13141&?&&&&&&&&00:00:00&scf13142&?&&&&&&&&00:00:00&inesgateway13143&?&&&&&&&&00:00:00&scf_sync13144&?&&&&&&&&00:00:00&scf18180&pts/5&&&&00:00:00&bash18368&pts/7&&&&00:00:00&bash18937&?&&&&&&&&00:00:00&sshd18938&pts/17&&&00:00:00&bash19486&pts/11&&&00:00:00&bash19520&pts/11&&&00:00:00&ps
&&&&&&&& 第一列显示的就是进程的ID信息。
1.3.10 杀掉进程:kill&[-9] 进程id&&&&&&&在有些应用程序出现问题,无法停止进程时,可使用kill命令将进程杀掉,一般使用“kill -9 进程ID”来进行强制杀掉。例如想杀掉1.3.9中ID为13138的进程,接着使用ps –u命令查看是否成功杀掉进程,参考运行结果如下:
[sn@minicc&~]$&kill&-9&13138[sn@minicc&~]$&ps&-u&sn&&&&&&PID&TTY&&&&&&&&&&TIME&CMD13139&?&&&&&&&&00:00:00&sipgw13140&?&&&&&&&&00:00:00&manager13141&?&&&&&&&&00:00:00&scf13142&?&&&&&&&&00:00:00&inesgateway13143&?&&&&&&&&00:00:00&scf_sync13144&?&&&&&&&&00:00:00&scf18180&pts/5&&&&00:00:00&bash18368&pts/7&&&&00:00:00&bash18937&?&&&&&&&&00:00:00&sshd18938&pts/17&&&00:00:00&bash19486&pts/11&&&00:00:00&bash19534&pts/11&&&00:00:00&ps
1.4 Linux网络命令
1.4.1 查看IP设置信息:ifconfig&&&&&&&在root用户下(默认创建的其它用户没有执行该命令的权限)运行ifconfig命令,可查看当前Linux系统的IP、网关、子网掩码等设置信息,参考返回结果如下:
[root@minicc&~]#&ifconfigeth0&&&&&&Link&encap:Ethernet&HWaddr&xxxxxxxxx&&&&&&&&&&&inet&addr:192.168.2.132&Bcast:192.168.2.255&Mask:255.255.255.0&&&&&&&&&&……lo&&&&&&&&Link&encap:Local&Loopback&&&&&&&&&&&inet&addr:127.0.0.1&Mask:255.0.0.0&&&&&&&&&……
1.4.2 设置Linux的IP
常用的修改Linux系统IP的方法有如下几种:
(1)通过Linux图形界面,点击“网络”修改IP,这个是在能接触到图形界面时最常用的方式,笔者比较常用;
&& (2)通过ifconfig命令,语法为(其中eth后的X表示网卡设备号,eth0表示网卡0):
ifconfig&ethX&IP地址&netmask&子网掩码
&&&例如,设置网卡0的IP地址为192.168.2.18,子网掩码为255.255.2550,命令参考如下:
ifconfig&eth0&192.168.2.18&netmask&255.255.255.0
&&& 需要注意的是:该命令设置的IP在重启后失效,所以笔者一般采用下面第三种方式。
&& (3)如果要修改网卡0的IP信息,直接改/etc/sysconfig/network-scripts/ifcfg-eth0(如果有网卡1,它的IP信息在ifcfg-eth1文件中,以此类推)文件,例如该文件的参考配置:
DEVICE=eth0BOOTPROTO=noneHWADDR=……ONBOOT=yesTYPE=EthernetNETMASK=255.255.255.0IPADDR=192.168.2.132GATEWAY=192.168.2.1
&&& 其中GATEWAY表示网关地址,NETMASK表示子网掩码,IPADDR表示IP地址。
记住修改完成后需要重新启动网络才能生效,命令如下:
service&network&restart
&& (4)通过setup可视命令,听说比较好用,但笔者用得比较少。
&笔者一般采用第1、3种方式。1.4.3 FTP系列命令:ftp IP地址、bi、get、put、bye
&&&&ftp命令的功能是在本地机和远程机之间传送文件。该命令的一般格式如下:、
ftp&主机名/IP
&&&例如,FTP到192.168.2.131机器,用户名为acd,密码:xxxxxx,参考命令如下:
[sn@minicc&~]$&ftp&192.168.2.132Connected&to&192.168.2.132.220&(vsFTPd&2.0.5)530&Please&login&with&USER&and&PASS.530&Please&login&with&USER&and&PASS.KERBEROS_V4&rejected&as&an&authentication&typeName&(192.168.2.132:sn):&acd331&Please&specify&the&password.Password:230&Login&successful.Remote&system&type&is&UNIX.Using&binary&mode&to&transfer&files.
FTP登录进去后,进入acd用户的home目录(/home/acd),可使用在该用户下能运行的所有Linux命令,例如cd、pwd、ls等命令:
ftp&&pwd257&"/home/acd"ftp&&ls227&Entering&Passive&Mode&(192,168,2,132,211,179)150&Here&comes&the&directory&listing.-rw-r--r--&&&&1&521&&&&&&507&&&&&&&&&&&&&0&Jun&21&01:58&1.txtdrwxr-xr-x&&&11&521&&&&&&507&&&&&&&&&&4096&Dec&31&2010&cin-rw-r--r--&&&&1&521&&&&&&507&&&&&&&Apr&07&02:01&cin.tar.gz-rw-r--r--&&&&1&521&&&&&&507&&&&&&&3520190&May&26&08:27&numinfo.txt226&Directory&send&OK.ftp&&cd&cin250&Directory&successfully&changed.
FTP命令主要用于从FTP机器获取文件(get命令),或将某个文件放到FTP连接上机器的目录上。在进行文件传输前,一般要运行bi(或binary)命令,将文档传送类型配置为二进制传输方式。
演示连接到FTP(192.168.2.132)后,浏览连接到的用户的home目录(/home/acd)下的文件,切换文档传送类型为二进制方式(bi),接着将该目录下的numinfo.txt文件取下来(使用命令:get 文件名,取下来文件放置的目录为FTP命令执行前所在的目录,例如:/home/sn),而后将FTP命令执行前所在的目录(例如:/home/sn)下的amigo.txt文件通过put命令将其放到ftp机器的目录下。最后使用bye命令断开ftp连接,一连串ftp操作命令如下所示:
[sn@minicc&~]$&ftp&192.168.2.132Connected&to&192.168.2.132.220&(vsFTPd&2.0.5)530&Please&login&with&USER&and&PASS.530&Please&login&with&USER&and&PASS.KERBEROS_V4&rejected&as&an&authentication&typeName&(192.168.2.132:sn):&acd331&Please&specify&the&password.Password:230&Login&successful.Remote&system&type&is&UNIX.Using&binary&mode&to&transfer&files.ftp&&ls227&Entering&Passive&Mode&(192,168,2,132,20,34)150&Here&comes&the&directory&listing.-rw-r--r--&&&&1&521&&&&&&507&&&&&&&&&&&&&0&Jun&21&01:58&1.txtdrwxr-xr-x&&&11&521&&&&&&507&&&&&&&&&&4096&Dec&31&2010&cin-rw-r--r--&&&&1&521&&&&&&507&&&&&&&Apr&07&02:01&cin.tar.gz-rw-r--r--&&&&1&521&&&&&&507&&&&&&&3520190&May&26&08:27&numinfo.txt226&Directory&send&OK.ftp&&bi200&Switching&to&Binary&mode.ftp&&get&numinfo.txtlocal:&numinfo.txt&remote:&numinfo.txt227&Entering&Passive&Mode&(192,168,2,132,194,178)150&Opening&BINARY&mode&data&connection&for&numinfo.txt&(3520190&bytes).226&File&send&OK.3520190&bytes&received&in&0.11&seconds&(3e+04&Kbytes/s)ftp&&put&amigo.txtlocal:&amigo.txt&remote:&amigo.txt227&Entering&Passive&Mode&(192,168,2,132,153,215)150&Ok&to&send&data.226&File&receive&OK.341&bytes&sent&in&0.017&seconds&(20&Kbytes/s)ftp&&ls227&Entering&Passive&Mode&(192,168,2,132,193,212)150&Here&comes&the&directory&listing.-rw-r--r--&&&&1&521&&&&&&507&&&&&&&&&&&&&0&Jun&21&01:58&1.txt-rw-r--r--&&&&1&521&&&&&&507&&&&&&&&&&&341&Jul&26&12:12&amigo.txtdrwxr-xr-x&&&11&521&&&&&&507&&&&&&&&&&4096&Dec&31&2010&cin-rw-r--r--&&&&1&521&&&&&&507&&&&&&&Apr&07&02:01&cin.tar.gz-rw-r--r--&&&&1&521&&&&&&507&&&&&&&3520190&May&26&08:27&numinfo.txt226&Directory&send&OK.ftp&&bye221&Goodbye.
1.5 其它常用命令
1.5.1 文件编辑命令:vi 文件名
&&&&&Linux下有不少文本编辑命令,笔者最常用的是vi命令,例如,编辑所在目录的amigo.txt文本文件,所用命令为:
[sn@minicc&~]$&vi&amigo.txt
&&&&&运行该命令后,此时是命令状态,若要进入编辑状态,按“i”键,接着像编辑文本文件一样编辑该文件,若编辑完毕后,若想要保存或舍弃编辑的文件信息,都需要按“Esc”切换到命令状态,在命令状态输入“:wq”表示保存信息并退出。输入“:q”或“:q!”取消保存文件信息。
&&&&&在命令行状态下,输入“d”删除一行,还有很多其它的命令,读者可以在网上查询该命令的详细使用信息。1.5.2 打包命令:tar cvzf tar包名.tar.gz 打包的目录/&
&&&&打包和解包命令很常用,因为单个传输文件比较慢,一般需要进行打包,例如将amigo1121dir目录打包成:amigo1121dir_bak.tar.gz,命令参考运行结果为:
[sn@minicc&~]$&tar&cvzf&amigo1121dir_bak.tar.gz&amigo1121dir/amigo1121dir/amigo1121dir/test111amigo1121dir/test222/
1.5.3 解包命令:tar xvzf tar包名.tar.gz
若要将之前打包的amigo1121dir_bak.tar.gz解压缩到当前目录下,可使用如下命
tar&xvzf&tar&amigo1121dir_bak.tar.gz
阅读(2642)
&re: 蜜果私塾:常用Linux命令合集——基本操作篇[未登录]
整篇文章,你公司实习生全部删了,然后你哈哈的时候亮了&&&&&&
3012345678910111214151617181920212223242526272829303112345678910
&&&&&&生活将我们磨圆,是为了让我们滚得更远——“圆”来如此。&&&&& 我的作品:&&&&&&&&&&&&&&&(2012年1月出版)&&&&&&&&&&(2010年5月出版)&&&&&
留言簿(241)
积分与排名
阅读排行榜
评论排行榜

我要回帖

更多关于 新手任务之入门篇 的文章

 

随机推荐