莘建路256号邮编:linux命令

来源:百度文库 编辑:中财网 时间:2024/05/02 09:08:35

LINUX命令大全- -

                                      

Linux命令笔记

Submitted by Patrick on 2005, June 29, 4:18 PM. Linux 〖字体:

用 umask 命令,在 /etc/init.dev 文件中进行系统范围内的、或在 .profile 文件中进行的本地的文件权限默认设置。这个命令指示用 777 减去这个数字来获取默认的权限: 
# umask 022
这将为用户创建的所有新文件生成一个默认的文件权限 755。

 

umask 

    1.作用
    umask设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。 

    2.格式
    umask [-p] [-S] [mode] 

    3.参数
    S:确定当前的umask设置。
    p:修改umask 设置。
    [mode]:修改数值。 

    4.说明
     传统Unixumask值是022,这样就可以防止同属于该组的其它用户及别的组的用户修改该用户的文件。既然每 个用户都拥有并属于一个自己的私有组,那么这种组保护模式就不在需要了。严密的权限设定构成了Linux安全的基础,在权限上犯错误是致命的。需要注 意的是,umask命令用来设置进程所创建的文件的读写权限,最保险的值是0077,即关闭创建文件的进程以外的所有进程的读写权限,表示为-rw--- ----。在~/.bash_profile中,加上一行命令umask 0077可以保证每次启动Shell进程的 umask权限都可以被正确设定。 

    5.应用实例 

umask -S
u=rwx,g=rx,o=rx
umask -p 177
umask -S
u=rw,g=,o=
 
    上述5行命令,首先显示当前状态,然后把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的设置。

 

Linux的系统安全命令

LinuxWindows NT/2000系统一样是一个多用户的系统,但是它们之间有不少重要的差别。对于很多习惯了Windows系统 的管理员来讲,如何保证Linux操作系统安全、可靠将会面临许多新的挑战。本文将重点介绍Linux系统安全的命令。 

    passwd 

    1.
作用
    passwd
命令原来修改账户的登陆密码,使用权限是所有用户。 

    2.
格式
    passwd [
选项账户名称 

    3.
主要参数 
    -l
:锁定已经命名的账户名称,只有具备超级用户权限的使用者方可使用。
    -u
:解开账户锁定状态,只有具备超级用户权限的使用者方可使用。 
    -x, --maximum=DAYS
:最大密码使用时间(天),只有具备超级用户权限的使用者方可使用。
    -n, --minimum=DAYS
:最小密码使用时间(天),只有具备超级用户权限的使用者方可使用。
    -d
:删除使用者的密码只有具备超级用户权限的使用者方可使用。 
    -S
:检查指定使用者的密码认证种类只有具备超级用户权限的使用者方可使用。 

    4.
应用实例 

$ passwd
Changing password for user cao.
Changing password for cao
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
 


    
从上面可以看到,使用passwd命令需要输入旧的密码,然后再输入两次新密码。 

    su 

    1.
作用
    su
的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。 

    2.
格式
    su [
选项]... [-] [USER [ARG]...] 

    3.
主要参数
    -f 
 --fast:不必读启动文件(如 csh.cshrc 等),仅用于cshtcsh两种Shell
     -l 
 --login:加了这个参数之后,就好像是重新登陆为该使用者一样,大部分环境变 量(例如HOMESHELLUSER等)都是以该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,缺省情况是root
    -m
 -p --preserve-environment:执行su时不改变环境变数。
    -c command
:变更账号为USER的使用者,并执行指令(command)后再变回原来使用者。
    USER
:欲变更的使用者账号,ARG传入新的Shell参数。 

    4.
应用实例
    
变更账号为超级用户,并在执行df命令后还原使用者。    su -c df root 

    umask 

    1.
作用
    umask
设置用户文件和目录的文件创建缺省屏蔽值,若将此命令放入profile文件,就可控制该用户后续所建文件的存取许可。它告诉系统在创建文件时不给谁存取许可。使用权限是所有用户。 

    2.
格式
    umask [-p] [-S] [mode] 

    3.
参数
    
S:确定当前的umask设置。
    
p:修改umask 设置。
    [mode]
:修改数值。 

    4.
说明
     
传统Unixumask值是022,这样就可以防止同属于该组的其它用户及别的组的用户修改该用户的文件。既然每 个用户都拥有并属于一个自己的私有组,那么这种组保护模式就不在需要了。严密的权限设定构成了Linux安全的基础,在权限上犯错误是致命的。需要注 意的是,umask命令用来设置进程所创建的文件的读写权限,最保险的值是0077,即关闭创建文件的进程以外的所有进程的读写权限,表示为-rw--- ----。在~/.bash_profile中,加上一行命令umask 0077可以保证每次启动Shell进程的 umask权限都可以被正确设定。 

    5.
应用实例 

umask -S
u=rwx,g=rx,o=rx
umask -p 177
umask -S
u=rw,g=,o=
 


    
上述5行命令,首先显示当前状态,然后把umask值改为177,结果只有文件所有者具有读写文件的权限,其它用户不能访问该文件。这显然是一种非常安全的设置。 

    chgrp 

    1.
作用
    chgrp
表示修改一个或多个文件或目录所属的组。使用权限是超级用户。 

    2.
格式
    chgrp [
选项]...  文件...
    

    chgrp [
选项]... --reference=参考文件 文件... 

    
将每个<文件>的所属组设定为<> 

    3.
参数
    -c, --changes 
:像 --verbose,但只在有更改时才显示结果。
    --dereference
:会影响符号链接所指示的对象,而非符号链接本身。
    -h, --no-dereference
:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)
    -f, --silent, --quiet
:去除大部分的错误信息。
    --reference=
参考文件:使用<参考文件>的所属组,而非指定的<>
    -R, --recursive
:递归处理所有的文件及子目录。
    -v, --verbose
:处理任何文件都会显示信息。 

    4.
应用说明
     
该命令改变指定指定文件所属的用户组。其中group可以是用户组ID,也可以是/etc/group文件中用户组 的组名。文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。 

    5.
应用实例
    
改变/opt/local /book/及其子目录下的所有文件的属组为book,命令如下:
    $ chgrp - R book /opt/local /book 

    chmod 

Chmod使用格式:
Chmod [
参数][模式]<文件或目录>
参数:-R:改变目录及其所有子目录的文件权限。
举例:
#chmod u+x inittab
#chmod ug+wx,o-x inittab
#chmod 0644 inittab
#chmod 0755 inittab
#chmod –R 700 ~

目录权限的补充说明:
1
、目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入。
2
、只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需要可读权限。
3
、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外


特殊位的举例说明: 操作这些特殊位与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作, 1) chmod u+s temp temp文件加上setuid标志. (setuid 只对文件有效) chmod g+s tempdir :为tempdir目录加上setgid标志 (setgid 只对目录有效) chmod o+t tempdir temp文件加上sticky标志 (sticky只对目录有效)

2)
采用八进制方式. 对一般文件通过三组八进制数字来置标志, 666, 777, 644. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 4666, 2777.
置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. rwsrw-r-- 表示有setuid标志 rwxrwsrw- 表示有setgid标志 rwxrw-rwt 表示有sticky标志 那么原来的执行标志x到哪里去了呢 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T) 


    1.
作用
    chmod
命令是非常重要的,用于改变文件或目录的访问权限,用户可以用它控制文件或目录的访问权限,使用权限是超级用户。 

    2.
格式
    chmod
命令有两种用法。一种是包含字母和操作符表达式的字符设定法(相对权限设定);另一种是包含数字的数字设定法(绝对权限设定)。 

    
1)字符设定法 
    chmod [who] [+ | - | =] [mode] 
文件名 

    
操作对象who可以是下述字母中的任一个或它们的组合
    u
:表示用户,即文件或目录的所有者。 
    g
:表示同组用户,即与文件属主有相同组ID的所有用户。
    o
:表示其它用户。 
    a
:表示所有用户,它是系统默认值。 

    
操作符号 
    +
:添加某个权限。 
    -
:取消某个权限。 
    =
:赋予给定权限,并取消其它所有权限(如果有的话)。 

    
设置mode的权限可用下述字母的任意组合
    r
:可读。 
    w
:可写。 
    x
:可执行。 
    X
:只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。 
    s
:文件执行时把进程的属主或组ID置为该文件的文件属主。方式“us”设置文件的用户ID位,“gs”设置组ID位。 
    t
:保存程序的文本到交换设备上。 
    u
:与文件属主拥有一样的权限。 
    g
:与和文件属主同组的用户拥有一样的权限。 
    o
:与其它用户拥有一样的权限。 
    
文件名:以空格分开的要改变权限的文件列表,支持通配符。
    
一个命令行中可以给出多个权限方式,其间用逗号隔开。 

    
2 数字设定法 
    
数字设定法的一般形式为: chmod [mode] 文件名 

    
数字属性的格式应为307的八进制数,其顺序是(u)(g)(o)文件名,以空格分开的要改变权限的文件列表,支持通配符。 

     
数字表示的权限的含义如下:0001为所有者的执行权限;0002为所有者的写权限;0004为所有者的读权限; 0010为组的执行权限;0020为组的写权限;0040为组的读权限;0100为其他人的执行权限;0200为其他人的写权限;0400为其他人的读权 限;1000为粘贴位置位;2000表示假如这个文件是可执行文件,则为组ID为位置位,否则其中文件锁定位置位;4000表示假如这个文件是可执行文 件,则为用户ID为位置位。 

    3.
实例
    
如果一个系统管理员写了一个表格(tem)让所有用户填写,那么必须授权用户对这个文件有读写权限,可以使用命令:#chmod 666 tem 

     
上面代码中,这个666数字是如何计算出来的呢?0002为所有者的写权限,0004为所有者的读权限,0020 组的写权限,0040为组的读权限,0200为其他人的写权限,0400为其他人的读权限,这6个数字相加就是666(注以上数字都是八进制数),结果见 1所示。 



chmod数字方法设定文件权限


    
从图1可以看出,tem文件的权限是-rw-rw-rw-,即用户对这个文件有读写权限。 

    
如果用字符权限设定使用下面命令:
    
chmod a =wx tem 
    chown 

    1.
作用
    
更改一个或多个文件或目录的属主和属组。使用权限是超级用户。 

    2.
格式
    chown [
选项用户或组 文件 

    3.
主要参数
    --dereference
:受影响的是符号链接所指示的对象,而非符号链接本身。
    -h, --no-dereference
:会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者,此选项才有效)
    --from=
目前所有者:目前组只当每个文件的所有者和组符合选项所指定的,才会更改所有者和组。其中一个可以省略,这已省略的属性就不需要符合原有的属性。
    -f, --silent, --quiet
:去除大部分的错误信息。
    -R, --recursive
:递归处理所有的文件及子目录。
    -v, --verbose
:处理任何文件都会显示信息。 

    4.
说明
     chown
将指定文件的拥有者改为指定的用户或组,用户可以是用户名或用户ID;组可以是组名或组ID;文件是以空 格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。  

    5.
应用实例
    1.
把文件shiyan.c的所有者改为wan 
    $ chown wan shiyan.c 

    2.
把目录/hi及其下的所有文件和子目录的属主改成wan,属组改成users 
    $ chown - R wan.users /hi 

    chattr 

    1.
作用
    
修改ext2ext3文件系统属性(attribute),使用权限超级用户。 

    2.
格式
    chattr [-RV] [-+=AacDdijsSu] [-v version] 
文件或目录 

    3.
主要参数
    
R:递归处理所有的文件及子目录。
    
V:详细显示修改内容,并打印输出。
    
-:失效属性。
    
+:激活属性。
    = 
:指定属性。
    A
Atime,告诉系统不要修改对这个文件的最后访问时间。
    S
Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。 
    a
Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。 
    i
Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。 
    D
:检查压缩文件中的错误。
    d
No dump,在进行文件系统备份时,dump程序将忽略这个文件。 
    C
Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。 
    s
Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。 
    u
Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。 

    4.
说明
     chattr
