Linux 系统命令精通指南初级.docx
- 文档编号:10327122
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:14
- 大小:23.70KB
Linux 系统命令精通指南初级.docx
《Linux 系统命令精通指南初级.docx》由会员分享,可在线阅读,更多相关《Linux 系统命令精通指南初级.docx(14页珍藏版)》请在冰豆网上搜索。
Linux系统命令精通指南初级
Linux系统命令精通指南(初级)
作者:
SherylCalish发文时间:
2004.07.05
在“Linux文件命令精通指南”中,我们讨论了利用最基础和最常用Linux文件命令所需的基本信息。
在本文中,我将对Linux系统命令作同样的讨论。
我们在前一篇文章中了解到,在Linux/UNIX世界中,一切都被看作文件,包括系统管理命令。
单独对于组织而言,我们在本系列的第一部分中讨论了文件命令,并将在本文中提供最有用的系统诊断和维护命令。
对于文件命令,我们在此处详尽讨论了某些相当简单和直观的管理命令。
而只描述了其他较复杂命令的功能,以便在您需要使用时,知道存在这些命令及其用途。
本文不涉及对每个命令使用背后的基本原理的详细讨论,但是我们将讨论最基本和最有用的命令,这些命令用于监视和管理打印机服务、文件系统、磁盘和进程。
有关超级用户的更多信息
这里讨论的很多命令可以由常规用户在其自己的文件和进程中执行。
但是,某些命令,如fdisk,需要有root权限才能运行。
为了您的系统的完整性,建议您避免直接以"root"登录到系统中。
相反,通常更适合以常规用户登录,然后执行su或从Xwindow执行sux命令来运行系统管理功能。
(Sux为您提供Xwindow环境以及root权限。
)当您以root用户登录时,您会始终知道您处于这种状态,因为您的提示符变为“#”。
超级用户能够使用sudo,有选择地将那些通常为root用户或其他特殊用户所保留的权限分配给一个不同的常规用户。
root用户可以定义实际和有效的用户和组标识号uid和gid,以便与预期用户的标识相匹配。
这种预期用户可以是(但不必是)被允许运行该命令的用户。
换言之,超级用户可以允许其他用户执行某个命令,但也可以确定由进程所产生的任何结果文件应该属于root用户或任何由超级用户指定的其他用户。
Sudo权限一经分配,则只需要用户使用自己的口令进行验证,而不需要root用户口令。
通用命令
从技术上讲,Uname、diff、date、sort和uniq应该看作文件命令,但由于它们经常用于诊断和维护例程的系统管理方面,在这里解释它们更有意义。
Uname
Uname提供了常规系统信息。
当指定-a选项时,显示所有可用信息:
$uname-a
Linuxlinux2.4.18-4GB#1WedMar2713:
57:
05UTC2002i686unknown
在这里我们从左向右看到常规的系统信息。
每条信息都有自己的选项(在下面的圆括号中),可以单独显示:
操作系统名称为Linux(-s)。
本机的网络节点名为linux(-n)。
操作系统发布版本为4.5.18-4GB(-r)。
操作系统版本为#1WedMar2713:
57:
05UTC2002(-v)。
机器类型为i686(-m)。
这里的处理器类型(-p)为未知。
类似地,stty显示关于您的终端设置的信息:
$stty-a
speed38400baud;rows40;columns103;line=0;
intr=^C;quit=^\;erase=^?
;kill=^U;eof=^D;eol=;eol2=;start=^Q;
stop=^S;susp=^Z;rprnt=^R;werase=^W;lnext=^V;flush=^O;min=1;time=0;
-parenb-paroddcs8-hupcl-cstopbcread-clocal-crtscts-ignbrk-brkint-ignpar-parmrk-inpck
-istrip-inlcr-igncricrnlixon-ixoff-iuclc-ixany-imaxbel
opost-olcuc-ocrnlonlcr-onocr-onlret-ofill-ofdelnl0cr0tab0bs0vt0ff0
isigicanoniextenechoechoeechok-echonl-noflsh-xcase-tostop-echoprtechoctlechoke
第二行和第三行显示了将在命令行分别调用的特殊字符和键序列。
例如,"^Z"即CNTRL-Z在本系统中发送一个终端休止符。
退出符号以"^\"即CNTRL-\发送,而我们可以将其改为"^X",如下所示:
$sttyquit^X
在这种情况下,您实际要输入^符号,而不是CNTRL键。
这种改变只在当前窗口中起效。
为了使这种改变永久生效,需要在您的.bashrc文件中输入该语句。
Diff和Date。
顾名思义,Diff比较两个文件。
它返回那些导致文件不同的行,并返回关于如何使文件变得相同的一些含义隐晦的输出:
$difftest.outtest2.out
0a1
>Anothertest.
在这里我们被告知,需要将"Anothertest."这一行添加到test.out,以便使它与test2.out相似。
第一个字符"0"是要在test.out中编辑的行号;"a"表示该行应该被添加到test.out,以便与test2.out的第一行"1"相匹配。
如果我们需要更改test.out,则第二个字符也可以是"c",而如果我们需要从test.out中删除一些内容,则第二个字符是"d"。
您可能希望使一个文件与另一个文件相似,以便为某些代码提供补丁。
diff还经常作为分析工具,用于验证程序或脚本—例如sed脚本—的输出是否是所预期的输出。
date命令可用于显示或设置日期。
如果用户具有超级用户权限,则他或她可以通过在以下命令中提供一个数字型字符串来设置日期:
010*******
此命令将日期设置为2004年(04)1月1日(0101)凌晨1时(0100)。
但是,任何用户可以用所需的格式来显示日期。
注意在格式序列之前需要一个加号"+"。
如果没有出现此命令的预期输出,则尝试将它包含在单引号中:
$date+'%H%M%S'
204748
您可以在序列中包含空格,这时您需要使用双引号:
$date+"%H%M%S"
204751
在日期的主页上列有三十多种不同的格式序列,这些序列可以按需要结合起来,以获得您最后的输出格式。
date的输出还可以用于脚本中,如:
$date-d'2day'
ThuJan2919:
02:
02EST2004
-d选项指示date显示其后字符串中所描述的时间。
在上例中,我们要求显示从现在起(2004年1月27日)两天后的日期。
我们也可以要求显示三天前的日期,其命令为:
$date-d'-3day'
SunJan2520:
56:
59EST2004
date多种功能的另一个示例是能够向其输出附加字符串,为生成唯一的文件名提供了一种便利的方法。
$ls-l|cat>$(date+ls_%d%b%y%H%M.out)
$lsls_*.out
ls_04Feb041633.out
在这里,我们将一个长文件列表的输出传送给cat,它将我们的输出再传送到一个名为ls_04Feb041609.out的文件。
注意我们为文件名使用了一个变量,由美元符号"$"表示。
依次将"ls_"和".out"附加到日期,其格式为月份中的日(%d)、本地的月份名称缩写(%b)、年份的最后两位数字(%y)、小时(%H)和分钟(%M),从而产生此文件名。
Sort和Uniq。
您可以从管道或从命令行所指定的文件对文本文件的行进行sort操作。
除非另外指定,sort对多列输出的第一列进行操作。
在默认情况下,除非使用-n选项,数字型的列按字母顺序排序。
Sort列可以用两种不同的格式指定。
如果使用-k选项,则列的位置从1开始进行编号。
您还可以使用+POS1格式,从第一列编号为零开始进行列的编号。
以下两个命令产生相同的输出:
$ls-l*.out|sort+5-7
$ls-l*.out|sort-k6,8
-rw-r--r--1bluherusers375Dec52002fdisk.out
-rw-r--r--1bluherusers2447Dec2820:
15ls.out
-rw-r--r--1bluherusers590Jan421:
24greps.out
-rw-r--r--1bluherusers78Jan421:
25sgrep.out
...
在默认情况下,sort命令的列分隔符是空格和制表符。
可以使用-tSEP选项指定其他分隔符,其中SEP是您指定的分隔符号。
sort的默认顺序是从最低到最高,利用-r选项可以将顺序颠倒。
Sort可用于很多不同的任务。
例如,它可用于对文件输出进行排序(如/etc/passwd),或者如我们在下面所看到的那样,对du的输出进行排序。
当使用-m选项时,sort将文件合并,实际上并没有对它们进行排序。
但是,如果您希望将它们排序,就应该在文件合并前对它们排序。
Sort经常与uniq命令一起使用,从已排序的文件中删除完全相同的行。
uniq命令在管道中经常跟在sort命令的后面,还可以使用-c选项来计算某一行所出现的次数,或者使用-d选项,只报告完全相同的行:
$sort-mtest.outtest2_sort.out|uniq-c
1Anothertest.
1Testingtesting
2Thisisatest.
在这里我们合并两个文件test.out和test2_sort.out。
然后我们使用-c选项,将输出传送到uniq,这样最后的结果是按字母顺序排列的列表,完全相同的行被删除,并带有一个关于每行出现频率的报告。
打印机控制
在多数情况下,打印机命令的使用相对较为明确。
通过在lpr命令后面指定文件名,将作业发送到打印机。
如果没有提供文件名,则假定使用标准输入。
使用lpq命令,您可以获得关于发送到打印机的作业的状态报告。
当您指定作业号时,Lprm将作业从行打印机后台打印队列中删除。
$lprgrep2.out
$lpq
Printer:
lp@linux'lpdfilterdrv=uppmethod=autocolor=yes'
Queue:
1printablejob
Server:
pid1929active
Unspooler:
pid1930active
Status:
waitingforsubservertoexitat21:
24:
14.637
RankOwner/IDClassJobFilesSizeTime
activebluher@linux+928A928grep2.out77921:
24:
14
donebluherA877(STDIN)11725813:
09:
53
$lprm928
Printerlp@linux:
checkingperms'cfA928linux.local'
dequeued'cfA928linux.local'
在这里,当我们将作业发送到打印机后,我们查询其状态。
Lpq向我们显示编号为877的作业已经完成,而我们刚发送的作业编号为928。
我们使用命令lprm928将活动的作业从队列中删除。
磁盘信息
无论您是维护自己的系统还是支持具有很多用户的企业,监视磁盘空间都是系统管理员更重要的职责之一。
du、df和fdisk命令提供了可用磁盘空间的不同视图。
du命令提供对每个目录的文件空间使用情况的评估。
在默认情况下,测量的单位是块的数目,块的大小通常在安装您的系统时确定。
在以下的示例中,系统是使用1024字节的块安装的。
如果没有指定目录,则du开始对当前目录进行计算。
-h选项以易于读懂的形式提供大小的值:
$du-hDocuments
105kDocuments/jj
573kDocuments/John
682kDocuments
可以使用-a选项更改输出,该选项指示du显示文件和目录的块数。
选项--block-size=SIZE指示du以SIZE所指定字节大小的块的数目来显示输出。
$du--block-size=512Documents
209Documents/jj
1146Documents/John
1363Documents
在默认情况下,du还为每个子目录递归地打印信息。
通过使用max-depth=N选项可以限制这种操作,其中N等于被报告的最大级数:
$du--max-depth=2.
$du--max-depth=2|sort-n
4./.xemacs
4./public_html
105./Documents/jj
573./Documents/Ian
682./Documents
2420./jdevhome/system
8350./jdevhome/system9.0.3.1035
13483./jdevhome/mywork
24252./jdevhome
...
du报告目录和子目录的空间使用情况,而df报告已安装文件系统的磁盘空间使用情况:
$df
Filesystem1k-blocksUsedAvailableUse%Mountedon
/dev/hda641956321983656221197648%/
/dev/hda51460737781007528%/boot
/dev/hda993737249402844334453%/home
/dev/hda862972483876880242036862%/opt
shmfs25622002562200%/dev/shm
在这里,df报告了五个文件系统的状态。
与du类似,df利用-h选项提供人类可读的输出:
$df-h
FilesystemSizeUsedAvailUse%Mountedon
/dev/hda64.0G1.9G2.1G48%/
/dev/hda514M3.7M9.8M28%/boot
/dev/hda9915M476M440M52%/home
/dev/hda86.0G3.7G2.3G62%/opt
shmfs250M0250M0%/dev/shm
df命令还允许您利用-block-size=SIZE选项来指定块的大小。
fdisk命令是Linux的分区表操作命令。
与du和df不同,没有root用户权限时不能运行该命令。
如果指定了-l选项,则可以将它仅用于报告的目的。
它提供了您的整个分区表的完整视图,而不仅仅是您使用df所看到的扩展Linux分区:
#fdisk-l
Disk/dev/hda:
240heads,63sectors,1940cylinders
Units=cylindersof15120*512bytes
DeviceBootStartEndBlocksIdSystem
/dev/hda112862162128+cWin95FAT32(LBA)
/dev/hda2*2881940124966805Extended
/dev/hda528828915088+83Linux
/dev/hda62908444195768+83Linux
/dev/hda78459831050808+82Linuxswap
/dev/hda898418166297448+83Linux
/dev/hda918171940937408+83Linux
进程监视
在繁忙的多用户系统中,进程监视也是Linux系统管理员的一项重要职责。
在这方面,ps和top是两个最有用的命令。
ps命令提供了当前运行进程的快照。
生动翔实的一课
以下是ps的最简单形式:
$ps
PIDTTYTIMECMD
3884pts/100:
00:
00bash
3955pts/200:
00:
00more
3956pts/500:
00:
05sqlplus
PID是进程的标识号。
TTY是进程所属的终端控制台。
TIME列是进程所使用的总的CPU时间。
CMD列列出正在执行的命令行。
使用带有-ef选项的ps,返回系统中所有用户的所有进程的完整列表。
如果您将此ps命令的结果传送到grep中,则该结果更易于查看。
例如:
$ps-ef|greporacle
UIDPIDPPIDCSTIMETTYTIMECMD
oracle16331013:
58?
00:
00:
00ora_pmon_ora1
oracle16351013:
58?
00:
00:
00ora_dbw0_ora1
oracle16371013:
58?
00:
00:
01ora_lgwr_ora1
oracle16391013:
58?
00:
00:
02ora_ckpt_ora1
oracle16411013:
58?
00:
00:
02ora_smon_ora1
oracle16431013:
58?
00:
00:
00ora_reco_ora1
oracle16451013:
58?
00:
00:
00ora_cjq0_ora1
oracle16471013:
58?
00:
01:
18ora_qmn0_ora1
oracle16491013:
58?
00:
00:
00ora_s000_ora1
oracle16511013:
58?
00:
00:
00ora_d000_ora1
注意,当您将ps的输出传送到grep命令时,列标题并不象在ps命令本身所使用时那样正常地显示。
为便于说明,标题位于输出的上方,以便清楚地显示其联系。
虽然uid通常是指数字型的标识,但在第一列下指定的是用户名,标记为UID。
PPID是父进程的标识号。
对于Oracle进程,这里的标识号为1—它是init进程(所有进程的父进程)的id,因为在本系统中安装的Oracle是作为登录进程的一部分而启动的。
标为C的列是由CPU用于计算执行优先级的因子。
STIME是指进程的启动时间。
问号表示这些进程不属于任何TTY,因为它们是由系统启动的。
以下是ps命令带有某些不同选项的另一个示例。
注意,其中很多列与执行带有-ef选项的ps时的列相同:
$psaux
USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
bluh40240.00.222401116pts/1S20:
590:
00subluher
bluh40250.00.328561668pts/1S20:
590:
00bash
bluh40510.00.224881504pts/1R21:
010:
00psaux
bluh40520.00.11636600pts/1S21:
010:
00grepbluher
除了提供重要的诊断信息,ps命令还经常用于找出失控进程的PID。
例如,您的一个用户在SQL*Plus会话中输入一个笛卡尔联接。
您可以执行以下的ps命令来找出其PID:
$ps-ef|grepbluher
...
bluher40684064021:
14pts/600:
00:
00less
bluher41123945021:
28pts/500:
08:
42sqlplus
...
然后您可以使用以下命令将其终止:
$kill4112
常规用户可以看到所有的系统进程,但他们只能终止他们自己拥有的进程。
Ps只为您提供当前进程的快照。
要即时查看最活跃的进程,可使用top。
Top实时地提供进程信息。
它还拥有交互式的状态,允许用户输入命令,如n后面跟有5或10等数字。
其结果是指示top显示5或10个最活跃的进程。
Top持续运行,直到您按"q"退出top为止。
以下是top的部分显示:
8:
14pmup51min,7users,loadaverage:
0.02,0.03,0.05
96processes:
87sleeping,2running,0zombie,7stopped
CPUstates:
6.4%user,3.5%system,0.0%nice,89.9%idle
Mem:
512440Kav,392288Kused,120152Kfree,0Kshrd,55668Kbuff
Swap:
1050800Kav,0Kused,1050800Kfree236128Kcached
PIDUSERPRINISIZERSSSHARESTAT%CPU%MEMTIMECOMMAND
1289root1807800811M1796R3.72.20:
49X
1965bluher2001224411M10456S1.92.30:
01kdeinit
1986bluher180996996768R1.50.10:
00top
1803bluher2001696016M13508S0.93.30:
03kdeinit
1804bluher20
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统命令精通指南初级 系统 命令 精通 指南 初级