特别说明线上求助:
? 关于线上 Linux 指令查询:
基本上,使用 Linux 最好还是使用文字界面登入比较好!这是因为 X-Window 虽然对于新手来说,他的附加功能蛮强大的,不过,如果单纯使用 X-Window 来使用 Linux 的话,那么跟使用 Window 有何不同呢?!(当然?,如果您想将 Linux 作为 DeskTop 的话,那就另当别论?!)由于使用 X-Window 可能具备了很多的后遗症!这是因为 X-Window 只能算是 Linux 下的一套『软体』,并不是一套『作业系统』,所以 X-Window 对于你的系统的全部功能并不能完全的掌握,并且,由于 X-Window 在 Run 的时候会耗用比较多的资源,这一点对于比较老旧的机器来说是很要命的!例如鸟哥的 P-166 来来去去就只有 64 MB 的记忆体大小,如果一跑 X-Window 的话,那么我其他的网路服务可能就会有迟滞的情况发生....!基本上,对于有心想要往 Linux 里面钻的朋友呀!还是希望您可以多多的使用文字界面来设定您所有的服务,这样您比较容易清楚 Linux 的主要架构,并且,也能了解每一个指令与其相关的设定档案的相关位置,对于您往后的除错工作具有相当大的帮助呦!所以?,有鉴于『帮助节省系统资源』与『帮助使用者更加了解 Linux 系统架构』,这里鸟哥大力的推荐使用文字界面来操作 Linux 咯!
底下我们会分门别类的将各个比较常用的指令给搬上来,当然?,比较常用的一般指令(尤其是档案与目录的建置方面的指令)已经在前一章讨论过了,有需要的或可以前往一观呦!。另外一个最重要的地方是,在 Linux 主机上,已经内建各个指令的说明内容了,而且是很详细的线上说明,你可以使用:
[root@tsai root]# man command <=== command 为你欲查询的指令名称
[root@tsai root]# info command
在上表中,针对 command 这个指令你可以使用 man 或者是 info 来查询他的功能与说明,例如你要查寻 ls 这个指令时,你可以输入: man ls 或 info ls 来查询一下!适当的利用线上查询对于你的英文及相关的指令功能有一定程度的帮助喔!就鸟哥使用的情况来看,还是那句老话,『不要害怕看英文』,看久了还是会懂得啦!因为鸟哥的英文也不好(其实是很破),不过努力的看还是可以看的懂得呀!然后,通常我在开始玩 Linux 的时候,都是拿一本英文字典在旁边查...!
? 关于线上查询『参数设定档案结构』
此外,如果是一般的参数档案的话,应该如何查询其设定方式呢?!呵呵!就输入底下这个参数吧!
[root@tsai root]# man 5 passwd [root@tsai root]# man passwd
? 呵呵!仔细的比较一下上面提供的两个指令,您会很轻易的发现两者的不同!怎么说不同呢?嘿嘿!第二个显示的其实是 /usr/bin/passwd 这个执行档的使用方法介绍,但是第一个加上参数 5 的时候,就自动的变成去查询 /etc/passwd 这个档案的设定功能了!记得:『在 Linux 当中,使用 man 的时候,参数设定档的查询都是以 5 来设定的!』怎么会是 5 呢?如何设定的,哈哈!那就需要来查看一下 man 这个咚咚的搜寻路径 (MANPATH) 了!
? 线上查看 man pages 的搜寻路径:
这里有个有趣的课题要来让大家想一想,我在查询指令的用法时,或者是查询参数档案的设定时, Linux 到哪里去找的呀!?呵呵!就是到 MANPATH 这个变数当中搜寻的?!那么 MANPATH 在哪里设定的呢?嗯!很容易找的到的,那就是 /etc/man.conf 这个档案?!在该档案中,当我们执行 man 的时候,系统就会一个一个的去查询 PATH ,就有点像我们在执行某些执行档的时候一样!那么预设的 MANPATH 在哪里呀!?就是在:
o /usr/share/man
o /usr/local/man
上面这两个是大宗啦!好了,那么如果我安装了一个新的套件,是以 Tarball 安装在 /usr/local/newpackes 底下,而且我知道该套件的 man pages 放在 /usr/local/newpackes 底下,那么我该如何让该目录可以被 MANPATH 查询到呢?很简单呀!将该目录写入 /etc/man.conf 里头就可以啦!
? Linux 主机内的文件资料:
基本上,你的 Linux 里面就已经具有相当多的文件资料了,只不过是原文的!好了,你知道该文件资料摆在哪里吗?!就是在底下的目录当中啦!
o /usr/share/doc
有空的话多到里头去看看!你会看到很多相关的资讯呦!很棒的啦!
? 注意萤幕前面显示的讯息:
另外,很多错误讯息基本上都已经提供您解决的方案了!所以在发生错误的时候,请千万记得『读取一下您萤幕上显示的错误讯息』吧!!这是最容易自救的方式!
? 留心 /var/log 里头的档案:
基本上, Linux 预设的情况中,已经将大大小小的事件都写入 log file ( 登入档 ) 当中了!这个时候如果您发现您的系统有问题,嗯!到该目录下去查看一下,差不多都可以解决您的问题呢!留意留意!
Linux 多人多工环境指令:
多人多工
? 多人环境:Linux 最棒的地方就在于他的多人多工环境了!那么,什么是『多人多工』?!在 Linux 上面允许不同的人使用,而且每个人都有其特殊的权限,只有一个人具有至高无上的权力,那就是 root (系统管理员),除了他之外,其他人都必须要受一些限制的!而每个人进入 Linux 的环境设定都可以随着每个然的喜好来设定( 还记得我们在 BASH 那一章提过的 ~/.bashrc 吧!?对了!就是那个光! )!咦! Windows 也可以呀!是没错呀!但是要晓得的是,您只能在 Windows 前面才可以进行『登入』的工作,也就是说,每次 Windows 仅允许一个人物登入!当然?,Windows NT 也同样的具有这个多人多工的功能!不过,由于 NT 实在是太耗系统资源了,个人认为,还是比不上 Linux 或者是 Unix 家族的网路连线来的顺畅呢!
? 多工行为:我想,使用过 Windows 的人绝对都会遇到这样的事情:『这个档案正在使用中,您无法开启这个档案!』我哩勒!还得将正在执行当中的程式关掉之后才能开这个中间暂存档!!而且这个时候还只有我自己一个人在使用呢~~受不了~~呵呵! Linux 就不会这样?!您可以同时在不同的画面,同时由不同的人(当然?,有的是经由 SSH 网路连线过来,有的是直接在萤幕前面的朋友?!)使用『同一个档案』,不论是开启或者是修改,只要您有权限,(还记得前面说过的档案权限的资料吧?!忘记了?回头复习去吧!!)就可以使用该档案!!这个东西可有用的紧!由于鸟哥是很常使用程式的(就是 Fortran 啦,吃饭的工具!),而由于我们有一部主机专门用来工作的,所以配备比较高档一点(双 PIII 的 CPU),那么我就可以同时的进行两个 compiler 的程序,而且还不会互相的影响,并且资源分配的还蛮均匀的!哈哈!又舍弃掉 Windows 的耗费资源的咚咚,唉呦~怎么会跑得这么顺畅呀!爽毙了!!
? 七个基本视窗:在 Red Hat 当中,预设提供了六个文字界面登入视窗,以及一个图形界面,你可以使用 [Alt]+[F1].....[F7]来切换不同的终端机界面,而且每个终端机界面的登入者还可以不同人!很炫吧!不像 Windows 一次只能在萤幕前登入一个人!!这个东西可就很有用啦!尤其是在某个程序死掉的时候!
? 杀掉程序:以前的鸟哥笨笨的,总是以为使用 Windows 98 就可以啦!后来,因为工作的关系,需要使用 Unix 系统,想说我只要在工作机前面就好,才不要跑来跑去的到 Unix 工作站前面去呢!所以就使用 Windows 连到我的 Unix 工作站工作!好死不死,我一个程序跑下来要 2~3 天,唉~偏偏常常到了地 2.5 天的时候, Windows 98 就给他挂点去!当初真的是给他怕死了~~后来因为换了新电脑,用了随机版的 Windows 2000 ,呵呵,这东西真不错(指对单人而言),在当机的时候,他可以仅将错误的程序踢掉,而不干扰其他的程序进行,呵呵!从此以后,就不用担心会当机连连?!不过, 2000 毕竟还不够好,因为有的时候还是会死当!!那么 Linux 呢?哈哈!更棒了,几乎可以说绝对不会当机的!因为他可以在任何时候,将某个被困住的程序杀掉,然后在重新执行该程序而不用重新开机!够炫吧!那么如果我在 Linux 下以文字界面登入,在萤幕当中显示错误讯息后就挂了~动都不能动,该如何是好!?这个时候那预设的七个视窗就帮上忙啦!你可以随意的再按 [Alt]+[F1].....[F7] 来切换到其他的终端机界面,然后以 ps -aux 找出刚刚的错误程序,然后给他 kill 一下,哈哈,回到刚刚的终端机界面!恩~棒!又回复正常?!
? CPU 的工作问题:在早期玩 Windows 98 的朋友应该都晓得的是,Windows 98 预设 CPU 是『一直全速在跑的』,也不能这样说啦,应该说 windows 98 的 CPU 是一直在通电的!连没有工作的时候,他的 CPU 使用率还是可以到达 100% ,所以容易造成 CPU 过热当机的问题!这个情况虽然可以在 NT 获 2000 中得到解决,或者可以加灌 CPU 省电软体来降低温度,但是仍然是怪怪的!而在 Linux 当中根本就没有这个问题, CPU 没有使用,就不会有通电,哈哈!省电又没有高热呦!不然您可以瞧一瞧咱们这个网站的 CPU 使用率,除了 WWW 线上人数过多的时候会冲到 30% 左右之外,其他时候可是低低的呦!
背景执行
? 另外一个功能,就是『背景执行』的功夫了。当你输入
[root@tsai root]# cp file1 file2 &
这一串指令的时候,表示将 file1 这个档案复制为 file2 ,且放置于背景中执行,也就是说执行这一个命令之后,在这一个终端介面仍然可以做其他的工作!而当这一个指令( cp file1 file2 )执行完毕之后,系统将会在您的终端介面显示完成的消息!很便利喔!
多人多工的问题
? 多人多工确实有很多的好处,但其实也有管理上的困扰,因为使用者越来越多,将导致你管理上的困扰哩!另外,由于使用者日盛,当使用者达到一定的人数后,通常你的机器便需要升级了,因为 CPU 的运算与 RAM 的大小可能就会不敷使用!
好了!废话说完了!开始来谈一谈几个常用的指令吧!
背景工作管理:
有时后我们并不是一定要在萤幕前进行工作的,尤其是某些朋友特别不喜欢同时开启多个视窗,会容易搞混掉!这个时候就需要使用到背景工作管理的一些指令?!这些指令是需要同时使用的!如 &, [Ctrl]+z, bg, fg, jobs, 与 kill 等等!此外,最主要利用到『背景工作』的使用者通常是怎么回是呢?『就是当您的主机已经被限制使用者仅能同时登入一次』的时候,也就是说,你无法用两个视窗登入到同一部主机,可以做的到吗?可以呀!目前很多的主机为了节省系统资源,就是这样搞的,然而这个时候万一您要进行很多工作的时候,要怎么办?!阿!伤脑筋呀!还好!在 Linux 里面支援了很多这方面的事情!我们可以这样做呢! ^_^
学习本章的时候会使用到部分的命令重导向,所以请前往 BASH SHELL 阅读一番!
? &
语法:
[root @test /root ]# command & 参数说明: 范例: [root @test /root]# find / -name testing & <==将该执行程序丢到背景执行 [root @test /root]# fg <==将该程序叫回萤幕前执行
说明:
如果想要让萤幕中的工作( command )在背景底下执行的时后,就使用 & 吧!不过,由于是背景执行的,所以该程序的输出并不会显现在萤幕上,所以需要特别留意输出的资讯的管线重导的问题呦!另外,如何将该程序叫回来萤幕上面执行呢?就使用 fg 即可!
其他:
当然?,也可以使用 [Ctrl]+z 来将目前正在进行当中的工作丢到背景底下!那么摆在背景底下执行有何好处呢?!最大的好处就是不怕被『 [Ctrl]+c 』这个中断指令来中断了!!
? [Ctrl]+z
语法:
[root @test /root ]# command [root @test /root ]# ^Z <==按下[Ctrl]加上 z 键 参数说明: 范例: [root @test /root]# vi .bashrc ^Z <==在 vi 当中的一般模式中键入[Ctrl]+z [1]+ Stopped vi .bashrc <==这里会显示将资料丢到背景当中了! [root @test /root]#
说明:
如果你正在进行 vi ,而且是在编辑一个重要资料档案,但是偏偏你想起有的程序需要留意,因此需要退出 vi ,不过,你并不想这个时候储存退出 vi ,那么该如何是好呢?!就将资料丢到背景里面去吧!以上面的例子来说明,当你在执行编辑 /root/.bashrc 这个档案时,想要暂时离开,那么就直接在 vi 的『一般模式』当中输入[Ctrl]加上 z (小写)按键,,那么系统就会告诉你『工作项目 [1] 在背景当中,而其状态为[Stopped]亦即是停止的状态!』,并且会离开 vi 进入到 command line 当中,等待使用者输入指令!这个咚咚很好用的呦!
其他:
那如果想要回到 vi 呢?!呵呵,就需要使用 jobs 配合 bg 或 fg ?!
? jobs
语法:
[root @test /root ]# jobs 参数说明: 范例: [root @test /root]# vi .bashrc ^Z <==在 vi 当中的一般模式中键入[Ctrl]+z [1]+ Stopped vi .bashrc <==这里会显示将资料丢到背景当中了! [root @test /root]# jobs [1]+ Stopped vi .bashrc <==显示有一个工作在背景下,状态为停止。
说明:
刚刚我们提到的 & 与 vi 在背景下执行,那么你怎么知道目前你所进行的背景底下的工作有哪些呢?!很简单,就是使用 jobs 就可以观察到啦!以上式为例,使用 jobs 就可以知道目前的背景中工作项目有 vi .bashrc 这一项!那个中括号([])里面的数字就是 jobs 的代号?!
其他:
? fg 与 bg
语法:
[root @test /root ]# fg %number [root @test /root ]# bg %number 参数说明: % :后面接数字,表示 jobs 的工作代号 number :就是工作代号 范例: [root @test /root]# find / -name test ^Z [1]+ Stopped find / -name testing [root @test /root]# vi .bashrc ^Z [2]+ Stopped vi .bashrc <==这里会显示将资料丢到背景当中了! [root @test /root]# jobs [1]- Stopped find / -name testing [2]+ Stopped vi .bashrc [root @test /root]# bg %1 [root @test /root]# jobs [1]- Running find / -name testing & [2]+ Stopped vi .bashrc [root @test /root]# fg %2 进入 vi 画面?!
说明:
OK!那么如何来了解 jobs 的背景(bg)与前景(fg)的管控呢?!这里请注意?!这个 bg 是将『背景当中的程式由 stopped 变成 Running 』的一个手段,至于 fg 『则是将背景中的指令移到萤幕上来动作』,那你怎么知道你的背景当中有多少的工作(jobs)在进行呢?!就是执行 jobs 来看看背景程式的代号?!然后以 bg %number 来将资料在背景中执行,而 fg %number 则是将代号为 number 的程式移动到萤幕前面动作!
其他:
? kill
语法:
[root @test /root ]# kill -sigal %number 参数说明: %number :背景工作的代号,可使用 jobs 查询 signal -1 :重新读取一次参数设定档(类似 reload ) -2 :使用者中断该工作,类似 [Ctrl]+c 来中断一个工作 -9 :立刻杀掉一个工作,不论该工作是否为僵尸程序 -15 :停止一个工作(这是预设值) 范例: [root @test /root]# jobs [1]+ Stopped vi .bashrc [root @test /root]# kill -9 %1
说明:
如果想要直接杀掉背景工作中的项目,可以直接输入 kill 来杀掉!但是由于预设是将该程序停止而已,不见得一定可以将该工作清除干净,因此需要送出一个讯号,告诉系统你就是要砍掉该程序!这个时候就使用 kill -9 吧!
其他:
程序与资源管理:
终于来到最严重的系统管理员的担心部分!一个被入侵的 Linux 系统最容易被修改的是什么?想必您一定有听说过所谓的『木马程式』吧!所谓的木马程式就是以一些小指令,由背景执行的方式常驻在系统当中,而当你的系统被入侵者入侵之后,对于您 Linux 主机上面的资讯,呵呵!就是由这些木马程式传送到入侵者手中的!所以?!良好的管理程序的习惯,也是系统管理员必须要做的功课呢!好了!我们必须要了解的是『什么是程序』呀!?说穿了,这也没有什么好神秘的,『程序就是您在执行或者启动一个事件的时候,系统会发给他的一个执行序!』换句话说,当您启动了一个指令或者是 shell 的时候,系统就会给这个事件或者是 shell 一个代码,而如果有任何的其他服务要使用到你目前这程序的资源时,就会自动的跑来了解一下您的 PID ( process ID, 就是程式序?!),底下我们使用 ps 与 top 这两个最常用来观察系统程序工作状态的指令来了解一下什么是程序啦!
另外,我们还得需要来了解一下,什么是『父程序, PPID』与『子程序, child precess』呢?!呵呵!说穿了也没有什么了不起!就是『子程序是由父程序执行而得的一个程序,当子程序死掉时,父程序通常不会被影响,但是当父程序死掉时,则所有子程序将一并结束!』常常很多朋友都在反应:『唉呦!我的 sendmail 怎么关都关不掉,真是见鬼了!』呵呵!这个时候您就得告诉他?:『唉呦!你关掉的不是父程序呀!只是一些子程序,由于父程序还存活着,所以子程序就会不动的涌出?!』
? ps
语法:
[root @test /root ]# ps -aux 参数说明: a :选择所有的程序列出 u :所有使用者的程序均列出 x :所有 tty 的程序列出 范例: [root @test /root]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 1384 468 ? S Mar31 0:05 init [3] root 2 0.0 0.0 0 0 ? SW Mar31 0:00 [keventd] root 3 0.0 0.0 0 0 ? SWN Mar31 0:00 [ksoftirqd_CPU0] root 4 0.0 0.0 0 0 ? SW Mar31 0:11 [kswapd] root 5 0.0 0.0 0 0 ? SW Mar31 0:00 [bdflush] root 6 0.0 0.0 0 0 ? SW Mar31 0:00 [kupdated] root 130 0.0 0.0 0 0 ? SW Mar31 0:00 [kjournald] root 131 0.0 0.0 0 0 ? SW Mar31 0:01 [kjournald] root 132 0.0 0.0 0 0 ? SW Mar31 0:03 [kjournald] root 133 0.0 0.0 0 0 ? SW Mar31 0:12 [kjournald] root 482 0.0 0.2 1444 528 ? S Mar31 0:03 syslogd -m 0 ........
说明:
这是用来查询目前主机环境中,在背景执行的相关程序!我通常使用『 ps -aux 』这个参数来列出所有的资讯以提供自己检查程序的问题!在上面的程序列出当中,说明如下:
? USER:说明该程序是属于哪一个人的;
? PID:该程序的代号;
? %CPU:代表该程序使用了多少 CPU 资源;
? %MEM:代表该程序使用了多少的 RAM ;
? VSZ, RSS:占去的 ram 的大小( bytes );
? TTY:是否为登入者执行的程序?若为 tty1-tty6 则为本机登入者,若为 pts/?? 则为远端登入者执行的程序
? STAT:该程序的状态,( R )为可执行的,( S )为该程序正在睡眠中,就是没有执行了,( T )正在侦测或者是停止了,( Z )僵尸程式,就是 zombie 死掉的程式啦!需要以 kill 除去?!
? START:该程序开始的日期;
? TIME:该程序跑了多久的时间?
? COMMAND:该程序的内容啦!
其他:
这是一个很有用的指令,尤其是在侦测系统的状态时!不过,这个程式也是入侵者最喜欢修改的执行程式了!因为他可以写一个 script 来骗 root 呀!让某些木马程式没有办法显示出来~~重要的很!!善加利用吧!此外,那个 PID 是挺重要的资讯呦!因为在后面的 kill 就是藉由了解 PID 来进行程序的删除的动作的!
? top
语法:
[root @test /root ]# top 参数说明: 在执行 top 的程式中,可以输入下面的字元以进行排序 A :以 age 亦即是执行的先后程序进行排序 T :由启动的时间排序 M :以所占的 memory 的大小排序 P :以所耗用的 CPU 资源排序 范例: [root @test /root]# top 11:55pm up 8 days, 7:40, 1 user, load average: 0.22, 0.14, 0.10 71 processes: 69 sleeping, 2 running, 0 zombie, 0 stopped CPU states: 24.6% user, 3.7% system, 0.0% nice, 71.5% idle Mem: 255892K av, 222300K used, 33592K free, 0K shrd, 48084K buff Swap: 289128K av, 8184K used, 280944K free 110472K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 9898 root 9 0 5976 5976 1364 S 5.5 2.3 0:00 mrtg 4744 apache 14 0 5312 5052 3764 S 2.1 1.9 0:16 httpd 9189 apache 14 0 4520 4256 3752 S 1.9 1.6 0:01 httpd 9187 apache 10 0 4544 4276 3800 S 1.7 1.6 0:01 httpd 9212 mysql 9 0 7280 4772 2716 S 0.7 1.8 0:00 mysqld 9888 root 12 0 1064 1064 832 R 0.7 0.4 0:00 top 4842 mysql 10 0 7280 4772 2716 S 0.5 1.8 0:06 mysqld 9218 mysql 10 0 7280 4772 2716 S 0.5 1.8 0:00 mysqld
说明:
使用 ps 是一个不错的管理工具,但是 ps 毕竟不是动态的,若使用 top 的话,呵呵!可以用动态(每五秒钟更新一次)的方式来侦测程序的进行!而且在程序进行中,还可以使用 P 来以 CPU 耗用资源排序、使用 M 来以 memory 占用大小排序等等,非常好用的管理工作!有空的话多以 man top 来玩一玩吧!
其他:
? free
语法:
[root @test /root ]# free 参数说明: -k :以 KBytes 来显示记忆体 -m :以 MBytes 来显示记忆体 范例: [root @test /root]# free total used free shared buffers cached Mem: 255892 222076 33816 0 49072 112272 -/+ buffers/cache: 60732 195160 Swap: 289128 7572 281556
说明:
另一个观看系统资源的就是使用 free 来检查目前记忆体的使用情况?!在上面显示的是,我有 256 MB 的时体记忆体,也有大约 270 MB 的 swap (就是虚拟记忆体啦!)大小。
其他:
? sar
语法:
[root @test /root ]# sar [-u] [-r] 秒数 次数 参数说明: -u :看 CPU 使用的情况 -r :看 memory 使用的情况 秒数:几秒钟观测一次? 次数:共观测几次 范例: [root @test /root]# sar -u 1 3 12:10:28 AM CPU %user %nice %system %idle 12:10:29 AM all 0.00 0.00 0.00 100.00 12:10:30 AM all 0.00 0.00 0.00 100.00 12:10:31 AM all 12.00 0.00 1.00 87.00 Average: all 4.00 0.00 0.33 95.67 [root @test /root]# sar -r 1 3 12:11:11 AM kbmemfree kbmemused %memused kbmemshrd kbbuffers kbcached kbswpfree kbswpused %swpused 12:11:12 AM 24416 231476 90.46 0 51068 112536 281556 7572 2.62 12:11:13 AM 24420 231472 90.46 0 51068 112536 281556 7572 2.62 12:11:14 AM 24392 231500 90.47 0 51068 112540 281556 7572 2.62 Average: 24409 231483 90.46 0 51068 112537 281556 7572 2.62
说明:
鸟哥真的是很喜欢使用 sar 来看系统的资源呢!真的是太方便了!比较常用的是 CPU 与 RAM 的观察,当然?,还可以观察硬碟的 I/O 变化!!在上面的例子中,观察 CPU 的现象中,可以发现 CPU idle 的情况很长!不错!另外,在 RAM 的观测中,比较常使用的是 %memused (使用的百分比)及 %swpused (虚拟记忆体使用的百分比),很方便吧!一览无遗呦!
其他:
事实上, VBird 也已经以 sar 来作为 MRTG 绘制图表的一个工具,很是方便的!
? kill
语法:
[root @test /root ]# kill -signal PID 参数说明: 那个 -signal 跟上面的 kill 一样: -9 :杀掉该程序 -15 :停止该程序! 范例: [root @test /root]# kill -9 2380
说明:
要杀掉一个程序的时后,自然需要知道该程序的 PID 才行!另外,需要注意的是,由于很多的程序都有附属关系,例如 sendmail 可能会同时开启相当多的程序在工作(如果邮件量很大的时后!)所以,如果砍掉的是『子程序』是无法将整个程序杀掉的!而要知道该程序的代号(PID)自然就得善用 ps, top 等工具?!
其他:
? uname
语法:
[root @test /root ]# uname [-apnr] 参数说明: -a :所有的系统资讯均列出 -p :列出 CPU 资讯 -n :列出 host name -r :列出 kernel 版本资讯 范例: [root @test /root]# uname -a Linux tsai.adsldns.org 2.4.18 #2 Mon Mar 25 21:51:51 CST 2002 i586 unknown
说明:
想要知道你的系统资讯吗?包括你的核心版本、主机名称、CPU 资讯等等!使用 uname 就可以达到啦!另外,如果对于你的 CPU 有兴趣的话,那么不妨在 /proc 底下看看:
[root @test /root ]# more /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 5 model : 9 model name : AMD-K6(tm) 3D+ Processor stepping : 1 cpu MHz : 400.917 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr bogomips : 799.53
看到了吗?!马上就知道你的 CPU 的 type ?!
程序的优先顺序: nice, renice,
好了!接着下来我们来谈一谈『我哪一个程序可以最优先被处理!?』呵呵!这是个很重要的课题!怎么说呢?因为在你的系统当中,通常『同一个时间一定有多个程序会占用到 CPU 的资源,哪么那个程序比较重要,让 CPU 可以先跑该程序,就是一个重要的课题了!』您说是吧!好了,如果您还记得 ps 这个指令的话,那么来看一看加入 ps -l 这个功能所显示出来的讯息吧!
[root @test /root ]# ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 100 S 0 5624 5606 0 70 0 - 608 wait4 pts/0 00:00:00 bash 000 R 0 6944 5624 0 76 0 - 769 - pts/0 00:00:00 ps
注意看到上面那些资讯:
? UID 代表执行者的身份;
? PID 代表这个程序的代号;
? PPID 代表这个程序是由那个程序发展出来的,亦即是父程序;
? PRI 代表这个程序『可被执行的优先顺序』越小越早被执行!
? NI 代表这个程序的 nice 值!
好啦!这里有两个奇怪的资讯,一个是 PRI 一个是 NI 这两个鬼东西!嗯! PRI 还容易理解,就是该程序被 CPU 执行的先后顺序啦!所以当 CPU 忙线中的时候,那么 PRI 值月小的就会被越快执行!那么 NI 是什么?呵呵!那个就是 nice 值啦!那么什么是 nice 值呢?就是『系统可被执行的修正数值!』如前面所说的,由于 PRI 是越小越快被执行,而由于我们加入 nice 值之后,将使得 PRI 变为:
? PRI(new) = PRI(old) + nice
呵呵!如此一来,则当 nice 值为负值的时候,那么该程序将会提前被执行!就是变的优先处理?!这个概念需要特别的注意!另外,这里也需要注意的是:『只有具有 root 权限的身份者,可以将程序的 nice 调为负值』一般而言,我们可以这样说:
? 一般使用者可用 nice 值 : 0 ~ 39
? root 管理员可用 nice 值: -19 ~ 19
没错!就是这样!底下我们来谈一谈,如何在:
1. 程序一开始就给予一个 nice 值;与
2. 改变正执行中的程序之 nice 值
? nice
语法:
[root @test /root ]# nice [-n number] command 参数说明: -n :就是后面那个 number 即为 nice 值! 范例: [root @test /root]# nice -n -5 find / -name core > /tmp/core
? 说明:
就如同前面说的, nice 是用来调整程序的执行优先顺序!这里只是一个执行的范例罢了!通常什么时候要将 nice 值调大呢?
o 一些非重要的程序之进行:例如备份工作!由于备份工作相当的耗系统资源,这个时候就可以将备份的指令之 nice 值调大一些,可以使系统的支援分配的更为公平!
? renice
语法:
[root @test /root ]# renice [number] PID 参数说明: 范例: [root @test /root]# ps -aux [root @test /root]# renice 5 234
? 说明:
这个 renice 的功能就不太一样了!由于 renice 是『将一个正在进行当中的程序的优先顺序降低』,所以必须要:
先取得该程序的 PID 才行!
所以?,通常 renice 都与 ps 相互配合才对!先找处某个程序的 PID 之后,才来重新的设定其 nice 值!
讯息管理:
想要知道开机的时候 Linux 侦测主机的讯息吗?想知道目前有哪些人在你的机器上吗?想知道目前的时间吗?!想了解最近某个人登入的时间吗?!嗯!这都需要使用到一些讯息管理的程式呦!像是 last, who, dmesg 等等!
? dmesg
语法:
[root @test /root ]# dmesg 参数说明: 范例: [root @test /root]# dmesg | more
说明:
在开机的时候你会发现有很多的讯息出现吧,例如 CPU 的形式、硬碟、光碟型号及硬碟分割表等等。但是讯息都是『刷』的一声就跑过去了!这些讯息有时候对于系统管理员是很重要的,因为他提供了系统的资讯呀!要看这些讯息你可以用 dmesg 这个指令来观看!
其他:
加上 |more 的原因是因为讯息太多了,所以可以加入这个管线指令来使画面暂停!
? uptime
语法:
[root @test /root ]# uptime 参数说明: 范例: [root @test /root]# uptime 11:27pm up 9 days, 7:12, 1 user, load average: 0.07, 0.12, 0.14
说明:
知不知道你的 Linux 主机已经开机多久了?还有,过去 1, 5, 15 分钟的系统平均 loading 是多少呢?呵呵!使用 uptime 就对了!在上面的例子中,执行 uptime 之后,显示目前时间是 11:27pm, 而系统已经开机了 9 天又 7:12 之多,目前有一个使用者在线上,过去 1, 5, 15 分钟系统平均负荷为 0.07, 0.12, 0.14!
其他:
? who & w
语法:
[root @test /root ]# who [root @test /root ]# w 参数说明: 范例: [root @test /root]# who root pts/0 Aug 2 20:43 [root @test /root]# w 8:48pm up 4 days, 5:08, 1 user, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.1.2 8:43pm 0.00s 0.38s ? -
说明:
这是用来视察目前在系统上的使用者指令,你也可以使用 w 这个指令来下达动作。基本上,who 与 w 的功能是相同的,只是 who 仅列出使用者名称与登入时间,至于 w 则会列出使用者的
? 来源位址(IP):就是 FROM 那一项即是IP;
? 登入时间:即是 LOGIN@ 那一项;
? 工作项目:就是 WHAT 那一项!
此外,不知道你有没有发现,在使用 w 的时候,开头会有一个讯息,『 8:48m up 4days ....』那个是 uptime 的输出结果!
其他:
? whoami
语法:
[root @test /root ]# whoami 参数说明: 范例: [root @test /root]# whoami test
说明:
如果您是一位称职的系统管理员,那么您应该晓得尽量不要使用 root 登入系统这件事吧!那么如何管理系统呢?!可以使用 su 或者是 sudo 来管理啊!通常我是比较习惯使用 su 啦! OK!那么您已经是 root 的身份了,不过,可能由于执行程序的关系,常常会忘了到底自己的真实身份,这个时候 whoami 就可以解救你啦!如上面所示,虽然我的身份是 root ,不过,实际上我是 test 的啦!使用 su 变换身份而已!!
其他:
? id
语法:
[root @test /root ]# id 参数说明: 范例: [test @test /root]# id uid=501(test) gid=500(users) groups=500(users)
说明:
如果 whoami 还没有办法满足你的需求,您还想了解你的 UID 与 GID (会在后面的增加使用者说明),还有所有支援的群组,那么就得使用 id ?!以上面为例您的身份为 test ,这个身份的 UID 是 501 ,而 gid 是 500 ,所属群组只有 users 这一个!!
其他:
? last
语法:
[root @test /root ]# last 参数说明: -number :number 为数字,如果您的登入讯息太多了,可以使用这个指令! 范例: [test @test /root]# last -5 test pts/0 192.168.1.2 Tue Apr 9 20:34 - 20:35 (00:01) test pts/0 192.168.1.2 Tue Apr 9 20:14 - 20:30 (00:15) test ftpd21546 192.168.1.2 Tue Apr 9 02:55 - 03:06 (00:10) test ftpd15813 192.168.1.2 Tue Apr 9 01:20 - 01:21 (00:00) test pts/0 192.168.1.2 Mon Apr 8 20:14 - 00:27 (04:13) wtmp begins Tue Apr 2 01:12:26 2002
说明:
要知道有没有被入侵,常常使用的就是 last 这个指令?!包括 ftp, telnet, ssh 都会被纪录在这个讯息当中,不过目前是只有记录一个月的量!这个指令真的是不错用的!常常可以发现是否有不正常的人物登入资讯呢!
? date
语法:
[root @test /root ]# date [-s] [-R] [root @test /root ]# date +[format] 参数说明: -s :用来设定 Linux 主机时间的参数,如果你的主机时间不对,用这个就对啦! -R :如果发现你的语系是中文的,在纯文字模式底下用这个试试看 +[format] %a :星期几 %b :月份名称 %d :日期 %y :年份 :还有很多的参数,请使用 man 自行查询 范例: [root @test /root]# date +%a" "%b" "%y Wed Apr 02 [root @test /root]# date -s 04/10/2002 <==改变日期 [root @test /root]# date -s 02:02:00 <==改变时间 [root @test /root]# clock -r <==检查 BIOS 里面的时间 [root @test /root]# clock -w <==将目前 Linux 的时间写到 BIOS 里面去!
说明:
date 简单的用法是只能查看时间的,不过,更广义的用法是可以搭配很多种样式来进行时间输出的纪录!此外,在 Linux 底下要更改时间,呵呵呵呵!也需要使用到 date 呦!不过,千万记得, date 改完时间后,还要使用 clock 将时间记录在 BIOS 里面才算是完成了时间修改呦!
? cal
语法:
[root @test /root ]# cal [-3my] 参数说明: 范例: [test @test /root]# cal -3 March 2002 April 2002 May 2002 Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa 1 2 1 2 3 4 5 6 1 2 3 4 3 4 5 6 7 8 9 7 8 9 10 11 12 13 5 6 7 8 9 10 11 10 11 12 13 14 15 16 14 15 16 17 18 19 20 12 13 14 15 16 17 18 17 18 19 20 21 22 23 21 22 23 24 25 26 27 19 20 21 22 23 24 25 24 25 26 27 28 29 30 28 29 30 26 27 28 29 30 31 31
说明:
这个指令在叫出月历!
? hostname
语法:
[root @test /root ]# hostname 参数说明: 范例: [test @test /root]# hostname test.adsldns.org
说明:
很简单吧!就是用来查看你主机名称的指令就是了!