命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那 么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全 性,但是它并不适合所有的目录。chattr命令不能保护//dev/tmp/var目录。 

    5.
应用实例
    1.
恢复/root目录,即子目录的所有文件
    # chattr -R +u/root 

    2.
chattr命令防止系统中某个关键文件被修改
    
Linux下,有些配置文件(passwd ,fatab)是不允许任何人修改的,为了防止被误删除或修改,可以设定该文件的不可修改位(immutable)”,命令如下:
    # chattr +i /etc/fstab 

    sudo 

    1.
作用
    sudo
是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令,权限是所有用户。 

    2.
格式 

sudo [-bhHpV] [-s ] [-u <
用户>] [指令]
sudo [-klv]
 


    3.
主要参数 

b:在后台执行命令。
-h
:显示帮助。
-H
:将HOME环境变量设为新身份的HOME环境变量。
-k
:结束密码的有效期,即下次将需要输入密码。
-l
:列出当前用户可以使用的命令。
-p
:改变询问密码的提示符号。
-s 
:执行指定的Shell
-u <
用户>:以指定的用户为新身份,不使用时默认为root
-v
:延长密码有效期5分钟。
 


    4.
说明
     sudo
命令的配置在/etc/sudoers文件中。当用户使用sudo时,需要输入口令以验证使用者身份。随后 的一段时间内可以使用定义好的命令,当使用配置文件中没有的命令时,将会有报警的记录。sudo是系统管理员用来允许某些用户以root身份运行部分/ 部系统命令的程序。一个明显的用途是增强了站点的安全性,如果需要每天以超级用户的身份做一些日常工作,经常执行一些固定的几个只有超级用户身份才能执行 的命令,那么用sudo是非常适合的。 

    ps 

    1.
作用
    ps
显示瞬间进程 (process) 的动态,使用权限是所有使用者。 

    2.
格式
    ps [options] [--help] 

    3.
主要参数
    ps
的参数非常多此出仅列出几个常用的参数。 

-A
:列出所有的进程。 
-l
:显示长列表。
-m
:显示内存信息。
-w
:显示加宽可以显示较多的信息。 
-e
:显示所有进程。
a
:显示终端上的所有进程,包括其它用户的进程。
-au
:显示较详细的信息。
-aux
:显示所有包含其它使用者的进程。
 


    4.
说明
     
要对进程进行监测和控制,首先要了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本、也是非常强大的 进程查看命令。使用该命令可以确定有哪些进程正在运行、运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等。图2给出了ps-aux 命令详解。大部分信息都可以通过执行该命令得到。最常用的三个参数是uax。下面就结合这三个参数详细说明ps命令的作用:ps  aux 



2 ps-aux命令详解


     
22行代码中,USER表示进程拥有者;PID表示进程标示符;%CPU表示占用的CPU使用率;%MEM占用的物理内存使用率;VSZ 表示占用的虚拟内存大小;RSS为进程占用的物理内存值;TTY为终端的次要装置号码。 

     STAT
表示进程的状态,其中D为不可中断的静止(I/O动作);R正在执行中;S静止状态;T暂停执行;Z不存在,但暂时无法消除;W没有 足够的内存分页可分配;高优先序的进程;N低优先序的进程;L有内存分页分配并锁在内存体内 (实时系统或 I/O)START 进程开始时间。TIME为执行的时间。COMMAND是所执行的指令。 

    4.
应用实例
    
在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量进程的情况。除了可以使用top命令查看内存使用情况之外,还可以使用下面的命令:
    ps aux | sort +5n 

    who 

    1.
作用
    who
显示系统中有哪些用户登陆系统,显示的资料包含了使用者ID、使用的登陆终端、上线时间、呆滞时间、CPU占用,以及做了些什么。 使用权限为所有用户。 

    2.
格式
    who - [husfV] [user] 

    3.
主要参数 

-h
:不要显示标题列。 
-u
:不要显示使用者的动作/工作。
-s
:使用简短的格式来显示。
-f
:不要显示使用者的上线位置。 
-V
:显示程序版本。
 


    4.
说明
     
该命令主要用于查看当前在线上的用户情况。如果用户想和其它用户建立即时通信,比如使用talk命令,那么首先要确 定的就是该用户确实在线上,不然talk进程就无法建立起来。又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。who 令应用起来非常简单,可以比较准确地掌握用户的情况,所以使用非常广泛。 

    
动手练习 

    1.
使用Linux命令检测系统入侵者
     
安装过Mandrake LinuxRed Hat Linux的用户都会知道, Linux系统会内置三种不同级别(标准、高、更高)的防火墙,当进行了Linux服务器的安装和一些基本的设置后,服务器应该说是比较安全的,但是也会 有黑客通过各种方法利用系统管理员的疏忽侵入系统。如何快速查找黑客非常重要。一般来说,可以使用命令查询黑客是否入侵,见表1 


查询黑客入侵现象的命令对应表



    
举例说明,如果黑客嗅探网络,那么它必须使网卡接口处于混杂模式,使用下面命令进行查询: 

ifconfig -a
eth0  Link encap:Ethernet  HWaddr 00:00:E8:A0:25:86
      inet addr:192.168.1.7  Bcast:192.168.1.255  Mask:255.255.255.0
      UP BROADCAST RUNNING PROMISCUOUS  MTU:1500  Metric:1
......
 


     
从这个命令的输出中,可以看到上面讲到的这些概念。第一行的00:00:E8:A0:25:86mac地址,第二 行的192.168.1.7IP地址,第四行讲的是接收数据状态,这时正在被黑客嗅探。一般而言,网卡有几种接收数据帧的状态,如Broadcast MulticastPromiscuous等。Broadcast是指接收所有类型为广播报文的数据帧;Multicast是指接收特定的组播报文; Promiscuous则是通常说的混杂模式,是指对报文中的目的硬件地址不加任何检查、全部接收的工作模式。 

    2.
限制su命令的滥用
     
我们知道,超级用户在Linux中有最大的权利,几乎所有黑客都想得到这个目标。Linux可以增加对切换到超级用 户的限制。使用PAMPluggable Authentication Modules)可以禁止除在wheel组以外的任何人 suroot,修改/etc/pam.d/su文件,除去屏蔽标识#。使用/usr/sbin/usermod G10  bjecadmbjecadm这个账号加入gid10的组,就是wheel组。命令如下: 

/etc/pam.d/su   # 
使用密码验证#
auth sufficient /lib/security/pam_wheel.so debug 
限制只有wheel组用户才可以切换到root
auth required /lib/security/pam_wheel.so use_uid
chmod -G10 bjecadm
 


    
另外,每当用户试图使用su命令进入系统用户时,命令将在/usr/adm/sulog文件中写一条信息,若该文件记录了大量试图用su进入root的无效操作信息,则表明了可能有人企图破译root口令。 

    Linux
命令有着强大的功能。对于Linux系统管理员来说,往往只需要通过各种安全命令技巧,组合构成安全防线。从计算机安全的角度看,世界上没有绝对安全的计算机系统,Linux系统也不例外。

 

其他信息列述

 

