Linux程序设计技术技巧与项目实践Linux应用技术_第1页
Linux程序设计技术技巧与项目实践Linux应用技术_第2页
Linux程序设计技术技巧与项目实践Linux应用技术_第3页
Linux程序设计技术技巧与项目实践Linux应用技术_第4页
Linux程序设计技术技巧与项目实践Linux应用技术_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux程序设计技术技巧与项目实践Linux应用技术Linux程序设计技术技巧与项目实践Linux应用技术3.1系统管理与维护技术系统管理类命令主要包括系统的登录、注销、关机与重启。Linux系统启动后用户需要登录。用户不同,权限各异。系统管理员拥有最高权限。在启动linux后屏幕最终会出现如下的提示:login:root↙password:↙(输入密码被隐藏,没有显示,输入完毕回车即可)当计算机出现一个“#”提示符时,表明用户登录成功!屏幕显示linux提示符:[root@localhostroot]#_这里有很多信息,如“RedHatLinuxrelease9”表示当前系统的名称及版本。“”表示linux系统的核心版本编号。“i686”表示该台电脑使用的CPU的等级。下面将学习系统管理类的基本命令。2/6/202333.1.1系统注销关机或重启命令1.logout命令logout是登录的相反操作,即退出系统,输入logout回车回到登录界面。2.shutdown命令shutdown命令可关闭所有程序,根据需要重启或关机。常用参数如下:[root@localhostroot]#shutdownnow←立刻关机[root@localhostroot]#shutdown10:30在10:30时关机-r参数:设置关机后重新启动。[root@localhostroot]#shutdown-rnow 立刻关机并重启[root@localhostroot]#shutdown-r23:59 指定在23:59时重启动3.reboot命令reboot命令是用来重新启动系统的。常用的参数如下:-f参数:不以正常程序运行关机,直接关闭系统并重启计算机。reboot命令一般单独运行用来重启计算机。2/6/202343.1.2显示登录用户信息命令1.who命令该命令用于查看当前在线的用户情况,也可用于系统管理员监视已登录用户的所作所为。单独使用who命令将显示三项内容,即loginname,terminalline和登录到系统的时间。【例】3.3查看系统上的所有用户。$whoroottty1Mar1713:49foxytty2Mar1713:49bbsttyp0Mar1713:49()【例】3.4查看登录用户的详细情况$who-uH2/6/202353.1.3账号管理命令1.账号类型Linux账号分系统管理员root与一般用户两类。2.创建用户账号使用useradd命令创建账号:[root@freeroot]#useraddcindy←创建cindy账号[root@freeroot]#passwdcindy←设置cindy账号的口令Changingpasswordforusercindy。Newpassword:←输入口令Retypenewpassword←再输入一次Passwd:allauthentication←设置成功2/6/20236管理员可以根据用户的账号创建一份数据库,在新增用户时,先查询账号是否存在。也可以检查/etc目录下的passwd文件,其中含有系统所有用户的账号,或者执行finger“账号”命令,查看该账号是否存在。3.管理员账号系统默认创建的系统管理员是root账号,其安全非常重要,强烈建议为root账号设置一个难以破译的口令来确保系统安全。系统管理员除设置口令外,建议先创建一个一般用户账号供个人日常使用,以避免操作失误影响整个系统稳定性。只在系统维护时才用root账号登录。4.只允许root登录的维护模式如果希望计算机除root账号外,其他账号都不允许登录,可在/etc目录中执行touchnologin命令,产生一个文件名为nologin的文件,当其他用户请求登录时,系统只要发现此文件,就会禁止其他用户登录。2/6/202375.停用与删除用户账号停用账号是指暂时不允许用户登录系统,但仍保留其数据。通过编辑/etc/passwd文件,把停止使用的账号标注起来:cassia:x:502:502::/home/cassia:/bin/bash#tommy:x:600:100::/home/tommy/bin/bash←在账号最前面加上“#”删除账号是指确定用户不再使用本系统,或拒绝其使用时,将该账号完全删除。方法一是使用userdel命令很方便地将用户删除。[root@freeroot]#userdel-rtommy加上参数-r在删除账号时,将该账号的用户目录及邮件文件都删除。在linux系统中,用户可以自行设置计时器,时间一到就自动执行某些命令。这些计时器执行的命令,会影响系统的安全与保密,因此必须特别注意用户留下来的计时器。2/6/202383.1.4修改密码的passwd命令passwd(password)命令可让用户变更密码。【例】3.6[felix@hellofelix]$passwdChangingpasswordforuserfelixChangingpasswordforfelix(current)Linuxpassword:←输入原密码Newpassword:←输入新密码Retypenewpassword←在此输入新密码passwd:allauthenticationtokensupdatedsuccessfully密码修改成功2/6/202393.1.5显示与时间设置命令date命令可以显示当前日期时间,CST为中部标准时间。【例】3.7[felix@hellorony]$date$-9月810:00:00CST2006clock命令也可以显示出系统当前的日期与时间[root@freeroot]#clock公元2006年9月8日(周五)10时00分00秒0.112604seconds如果系统时间不正确想更改,用date命令设置时间。用root账号操作:[root@freeroot]#date09091200←将时间设定为9月9日12点00分当用户不知道标准时间时,用校对服务器提供的标准时间,可执行ntpdate命令,将系统时间设成与校时服务器一致:[root@freeroot]#ntpdate←微软校时服务器校时【例】3.8[root@freeroot]#clock–w2/6/2023103.1.6磁盘空间管理命令Quota的功能就是限制用户的磁盘空间。在系统尚未设置磁盘空间时,可用执行quota命令检查自己的磁盘使用空间,若出现下列信息,则表示没有限制:[lambert@freelambert]$quotaDiskquotasforuserlambert(501):none←无限制表示lambert可自由使用磁盘空间,可能造成其他用户无法储存数据。2/6/2023111.查看磁盘使用情况的du命令du的英文原义为diskusage,含义为显示磁盘空间的使用情况。【例】3.9列出/etc目录所占的磁盘空间,不列文件所占空间。$du输出清单中的第一列是以块为单位计的磁盘空间容量,第二列列出目录中使用这些空间的目录名称。不带选项将列出所有目录容量。若只要总数时,直接在du命令中加-s选项:$du–s/etc699 /etc【例】3.10列出所有文件目录占用空间且以字节为单位计算大小。$du-ab2/6/2023122.编辑fstab文件分配用户磁盘空间用文本编辑程序打开/etc/fstab文件,编辑ext3文件系统原始分区设置来创建用户与组的磁盘空间限制:LABEL=//ext3defaults,usrquota,grpquota11←ext3文件系统分区倘若只要限制用户或组的磁盘空间,则只需要加上usrquota或grpquota其中一项,保存退出后重新启动。对fstab文件中各字段意义执行manfstab和manmount查看详细信息。修改fstab后,在根目录下执行touchaquota.user与touchaquota.group,自行创建aquota.user及aquota.group,接着执行quotacheck命令设置:[root@freeroot]#quotacheck-ugavmcQuotacheck:Scanning/dec/hda1[/]doneQuotacheck:Checked10064directoriesand202332files用于quotacheck命令的参数请参考其man手册的内容。2/6/2023133.执行quotaoff要取消磁盘空间限制,可以执行quotaoff-avug命令。【例】3.11[root@freeroot]#quotaoff-avug/dec/hda1[/]:groupquotasturnedoff/dec/hda1[/]:userquotasturnedof4.检查是否超过磁盘限制一般的用户执行quota-v命令,可知自己是否超过限制:[lambert@freelambert]#quota–vDiskquotasforuserlambert(501):2/6/2023143.2文件与目录操作技术操作系统的执行效率、稳定性以及可靠度与文件系统的优劣息息相关。1.系统+目录认识Linux系统有很多默认目录,依照用途不同而放置特定的文件。参见。2.文件属性Linux文件或目录属性主要包括:文件或目录的节点、种类、权限模式、链接数量、归属的用户和用户组、最近访问或修改的时间等内容。[root@localhost~]#ls-lih总计104K2408949-rwxr-xr-x1rootroot704-2112:47lsfile.sh2408830drwxr-xr-x2rootroot2408260drwxr-xr-x2rootroot4.0K04-2122:15mydir上面的一行含有九个字段很多信息。3.2.1文件系统认识与权限设置2/6/202315第一字段inode,第二字段文件种类和权限,第三字段是硬链接个数,第四字段属主,第五字段归属组,第六字段文件或目录的大小,第七字段和第八字段是最后访问或修改时间,第九字段是文件名或目录名。文件有三种不同的用户级别,即文件拥有者u、所属组g和其他用户o。第一个字符显示文件类型,“-”表示普通文件,“d”表示目录文件,“l”表示链接文件,“c”表示字符设备,“b”表示块设备,“p”表示命名管道比如FIFO文件,“f”表示堆栈文件,“s”表示系统的数据结构。第一个字符之后的3个三位字符组分别表示文件拥有者u、文件用户组g和其他用户o对该文件的权限。若显示“-”字符则表示没有权限。一般权限是指r(read读取)、w(write写入)和x(execute执行)。特殊权限是指该用户拥有一些特权,因而用户若无特殊需求,不应该去打开这些权限,避免安全方面出现严重漏洞,让黑客入侵。2/6/2023163.用户与组的权限关系假如用户lambert属于cassia组,其用户主目录权限设为rwxr-x--x,表示cassia组用户可以读取和进入此目录,其他用户能进入但看不到内容。因而属于其他组的用户saber,无法读取lambert目录中文件。但若将/etc目录下的group文件内容修改,此时saber也加入了该组。…cassia:x:501:lambert,saber←将saber账号加入cassia组4.检查inode编号链接文件实际上是指向磁盘中相同数据,因为每个文件仅有一个inode,所以它们的inode编号一样。执行ls–i命令查看文件的inode编号:[lambert@freelambert]$ls–iLambertLink10423LambertLink[lambert@freelambert]$ls–i/tmp/var/ForEveryOne10423/var/tmp/ForEveryOne上面两文件的inode编号相同,但复制的两个文件,inode编号则不同。2/6/2023173.2.2列表与分屏显示命令1.列表显示命令lsls(list)命令用于显示目录内容。使用时有几种颜色,蓝色表示目录,绿色可执行文件,红色压缩文件,浅蓝色链接文件,加粗黑色符号链接,灰色其它格式文件。ls最常使用的是ls-l。【例】3.12显示当前目录的内容。[yuyouming@freefelix]$ls【例】3.13显示当前目录下所有文件内容。[felix@hellofelix]$ls-a【例】3.14显示文件大小排序。[felix@hellofelix]$ls-s-S2.分屏显示命令more当用ls查看文件列表时,若文件太多则配合more使用,让画面在显示满页时暂停,按空格键继续显示下一个画面,或按Q键停止显示。【例】3.16[felix@hellobin]$ls–almore单独使用more命令时,可用来显示文本文件的内容。【例】3.17[felix@hellofelix]$moredata.txt2/6/2023183.2.3切换创建与删除目录的命令1.切换目录命令cdcd(changedirectory)让用户切换到当前目录。[felix@hellohome]$cdfelix切换到当前目录下的felix子目录[felix@hellohome]$cd/←切换到系统根目录[felix@hellofelix]$cd/usr/bin←切换到/usr/bin目录2.创建目录命令mkdir(makedirectory)可创建子目录[felix@hellofelix]$mkdirtool在目录创建时可设置目录权限。参数-m,创建目录mydir让所有人都有读写执行权rwx,可以使用以下命令:$mkdir-m777mydir【例】3.18$mkdir('C:\MyFolder');//在C盘根目录创建MyFolder文件夹。3.删除目录命令rmdir(removedirectory)命令删除“空”的子目录【例】3.19[felix@hellofelix]$rmdirtool←删除tool目录2/6/202319文件复制删除与合并命令1.文件复制命令cpcp(copy)命令将文件从一处复制到另一处。在使用cp命令时,需要指定原始文件名与目的文件名或目录。【例】3.20[felix@hellofelix]$cpdata1.txtdata2.txt←将data1.txt复制成data2.txt[felix@hellofelix]$cpdata3.txt/tmp/data←将data3复制到/tmp/data下。显示复制过程:加入-v参数可显示命令执行过程。[felix@hellofelix]$cp–vzip.txtzip3.txt←以-v显示复制过程递归复制:加入-R可同时复制目录下的所有文件及子目录。[felix@hellofelix]$cp–v–R*backup←将所有文件(含子目录文件)复制到backup目录。2/6/2023202.文件删除命令rmrm(remove)命令可以删除文件或目录。[felix@hellofelix]$rmmyfile←删除指定的文件[felix@hellofelix]$rm*←删除当前目录中的所有文件使用-f参数时,rm命令会直接删除文件不询问,如:[felix@hellofelix]$rm–f*.txt←强制删除文件递回删除-r非常有用,可同时删除指定目录下的所有文件与子目录。【例】3.22[felix@hellofelix]$rm–r*←删除所有文件(含当前目录所有文件,所有子目录和子目录下的文件)若用-rf参数将直接删除该目录中所有的文件及子目录,不再询问。要显示删除过程:使用-v参数。【例】3.23[felix@hellofelix]$rm–rftmp[felix@hellofelix]$rm–v2/6/2023213.文件连接命令catcat(concatenate)命令可以显示文件的内容,经常和more搭配使用,或是将数个文件合并成一个文件。【例】3.24逐页显示文件preface.txt的内容:[felix@hellofelix]$catpreface.txtmore将preface.txt附加到outline.txt文件之后:[felix@hellofelix]$catpreface.txt>>outline.txt将new.txt和info.txt合并成readme.txt文件:[felix@hellofelix]$catnew.txtinfo.txt>readme.txt2/6/2023223.2.5文件与目录的移动与更名和路径显示命令1.文件(目录)移动或更名的命令mvmv(move)可将文件及目录移到另一目录或更换文件及目录名称。【例】3.25[felix@hellobackup]$mva.txt..将a.txt文件移到上层目录[felix@hellobackup]$mvz1.txtz3.txt将z1.txt改名成z3.txt[felix@hellobackup]$cd..←切换到上一层目录[felix@hellofelix]$mvbackup..←backup目录上移一层若要把文件temp转移到temp.moved,可以把文件temp重命名为temp.moved。$mvtemptemp.moved$mvtempbackups/temp.old下面的命令是强制转移操作,忽略了文件temp.moved的操作权限。$mv–ftemptemp.moved2/6/202323若要把目录下的所有文件和子目录(不包含隐藏文件)转移到目录dir2下,但dir2不是目录或不存在,或没有写许可和执行权限,这个命令将会失败,显示屏上会打印出错信息。$mvdir1/*dir22.显示当前所在目录的pwd命令pwd(printworkingdirectory)命令可显示用户当前所在目录。[felix@hellofelix]$pwd/home/felix←当前所在目录为“/home/felix”2/6/2023243.2.6重定向与管道命令重定向(redirect)将某命令结果输出到文件中,它有两种形式:“>”和“>>”。前者将结果输出到文件,文件原有内容被删除,后者将结果附加到原文件后面。[felix@hellofelix]$ls–a>dir.txt←将ls-a命令执行结果输出到dir.txt。[felix@hellofelix]$catdata1.txt>>data2.txt←将data1.txt内容附加到data2.txt文件之后。管道(pipe)命令的符号是“|”,可将某命令的结果输出给另一命令。【例】3.27将ls命令的输出结果传给grep命令过滤。[felix@helloetc]$lsgerpconf←搜索并显示ls命令运行结果中包含有“conf”字符串。可以用yes命令重复输出“y”字符特性,将结果传给rm,避免重复输入“y”:[felix@hellofelix]$yesrm-rmydir2/6/2023253.2.7改变文件访问权限与归属的命令1.改变文件访问权限命令chmodchmod改变文件属性。只有文件属主或超级用户才能使用。语法格式为:chmod[-cfRv][--help][--version][数字代号][文件或目录...]多数用3位八进制数字形式表示权限,第1位指定属主权限,第2位指定组权限,第3位指定其他用户权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表读写权,7(4+2+1)读写执行权。还可以设置第4位,它位于3位权限序列之前,取值为4,2,1,其中4是执行时设置用户ID,用于授权给基于文件属主的进程,而非创建此进程的用户。2是设置用户组ID,授权基于文件所在组的进程,而非创建此进程的用户。1是设置粘着位。$chmodu+xfile//给file的属主增加执行权限$chmod751file//给file的属主分配读、写、执行(7)权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限。$chmod444file//同上例$chmoda-wx,a+r//同上例$chmod-Ru+rdirectory//递归给directory目录下所有文件和子目录属主分配读权限2/6/2023262.改变文件归属的chown命令利用chown可改变文件的所有者,只有系统管理者root使用,一般用户没有权限改变别人的文件所有者,也无权把自己的文件所有者改为别人。常用参数选择如下:-c,--changes:只输出被改变文件的信息-R,--recursive:递归遍历子目录,把修改用到目录下所有文件和目录--reference=filename:把属主改变成filename文件的属主-v,--verbose:输出详细信息【例】3.29$chownroottest//把test文件的属主改进root$chown-Rroottest_directory//把test_directory下文件属主改成root$chown--dereferenceroottest_link//把test_link原文件属主改成root$chown--no-dereferenceroottest_link//把test_link的链接文件属主改成root,原文件属主不变2/6/2023273.2.8文件定位搜索与查找命令1.文件定位的命令locatelocate命令可用来搜索包含指定条件字符串的文件或目录。如:[felix@hellofelix]$locatezh_CN列出所有含zh_CN串的文件和目录。由于locate命令是从系统中保存文件及目录名称的数据库中搜索文件,有时要用root身份运行updatedb命令更新数据库后再查找。2.文件查找命令findfind命令用于在目录中搜索文件并执行指定的操作。find命令的GNU版本功能非常强大灵活。find命令的基本格式是:$findstartdirectoryoptionsmatchcriteria[actionoptions]如果知道文件名或文件名一部分,但不知道它的位置,可以直接查找:$find.-name'test*'./test./jdevhome/mywork/EmpWS/EmpBC4J/test2/6/202328Linux中不需要在末尾添加-print操作。目录起始位置的点(.)使find在当前目录中搜索。两个点(..)则在父目录中开始搜索。可以使用通配符,但要用单引号括起来。$find.-name'test*'-print./test.out./test2.out显示拥有.out扩展名的一系列文件:$find/home-name'*.out'不是超级用户运行此命令,会显示许多“permissiondenied”错误。将当前目录及其子目录下所有文件名类型是c文件的列出来。#find.-name"*.c"//将当前目录及其子目录中所有一般文件列出。#find.-ftypef将当前目录及其子目录下所有最近20分钟内更新过的文件列出#find.-ctime-20find.-name"*"-execgrepxxx{}-print|more其中xxx为要找的字符串2/6/202329【例】3.31find命令常见的使用方法查找名为conf的目录#find/目录-typed-nameconf查找文件权限为755的文件#find/目录-perm755-print查找文件属主为kt的文件#find/目录-userkt-print查找group为kt的文件#find/目录-groupkt-print查找名为file的文件#find/目录-namefile查找大小为0的文件#find/目录-size0查找属主帐户已经被删除的文件:#find/目录-nouser-print按更改时间查找文件#find/目录-mtime-5-print单位5,查找更改时间5日内文件查找更改时间在3日以内的文件#find/目录-mtime+3-print不仅查询根目录,而且查询子目录#find/目录-namefile-depth-print根据inode号来取得硬链接#find/目录-inuminode号2/6/2023303.搜索字符串命令grepgrep是globalsearchregularexpression(RE)andprintouttheline的缩写,即全面搜索正则表达式与打印行,是一个强大的文本搜索工具,能使用正则表达式搜索文本,并打印出所有匹配的行。语法:grep[-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]grep的工作方式是在一个或多个文件中搜索字符串模板。[felix@helloetc]$greptext*.conf←搜索当前目录中扩展名为.conf且包含“text”字符串的文件。grep:amd.conf:←拒绝不符权限的操作grep:diskcheck.conf:←拒绝不符权限的操作grep:grub.conf←拒绝不符权限的操作若使用一般用户权限运行,上例的输出结果会包含很多拒绝不符权限的操作之类的错误信息,可使用-s参数消除。[felix@helloetc]$grep-stext*.conf2/6/2023313.3前后台程序的运行与状态切换将程序放到后台运行的最简单方法就是在命令的最后加上“&”。如:[felix@helloroot]#updatedb&←在后台执行locate数据库的更新。[felix@helloroot]#bg←将更新操作放到后台运行。当用户已有程序在后台运行时,用fg命令将它从后台移到前台运行:[felix@helloroot]#fg←放到前台执行的命令会显示出来在退出后让程序继续运行的nohup命令:[felix@hellorony]$nohupmyserver&此时用户可退出,当再次登录时用ps-aux可看到程序仍在后台运行。2/6/2023323.4任务调度技术计算机系统需要定期进行自身的维护,如磁盘清理、系统数据备份、检查远程服务器邮件等。对于重复性的工作,不需要每次都要用户亲自运行维护程序,可以利用任务调度命令,指定系统定期运行维护程序,轻松完成自我调整和诊断的任务。3.4.1系统工作调度/etc/crontab/文件是linux系统任务调度设置文件,默认内容如下:SHELL=/bin/bash←指定执行任务调度工作时使用的shellPATH=/shin:/bin:/usr/sbin:/usr/bin←指定命令搜索的路径MAILTO=root←指定将输出结果给root用户HOME=/←指定根目录2/6/2023333.4.2用户工作任务调度与删除crond是定期执行程序命令,每分钟定期检查,有任务则自动执行。MinuteHourDayMonthDayOfWeekCommand其中的Command每次必须指定,其它字段根据需要决定有无。一般用户用crintab命令自行设置定期执行的工作。每个用户还可以执行crontab–e来编辑任务调度设置文件,加入定期执行的工作。【例】3.34为felix用户的任务调度设置文件。[felix@hellotony]$crontab–e执行上述命令后,即会进入vi编辑器编辑任务调度的工作。【例】3.35如果不想再定期执行任务调动中的工作,则执行crontab-r命令删除所有任务调度工作。[felix@hellorony]$crontab–r←删除任务调度中的工作[felix@hellorony]$crontab-1←再查看一次任务调度中的工作nocrontabforfelix←已经没有任何任务调度工作2/6/2023343.5文件的打包与压缩解压缩tar命令位于/bin目录,能将用户指定文件或目录打包,但不压缩。常用压缩方式是用tar将许多文件打包,再以gzip等压缩文件。tar的常用参数有:-c创建新tar文件;-v显示运作信息;-f指定文件名;-z调用gzip压缩;-j调用bzip2压缩命令压缩;-t参看压缩文件内容;-x解开tar文件。[felix@hellodata]#tarcvfdata.tar*←将目录下所有文件打包成data.tar[felix@hellodata]#tarcvf*←将文件打包成再压缩[felix@hellodata]#tartvfdata.tar*←查看data.tar中包括了哪些文件[felix@hellodata]#tarxvfdata.tar*←将data.tar解开tar本身不压缩,但生成tar后可用其它命令压缩。如-z参数可解.tar.gz文件:[felix@hellodata]#tarzxvf←将文件解开至当前目录下。使用-j参数解开tar.bz2压缩文件:[felix@hellodata]#tar-jxvfLinux-2.4.20tar.bz2←文件解开至当前目录使用-Z参数指定以compress命令压缩。[felix@hellodata]#tar–cZvf*.tif←将该目录下所有后缀为.tif文件打包并压缩成.tar.Z文件。2/6/2023353.6进程管理技术ps命令是最基本也是功能非常强大的进程查看命令。通过ps可以获取进程的大部分信息,可以确定进程是否结束、僵死和占用过多资源等等。ps命令最常用的用于监控后台进程工作情况,因为后台进程不和屏幕键盘设备通信,如果需要检测其情况,只能使用ps命令。ps命令选项有:-e显示所有进程;-f全格式;-h不显示标题;-l长格式;-w宽输出;a显示终端上的所有进程,包括其他用户的进程;r只显示正在运行的进程;x显示没有控制终端的进程。一般用户只要掌握u、a、x三个最常用的参数。【例】3.37以root身份登录系统,查看当前进程状况$psPIDTTYTIMECOMMAND5800ttyp000:00:00bash5835ttyp000:00:00ps可以看到,显示项目共有四项,依次为进程ID:PID、终端名称TTY、进程执行时间TIME、命令行输入COMMAND。3.6.1命令ps用法2/6/202336使用u选项来查看进程所有者及其它详细信息,如下所示:$psuUSERPID%CPU%MEMUSZRSSTTYSTATSTARTTIMECOMMANDtest58000.00.418921040ttyp0SNov270:00-bashtest58360.00.32528856ttyp0RNov270:00psu在bash进程前面有条横线,意味着该进程是用户的登录shell。还可以看到%CPU、%MEM两个选项。前者指该进程占用的CPU时间和总时间的百分比;后者指该进程占用的内存和总内存的百分比。在这种情况下看到了所有控制终端的进程;但对于没有控制终端的进程是观察不到的,需要用x选项来观察所有进程的情况。2/6/202337【例】3.38用x选项观察所有进程的情况$psxPIDTTYSTATTIMECOMMAND5800ttyp0S0:00-bash5813ttyp1S0:00-bash5921ttyp0S0:00manps5922ttyp0S0:00sh-c/usr/bin/gunzip-c/var/catman/cat1/ps.1.gz|/5923ttyp0S0:00/usr/bin/gunzip5924ttyp0S0:00/usr/bin/less-is5941ttyp1R0:00psx此时我们发现多了很多进程。这些后来者就是没有控制终端的进程。前面看到的所有进程都是用户使用的进程,还有许多其他用户的进程。用a选项查看当前系统,可以观察所有用户的所有进程。经常使用的是aux组合选项,将显示最详细的系统里的所有进程情况。2/6/202338【例】3.39用aux组合显示所有进程如图3.1所示$psaux图3.1用aux组合查看所有进程情况最前面的是其他用户的进程,还能看到root、daemon等用户进程。2/6/2023393.6.2命令top的用法top命令除了ps命令的基本作用外,会动态显示刷新的当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。top命令提供了对系统处理器状态的实时监视,将CPU最敏感的任务列表显示。该命令可以按CPU、内存和执行时间对任务进行排序。它的很多特性都可以通过交互式命令或者在个人定制文件中设定。该命令的语法格式为:top[-][ddelay][q][c][s][S][i]d指定屏幕刷新的时间间隔,可用s交互命令来改变。q将实时动态进行刷新。对于root用户top将以高优先级运行。c显示整个命令行而不仅仅显示命令名其它选项含义请参考手册的说明。top显示的项目很多,默认每5秒更新一次,但可以自己设置。显示项目为:uptime:显示系统启动时间、运行时间和第1、5、15秒的平均负载值。processes:自最近一次刷新以来的运行进程总数。这些进程被分为正在运行、休眠、停止等种类。进程和状态显示可以通过交互命令t来实现。范例如下:2/6/202340【例】3.40键入top命令查看系统状况如图3.2所示第1行依次是当前时间、系统启动时间、当前系统登录用户数、平均负载。第2行依次是进程总数、休眠数、运行数、僵死数和终止进程数。第3行是CPU状态,依次为用户占用率、系统占用率、优先进程占用和闲置进程占用率。第4行是内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。第5行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、高速缓存容量。后面的内容和ps命令显示的进程情况相似。虽然top功能强于ps但占用前台,使用时应有所取舍。2/6/2023413.6.3杀死进程命令kill所有用户均可以使用,方式如下:kill[-ssignal|-p][-a]pid...kill发出一个特定信号signal给进程id为pid的进程,根据该信号作出特定的动作,若没指定就是发出终止TERM的信号。其参数解析如下:-s(signal):可用信号有HUP(1),KILL(9),TERM(15),分别代表重启、杀死和结束。-p:显示pid,并不发出信号。-l(signal):列出所有可用信号名称。【例】3.41将pid为323的进程杀死。$kill-9323将pid为456的进程重启(restart):$kill-HUP4562/6/2023423.7控制提示符与命令组合普通用户成功登录,系统将执行shell程序,提供命令行提示符“$”,对超级用户root则用“#”作为提示符。用户键入logout命令、exit命令或文件结束符“ctrl+d”,将结束登录。多条命令可以在一行中出现,按从左到右顺序执行。各条命令间以分号(;)隔开,如:pwd;who|wc-l;cd/usr/bin相邻命令间可以有逻辑关系“与”和“或”。逻辑与操作符“&&”把两个命令联在一起,形式为:“命令1&&命令2”。其功能是先执行命令1,执行成功后,再执行命令2;否则,若命令1执行不成功,则不执行命令2。逻辑或操作符“||”可把两个命令联起来,形式为:“命令1||命令2”。其功能是先执行命令1,如果执行不成功,则执行命令2;否则,若命令1执行成功,则不执行命令2。在Shell中可以用花括号{}或圆括号()将若干命令括起来,在逻辑上形成一条命令。2/6/202343以花括号括起来的全部命令视为语法上的一条命令,出现在管道符的一边。执行顺序以位置的先后次序由左至右执行。在管道线中,成组命令把各命令的执行结果汇集在一起,形成一个输出流,作为该管道线中下一个命令的输入。【例】3.42{echo"UserReportfor`date`.";who;}|pr注意左括号“{”后应有空格,右括号“}”前应有分号(;)。【例】3.43成组命令用圆括号括起来。(echo"Currentdirectoryis`pwd`."cd/home/mengqc;ls-l;cpm1em1&&rmm1catem1)|pr用圆括号括起成组命令,左括号后不用空格,右括号前不要分号。二者执行过程相同,区别是:用花括号括起来的成组命令只在本Shell内执行命令表,不产生新进程;圆括号括起来的成组命令是在新子Shell内执行,建立了新子进程。因此,圆括号内的命令不改变父Shell变量值及工作目录等。2/6/2023443.8编辑器vi的应用技术Vi是Linux的重要编辑工具,当前版本是vim,本节里,vim和vi一律以vi表示。在编写系统脚本时,可不退出vi获得系统信息、直接执行命令,然后回到vi继续编辑。如执行:!ls/tmp查看内容,回车后可继续编辑,非常方便。3.8.1vi的三种执行模式vi是linux系统里的全屏文本编辑器,原意是VisualInterface。学习vi的基本操作很有好处,用户可以在不同的机器上得心应手。vim原意是viImproved,是一个所见所得的编辑程序,方便快捷。另有Emacs也同样是非常优秀的文本编辑器。vi追求的是快捷启动、编辑高效、功能专注,而Emacs的追求是功能丰富,可以发邮件、上新闻组、听mp3、浏览网页和玩游戏等。vi有三种模式,即命令模式、输入模式和编辑模式。启动vi后在任何模式下按Esc键进入普通模式。普通模式下输入冒号“:”进入命令行模式,此时vi窗口最下面一行是“:”行,在后面输入命令回车就能执行。如果要运用shell命令,只要在输入“!”后接着输入shell命令回车即可。例如在vi中执行ls命令,则在命令行模式下输入“!ls”。命令执行完成后回车则立即返回vi编辑状态。2/6/2023453.8.2基本操作1.进入vi的基本方式vifilename:打开或新建文件将光标置行首,vinfilename打开文件将光标置于第n行首,vi/patternfilename:打开文件光标置于pattern串匹配处vifilename....filename:打开多个文件,依次进行编辑2.主要的插入命令i在光标前插入,I在当前行首插入,a在光标后插入,A在当前行尾插入,o在当前行之下新开一行,r替换当前字符,R替换当前字符及其后的字符,直至按ESC键。s是从当前光标处开始,以输入文本替代指定数目的字符。S删除指定数目的行,并以所输入文本代替之,ncw是修改指定数目的字,nCC是修改指定数目的行。3.光标移动操作在文本输入模式下,可直接使用键盘上的四个方向键移动光标。在命令模式下,可以用方向键移动光标,也可以用h、j、k、l这代替方向键移动光标,熟练后可以手不离键盘位置完成所有操作,提高了工作效率。在屏幕上移动光标的组合命令列表主要有:CTRL+F向前滚动一屏;z[Enter]把当前行移动到屏幕顶部并滚动;[Enter] 移动到下一行的首字符;n| 移动到当前行的第n列;nG移动到第n行;G移动到文件尾部;CTRL+G显示当前行号、文件总行数、当前行的百分比。2/6/2023464.编辑另一文件和插入文件的方法:eFile→编辑指定文件:rFile→通过当前行下添新行将文件读取到编辑缓冲区:r!Command→通过在当前光标位置下面添加新行:taTag→从标记位置开始,编辑包含Tag标记符的文件Ctrl-A→编辑备用文件aText→在光标后插入由Text指定的文本o→在当前行的下面添加一个空行O→在当前行的上面添加一个空行5,复制和移动文本在vi编辑器中的整行或多行复制与粘贴有时是非常有用的。单行复制:在命令模式下,将光标移到将复制行处,按“yy”复制;多行复制:在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为1、2、3...粘贴:命令模式下,将光标移到需要粘贴处,按“p”粘贴。2/6/2023475.调整屏幕与输入外壳程序命令:!Command 运行指定的命令然后返回到vi编辑器。:sh 进入外壳程序以便能运行多条命令。:!! 重复最近一次的:!Command命令。Ctrl-L 清除和重绘屏幕。Ctrl-R 重绘屏幕和消除标有@(位于符号)的空行。Number!!Command运行指定命令并输出替代由Number指定的行。6.刷新屏幕与缩进和添加行号命令模式下ctrl+l(ell)或ctrl+rctrl+T,ctrl+D,输入模式下,缩进与倒退缩进。setnumber或setnu给每行加行号,调试时很直观,但行号不是程序。2/6/2023487.编辑多个文件和多个缓冲区args,显示编辑文件的列表next,prev,first,last,efilename,enew,新建一个文件buffers,ls,显示缓冲区列表bn,转到第n个缓冲区;bnext(bn),bprev(bp),bfirst(bf),blast(bl),new新建一个buffer;bdeletebuffernumber,删除一个buffer,bwipe,真正删除一个buffer。2/6/2023498.自动完成与多行注释vi在Insertmode下输入一个单词的前几个字符,然后用Ctrl-p或者Ctrl-n就可以列出这个文件中以这些字符开头的单词,特别在配置了ctags后也能列出头文件中的符号,特别方便。此外vi还有行自动完成、文件名自动完成等。如果要给多行程序加注释,一个办法就是插入#,再用j跳到下一行用“.”命令重复上一个命令。如果要注释几百行,办法是::.,+499s/^/#/g。 这里所指的程序是针对shell程序而言的,如果读者使用vi编写c语言程序,则注释只能使用“/**/”,或者“//”来对所写的代码行进行注释,否则肯定会出错。如果在第60行有这样的语句:if(server_pid!=0)#创建进程失败处理则在编译时就会出现这样的错误提示:ping.c:60:syntaxerrorat'#'token这时,只要将程序中的“#”改为“//”就可以了。2/6/2023509.缩写功能vi支持用缩写字符串代替长字符串,如在命令行执行abhwhelloworld后,在Insertmode下输入hw回车,则vi就自动替换成了“helloworld”。10.退出vi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论