Linux必学的系统管理命令(1) |
| 发布时间:2004.10.18 11:14 来源:赛迪网-开放系统世界 作者:曹元其 |
|
对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。熟悉了Linux常用的文件处理命令以后,这一讲介绍对系统和用户进行管理的命令。 df 1.作用 2.格式 3.主要参数 4.说明 超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支配。也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作。 5.应用实例
从上面除了可以看到磁盘空间的容量、使用情况外,分区的文件系统类型、挂载点等信息也一览无遗。 top 1.作用 2.格式 3.主要参数 4.说明
在图1中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的进程、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。第六行显示的项目最多,下面列出了详细解释。 可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。 5.应用实例
free 1.作用 2.格式 3.主要参数 4.应用实例 使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。 quota 1.作用 2.格式 3.参数 4.应用实例
以上显示ID号为502的caojh账号,文件个数设置为500~1000个,硬盘空间限制设置为200MB~400MB。一旦磁盘配额要用完时,就需要删除一些垃圾文件或向系统管理员请求追加配额。 at 1.作用 2.格式 3.主要参数 4.应用实例 上面命令表示让系统在两天后的17:30执行文件data中指明的作业。 lp 1.作用 2.格式 3.主要参数 4.应用实例 其中2、3、4分别是文件名;"request id is 11 (3 file(s)) "表示这是第11个打印命令,依次打印这三个文件。 (2)设定打印优先级别 通过添加"-p 90",规定了打印作业的优先级为90。它将在优先级低于90的打印作业之前打印,包括没有设置优先级的作业,缺省优先级是50。 useradd 1.作用 2.格式 3.主要参数 4.说明 5.应用实例 需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。 groupadd 1.作用 2.格式 3.主要参数 4.应用实例 此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。 kill 1.作用 2.格式 3.参数 4.说明 Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的Apache服务器的监控进程。 kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。 5.应用实例 (2)解除Linux系统的死锁 (3)使用命令回收内存 然后使用下面命令: (4)killall命令 crontab 1.作用 2.格式 3.主要参数 crontab文件的格式为"M H D m d cmd"。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。 4.说明 5.应用实例 如果输入以下内容:35 17 * * 5 wall "Tomorrow is Saturday I will go CS",然后存盘退出。这时在/var/spool/cron/目录下会生产一个cao的文件,内容如下:
这样每个星期五17:35系统就会弹出一个终端,提醒星期六可以打打CS了!显示结果见图3所示。
动手练习 1.联合使用kill和top命令观察系统性能的变化 首先启动一个终端运行top命令,然后再启动一个终端使用kill命令,见图4所示。
这时利用上面介绍的kill命令来中止一些程序: 然后再看top命令终端的变化,包括内存容量、CPU使用率、系统负载等。注意,有些进程是不能中止的,不过学习Linux命令时可以试试,看看系统有什么反应。 2.使用at和halt命令定时关机
此时实际上就已经进入Linux系统的Shell,并且编写一个最简单程序:halt -i -p。上面Shell中的文本结束符号
3.用crontab命令实现每天定时的病毒扫描 (1)建立一个文件,文件名称自己设定,假设为caoproject: (2)文件内容如下: (3)使用crontab命令添加到任务列表中: 4.用kill使修改的配置文件马上生效 inetd是一个监听守护进程,监听与提供互联网服务进程(如rlogin、telnet、ftp、rsh) 进行连接的要求,并扩展所需的服务进程。默认情况下,inetd监听的这些daemon均列于/etc /inetd.conf文件中。编辑/etc/inetd.conf文件,可以改变inetd启动服务器守护进程的选项,然后驱使inetd以SIGHUP(signal 1)向当前的inetd进程发送信号,使inetd重读该文件。这一过程由kill命令来实现。 上面代码表明查询inetd.conf的进程号(PID),这里假设是1426,然后使用下面命令: 这一讲介绍的系统管理命令都是比较重要的,特别是crontab命令和quota命令使用起来会有一定难度,需要多做一些练习。另外,使用kill命令要注意"-9"这个参数,练习时最好不要运行一些重要的程序。 |
一、列出文件列表的ls命令
ls命令(list)是很常用的命令,可以让用户显示目前目录中有哪些文件和子目录。因为ls的参数相当多,但是有些极少在使用,所以这里仅介绍常用的部分:
1、不加任何参数时,显示当前目录的内容。
[root@localhost /root]# ls
Desktop
2、-a 显示所有文件和目录(若无此参数,句点开始的文件和目录不会显示出来)。
[root@localhost /root]# ls -a
. .bash_logout .Desktop_big5 .gv .tcshrc
.. .bash_profile .Desktop_en .kde .Xauthority
.abcuser.dict .bashrc .Desktop_gb .kderc .Xdefaults
.abcuser.rem .cshrc .gnome .lynx_cookies
.bash_history Desktop .gnome-desktop .sawfish
3、-A 显示所有文件和目录(它比-a少显示.和..两项)。
4、-l 以长格式显示
[root@localhost /root]# ls -l
total 0
lrwxrwxrwx 1 root root 12 6月 19 11:20 Desktop ->; .Desktop_gb/
5、混合使用参数:命令的大部分参数可以合并使用。
读者可能已经注意到,藏格式显示提供了许多信息,其中各个字段的意义将在以后的系列中介绍。
二、切换目录的cd命令
cd(change directory)可以让用户切换目前的目录,下面来看几个cd命令的常见用法:
[root@localhost /root]#cd data <==切换到data子目录
[root@localhost /root]#cd .. <==切换到上一级目录
[root@localhost /root]#cd / <==切换到根目录
[root@localhost /root]#cd ~ <==切换到用户根目录
[root@localhost /root]#cd /usr/bin <==切换到/usr/bin目录
在Linux的目录中,有几个特别的目录:"."表示当前目录,".."表示上一层目录,"/"表示根目录,"~"表示用户根目录(用户登录时所在的目录)。
三、建立目录的mkdir命令
mkdir(make directory)可用来建立子目录。例如:
[root@localhost /root]#mkdir data <==在当前目录下建立data目录
[root@localhost /root]#mkdir /data <==在根目录下建立data目录
注意:用户不能在一个不存在的目录中建立子目录。例如:目录/home2若不存在,则不能直接建立/home2/tony目录。
四、删除目录的rmdir命令
rmdir(remove directory)可以用来删除"空"的子目录:
[root@localhost /root]#rmdir data <==删除data目录
[root@localhost /root]#rmdir /data <==删除根目录下的data目录
五、拷贝文件的cp命令
cp(copy)可以将文件拷贝成另一个文件,或是拷贝到另一个目录中。例如,下面实例可以在目前所在目录中,将data1.txt拷贝成data2.txt。
[root@localhost /root]#cp data1.txt data2.txt
下面范例可以将data3.txt拷贝到/tmp/data目录中:
[root@localhost /root]#cp data3.txt /tmp/data
为了方便进行各种拷贝操作,cp命令包含了许多参数:
1、-i 覆盖相同名称文件前先询问用户。下面实例会将data.txt拷贝到backup目录中,如果有覆盖情况发生,则询问用户。
[root@localhost /root]#cp -i data.txt bachup
cpverwrite 'backup/data.txt'? y
2、-v 显示用命令执行过程。例如:
[root@localhost /root]# cp -v data.txt data1.txt
`data.txt' ->; `data1.txt' <==执行过程
3、-R 递归拷贝,即拷贝时将所有目录一并拷贝。下面范例会将目前目录下的所有文件(含子目录)拷贝到backup目录中:
[root@localhost /root]#cp -R * bachup
六、删除文件或目录的rm命令
rm(remove)可用来删除文件或目录。一般用法如下:
[root@localhost /root]#rm data.txt <==删除data.txt文件
[root@localhost /root]#rm * <==删除目前目录中所有文件
rm有一些常用参数:
1、-f 强迫删除文件爱你。在某些Unix系统默认状态下,rm命令会对每个要删除的文件提出确认询问。如果用户确定要删除这些文件,可以使用-f参数来避免询问。
[root@localhost /root]#rm -f *.txt
2、-i 在删除文件时提出询问。
[root@localhost /root]#rm -i *
rm:back:is a directory <==遇到目录会略过
rm:remove 'data1.txt'? y <==删除文件时会询问
rm:remove 'data2.txt'? n
rm:remove 'data3.txt'? n
3、-r 递归删除(连子目录一并删除)。下列命令会删除backup目录和backup目录下的所有文件和子目录。
[root@localhost /root]#rm -r backup
七、让显示画面暂停的more命令
当所要显示的内容会超过屏幕大小时,用户可以使用more命令来显示内容按多页方式进行显示,在用户按下任何键时,继续显示下一个画面:
[root@localhost /root]#ls -al |more
total 132
drwxr-x--- 9 root root 4096 6月 27 21:18 .
drwxr-xr-x 22 root root 4096 6月 27 21:06 ..
-rw-r--r-- 1 root root 42256 6月 19 17:25 .abcuser.dict
......略
--More-- <==暂停,按下任何键会继续显示
more命令也可以单独使用,可以用来显示文字文件的内容。下面实例会显示data.txt文件的内容,并会在画面满屏时,暂时停止显示:
[root@localhost /root]#more data.txt
八、连接或显示文件的cat命令
cat(concatenate)可以显示文件的内容(经常和more搭配使用),或将多个文件合并成一个文件。以下命令会显示/etc/issue文件的内容:
[root@localhost root]# cat /etc/issue |more
Red Flag Linux release 4.0 (HOT)
Kernel \r on an \m
以下实例会用cat命令将data.txt的内容显示出来,而>;>;命令将显示结果重新定向附加到all_data.txt后面:
[root@localhost root]# cat data.txt >;>; all_data.txt
用户也可使用cat命令将文件内容合并到另一个文件中。例如,下面命令会将data1.txt和data2.txt的内容合并到all_data.txt文件中:
[root@localhost root]# cat data1.txt data2.txt >; all_data.txt
关于">;"与">;>;"的用法,稍后介绍。
九、移动或更改文件名的mv命令
mv(move)可以将文件移动到另一个地方,或者更改文件名称(Lniux中并没有ren或rename命令来更改文件名)。下面范例可将data.txt文件移动到别的目录中:
[root@localhost root]#mv data.txt .. <==将data.txt文件移动到上一层目录
[root@localhost root]#mv data.txt / <==将data.txt文件移动到根目录
下面范例可将data1.txt改名为data2.txt:
[root@localhost root]#mv data1.txt data2.txt
十、显示目前所在目录的pwd命令
pwd(print working directory)可显示用户目前所在目录。
[root@localhost root]#pwd
/root
十一、寻找文件的find命令
find命令可以指定搜索目录,并在搜索目录(和它所有的子目录)中搜索特定文件。
下面实例指定搜索目录为根目录(/)和根目录以下的所有子目录(这等于是搜索整个系统),搜寻文件名(-name参数)为gzip,如果能够找到相符合的文件,则显示出来(如果不加-print,搜寻结果不会显示出来):
[root@localhost root]# find / -name gzip -print
/usr/bin/gzip
/bin/gzip
搜寻结果表示/usr/bin/和/bin/目录都有名为gzip的文件。
十二、显示文件类型的file命令
file命令可以用来显示文件类型。下面范例会显示当前中所有文件的文件类型:
[root@localhost root]# file ./*
./Desktop: directory
./install.log: Non-ISO extended-ASCII text
./install.log.syslog: empty
./partitioninfo: ASCII text
十三、搜索字符串的grep命令
grep命令可以搜索特定字符串并显示出来,一般用来过滤先前结果,而避免显示太多不必要的信息。下面实例显示了file ./*命令所显示的结果中,包含ASCII字符串的行:
[root@localhost root]# file ./* |grep ASCII
./install.log: Non-ISO extended-ASCII text
./partitioninfo: ASCII text
"|"是管道符,稍后会介绍。
十四、重新定向与管道符
重新定向(redirect)可将某命令的结果输出到文件中,它有两种命令">;"和">;>;"。>;可将结果输出到文件中,如果该文件原本就存在,则该文件原有的内容会被删除;>;>;则将结果附加在原文件后面,原文件的内容不会被清除。
下面实例可将目前目录下的文件名输出到dir.txt文件中:
[root@localhost root]#ls -al >; dir.txt
下面实例可将data1.txt文件内容附加到all_data.txt文件中:
[root@localhost root]#cat data1.txt >;>; all_data.txt
管道符|(pipe)可将某命令的结果输出给另一命令。下面范例可将file ./*命令的结果输出给grep ASCII命令处理:
[root@localhost root]# file ./* |grep ASCII
./install.log: Non-ISO extended-ASCII text
./partitioninfo: ASCII text





浙公网安备 33010602011771号