1.1 Linux操作系统概述
开放性的系统
多用户多任务的系统
具有出色的稳定性和速度性能
具有可靠的系统安全性
提供了丰富的网络功能
标准兼容性和可移植性
提供了良好的用户界面
Linux
系统的组成
Kernel
(内核)和版本
Linux
发行套件
Linux Shell
Linux
文件系统
Linux
文件系统标准结构
1.2
红旗Linux的安装
1.2.1
安装前的准备
1.2.2
使用安装光盘从CD-ROM安装
1.2.3
使用Linux启动盘从硬盘安装
1.2.1
安装前的准备
收集计算机硬件信息
规划硬盘空间
选取工作站类型:至少需要1.2G左右空间;最多需要1.5G左右空间。
选取服务器类型:至少需要650M左右空间,最多需要1.2G左右空间。
选取便携式类型:与工作站类型所需空间相当。
选取自定义类型:至少需要350M左右空间,最多需要2.4G左右空间。
规划网络配置信息
1.2.2
使用安装光盘从CD-ROM安装
设置CMOS
安装
安装红旗linux
Server
Workstation模式:自动分割硬盘
Custom
:手工分割 Mount Point
/ ? root
根分区(建议:256MB
SWAP ?
交换分区(建议:略小于实际内存2倍)
/usr
安装软件存放位置(建议:2.5GB
/home
视用户多少而定
/var
存放临时文件(建议:256MB
/boot
存放启动文件(建议:32MB
1.2.3 Linux
的其他安装方式
本地安装
远程网络安装
使用Linux启动盘从硬盘安装
制作启动软盘
1
、在DOS下创建:
进入dosutils子目录,运行rawrite程序
输入../images/boothd.img
2
、在linux下创建:
#dd if=/images/boothd.img of=/dev/fd0 bs=1440
修改CMOS设置中的引导顺序
明确系统文件在硬盘中的存放位置
使用Linux安装启动盘从远程FTP服务器安装
远程网络安装Linux系统的方法和本地硬盘安装类似,也需要制作启动软盘。制作启动软盘的步骤和前面相同,唯一不同的是制作启动软盘时使用的软盘镜像文件是bootnet.img
1.3
linux安装须具备的知识
磁盘的标识:
IDE
硬盘:/dev/hdxx:其中第一个X表示第几块硬盘,采用abcd分别对应四块硬盘,第二个X表示分区,1-4表示主分区或扩展分区,逻辑分区从5开始。
SCSI
硬盘:/dev/sdxx
光盘:/dev/cdrom
软盘:/dev/fd0


1.4 Linux
运行级别和系统的启动和关闭
21.4.1 Linux
的运行级别和切换
21.4.2 Linux
的启动过程
1.4.1 Linux
的运行级别和切换
Linux
的运行级别
Linux
运行级别的切换
Linux
的启动、关闭和重新启动
Linux
的运行级别
Linux
运行级别的切换
inittab文件中,操作initdefault将在系统初始化之后启动预设的运行级别,用户可以通过更改此项设置来改变系统的预设运行级别。
用户也可以在系统运行过程当中来改变系统的运行级别,方法是用init命令,后面加上要切换到的运行级别。
Linux
的启动、关闭和重新启动
linux
启动
linux在启动过程中首先加载Linux内核,在内存中执行内核操作,检查硬件,挂载根文件系统,然后启动init进程。init进程就会根据 inittab文件中的设置来使系统进入预设的运行级别,读取相关的配置文件和脚本程序,最后启用相关服务,完成整个系统的启动。

Linux的重启方法
Reboot
Init 6
Ctrl+alt+delete
Shutdown –r time [warning-message]
如:#shutdown –r +3 “system will be down in 3 minites,please save you work”
#shutdown –r now
#shutdown –r 03:15


Linux
关机的方法
Halt
Init 0
Shutdown –h time [warning-message]
如:#shutdown –h now
1.5 Linux
的初步使用
1.5.1 Linux
的字符运行方式
1.5.2 linux
的图形界面
1.5.3
常见问题
1.5.1 Linux
的字符运行方式
登录和注销
超级用户登录后的操作提示符是“#”;普通用户登录后的操作提示符是“$”
若要注销登录,用户可以在当前的登录终端上输入logout命令或使用Ctrl+d热键进行。
终端之间的切换采用:alt+f1—f7
1.5.2 linux
的图形界面
图形界面下运行终端命令:rxvt
图形界面切换到字符界面:ctrl+alt +f1—f6
图形界面下的注销:ctrl+alt+delete
图形界面下的锁定:ctrl+alt+L

1.5.3 常见问题
最基本的安全问题
root
口令丢失的解决方法
删除Linux操作系统
最基本的安全问题
如果机箱有锁,应该上锁,并保证钥匙与机箱分离放置;
若机箱没有锁,如果必要,当正常运行后断开电源按钮和复位按钮的连接线;
禁止三键热启功能,修改/etc/inittab,将此行注释掉;
禁止BIOS中的软驱启动功能,并设置BIOS开机密码;
禁止公开root密码,若有多个系统管理员则应该避免root密码的扩散;
必须准备引导软盘以防硬盘无法启动时使用。
root
口令丢失的解决方法
使用单用户模式 ,重设root密码
在红旗linux4桌面版中,在开始菜单中选3e,再选2e,3改成1,回车再按b

删除Linux操作系统
首先要修改MBR,删除LILO
DOSWindows下用fdisk命令加上/mbr参数来完成
重新格式化ext3分区为FAT32分区或NTFS分区。
 

hls
查看公开信息
发送悄悄话给hls
hls发送Email
查找hls发表的更多帖子
添加 hls 到好友列表

2:linux shell和常用命令
2.1 linux
常用命令
2.2 shell
2.3 vi
的使用
2.1 linux
的常用命令
第一节:文件目录类命令
1
查看联机帮助信息
man
命令 如:#man ls
info
命令 如:#info cd
2
、列出当前目录或指定目录的文件名和目录名
ls [
选项] 文件或目录
常用[选项]如下:
-a:
显示所有的文件,包括以“.”开头的隐含文件。
-l:
长格式输出


-m:
宽行输出
-F:
以各种符号表示不同的文件类型
--color:
彩色输出
-R:
递归输出
3
touch
功能:修改文件的创建日期或以当前系统日期创建一个空文件。
-d:
修改文件的日期。
#touch –d 20030123 test.txt

 


4
cp
功能:复制文件
用法:cp [选项] 源文件或目录 目标文件或目录
选项:
a
该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
- d
拷贝时保留链接。
- f
删除已经存在的目标文件而不提示。
- i
f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
- p
此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
- r
若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。

5mv
功能:给文件或目录改名或将一个文件或目录移到另一个目录
用法:mv [选项] 源文件或目录 目标文件或目录
-i
交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答yn,这样可以避免误覆盖文件。
- f
禁止交互操作。在mv操作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。

6rm
功能:删除文件或目录
用法:rm [选项] 文件
- f
强制删除
- r
指示rm将参数中列出的全部目录和子目录均递归地删除。
- i
进行交互式删除

7cd
功能:改变工作目录。
语法:cd [directory]
用法:
#cd ..
返回上一层目录
#cd ~
进入自家目录
8
pwd
功能:显示当前工作目录
用法:#pwd

9mkdir
功能:创建一个目录(类似MSDOS下的md命令)。
语法:mkdir [选项] dir-name
- m
对新建目录设置存取权限。也可以用chmod命令设置。
- p
可以是一个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后, 系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。
#mkdir –m a=rwx test
#mkdir –m u=rwx,g=rx,o=rx test1
#mkdir –m 755 test2
#mkdir –p test3/test4(test3
test4均为新目录)

10rmdir
功能:删除空目录。
语法:rmdir [选项] dir-name
- p
递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。
11
file
功能:查看文件类型
语法:file 文件名

12cat
功能:查看文本文件的内容
语法:cat 文件名
13
more
功能:分屏显示文本文件的内容。
14
less
功能:显示文本文件的内容,可使用pageuppagedown上翻页下翻页。

15head
功能:查看文件的开头部分内容
语法:head [行数] 文件名
用法:#head test.txt:显示前10行内容
#head -20 test.txt
显示前20行内容。
16
tail
功能:查看文件的结尾部分内容。
语法:tail [行数] 文件名
默认的行数为10行。

17sort
功能:对文本文件中的各行进行排序
用法:sort 文件名
例:#sort 123.txt >456.txt 123.txt排序后重定向到456.txt文件中。
18
uniq
功能:将重复行从输出文件中删除,只留下每条记录的唯一样本
语法: uniq 文件名
#uniq 456.txt
文件中的重复行删除后输出

19pr
功能:处理文件以便打印,输出到标准输出
语法:pr [参数] 文件名列表
[
参数]
-d:
将输出的每一行后加一新的空白行
-n:
输出行号
如:#pr –n 123.txt


20
ln
功能:建立链接文件
语法:ls [-s] 源文件名 目标文件名
明:链接文件分为硬连接和软连接,硬连接相当于一个数据源有两个文件名,删除一个文件另一个文件不变,修改一个文件的内容另一个文件的内容也跟着改变。硬 连接不能和另一个目录链接,也不能和其他文件系统的文件进行链接。软链接相当于快捷方式,没有上面的限制,加-s参数创建软链接。

 

 

21wc
功能:统计文件的行数、字符数和单词数。
语法:wc [-lwc] 文件名
-l:
只显示行数,-w:只显示单词数,-c:只显示字符总数。
22
whatis
功能:可以用一行内容显示对命令行后输入的关键词的说明。
语法:whatis 关键词
用法:#whatis find whereis

23Whereis
功能:确定指定文件的源程序/二进制程序和手册部分的位置。
用法:#whereis ls
24
which
功能:显示可执行命令的路径和它的别名。
用法:#which ls
25
locate
功能:可以查找具体文件或命令的路径,可以查找具体的字符串或子串
用法:locate 文件名或关键字

26du
功能:统计文件和目录所占用的磁盘空间
语法:du [-ask] 文件名或目录名
-a:
显示对涉及到的所有文件的统计,而不仅仅统计目录
-s:
只打印出合计数
-k:
kB字节数显示

Find使用范例
find . -name ls.txt
find . -name ls.txt –print
find / -name 'c??’ –print
find / -name 'f*’ –print
find . -name 'f*’ –exec ls –l {} \;
find . -name f\* –ok rm {} \;
(交互式提问)
find . -perm 644 –mtime 4
find . -name 'c??’ –o -name 'd??’


28
grep
功能:在文件中搜寻匹配的行并进行输出
语法:grep [参数]<要找的字串><原文件>
-num:
输出匹配行前后各num行的内容
-A num:
输出匹配行后num行的内容
-B num:
输出匹配行前num行的内容
-i
:忽略大小写的区别
-v:
只显示出那些不包括某字串的行和文件,和默认的相反

二、文件压缩和归档类命令
1
gzip
功能:是一种压缩程序,特点是可以得到最佳的压缩率,但速度较慢。
语法:gzip [-vd9] 文件名
-v:
冗长型选项,可以显示每个文件的大小等
-d
:解压
-9
:产生最佳压缩效果,但速度较慢。

2gunzip
功能:可以把压缩的文件解压成原始文件状态,可以解压扩展名为.gz,.z,.Z.tgz等类型的压缩文件
语法:gunzip [-v] 文件名
-v:
显示解压缩文件的冗长结果

3tar
功能:可以归档多个文件和目录到一个.tar文件下,还可以从一个归档文件中抽取一个文件和目录。
语法:tar [-c][-r][-t][-x][-v][-z][f 文件名] 文件和目录名
-c:
创建归档文件
-r:
增加文件到归档文件中
-t:
查看归档文件中的文件
-x
:解开归档文件
-v:
显示冗长信息
-z
:进行压缩和解压


如: #tar –cvf back.tar 文件1 目录1 文件2
#tar –rvf back.tar
文件3
#tar –tf back.tar
#tar –xvf back.tar
#tar –czvf back.tar.gz
文件1 目录1 文件2
#tar –xzvf back.tar.gz

 

4、安装以rpm方式提供的软件
Rpm(the red hat package manager)
是一个开放的软件包管理系统。
功能:可以安装和卸载RPM包的软件
#rpm –ivh *.rpm
安装RPM包;
#rpm –ivh –force *.rpm
在原先安装的基础上再强行安装一次;
#rpm –Uvh *.rpm
升级rpm
#rpm –qa
查找列出系统中所有安装的rpm
#rpm –q sendmail
:查看sendmail包的情况
#rpm –ql sendmail:
查看sendmail安装的位置
#rpm –e *.rpm
卸载rpm
#rpm - qlp name.rpm
查看name.rpm有哪些文件
#rpm - qf name.rpm
查看已经装好的文件属于哪个rpm
#rpm2cpio filename.rpm
使用“rpm2cpio”来从RPM文档中提取文件

5、安装以源代码方式提供的软件
1)、解包解压:
#tar –xzvf *.tar.gz
解包解压后会在当前目录下建立一个子目录,xxxx
2)、#cd xxxx
3)、#./configure
4)、#make
5)、#make install

三、系统状态类命令
1
dmesg
功能:显示引导时内核显示的状态信息
#dmesg |grep -4 “eth0”
显示状态信息中与eth0相关的前后4行内容
2
uname
功能:显示当前的系统信息
#uname -a


3
uptime
功能:显示当前时间,自从上次重新引导之后系统运行的时间,服务器和多少用户链接以及系统前1515分钟的负载信息。
4
who
功能:显示当前登录在系统上的用户信息。
-r:
查看系统运行等级
-w
,在登录帐号后面显示一个字符来表示用户的信息状态:
+
:允许写信息; -:不允许写信息; :不能找到终端设备

5w
功能:查看其他登录的用户(who增强版)
第一行输出内容:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1秒、5秒和15秒的平均负载
第二行输出内容:登录帐号、终端名称、远程主机名、登录时间、空闲时间、JCPUPCPU、当前正在运行进程的命令行。
*JCPU
时间指的是和该终端(tty)连接的所有进程占用的时间
*PCPU
时间则是指当前进程(即在WHAT项中显示的进程)所占用的时间

6whoami
功能:显示当前用户名
7
hostname
功能:显示系统的主机名
8
cal [月份] [年份]
功能:显示日历
9
bc
功能:计算器,使用quit退出
10
date
功能:显示或修改日期时间。


11
df
功能:报告文件系统磁盘空间的使用情况
语法:df[参数]
[
参数]
-h
:用常见的格式显示出大小(例如:1K,23M,2G等)
-t
:只显示指定类型的文件系统
12
free
功能:查看当前内存和交换空间的使用情况
四、网络类命令
1
write
功能:向另外一个用户发信息,以Ctrl+D作为结束,普通用户发信息受到mesg状态影响。
语法:write <用户名>
2
wall
功能:向所有用户广播信息,普通用户受到mesg状态影响。
语法:wall [message]

3mesg
功能:显示或设置是否接受其他用户发来的信息。
语法:mesg [参数]
[
参数]
y:
接受从其他用户发来的信息
n
:不接受从其他用户发来的信息
#mesg
显示当前是否接受其他用户发来的信息

4ping
功能:通过检查网络中其他主机的应答信息,来确认网络的连通性。
语法:ping [参数] 主机名(或ip地址)
参数:
-c count
:共发出count次信息。
-R
:显示路由表的详细信息

5telnet
功能:远程登录
语法:telnet [<主机名>][:端口号]
6
ifconfig
功能:配置网络接口
语法:
ifconfig [interface] [up][down][netmask mask]
#ifconfig
#ifconfig eth0 192.168.0.3 netmask 255.255.255.0 up

7netstat
功能:显示本地系统的网络连接状态
语法:netstat [-a][-r][-c][-i]
-a
:显示所有本地系统中的网络连接
-r
:显示路由表
-c
:显示连续的网络连接状态
-i
:显示全部网络接口信息。

8ftp
功能:文件传输
语法:ftp [<主机名>]
子命令:
:列出所有的FTP命令;
pwd:
显示远程主机的当前目录
lcd
:切换和显示本机主机的当前目录
ls
:列出远程主机当前目录下的内容
!dir:
列出本机主机的当前目录下的内容
cd:
切换远程主机的目录

get:下载一个文件
mget
:成批下载文件
put
:上传一个文件
mput
:成批上传文件
prompt
:使用mgetmput时是否采用交互式询问
bye
:中止一个FTP连接
open
:打开一个FTP连接
close
:关闭一个FTP连接
binary
:采用二进制模式传输
ascii
:采用ascii模式传输
type
:查看传输模式

2.2 shell
一、shell简介
二、shell功能

一、shell简介
(一)、定义:shell是用户与操作系统内核之间的接口,具有命令解释器和编程语言的双重功能。
(二)、shell中的命令分为内部命令和外部命令,内部命令包含在shell自身之中的,如cd,exit等,查看内部命令的方法可用help命令;而外部命令是存在于文件系统某个目录下的具体的可执行程序,如cp等,查看外部命令的路径可用which

