1、使用man命令可以获取帮助
关于Linux操作系统首先要知道的事情之一是可以非常容易获得帮助。象大多数UNIX运行版本一样, Linux操作系统发行版本也为几乎每个程序、工具、命令或系统编程调用编制了使用手册页。可以得到几乎所有命令的有关信息,包括man命令本身。举例来说,输入下列命令就可以阅读man命令的使用手册页:
# man man
2、进程命令
2.1 进程及作业的基本概念
Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使 用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。 操作系统管理多个用户的请求和多个任务。
大多数系统都只有一个CPU和一个主存,但一个系统可能有多个二级存储磁盘和多个输入/输出设备。操作系统管理这些资源并在多个用户间共享资源,当您提出一个请求时,给您造成一种假象,好像系统只被您独自占用。而实际上操作系统监控着一个等待执行的任务队列,这些任务包括用户作业、操作系统任务、邮件和打印作业等。操作系统根据每个任务的优先级为每个任务分配合适的时间片,每个时间片大约都有零点几秒,虽然看起来很短,但实际上已经足够计算机完成成千上万的指令集。每个任务都会被系统运行一段时间,然后挂起,系统转而处理其他任务;过一段时间以后再回来处理这个任务,直到某个任务完成,从任务队列中去除。
Linux系统上所有运行的东西都可以称之为一个进程。每个用户任务、每个系统管理守护进程,都可以称之为进程。Linux用分时管理方法使所有的任务共同分享系统资源。我们讨论进程的时候,不会去关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,我们所关心的是如何去控制这些进程,让它们能够很好地为用户服务。
进程的一个比较正式的定义是:在自身的虚拟地址空间运行的一个单独的程序。进程与程序是有区别的,进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。
进程和作业的概念也有区别。一个正在执行的进程称为一个作业,而且作业可以包含一个或多个进程,尤其是当使用了管道和重定向命令。例如“nroff -man ps.1|grep kill|more”这个作业就同时启动了三个进程。
2.2 启动进程
键入需要运行的程序的程序名,执行一个程序,其实也就是启动了一个进程。在Linux系统中每个进程都具有一个进程号,用于系统识别和调度进程。启动一个进程有两个主要途径:手工启动和调度启动,后者是事先进行设置,根据用户要求自行启动。
1. 手工启动
由用户输入命令,直接启动一个进程便是手工启动进程。
2. 调度启动
有时候需要对系统进行一些比较费时而且占用资源的维护工作,这些工作适合在深夜进行,这时候用户就可以事先进行调度安排,指定任务运行的时间或者场合,到时候系统会自动完成这一切工作。
2.3 查看进程
1. ps简介
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令
。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
2. ps命令及其参数
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。
该命令语法格式如下:
ps [选项]下面对命令选项进行说明:
-e 显示所有进程。
-f 全格式。
-h 不显示标题。
-l 长格式。
-w 宽输出。
a 显示终端上的所有进程,包括其他用户的进程。
r 只显示正在运行的进程。
x 显示没有控制终端的进程。
O[+|-] k1 [,[+|-] k2 [,…]] 根据SHORT KEYS、k1、k2中快捷键指定的多级排序顺序显示进程列表。对于ps的不同格式都存在着默认的顺序指定。这些默认顺序可以被用户的指定所覆盖。其中“+”字符是可选的,“-”字符是倒转指定键的方向
3. 常用ps命令参数
前面两节介绍的参数可能让读者觉得有些可怕,实际上这是一个非常容易使用的命令,一般的用户只需掌握一些最常用的命令参数就可以了。 最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。
以root身份登录系统,查看当前进程状况
# ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)、COMMAND(该进程的命令行输入)。
可以使用u选项来查看进程所有者及其他一些详细信息,如下所示:
# ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 –bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash进程前面有条横线,意味着该进程便是用户的登录shell,所以对于一个登录用户来说带短横线的进程只有一个。还可以看到%CPU、%MEM两个选项,前者指该进程占用的CPU时间和总时间的百分比;后者指该进程占用的内存和总内存的百分比。
在这种情况下看到了所有控制终端的进程;但是对于其他那些没有控制终端的进程还是没有观察到,所以这时就需要使用x选项。使用x选项可以观察到所有的进程情况。
下面是使用x选项的例子:
# ps x
PID TTY STAT TIME COMMAND
5800 ttyp0 S 0:00 –bash
5813 ttyp1 S 0:00 –bash
5921 ttyp0 S 0:00 man ps
5922 ttyp0 S 0:00 sh -c /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz | /
5923 ttyp0 S 0:00 /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz
5924 ttyp0 S 0:00 /usr/bin/less –is
5941 ttyp1 R 0:00 ps x
可以发现突然一下子就多出了那么多的进程。这些多出来的进程就是没有控制终端的进程。 前面看到的所有进程都是test用户自己的。其实还有许多其他用户在使用着系统,自然也就对应着其他的很多进程。如果想对这些进程有所了解,可以使用a选项来查看当前系统所有用户的所有进程。经常使用的是aux组合选项,这可以显示最详细的进程情况。
# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1136 64 ? S Nov25 0:02 init [3]
root 2 0.0 0.0 0 0 ? SW Nov25 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Nov25 0:03 [kupdate]
root 4 0.0 0.0 0 0 ? SW Nov25 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? SW Nov25 0:00 [kswapd]
root 163 0.0 0.1 1628 332 ? S Nov25 0:02 sshd
root 173 0.0 0.0 1324 200 ? S Nov25 0:00 syslogd
root 181 0.0 0.0 1420 0 ? SW Nov25 0:00 [klogd]
daemon 191 0.0 0.1 1160 312 ? S Nov25 0:00 /usr/sbin/atd
root 201 0.0 0.1 1348 492 ? S Nov25 0:00 crond
root 212 0.0 0.0 1292 68 ? S Nov25 0:00 inetd
……
在显示的最前面是其他用户的进程情况,可以看到有root、daemon等用户以及他们所启动的进程。 在上面的例子中,介绍了ps命令最常见的一些选项和选项组合,用户可以根据自己的需要选用。
#ps -ef|grep-v root
这一命令要求grep接受ps命令的输出,并除去所有包含单词root的进程(-v 的含义是显示与文本不匹配的内容)。在不使用-v选项时,这一命令将显示进程清单中所有包含单词root的进程。
2.4 kill命令
1.基本概念
当需要中断一个前台进程的时候,通常是使用< Ctrl+c >组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令。该命令可以终止后台进程。至于终止后台进程的原因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死。总之这种情况是经常发生的。
kill命令是通过向进程发送指定的信号来结束进程的。如果没有指定发送信号,那么默认值为TERM信号。TERM信号将终止所有不能捕获该信号的进程。至于那些可以捕获该信号的进程可能就需要使用kill(9)信号了,该信号是不能被捕捉的。
kill命令的语法格式很简单,大致有以下两种方式:
kill [-s 信号 | -p ] [ -a ] 进程号 ...
kill -l [信号] -s 指定需要送出的信号。既可以是信号名也可以对应数字。
-p 指定kill命令只是显示进程的pid,并不真正送出结束信号。
-l 显示信号名称列表,这也可以在/usr/include/linux/signal.h文件中找到。
2.kill命令的使用
下面看看该命令的使用。
在执行一条find指令时由于时间过长,决定终止该进程。
首先应该使用ps命令来查看该进程对应的PID,键入ps,显示如下:
PID TTY TIME COMMAND
285 1 00:00:00 –bash
287 3 00:00:00 –bash
289 5 00:00:00 /sbin/mingetty tty5
290 6 00:00:00 /sbin/mingetty tty6
312 3 00:00:00 telnet bbs3
341 4 00:00:00 /sbin/mingetty tty4
345 1 00:00:00 find / -name foxy.jpg
348 1 00:00:00 ps
可以看到该进程对应的PID是345,现在使用kill命令来终止该进程。键入:
# kill 345
再用ps命令查看,就可以看到,find进程已经被杀掉了。
杀掉进程11721
# ps PID TTY TIME COMMAND
11668 p1 00:00:00 –tcsh
11721 p1 00:00:00 cat
11737 p1 00:00:00 ps
# kill 11721
[1] Terminated cat
#
有时候可能会遇到这样的情况,某个进程已经挂死或闲置,使用kill命令却杀不掉。这时候就必须发送信号9,强行关闭此进程。当然这种“野蛮”的方法很可能会导致打开的文件出现错误或者数据丢失之类的错误。所以不到万不得已不要使用强制结束的办法。如果连信号9都不响应,那恐怕就只有重新启动计算机了。
Kill –HUP 进程号,用来杀死并重启该进程。
3、文件操作命令
3.1使用cat命令列出及合并文件
1.查看文件内容
# cat test.txt
This text file was created by the cat command .
2.合并文件
把文件test.txt和文件test2.txt合并到另外一个叫做test3.txt的文件中去,可以使用下面的方法:
# cat test* > test3.txt
# cat test.txt >> test2.txt
上面的命令把文件test.txt的内容添加到文件test2.txt的后面去了。
3.建立文件
cat命令可以读取标准输入,所以可以使用cat命令建立一个文件并通过键盘直接向这个文件中输入内容。
# cat > myfile.txt
现在,输入一些文本内容,如下所示:
This is the cat word processor .
This is the end of the file.
现在,按下Ctrl+D组合键关闭这个文件。使用下面的命令看看是否完成了操作:
# ls -l myfile.txt
- r w - r - - r - - 1 bball users 61 Jan 4 16 : 11 m y f i l e . t x t
# cat myfile.txt
This is the cat word processor .
This is the end of the file.
3.2使用more命令阅读文件
m o r e命令是Linux操作系统命令中我们称之为页命令的家族中的一员。页命令使你在浏览文件的时候可以一次阅读一屏或者一行。这在阅读大量使用手册页的时候特别有帮助,因为m a n命令是使用了一个页命令来显示每一页的。m o r e命令是一个传统意义上的页命令,因为它提供了早期页命令的基本特色,可以在命令行上像下面这样使用m o r e命令,如下所示:
# more longfile.txt
如果需要帮助,请按下“ H” 键,将看到一个帮助画面。如果使用了惊叹号( ! ),还可以从m o r e命令中去执行其他的命令。阅读一个文本文件是相当容易的,因为可以敲空格键阅读后一页,也可以敲B键阅读前一页。
3.3使用less命令浏览文件
less命令多少有点像more命令,但是less命令的功能比more命令更强大。less命令和more命令一样都是页命令。但是它的编写者Mark Nudelman,改进了more命令中的一些特色,并又添加了许多其他的特色。
less命令提供了许多比more命令优秀的功能:
• 可以使用光标键在文本文件中前后滚屏。
• 可以用行号或百分比作为书签来浏览文件。
• 可以实现在多个文件中进行复杂的检索、格式匹配、高亮度显示等操作。
• 键盘操作与字处理程序如emacs兼容。
• 阅读到文件结束或者标准输入结束的时候less命令不会退出。
• 屏幕底部的信息提示更容易控制使用,而且提供了更多的信息。
• 带有许多的附件,包括一个独立的键定义程序lesskey,这样就可以定义使用哪些按键来控制less命令。
3.4使用find命令在子目录中搜索匹配的文件
find命令是一个功能强大的操作命令,可以使用它在硬盘驱动器上查找文件。只用一条很简单的find命令就可以在硬盘驱动器上很容易地查找文件。比如说,如果想查找子目录/usr中的spell命令,可以采用下面的方法:
# find /usr -name spell -print
还可以用find命令按照日期查找文件,或者可以指定一个日期范围。例如,如果想查找子目录/usr/bin中最近一百天没有使用过的程序,可以采用下面的命令:
# find /usr/bin -type f -atime +100 -print
- atime参数后面跟着代表日期的一个数字。如果想在子目录/usr/bin中查找建立不到一天的新文件或者二十四小时内修改过的文件,可以使用下面的参数:
# find /usr/bin -type f -mtime -1 -print
- mtime参数后面跟一个表示天数的数字(本例中是一天或者更短的时间),用来查找修改过的文件。
3.5使用whereis命令查找文件
whereis命令可以迅速地找到文件,而且它还可以提供这个文件的二进制可执行文件、源代码文件和使用手册页存放的位置。例如,下面的命令给出find命令是放在子目录/usr/bin中的;而它的使用手册页是放在子目录/usr/man/man1中的:
# whereis find
find: /usr/bin/find /usr/man/man1/find.1.gz
可以采用下面的方法让whereis命令只查找这个程序的二进制可执行文件:
# whereis -b find
find:/usr/bin/find
3.6使用mv命令给文件改名
mv命令,也就是文件名更改命令,可以对文件或者子目录的名称进行更改—但是它也可以被称为文件移动命令并可以用来在文件系统内移动文件或者子目录。
# mv file1 file2
上面的命令把文件file1改名为文件file2。除了更改文件名之外, mv命令还可以用来更改子目录名而不管这个子目录是空的还是存有文件。比如说,即使使用m k d i r命令建立了一个完整的子目录结构,仍然可以使用m v命令更改那个新的顶层子目录的名字,如下所示:
# mkdir -p temp/temp2/temp3
# mv temp newtemp
3.7使用rm命令删除文件
rm命令可以从命令行上一次删除一个或者几个文件。可以使用下面的几种方法中的任何一种:
# rm file
# rm file1 file2 file3
# rm file*
上面的第一个命令行删除了一个名称为file的文件,第二个命令行删除了三个文件,而第三个命令行则删除了当前子目录中文件名以字母file开头的所有文件。使用r m命令比较安全的办法之一是使用它的- i交互操作参数,这样在操作过程中会被问到是否真的想删除某个文件,如下所示:
# rm -i new*
rm : remove ' newfile ' ? y
rm : remove ' newfile2 ' ? y
还可以使用- f参数强行删除某个文件,如下所示:
# rm -f new*
- f和- r参数一起使用的时候,就可以删除这个子目录和这个子目录下面的所有的文件和子目录,条件是只要你拥有它们或者拥有这个操作的权限。
- f和- r参数可以像下面这样联合使用:
# rm -fr temp*
3.8压缩和解压缩文件
一、使用磁带文件归档命令建立档案文件
1.压缩文件
使用这个命令的c(生成)和f(文件)参数来生成一个tar档案文件:
# tar cf mydir.tar mydir
# ls -l *.tar
- rw - r - - r - - 1 bball users 10240 Jan 5 15 : 01 mydir. tar
请注意原来的子目录并没有发生变化。
2.解压缩文件
如果想释放其中所有的文件,可以同时使用- x释放参数和- f。为了了解命令执行的过程,我们还可以再加上- v参数:
#tar xvf mydir.tar
如果接经gzip压缩后的.tar文件,必需加-z参数。
二、使用gzip命令压缩文件
gzip命令是用来压缩文件的。这个程序不仅可以用来压缩大的较少使用的文件以节省磁盘空间,还可以和t a r命令一起构成可能是Linux操作系统中最流行的压缩文件格式。在因特网上寻找新的Linux软件时,经常会遇到.tgz或.tar.gz格式的文件。g z i p命令对文本文件有6 0%~7 0%的压缩率。
如果想压缩某个文件或者磁带档案文件,请输入下面的内容:
# gzip mydir. t a r
在缺省的状态下, gzip命令会压缩文件、再加上一个. gz扩展名、然后删除掉原来的文件。如果想解压缩文件,可以使用gzip命令的对应程序命令gunzip或者gzip命令的- d解压缩参数。必须保证这个用于解压缩的文件有.gz(或者. Z、- gz、. z、- z、或者_ z)扩展名,否则gzip命令和gunzip命令都会显示出错信息。如果想使用自己的扩展名,可以使用- S后缀参数,如下所示:
# gzip -S .gzipped mydir. tar
3.9使用ls命令列出子目录的内容清单
1. 列出文件的全部信息
想了解更多关于文件的信息吗?可以使用ls命令的- l参数来列出文件的全部信息,如图所示。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZkNGMyUjN4MTMyEmNhNGNmJWOmJ2Y5EDO0IGO5gTOk9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2. 指定其他的子目录
也可以在ls命令的命令行上指定其他的子目录或者路径名,这个方法可以用来查看其他子目录中的内容。举例来说,如果想查看子目录/usr/bin中的全部的文件(看到的可能远不止下面列出的这些),可以使用图所示的方法:
3.10使用cp命令进行拷贝操作
cp命令,即拷贝命令,是用来对文件或者子目录进行拷贝操作的第一次使用c p命令的时候,用到的可能是它最简单的形式,如下所示:
# cp file1 file2
上面的命令把文件file1拷贝到文件file2,同时file1还依然存在。但是在使用cp命令的时候必须要小心,因为在把一个文件拷贝到另外一个文件上的时候,会有可能完全覆盖掉原来的文件,可以加-i参数加以提示。
拷贝某文件到当前目录的方法如下:
#cp file1 .。
4、目录操作命令
4.1使用cd命令进入不同的目录
cd (切换子目录)命令是在Linux文件系统的不同部分之间移动的基本工具。当登录进入OpenLinux操作系统之后,你处在用户子目录中。这个子目录有一个名字,也就是“路径名”,它是由/home/开头,后面跟着你的用户名。
输入cd命令,后面跟着一个路径名,就可以直接进入到另外一个子目录中去。举例来说,下面的命令把你带到/usr/bin子目录中去:
# cd /usr/bin
在/usr/bin子目录中时,可以用下一个命令进入/usr子目录:
# cd ..
在/ usr/bin子目录中你还可以使用下面的命令直接进入根目录,即“ /”目录:
# cd .. / ..
最后,你总能够用下面的命令回到自己的用户子目录(也就是保存自己文件的子目录):
# cd 或者
# cd ~
4.2使用pwd命令查看自己所在的位置
pwd (显示工作子目录)命令告诉你自己所在的位置,并显示当前工作子目录。例如,如果执行命令:
# cd /usr/bin
接着输入:
# pwd
会看到:
/usr/bin
4.3使用mkdir命令建立子目录
一条简单的命令建立起了一个子目录:
# mkdir temp
还可以使用下面的方法一次建立好几个子目录:
# mkdir temp2 temp3 temp4
还可以输入下面的内容在子目录temp下再建立一个名为child的子目录:
# mkdir temp/child
4.4使用rmdir命令删除子目录
rmdir命令是用来删除子目录的。如果希望删除某个子目录,只需要输入下面的内容:
# rmdir tempdirectory
但是要注意:这个子目录必须是空的。如果试图删除一个其中还有文件的子目录,就会
得到一个下面这样的出错信息:
# rmdir temp5
rmdir : temp5 : Directory not empty