(三)、命令解释过程
二、shell功能
(一)、命令行解释
1
、交互模式
2
、后台运行:如#fsck / &
(二)、通配符
*
:表示任一串字符
?:表示任一个字符
[…]
:匹配方括号内的任意字符
[!...]
[^…]:匹配除方括号内的任意字符
[a-zA-Z]
:匹配首字符是字母的所有文件


(三)、重定向
1
>:输出重定向 如:#ls >1.txt
2
>>:追加重定向
如:#cat /etc/inittab >>1.txt
3
<:输入重定向 #wc 4<:输入重定向特例
#wc <hello
it is a nice day
!
5
2>:错误重定向
6
&>:同时实现输出重定向和错误重定向

(四)、管道操作符 |
功能:把一个命令的输出内容作为另外一个命令的输入内容。
#ls |more
:分屏显示
#dmesg |grep eth0
(五)、命令替换符` `
功能:把一个命令的输出内容作为另外一个命令的参数。
#cd `pwd`
#tar –cvf zsan.tar `find / -user “zsan”`
#tar –cvf conf.tar `ls /etc *.conf`

(六)、命令执行顺序
1
、;按顺序执行命令 #date;cal
2
&&逻辑与的关系,只有前面的命令执行成功后面的命令才会被执行。
如:#mail zsan@sje.cn <123.txt &&rm –fr 123.txt
3
||逻辑或的关系,只有前面的命令执行失败后面的命令才会被执行。
如:#write zsan <123.txt ||mail zsan@sje.cn <123.txt
4
( )组合命令行中的命令,改变执行顺序
如:#date;cal|wc#date;cal)|wc

()、自动补全:在bash下输入命令时不必把命令输全,bash就能判断出用户所要输入的命令,可通过tab键完成自动补全功能。
(八)、命令别名
功能:可以使工作变得轻松的工具
语法:alias [<别名>=“<原文件名>”]
#alias
显示所有的别名
#alias md=“mkdir”
建立别名
#unalias md
取消别名

(九)、命令历史
功能:可以记录一定数目的以前在shell中输入的命令以避免重复劳动
1
、查看所有的历史命令:#history
2
、查看某条历史命令:#history n
3
、引用历史命令:#<命令编号>

2.3 vi的使用

一、编辑模式下的常用命令
1
0:移光标到当前行的行首
2
$:移光标到当前行的行尾
3
H:移光标到当前屏第一行的行首
4
M:移光标到当前屏中间行的行首
5
L:移光标到当前屏最后一行的行首
6
pageuppagedown:上翻页,下翻页
7
ctrl+g:显示状态信息
8
X:删除一个字符
9
dd:删除或剪切光标所在的行
10
d0:删除光标处到行首的内容
11
d$:删除光标处到行尾的内容
12
u:取消上次命令
13
. :重复操作
14
YY:复制当前行
15
p:粘贴

二、命令状态下操作:
1
、:n 跳行
2
、:w 保存
3
、:q 退出(须先保存)
4
、:w filename 另存为
5
、:wq 保存退出
6
、:q! 不保存强制退出
7
、:a,b w filename a行到b行的内容另存为
8
、:.,$ w filename 将当前行到行尾的内容另存为
9
、:1,. W filename 将第一行到当前行的内容另存为

查找命令:可设置增量查找:    set  incsearch      然后:  /string    即可联系查找该string


10
、:/string 在全文中查找string字符串
11
、:a,b s/string1/string2/g a行到b行之间的所有string1替换成string2
12
、:% s/string1/string2/g 将全文中的string1替换成string2
13
、:e filename 新建文件
14
、: r filename 打开一个文件
15
、:f filename 重命名当前文件

16、:n1,n2 co n3 n1n2行的内容复制到n3行位置上
17
、:n1,n2 m n3 n1n2行的内容移到n3行的位置上
18
、:n1,n2 d n1n2行的内容删除掉
19
、:set number 设置行号
20
、:set autoindent 设置自动缩进
21
、:!Cmd 执行shell命令
22
、:r ! Cmd shell命令的执行结果作为文件的内容
23
、:sh 暂时退出vi到系统下,按ctrl+d结束
24
、:X 文件保存退出前加密。
 

hls
查看公开信息
发送悄悄话给hls
hls发送Email
查找hls发表的更多帖子
添加 hls 到好友列表

第三章:文件系统管理
3.1
文件系统概述
一、文件管理
(一)、文件的类型
1
、普通文件:包括文本文件和二进制文件
2
、目录文件
3
、链接文件:包括硬链接和软链接。
4
、特殊文件:
设备文件:包括字符类设备(如打印机)和块设备(如硬盘)以及空设备(null)
管道文件:是一个先进先出(FIFO)的缓冲区。

文件类型及其代表字符

(二)、文件权限
1
chmod
功能:改变文件(目录)的访问权限
权限的表示法有两种:
一是采用符号标记模式进行更改
二是采用八进制数指定新的访问权限
符号表示法的格式:[ugoa][+-=][rwx]
u
:表示文件的所有者;
g
:表示文件所有者同组的用户;
o
:其他用户
a
:所有用户
+
:添加权限
-
:撤消权限
=
:指定权限
r
:读权限
w
:写权限
x
:执行权(或对目录的访问权)

八进制数字表示法:
1—4个八进制数来表示,其中:
第一位:
4表示setuid:设置使文件在执行阶段具有文件所有者的权限,如/usr/bin/passwd的权限设置
2表示setgid:该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组;
1 表示sticky bit :该位可以理解为防删除位,一个文件是否可以被某用户删除, 主要取决于该文件所在的目录是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除别的文件, 则可以对目录使用sticky bit. 用户对目录设置该位后, 就算对目录具有写权限, 也不能删除不属于该用户的文件。

第二位:用来设置文件所有者的权限,用4表示可读,用2表示可写,用1表示可执行
第三位:用来设置文件所在组用户的权限,用4表示可读,用2表示可写,用1表示可执行
第四位:用来设置其他用户的权限,用4表示可读,用2表示可写,用1表示可执行。


Chmod
使用格式:
Chmod [
参数][模式]<文件或目录>
参数:-R:改变目录及其所有子目录的文件权限。
举例:
#chmod u+x inittab
#chmod ug+wx,o-x inittab
#chmod 0644 inittab
#chmod 0755 inittab
#chmod –R 700 ~

目录权限的补充说明:
1
、目录的只读访问不允许使用cd进入目录,必须要有执行的权限才能进入。
2
、只有执行权限只能进入目录,不能看到目录下的内容,要想看到目录下的文件名和目录名,需要可读权限。
3
、一个文件能不能被删除,主要看该文件所在的目录对用户是否具有写权限,如果目录对用户没有写权限,则该目录下的所有文件都不能被删除,文件所有者除外


特殊位的举例说明: 操作这些特殊位与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作, 1) chmod u+s temp temp文件加上setuid标志. (setuid 只对文件有效) chmod g+s tempdir :为tempdir目录加上setgid标志 (setgid 只对目录有效) chmod o+t tempdir temp文件加上sticky标志 (sticky只对目录有效)

2) 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 666, 777, 644. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 4666, 2777.
置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. rwsrw-r-- 表示有setuid标志 rwxrwsrw- 表示有setgid标志 rwxrw-rwt 表示有sticky标志 那么原来的执行标志x到哪里去了呢 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)


2
chown
功能:修改文件(目录)所有者和组别
语法:
chown [
参数]<用户名[.组名]><文件或目录>
参数:-R:递归地修改目录及其下面内容的所有权。
#chown zsan history.doc
#chown –R zsan.sales /home/zsan

3chgrp
功能:改变文件的组所有权
格式:chgrp [参数]<><文件或目录>
[
参数]-R:递归地将指定目录下的所有文件和子目录的组名修改为指定的组。
#chgrp –R student /home/st01
4
umask
功能:用于设置文件的默认生成掩码,告诉系统当创建一个文件或目录时不应该赋予其哪些权限。

(三)ext2(ext3)文件系统安全选项
A:Atime
。告诉系统不要修改对这个文件的最后访问时间
S: Sync
。一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。 a:Append Only。系统只允许在这个文件之后追加数据,不允许任何进程覆盖或者截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而 不允许删除任何文件。 i:Immutable。系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
ext2(ext3)
文件系统安全选项
d:No dump
。在进行文件系统备份时,dump程序将忽略这个文件。 C:Compress。系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后,才写 入磁盘。 s:Secure Delete。让系统在删除这个文件时,使用0填充文件所在的区域。 u:Undelete。当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。
chattr
修改文件属性
chattr +i filename
设置i属性
chattr –i filename
取消i属性
lsattr
查看设置的属性


二、linux支持的文件系统:
Ext2
ext3文件系统
FAT(
适用各种版本的DOS)
NTFS(
适用Windows NT -- Windows 2000)
VFAT
FAT32(适用Windows 9x)
HFS(
适用MacOS)
HPFS(
适用OS/2)
Swap(
交换分区)

3.2 fdisk分区工具
#fdisk –l /dev/hda
#fdisk /dev/hda
m 列出所有的分区命令
p 显示分区情况
d 删除原有的分区
n 增加新分区
t 改变分区类型
l 查看分区类型
a 设置活动分区
w 保存退出
q 不保存退出


3.3
使用mkfs创建文件系统
mkfs
命令的格式是:mkfs 选项 设备名
例如:
mkfs –t ext2 –c /dev/hda2
-t
:指定文件系统类型
-c
:建立文件系统前先检测有无坏块

#mke2fs –c /dev/hda2
3.4
挂载和卸载文件系统
挂载文件系统
卸载文件系统
挂载文件系统
mount /dev/sdb1 /tmp/test1
mount /mnt/floppy
mount
注意
挂载目录必须存在
Linux
专门提供了挂载目录/mnt
不要在挂载目录下进行挂载操作
将软盘或光盘放入驱动器后在实施挂载操作
卸载前不要取出软盘或光盘
不能在同一个目录下挂载两个文件系统
卸载文件系统
umount /mnt/cdrom
umount /dev/sdb1
umount /tmp/test1
mount –a
:卸载所有挂载设备

注意:不能在挂载目录下进行卸载操作
3.5
软盘、光盘、USB硬盘的使用
1
、软盘格式化:fdformat –n /dev/fd0H1440
2
、建立文件系统
mkfs –t ext2 –c /dev/fd0H1440
3
、挂载文件系统
mount –t ext2 /dev/fd0H1440 /mnt/floppy
4
、使用
cp /etc/lilo.conf /mnt/floppy
mkdir /mnt/floppy/mydir1
5
、卸载
umount /mount/floppy
1
、挂载文件系统
mount –t iso9660 /dev/cdrom /mnt/cdrom

mount /mnt/cdrom
2
、卸载
umount /mnt/cdrom
eject
(弹出光盘)
USB
硬盘的使用
USB
硬盘在Linux系统下是被模拟成SCSI设备来使用的,因此对应的设备文件是/dev/sda,如果有多块USB硬盘,则设备文件依次是/dev/sdb/dev/sdc等。
mount命令加-o loop选项挂载光盘镜像文件
1
#mkdir /mnt/iso
2
#mount –o loop rfdesktop4.iso /mnt/iso


3.6
在系统启动时自动挂装文件系统
要系统自动挂载文件系统必须修改系统配置文件/etc/fstab。系统启动所要挂载的文件系统、挂载点、文件系统类型等都记录在/etc/fstab文件里。
3.7
文件系统管理的常用命令
df
:显示文件系统的统计数据
du
:显示硬盘使用的统计信息
ln
:创建链接文件
tar
:文件打包
fsck
:文件系统检查命令
dd
:文件拷贝命令
fsck
功能:检查文件系统
语法:fsck [选项]<设备名>
选项:
-t fstype
:检查的文件系统类型
-A
检查所有在/etc/fstab中列出的文件系统
-p
:整理文件系统,自动修正所有问题
注意:
1
、当检查一个文件系统时,应该确保处于未挂装状态
2
、当要检查根文件系统时,应该使用急救软盘或安装光盘重新引导机器后时行

fsck命令输入的错误代码

Linux引导盘的制作
#cd /lib/modules
#mkbootdisk --device /dev/fd0 2.4.20-8
制作引导盘的好处:
1
、替代LILO
2
、紧急情况下使用引导盘和急救盘恢复系统
3
、当其他系统覆盖了LILO
dd
:文件拷贝命令
制作Linux安装启动盘
dd if=boot.img of=/dev/fd0 bs=1440k
制作redhat linux急救盘
#dd if=rescue.img of=/dev/fd0
rescue.img
存放在redhat linux安装光盘的images目录中。
备份和恢复软盘数据
dd if= /dev/fd0 of=backup
dd if=backup of= /dev/fd0


第四章:用户管理
本章主要内容
4.1
用户和组管理概述
4.2
用户帐号的管理
4.3
组的管理
4.4
磁盘限额

4.1 用户和组管理概述
一、帐号管理包括用户的管理、组的管理和口令的管理
二、linux下的用户分为三类:
1
、超级用户:超级用户的uidgid均为0
2
、普通用户:普通用户的uidgid是在500-60000范围内的一个值
3
、伪用户:uid的值是在1-499之间,不能登录,只是满足系统管理的要求,如bin,sys,lp 等。

三、linux下的组分为标准组和私有组:
1
、当在创建一个新用户时,若没有指定他所属于的组,系统就会建立一个和该用户同名的私有组;
2
、标准组可以容纳多个用户,若使用标准组,在创建一个新的用户时就可以指定他所属于的组。
四、帐号系统文件
1
linux下的帐号系统文件主要有/etc/passwd,/etc/group,/etc/shadow ,这些文件只有超级用户才可以修改


2
、其他文件或目录
1)、默认设置文件
/etc/login.defs,/etc/default/useradd
2)、默认设置目录
/etc/skel
2.1
用户帐号管理
一、创建新的用户帐号系统将会
1
、在/etc/passwd中添加一笔记录
2
、创建用户的自家目录
3
、在用户自家目录中设置默认的配置文件
4
、设置用户初始口令
二、创建帐号
Useradd [<
选项>]<用户名>

 

[<选项>]
-u uid
:指定新用户的uid,默认为使用当前最大的uid1
-g group
:指定新用户所在的组,该组必须已经存在
-G group
:指定新用户的附加组
-d dir
:指定新用户的自家目录
-s shell
:指定新用户使用的shell,默认为bash,也可以使用chsh命令修改,/etc/shells
-c comment
:说明新用户的附加信息,如全名等
-e expire
:指定用户的登录失交效时间,格式yyyy-mm-dd
-m
建立新用户的自家目录
-M
不建立新用户的自家目录
-R
建立一个系统用户

举例:
#useradd –g ll –e 12/31/2001 lei
#passwd lei
三、删除已存在的用户帐号
Userdel –r lei
-r
:表示连同自家目录一起删除
四、修改用户属性
Usermod [<
选项>]<用户名>
其中[<选项>]useradd中的选项基本相同,但增加
-l
:更改用户的帐号名
-L
:锁定用户
-U
:取消帐号锁定
#usermod –l xjlei –d /home/xjlei –G girl lei


五、成为超级用户
修改用户的uidgid0即可。
命令:usermod –u 0 –o zsan
-o
:强迫修改uid
六、禁用和恢复用户帐户
命令:passwd [<选项>]<用户名>
[
选项]
-l
:锁定用户
-u
:对被锁定的用户解锁
-d
:删除用户密码
-S
:查看用户帐号的状态,如是否被锁定等

 

七、切换到其他用户
命令:su [-] [username]
说明:如果目录用户是普通用户,则可以切换到超级用户或其他普通用户,但需要口令,如果目录用户是超级用户,则可以直接切换到普通用户,不需要密码。
[-]
:连同工作环境一起切换。


八、sudo
sudo
是可以让普通用户执行某个超级用户执行的程序,如:sudo vi /etc/shadow
所有这些配置项要保存在/etc/sudoers文件中
sudo
文件中语法如下:
1
、用Host_Alias关键字定义主机列表
如:Host_Alias RED=www,ftp
2
、用User_Alias关键字定义用户别名列表
如:User_Alias US=wdn,zsan
3
、用Cmnd_Alias关键字定义命令别名列表
如:Cmnd_Alias CMDS=/bin/rm,/bin/chown

一个实例:/etc/sudoers
User_Alias US=wdn
User_Alias US1=lsi,wemz
User_Alias US2=zsan
US ALL=ALL
US1 ALL=/sbin/shutdown
US2 ALL=ALL,!/bin/su

4.3 组的管理
一、添加组
命令:groupadd [<选项>]<组名>
[
选项]
-g gid
:指定新组的gid,默认为使用当前最大的gid1
-r
:建立一个系统用户组,不指定-g选项,则分配一个1-499之间的值
#groupadd –g 888 ll

二、删除组
命令:groupdel <组名>
三、修改组的属性
命令:groupmod [<选项>]<组名>
其中选项与groupadd选项基本相同,但增加一个-n选项,用于修改新的组名。
#groupmod –n girl ll
四、为标准组添加用户
命令:gpasswd [选项][用户][]
-a
:把用户加入组
-d
:把用户从组中删除
#gpasswd –a zsan sales

 

五、查看当前用户属于哪些组
groups [username]
六、切换到某组运行(必须已属此组)
newgrp [group]

 

七、其他命令
1
id命令
功能:可以查看一个用户的uidgid
格式:id 用户名
2
finger
功能:查看用户的相关信息
格式:finger 用户名
3
chfn
功能:修改用户信息
格式:chfn 用户名
4.4
磁盘限额
一、安装磁盘限额
在安装光盘中找到quotarpm软件包。如:
#rpm –ivh quota-version.i386.rpm
可用rpm –q quota查看是否安装
二、启用系统的quota功能
编辑etc/fstab,在要启用磁盘限额的分区
(如/home)行中的添加相应参数如
/dev/hda6 /home ext3 rw defaults,usrquota,grpquota 0 2

三、创建quota文件
/home分区中添加aquota.useraquota.group文件
#touch aquota.user
#touch aquota.group
系统重启,运行quotacheck –avug命令在配额文件中创建磁盘信息。
四、设置用和组的quota
一个用户的磁盘使用限制有两种,一种是软限制(soft limit),一种是硬限制(hard limit),硬限制是分配给用户的最大磁盘空间,使用完了就立即拒绝用户再存放文件,而当用户的磁盘使用空间超过了软限制时,在一定期限内仍可继续存储 文件,但系统会有警告。而这个期限可用edquota –t 来设置

1、为用户设置quota
#edquota –u zsan
2
、为组设置quota
#edquota –g sales
3
、若为多个用户重复设置quota
#edquota –p
参考用户 待设置用户
#edquota –p zsan lsi wdn
四、启动quota
#quotaon -avug

五、查看磁盘限额的情况
#quota zsan
#quota –a
六、显示有关quota的摘要信息
# repquota /home
 

hls
查看公开信息
发送悄悄话给hls
hls发送Email
查找hls发表的更多帖子
添加 hls 到好友列表

第五章 进程管理
本章主要内容
5.1
进程的基本概念
5.2
进程的管理和监控
5.3
进程的自动执行
5.1
进程的基本概念
一、程序、进程和作业的概念
1
、程序是机器指令的集合,一般以文件的形式存储在磁盘上,是静态的。
2
、进程是一个程序在地址空间中的一次执行活动,是动态的。
3
、作业是指用户提交给计算机进行加工的一项任务,是由用户程序、数据以及某种形式的控制信息组成。

二、进程的类型
1
、交互进程:由一个shell启动的进程,既可以在前台运行,也可以在后台运行。
2
、批处理进程:不与特定的终端相关联,提交到等待队列中顺序执行进程。
3
、守护进程:在linux启动是初始化,需要时运行于后台的一些服务进程。

三、进程的启动方式:
1
、手工启动,分为前台启动和后台启动,通常情况下,我们执行一个命令就会启动一个进程。
#ls / –R >test
前台启动
#ls / -R >test &
后台启动
2
、调度启动:事先设置好,根据用户要求让系统自动启动。
2.2
进程的管理和监控
一、查看系统中的进程
1
ps [选项]
[
选项]
-a
显示所有用户的进程,但不包括没有控制终端的进程
-u
显示用户名和启动时间
-x
显示没有控制终端的进程


PS
命令输出的重要信息的含义
PID
:进程号
PPID
:父进程的进程号
TTY
:进程启动的终端
STAT
:进程当前的状态,S代表休眠,R代表运行,T代表追踪或停止,Z代表僵尸进程,W代表进程没有固定的pages<表示高优先级的进程,N代表低优先级的进程。
TIME
:进程自从启动以来占用CPU的总时间
COMMAND/CMD
:进程的命令名
USER
:用户名
%CPU
:占用CPU的时间与总时间的百分比
%mem
:占用内存与系统总内存的百分比
SIZE
:进程代码大小

二、控制系统中的进程
1
kill
功能:杀死一个进程
格式:kill -9 进程号
2
renice
功能:改变一个正在运行进程的优先级
格式:renice –n pid
-n:
进程的优先级,大于0是降低优先级,小于0是提高优先级,优先级的范围是从19-20

3 nohup
功能:当用户退出登录后,进程仍然能够在后台继续运行.
语法:nohup myprogram &
4
top
功能:以动态的方式显示进程状态
Top
命令的显示栏说明:
PID
:进程号
User
:进程的所有者
Pri
:进程运行的优先级
Ni
nice值,表示进程的优先级
VIRT
:进程占用的虚拟内存的总量
RES
:进程占用的非swap内存的总量
SHR
:和其他进程共享内存的总量。
S
:进程的状态
TIME+
:进程的累积运行时间

 

Top中的子命令
l,t,m
:调整显示的摘要信息,l是平均负载,tcpu状态,m是内存信息
f
:用来添加、删除显示栏位
u
:列出某个用户的进程
n
:设置显示总进程数的最大值
k,r
k用来杀死某个进程,rrenice
q:
退出TOP

 

5、进程的挂起和恢复
ctrl+z可以暂停正在运行的进程,
执行jobs可以显示当前终端下有哪些程序在后台运行以及哪些进程被挂起了。
执行fg可以在前台恢复一个被挂起的进程。
执行bg可以在后台恢复一个被挂成的进程。
5.3
进程的自动运行
1
at
功能:指定在某一时刻执行命令
格式:at [选项] 时间
选项:
-l
:列出已经排定的任务
-d n
删除序号为n的任务
-v:
显示命令将被执行的时间


时间表示法:
HH
MM 当天中的某小时、某分钟,如果此时刻已经过去了,则推迟到下一天的这一时刻。
Midnight
:午夜
noon:
中午
MM/DD/YY
:某月、某日、某年
now+
计时:从现在起某时刻后,如now+3days表示从现在起,三天以后

2batch
功能:任务会在系统负载较小的时候运行。
3
、应用程序corn
对于要在每天或每周都要定期执行的任务,则可以使用corn来排定。
格式:crontab –e
可以调动VI来编辑计划任务表。如:
00 03 * * * rm –fr /ftp/incoming/temp/*
分钟 小时 星期 命令
(00-59)(00-23)(01-31)(01-12)(01-07)

#crontab –l 查看用户的计划表
#crontab –r
删除用户的计划表
4
linux自动安排系统维护任务
/etc/crontab
/etc/cron.daily
/etc/cron.monthy
/etc/cron.weekly
/etc/cron.hourly

Linux 文件命令精通指南

虽然 GUI 桌面(如 KDE 和 GNOME)能够帮助用户利用 Linux 特性,而无需关于命令行接口的功能知识,但还是经常会需要更多的功能和灵活性。而且,基本熟悉这些命令对于在 shell 脚本中正确地使某些功能自动化仍然是必需的。

这 篇文章是关于 Linux 文件命令的一个“速成教程”,它是为那些刚接触这个操作系统或者只是需要补充这方面知识的用户提供的。它包含了对一些更有用的命令的一个简明的概述以及关 于它们的最强大的应用的指导。下面包含的信息 — 结合一些实验 — 将使您能够容易地掌握这些基本的命令。(注意:当涉及到一个与 Oracle 集群文件系统 (OCFS) 结合的内核时,这些命令中的某些命令的行为可能会稍微有所不同。在此情况下,Oracle 提供了一个 OCFS 工具集,该工具集可以为文件命令应用提供一个更好的选择。)

注意,这里包含的所有示例都在 SUSE Linux 8.0 Professional 上进行了测试。虽然没有理由相信它们在其它的系统上将不能工作,但如果出现问题,您应当查看您的文档,以了解可能的变化。

背景概念

在深入研究规范之前,让我们回顾一些基础知识。

文件和命令

在 Linux/UNIX 操作系统中,所有事物都被当作文件来处理:硬件设备(包括键盘和终端)、目录、命令本身,当然还有文件。这个奇怪的惯例实际上是 Linux/UNIX 的能力和灵活性的基础。

大多数(几乎是全部)的命令形式如下:


command [option] [source file(s)] [target file]


获取帮助

最有用的命令之一是那些提供帮助的命令(特别是对那些学习 Linux 的人而言)。Linux 中的两个重要的信息来源是联机参考手册,或 man 页面和 whatis 工具。您可以用 whatis 命令来访问一个不熟悉的命令的 man 页面。


$ whatis echo


要了解关于这个命令的更多信息,可以使用:


$ man echo


如果您不知道某个特殊任务所需的命令,您可以用 man -k (也称为 apropos)和一个主题来生成可能的命令。例如:


$ man -k files


一个很有用但常常被忽视的命令可以提供关于使用 man 本身的信息:


$ man man


您可以用 SPACEBAR 来浏览任意的 man 页面;UP ARROW 将向上翻滚文件。.要退出,则输入 q,!,或 CTRL-Z。

用户类别

记得那句名言“所有动物一例平等但有些动物比其他动物更加平等”吗?在 Linux 世界中,根用户掌管一切。

根 用户可以以另一个用户名 su (源自 "superuser")登录。要执行诸如添加一个新用户、打印机或文件系统之类的任务,必须作为根用户登录或者用 su 命令和根用户密码切换到超级用户。系统文件(包括控制初始化过程的系统文件)归根用户所有。虽然可能允许普通用户对它们进行读操作,但出于系统安全性的原 因,编辑的权利将留给根用户。

BASH shell

虽然提供了其它的 shell,但 BASH (Bourne Again Shell) 是 Linux 的默认 shell。它结合了与它同名的 Bourne shell 的特性和 Korn、C 和 TCSH shell 的特性。

BASH 内置的命令 history 默认记录最后输入的 500 条命令。可以通过在命令提示符下输入 history 来查看它们。要检索某个特定的命令,可以在命令提示符下按 UP ARROW 或 DOWN ARROW,或在历史列表中输入它的编号,并在编号前面加上 "!",例如:


$ !49


您还可以通过一条命令在历史列表中离位置最靠前的项目的距离来执行该命令:如果在历史列表中有 53 个事件,$ !-3 将执行事件号 51。

像 UNIX/Linux 世界的其它 shell 一样,BASH 使用了特殊的环境变量来方便系统管理。例如:


HOME,用户主目录
PATH,Linux 用来搜索您输入的命令的可执行镜像的搜索路径
HISTSIZE,系统保存的历史事件的数量

除了这些保留的关键字之外,您还可以定义您自己的环境变量。例如,Oracle 使用 ORACLE_HOME (还有其它一些变量),要使 Oracle 安装成功完成,必须在您的环境中设置这些变量。

可以在提示符下临时设置变量:


$HISTSIZE=100


或者,在 /etc/profile (需要根用户权限)中进行系统范围的永久设置,或在 .profile 中进行局部永久设置。

可以通过 echo 命令,并用一个 $ 符号来访问一个环境变量的值,进而查看该值。



$ echo $HOME
/home/bluher


可以用 env 命令来查看当前所有的环境变量。

正则表达式和通配符

许多 Linux 命令使用通配符 * 和 来匹配任意数量的字符或分别匹配任意的单个字符;正则模式匹配表达式利用一个句点 (.) 来匹配除“换行符”之外的任意单个字符。这两种情况下都使用方括号 ([ ]) 来

 

scp

SCP 命令跟 CP 命令类似,只不过CP命令是在同一台机器上用的,SCP是在2台机器上复制的命令。

举例说明:
复制远程服务器的文件到本地

scp -P 999 root@21andy.com:/home/test.zip /home/

复制本地的目录到远程服务器

scp -P 999 -r /home/andy/ root@21andy.com:/home/

SCP 命令语法
scp [-1245BCpqrv] [-c cipher] [F ssh_config] [-I identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:] file1 […] [[suer@]host2:]file2

SCP 命令说明
Scp
在主机间复制文件。他使用 ssh(1)作为数据传输。而且用同样认证和安全性。 scp将在认证中请求输入密码所有的文件可能需要服务器和用户的特别描述来指明文件将被复制到/从某台服务器。两个远程登录的服务器间的文件复制是允许的。

SCP 命令选项
-1
强制scp 用协议1
-2
强制scp 用协议2
-4
强制scpIPV4的网址
-6
强制scpIPV6的网址
-B
选择批处理模式(防止输入密码)
-C
允许压缩。 标注-Cssh(1)来允许压缩
-c cipher
选择cipher来加密数据传输。这个选项直接传递到ssh(1)
-F ssh_config
设定一个可变动的用户配置给ssh.这个选项直接会被传递到ssh(1)
-i identity_file
选择被RSA认证读取私有密码的文件。这个选项可以直接被传递到ssh(1)
-l limit
限制传输带宽,也就是速度 Kbit/s的速度
-o ssh_option
可以把ssh_config中的配置格式传到ssh中。这种模式对于说明没有独立的scp文件中断符的scp很有帮助。关于选项的如下。而他们的值请参看ssh_config(5)
-P port
指定连接远程连接端口。注意这个选项需要写成大写的模式。因为-p已经早保留了次数和模式
-S program
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-p
指定修改次数,连接次数,还有对于原文件的模式
-q
把进度参数关掉
-r
递归的复制整个文件夹
-S program
指定一个加密程序。这个程序必须可读所有ssh(1)的选项。
-V
冗余模式。 scp ssh(1) 打印他们的排错信息, 这个在排错连接,认证,和配置中非常有用。

SCP 命令诊断
scp
返回0 成功时,不成功时返回值大于0

 

linux-scp不输入密码

 以下是在机器Client的root和机器Server的root之间建立安全信任关系的步骤:
    1.
在机器Clientroot用户执行ssh-keygen命令,生成建立安全信任关系的证书。
       
[root@Client root]# ssh-keygen -b 1024 -t rsa
        Generating public/private rsa key pair.
        Enter file in which to save the key (/root/.ssh/id_rsa):
        Enter passphrase (empty for no passphrase):            <--
直接输入回车
        Enter same passphrase again:                           <--
直接输入回车
        Your identification has been saved in /root/.ssh/id_rsa.
        Your public key has been saved in /root/.ssh/id_rsa.pub.
        The key fingerprint is:
        49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1croot@Client
        [root@Client root]#
   
注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。
    上述命令将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户家目录的.ssh子目录中。
    2.
将公钥证书id_rsa.pub复制到机器Serverroot家目录的.ssh子目录中,同时将文件名更换为authorized_keys
       
[root@Client root]# scp -p .ssh/id_rsa.pubroot@192.168.3.206:/root/.ssh/authorized_keys
       root@192.168.3.206'spassword:          <--
输入机器Serverroot用户密码
        id_rsa.pub           100% |**************************|   218       00:00
        [root@Client root]#
   
在执行上述命令时,两台机器的root用户之间还未建立安全信任关系,所以还需要输入机器Serverroot用户密码。
   
经过以上2步,就在机器Clientroot和机器Serverroot之间建立安全信任关系。下面我们看看效果:
        [root@Client root]# scp -p textroot@192.168.3.206:/root
        text                 100% |**************************|    19       00:00

########################################################################################

注:
1)如果把A的公钥给了B,那么,可以在ASCP不输入密码,进行传输B中的数据;
BSCP时,仍需要密码,如果需要双方不输入密码,则也要把B的公钥给A

2)如果想让BC同时可以SCP不输入密码,传输A中的数据;
则要把BC的公钥都给A
操作步骤:把两机器的id_rsa.pub中的数据都拷贝到A/root/.ssh/authorized_keys文件中,一行表示一条;
        
或使用scp -p .ssh/id_rsa.pubroot@192.168.3.206:/root/.ssh/authorized_keys先远程拷贝过去一个,然后,另一个再手动拷贝进去;

wget的用法  

wget的使用形式是: wget [参数列表] URL
首先来介绍一下wget的主要参数:
· -b
:让wget在后台运行,记录文件写在当前目录下”wget-log”文件中;

· -t [nuber of times]:尝试次数,当wget无法与服务器建立连接时,尝试连接多少次 。比如”-t 120″表示尝试120次。当这一项为”0″的时候,指定尝试无穷多次直到连接成功为止,这个 设置非常有用,当对方服务器突然关机或者网络突然中断的时候,可以在恢复正常后继续 下载没有传完的文件;
·-c
:断点续传,这也是个非常有用的设置,特别当下载比较大的文件的时候,如果中途意外中断,那么连接恢复的时候会从上次没传完的地方接着传,而不是又从头开始,使用这一项需要远程服务器也支持断点续传,一般来讲,基于UNIX/LinuxWeb/FTP服务器 都支持断点续传;
· -T [number of seconds]
:超时时间,指定多长时间远程服务器没有响应就中断连接 ,开始下一次尝试。比如”-T 120″表示如果120秒以后远程服务器没有发过来数据,就重新尝试连接。如果网络速度比较快,这个时间可以设置的短些,相反,可以设置的长一些,一般最多不超过900,通常也不少于60,一般设置在120左右比较合适;
· -w [number of seconds]
:在两次尝试之间等待多少秒,比如”-w 100″表示两次尝试 之间等待100秒;
· -Y on/off
:通过/不通过代理服务器进行连接;
· -Q [byetes]
:限制下载文件的总大小最多不能超过多少,比如”-Q2k”表示不能超过2K 字节,”-Q3m”表示最多不能超过3M字节,如果数字后面什么都不加,就表示是以字节为单 位,比如”-Q200″表示最多不能超过200字节;
· -nd
:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里;
· -x
:与”-nd”设置刚好相反,创建完整的目录结构,例如”wget -x http://www.gnu.org”将在当前目录下创建”www.gnu.org”子目录,然后按照服务器 实际的目录结构一级一级建下去,直到所有的文件都传完为止;
· -nH
:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目录下;
· –http-user=username · –http-passwd=password
:如果Web服务器需要指定用户名和口令,用这两项来设定;
· –proxy-user=username · –proxy-passwd=password
:如果代理服务器需要输入用户名和口令,使用这两个选项
· -r
:在本机建立服务器端目录结构;
· -l [depth]
:下载远程服务器目录结构的深度,例如”-l 5″下载目录深度小于或者等 5以内的目录结构或者文件;
· -m
:做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设定其他合适的选项以便于站点镜像;
· -np
:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载这个人的个人主页,如果不设置这个选项,甚至有可能把整个站点给抓下来,这显然是我们通常不希望的;
ü
如何设定wget所使用的代理服务器 wget
可以使用用户设置文件”.wgetrc”来读取很多设置,我们这里主要利用这个文件来是
设置代理服务器。使用者用什么用户登录,那么什么用户主目录下的”.wgetrc”文件就起
作用。例如,”root”用户如果想使用”.wgetrc”来设置代理服务器,”/root/.wgert”就起 作用,下面给出一个”.wge trc”文件的内容,读者可以参照这个例子来编写自己的”wgetrc”文件:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
这两行的含义是,代理服务器IP地址为:111.111.111.111,端口号为:80。第一行指定 HTTP协议所使用的代理服务器,第二行指定FTP协议所使用的代理服务器。

下面就开始实战吧!
A.
使用wget工具

linux所以的主要版本都自带了wget这个下载工具.

bash$ wget http://place.your.url/here

它还能控制ftp来下载整个web站点的各级目录,当然,如果你不小心,可能会把整个网站以及其他和他做链接的网站全部下载下来.

bash$ wget -m http://target.web.site/subdirectory

由于这个工具具有很强的下载能力,所以可以在服务器上把它用作镜像网站的工具.让它按照”robots.txt”的规定来执行.
有很多参数用来控制它如何正确地做镜像,可以限制链接的类型和下载文件的类型等等.例如:只下载有联系的链接并且忽略GIF图片:

bash$ wget -m -L –reject=gif http://target.web.site/subdirectory

wget也能够实现断点续传(-c参数),当然,这种操作是需要远程服务器支持的.

bash$ wget -c http://the.url.of/incomplete/file

可以把断点续传和镜像功能结合起来,这样可以在以前断过多次的情况下继续镜像一个有大量选择性文件的站点.如何自动实现这个目的我们在后面会讨论得更多.
如果你觉得下载时老是断线会影响你办公的话,你可以限制wget重试的次数.
bash$ wget -t 5 http://place.your.url/here
这样重试五次后就放弃了.”-t inf”参数表示永远不放弃.不停地重试.

B.那对于代理服务该怎么办呢
可以使用http代理的参数或者在.wgetrc配置文件里指定一个如何通过代理去下载的途径.但是有这么一个问题,如果通过代理来进行断点续传的话可能会有几次失败.如果有一次通过代理下载的过程发生中断,那么代理服务器上缓存里保存是那个完整的文件拷贝. 所以当你用”wget -c”来下载剩余部分的时候代理服务器查看它的缓存,并错误地认为你已经下载了整个文件.于是就发出了错误的信号.
这个时候你可以用添加一个特定的请求参数来促使代理服务器清除他们的缓存:

bash$ wget -c –header=”Pragma: no-cache” http://place.your.url/here

这个”–header”参数能够以各种数字,各种方式添加。通过它我们可以更改web服务器或者代理服务器的某些属性。有些站点不提供外部连接的文件服务,只有通过同一个站点上其他的一些页面时内容才会被提交。这个时候你可以用加上”Referer:”参数:
bash$ wget –header=”Referer: http://coming.from.this/page” http://surfing.to.this/page
有些特殊的网站只支持某种特定的浏览器,这个时候可以用”User-Agent:”参数
bash$ wget –header=”User-Agent: Mozilla/4.0 (compatible; MSIE 5.0;Windows NT; DigExt)” http://msie.only.url/here

C.那我怎么设定下载时间呢?
如果你需要在你的办公电脑上通过和其他同事共享的一个连接来下载一些很大的文件,而且你希望你的同事不会因为网络速度的减慢而收到影响,那你就应该尽量避开高峰时段。当然,不需要在办公室里等到所以人都走掉,也不需要在家里用完晚饭后还惦记着要上网下载一次。
at来就可以很好的定制工作时间:
bash$ at 23
00
warning: commands will be executed using /bin/sh
at> wget http://place.your.url/here
at> press Ctrl-D
这样,我们设定了下载工作在晚上11点进行。为了使这个安排能够正常进行,请确
atd这个后台程序正在运行。

D.下载要花很多时间?
当你需要下载大量的数据,而且你又没有享有足够的带宽,这个时候你会经常发现在你安排的下载任务还没有完成,一天的工作却又要开始了。
作为一个好同事,你只能停掉了这些任务,而开始另外的工作。然后你又需要反复地重复使用”wget -c”来完成你的下载。这样肯定太繁琐了,所以最好是用crontab来自动执行。创建一个纯文本文件,叫做”crontab.txt”,包含下面的内容:
0 23 * * 1-5 wget -c -N http://place.your.url/here
0 6 * * 1-5 killall wget
这个crontab文件指定某些任务定期地执行。前五列声明是什么时候执行这个命令,而每行的剩余部分则告诉crontab执行什么内容。
前两列指定了每天一到晚上11点就开始用wget下载,一到早上6点就停止一切wget下载。第三四列的*表示每个月的每一天都执行这个任务。第五列则指定了一个星期的哪几天来执行这个程序。 –”1-5″表示从星期一到星期五。

这样在每个工作日的晚上11点,下载工作开始,到了上午的6点,任何的wget任务就被停掉了。你可以用下面的命令来执行crontabbash$ crontab crontab.txt
wget
的这个”-N”参数将会检查目标文件的时间戳,如果匹配了,下载程序就会停止,因为它说明整个文件已经下载完全了。
”crontab -r”可以删除这个计划安排。我已经多次采用这种方法,通过共享的电话拨号来下载过很多的ISO镜像文件,还是比较实用的。

E.如何下载动态变化的网页
有些网页每天都要根据要求变化好几次.所以从技术上讲,目标不再是一个文件,它没有文件长度.因此”-c”这个参数也就失去了意义.
例如:一个PHP写的并且经常变动的linux周末新闻网页:
bash$ wget http://lwn.net/bigpage.php3

我办公室里的网络条件经常很差,给我的下载带了很大的麻烦,所以我写了个简单的脚本来检测动态页面是否已经完全更新了.
#!/bin/bash

#create it if absent
touch bigpage.php3

#check if we got the whole thing
while ! grep -qi bigpage.php3
do
rm -f bigpage.php3

#download LWN in one big page
wget http://lwn.net/bigpage.php3

done
这个脚本能够保证持续的下载该网页,直到网页里面出现了" ",这就表示该文件已经完全更新了.

F.对于sslCookies怎么办?
如果你要通过ssl来上网,那么网站地址应该是以”https://”来开头的.在这样的情况下你就需要另外一种下载工具,叫做curl,它能够很容易获得.有些网站迫使网友在浏览的时候必须使用cookie.所以你必须从在网站上得到的那个 Cookie里面得到”Cookie:”这个参数.这样才
能保证下载的参数正确.对于lynxMozillaCookie的文件格式,用下面的:
bash$ cookie=$( grep nytimes ~/.lynx_cookies |awk {printf(”%s=%s;”,$6,$7)} )
就可以构造一个请求Cookie来下载http://www.nytimes.com上的内容.当然,你要已经用这个浏览器在该网站上完成注册.
w3m
使用了一种不同的,更小巧的Cookie文件格式:
bash$ cookie=$( grep nytimes ~/.w3m/cookie |awk {printf(”%s=%s;”,$2,$3)} )
现在就可以用这种方法来下载了:
bash$ wget –header=”Cookie: $cookie” http://www.nytimes.com/reuters/technology/tech-tech-supercomput.html
或者用curl工具:
bash$ curl -v -b $cookie -o supercomp.html http://www.nytimes.com/reuters/technology/tech-tech-supercomput.htm

G.如何建立地址列表?
到现在为止我们下载的都是单个文件或者是整个网站.有的时候我们需要下载某个网页上链接的大量文件,但没有必要把它整个网站都镜像下来.比如说我们想从一个依次排列的100首歌里面下载前20.注意,这里”–accept””–reject”参数是不会起作用的, 因为他们只对文件操作起作用.所以一定要用”lynx -dump”参数来代替.
bash$ lynx -dump ftp://ftp.ssc.com/pub/lg/ |grep gz$ |tail -10 |awk {print $2} > urllist.txt
lynx
的输出结果可以被各种GNU文本处理工具过虑.在上面的例子里,我们的链接地址是以”gz”结尾的,并且把最后10个文件地址放到urllist.txt文件里.然后我们可以写一个简单的bash脚本来自动下载这个文件里的目标文件:

bash$ for x in $(cat urllist.txt)
> do
> wget $x
> done
这样我们就能够成功下载Linux Gazette网站(ftp://ftp.ssc.com/pub/lg/)上的最新10个论题.

H.扩大使用的带宽
如果你选择下载一个受带宽限制的文件,那你的下载会因为服务器端的限制而变得很慢.下面这个技巧会大大缩短下载的过程.但这个技巧需要你使用curl并且远程服务器有多个镜像可以供你下载.例如,假设你想从下面的三个地址下载Mandrake 8.0:
url1=http://ftp.eecs.umich.edu/pub/linux/mandrake/iso/Mandrake80-inst.iso
url2=http://ftp.rpmfind.net/linux/Mandrake/iso/Mandrake80-inst.iso
url3=http://ftp.wayne.edu/linux/mandrake/iso/Mandrake80-inst.iso
这个文件的长度是677281792个字节,所以用curl程序加”–range”参数来建立三个同时进行的下载:
bash$ curl -r 0-199999999 -o mdk-iso.part1 $url1 &
bash$ curl -r 200000000-399999999 -o mdk-iso.part2 $url2 &
bash$ curl -r 400000000- -o mdk-iso.part3 $url3 &
这样就创建了三个后台进程.每个进程从不同的服务器传输这个ISO文件的不同部分.这个”-r”参数指定目标文件的字节范围.当这三个
进程结束后,用一个简单的cat命令来把这三个文件衔接起来– cat mdk-iso.part? > mdk-80.iso.(强烈建议在刻盘之前先检查md5)
你也可以用”–verbose”参数来使每个curl进程都有自己的窗口来显示传输的过程.

下载到指定目录

wget -P/tmp ftp://user:passwd@url/file

把文件file下载到/tmp目录下。

yum是干什么的

  使用redhatfedoralinuxer肯定都为rpm著名的dependency hell而头疼(这也是所有基于rpm发行版都有的问题)foo is needed by barbar is needed by foo。要装卸个软件,还得辛辛苦苦地梳理清楚所有依赖性问题,rpm的几个搜索站点成了时常光顾的场所,如果不幸碰到循环依赖,那就只有干瞪眼的分了。 有时加个--nodeps参数,倒是眼不见,心不烦,但这样装上的软件,你能保证正常使用吗,这样卸载软件,你能保证不影响其它软件工作吗,恐怕谁也不能 给出肯定的答案。每到这时,帽子们只有看着debian apt暗自羡慕了。好在,这些都已经成为过去时了。基于rpm的发行版现在也有了像apt那样自 动解决依赖关系的包管理工具了。其中一个著名的就是apt4rpm,这基本上是debian系统apt的在rpm发行版的移植。但是使用Redhat Fedoralinuxer你们知道吗,还有一个与apt功能类似的rpm包管理系统,那就是yumFedora系统已经自带,Redhat也有相应 rpm下载。与apt相比,yum的功能一点也不弱,甚至还有许多胜过apt 之处。比如说,yumFedora系统自带的,因此它能使用fedora官方的软件源,完成各种官方发布>的各种升级。对于第三方软件源的支持,yum 不差,大多数支持aptrepository注,也能支持yum,比如说freshrpms,fedora.us,livna等等。此外yum有一个比较 详细的log,可以查看何时升级安装了什么软件包等。yum的代码较apt更为精简等。

  一. yum是什么

  yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM.它能自动解决包的倚赖性问题.

  它能便于管理大量系统的更新问题

  注:为什么要使用yum而不用apt,最简单的原因,Fedora自带

  二. yum特点

  *可以同时配置多个资源库(Repository)

  *简洁的配置文件(/etc/yum.conf)

  *自动解决增加或删除rpm包时遇到的倚赖性问题

  *使用方便

  *保持与RPM数据库的一致性

  三. yum安装

  Fedora自带

  #rpm -ivh yum-2.0.4-2.noarch.rpm

  四. yum配置

  注:修改和增加配置文件中的资源库,加快下载速度和拥有更多可更新的rpm包将/etc/yum.conf的内容全部替换为

  [main]

  cachedir=/var/cache/yum

  debuglevel=2

  logfile=/var/log/yum.log

  pkgpolicy=newest

  distroverpkg=fedora-release

  tolerant=1

  exactarch=1

  [fedora-us-1]

  name=Fedora Core 1 -- Fedora US mirror

  baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/os

  [fedora-us-1-updates]

  name=Fedora Core 1 updates -- Fedora US mirror

  baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/updates

  [fedora-us-1-stable]

  name=Fedora Linux (stable) for Fedora Core 1 -- Fedora US mirror

  baseurl=ftp://mirrors.kernel.org/fedora.us/fedora/fedora/1/i386/yum/stable

  [freshrpms]

  name=Fedora Linux $releasever - $basearch - freshrpms

  baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms

  五. yum应用

  注:当第一次使用yumyum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.

检查有哪些可更新的rpm

 #yum check-update

  安装rpm,使xmms可以播放mp3

  #yum install xmms-mp3

  安装mplayer,同时自动安装相关的软件

  #yum install mplayer

  删除licq,同时删除与该包有倚赖性的包

  #yum remove licq

  注:同时会提示删除licq-gnome,licq-qt,licq-text,非常方便

  系统更新(更新所有可以升级的rpm,包括kernel)

  #yum -y update

  每天定期执行系统更新

  #chkconfig yum on

  #service yum start

  六. yum指令详解

  *rpm包的更新

  检查可更新的rpm

  #yum check-update

  更新所有的rpm

  #yum update

  更新指定的rpm,如更新kernelkernel source

  #yum update kernel kernel-source

  大规模的版本升级,yum update不同的是,连旧的淘汰的包也升级

  #yum upgrade

  *rpm包的安装和删除

  安装rpm,xmms-mp3

  #yum install xmms-mp3

  删除rpm,包括与该包有倚赖性的包

  #yum remove licq

  注:同时会提示删除licq-gnome,licq-qt,licq-text

  *yum暂存(/var/cache/yum/)的相关参数

  清除暂存中rpm包文件

  #yum clean packages

  清除暂存中rpm头文件

  #yum clean headers

  清除暂存中旧的rpm头文件

  #yum clean oldheaders

  清除暂存中旧的rpm头文件和包文件

  #yum clean#yum clean all

  注:相当于yum clean packages + yum clean oldheaders

  *rpm包列表

  列出资源库中所有可以安装或更新的rpm

  #yum list

  列出资源库中特定的可以安装或更新以及已经安装的rpm

  #yum list mozilla

  #yum list mozilla*

  注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm

  列出资源库中所有可以更新的rpm

  #yum list updates

  列出已经安装的所有的rpm

  #yum list installed

  列出已经安装的但是不包含在资源库中的rpm

  #yum list extras

  注:通过其它网站下载安装的rpm

  *rpm包信息显示(info参数同list)

  列出资源库中所有可以安装或更新的rpm包的信息

  #yum info

  列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息

  #yum info mozilla

  #yum info mozilla*

  注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息

  列出资源库中所有可以更新的rpm包的信息

  #yum info updates

  列出已经安装的所有的rpm包的信息

  #yum info installed

  列出已经安装的但是不包含在资源库中的rpm包的信息

  #yum info extras

  注:通过其它网站下载安装的rpm包的信息

  *搜索rpm

  搜索匹配特定字符的rpm

  #yum search mozilla

  注:rpm包名,包描述等中搜索

  搜索有包含特定文件名的rpm

  #yum provides realplay

  七. 安全的更新freshrpms.netrpm

  安装freshrpms.netGPG key #rpm --import http://freshrpms.net/packages/RPM-GPG-KEY.txt

  编辑/etc/yum.conf,增加以下信息到尾部

  [freshrpms]

  name=Fedora Linux $releasever - $basearch - freshrpms

  baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms

  gpgcheck=1

  注:

  检查GPG Key

  # rpm -qa gpg-pubkey*

  显示Key信息

  #rpm -qi gpg-pubkey-e42d547b-3960bdf1

  删除Key

#rpm -e gpg-pubkey-e42d547b-3960bdf1

6.5.3 解压.zip文件命令:unzip

时间:2010-11-25 15:00   来源:网络收集   收藏  复制分享 共有评论(0)条

点击:126次

  6.5.3 解压.zip文件命令:unzip

  unzip命令能够将被winzip压缩的文件解压。

  unzip命令的执行方式为:

  # unzip [-选项] 压缩文件名.zip

  例如想将file1.zip文件在当前目录下解压,则执行命令为:

  # unzip file1.zip

  如果只想查看压缩文件里的文件目录,但是并不想解压,则执行命令为:

  # unzip -v file1.zip

  将file1.zip文件在/home/zip目录中进行解压,但是如有相同的文件则并不覆盖原文件,执行命令为:

  #unzip -n file1.zip -d /home/zip

  unzip命令的选项见表6-11。

  表6-11 unzip命令选项

unzip命令的选项

参数说明

-v

查看文件目录列表,但不解压

-d

将文件解压到指定目录中

-n

不覆盖原来已经存在的文件

-o

覆盖已存在的文件并且不需要用户确认

 【ps】 命令:

        命令其实非常庞大,古老,支持的选项非常多。而unix在分裂的过程中,这个命令也被独立维护

        一般来讲用户登录进去之后,系统就是给你一个终端。这都是跟终端相关的。而在登录之前那些都是跟无关的进程

        1.终端相关的进程:他们都附属于某一个进程,比如shell进程,所以shell进程都被称为leader进程。所以kill领导进程的时候,它会将里面的

其他所有跟他有关的都杀了。

        2.终端无关的进程:他们都独立。优哉游哉的独立于世外生存。

        选项:BSD风格选项都没有“-”

            -e: 用于查看所有进程:无论是终端相关还是终端无关的所有进程

            a : 跟终端无关的所有进程。

            x :表示跟终端相关的所有进程

            u: 表示显示这个进程是由哪个用户发起的。

            axu : 正是一般查看进程时最重要的一项命令组合。

            -eF: 显示额外信息,小f显示完整信息。

            j : jobs format 作业的格式来显示进程状态信息。

            -ejH :H,可以显示进程见关系,直接树状显示出进程关系

            axjf : 真正树状图的形式显示进程关系

            -o : 自己定义只显示哪些字段。

                       比如: ps -eo pid,%CPU,comm  用逗号隔开,可以各种指定显示

            常用:

            ps axjf

            ps aux

            ps ef

进程属性:样式

PID(进程号) CPU是靠着task_structure结构体来标示进程的,在这个结构体里,它会给进程分配PID

task_structure:是个循环链表,会给每一个进程派发身份证。如果一个进程结束了,就会将这个进程身份证拿走。

一个进程除了PID之外还有

PPID,父进程的进程号。对于Linux来讲,每一个进程都是又上帝带来的。所以所有

进程的父进程都是init,所以这个进程的进程号是1.而上帝的本尊已经在父进程出来之后退居幕后了,他叫swap。进

程号是0这个进程通过复制自身得来的。它复制自身得来子进程,而每一个子进程都可以生成子子进程

tty: 是否跟终端相关。

   ?表示不相关

tty1 表示相关

STAT:进程状态:

    1.running 运行态 : cpu 一旦获得时间,则变成了running。如果时间完了,进程还没运行完,则将进程切换回Ready

这种来回切换的过程叫:

上下文切换 CS:Context Switch.把数据弄出去,再等有时间了弄回来。而系统调优,就是调这些每一个进程让其获得多少cpu的时间。 交互式进程越短越好。 通过系统中断,可以实现,新来的进程如何抢先进入那些刚获得进程时间的还没有运行完得进程。最重要的中断,时钟中断

2. Ready 就绪态 :所有都具备了,只欠cpu的运行时间。轮到你了你就Running,轮不到你你就running

3. Stopped 停止态:指的是管理员通过触发某种事件,让这个进程永久的沉睡下去了。只有当管理员唤醒它,它才能进入运行循环

4. Sleep 睡眠态,等待某个I/O事件完成的时候,就从running态转变成了睡眠态一般等待用户输入数据,或者等待读入数据时。不睡眠就进入就绪态可中断睡眠(interruptible Sleep),可以叫醒。这种进程因为无事可做而慢慢睡眠的进程。不可中断睡眠(uninterruptible sleep 别人叫不醒,只能自己起来:  这个进程本身正在完成一些其他操作,比如I/O,必须等待将其加载完成

  STAT:进程状态:

                          1.running 运行态 : cpu 一旦获得时间,则变成了running。如果时间完了,进程还没运行完,则将进程切换回Ready

                                            这种来回切换的过程叫:

                                            上下文切换 CS:Context Switch.把数据弄出去,再等有时间了弄回来。

                                            而系统调优,就是调这些每一个进程让其获得多少cpu的时间。

                                            交互式进程越短越好。

                                            通过系统中断,可以实现,新来的进程如何抢先进入那些刚获得进程时间的还没有运行完得进程。

                                            最重要的中断,时钟中断

                          2. Ready 就绪态 :所有都具备了,只欠cpu的运行时间。轮到你了你就Running,轮不到你你就running

                          3. Stopped 停止态:指的是管理员通过触发某种事件,让这个进程永久的沉睡下去了。

                                                      只有当管理员唤醒它,它才能进入运行循环

                          4. Sleep 睡眠态,等待某个I/O事件完成的时候,就从running态转变成了睡眠态

                                                一般等待用户输入数据,或者等待读入数据时。不睡眠就进入就绪态

                                                可中断睡眠(interruptible Sleep),可以叫醒。

                                                                这种进程因为无事可做而慢慢睡眠的进程。

                                                不可中断睡眠(uninterruptible sleep 别人叫不醒,只能自己起来:

                                                               这个进程本身正在完成一些其他操作,比如I/O,必须等待将其加载完成

                         进程状态:

                         D:表示不可中断的睡眠

                         RRunning 或者 Ready 正在运行或者等待运行

                         S : 可中断的睡眠

                         T :  停止态

                         ZZombie。僵尸态:一个进程执行结束了,应该将内存释放出来,但是这种态,没有释放!

                                              发生有两种可能性

                                              1.将一个进程向操作系统发出结束进程的时候,他会自我清理。在发出结束消息之后已经没进程号了,但他还在内部结束着自己。

                                                 每一个进程在死亡的时候并实现自我清理的时候,由其父进程帮其收尸。

                                              2.当一个进程正在准备清理的时候,父进程死了。则这个进程就会进入僵尸态

                                                孤儿进程。

                                                但是linux不允许孤儿进程出现,则会在父进程死之前,会给他找一个新爹,而新爹一般都是init,即社会福利院。

                                                一个好的程序员要随时关心它的父进程,而要在父进程死之前将进程找给Init

                            对于BSD风格:

                            < : 表示这是一个高优先级进程

                            N:表示这是一个低优先级进程

                            + :表示跟某一个前台进程相关,属于某一个前台进程组的进程。(领导死了都会带下属一起陪葬的)

                            s 某一个进程组的 Leader进程,领导进程。

                            l : 则表示这是一个多线程进程

                TIME : 获得CPU时间的累计时间

                COMMAND: 由哪个命令发起的这个进程。对于init来讲,它是 init [数字]:表示init的级别,有0-6 7个级别

                                     加了中括号的,表示是内核线程,

                %CPU 占用CPU的比率

                %MEM 占用内存比率

                VSZ : 虚拟内存级 大小是KB 虚拟地址空间的大小

                RSS : 物理内存级,真正占用物理内存空间多大。

                START:启动时间

      

            【线程】:thread表示:比进程更轻量级的资源分派单位。

       对于每一个进程来说,它认为他占用了所有的操作系统资源。如果你在一个系统上发起了200个进程,如果两个进程需要数据之间访问怎么办?

       1.自己到外面自己转一圈,然后回来。(实现自我通信)

       2.在内存空间内进行,两个进程建立一个内存空间(共享区域),叫共享进程。然后他们能在共享区域内通信。(进程内相互通信)

                  场景:Web服务器中浏览页面

                  进程是:将每一个用户当一个进程,放入cpu,然后Ok.占满为止

       而线程是:将页面放入内存中后,线程将这内存分为小的进程,让访问相同页面的人都处于一片小内存中。

       如果要使用线程,必须要防止几个用户同时修改一个文件。这就需要给加锁。

       Linux并不是完整意义上的支持线程的。