Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1531385
  • 博文数量: 329
  • 博客积分: 2773
  • 博客等级: 少校
  • 技术积分: 4219
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:17
个人简介

淡定从容,宁静致远

文章分类

全部博文(329)

文章存档

2016年(4)

2015年(50)

2014年(68)

2013年(45)

2012年(162)

分类: LINUX

2012-12-13 21:26:28

压缩,解压缩

节省硬盘空间、备份、网络传输

1、gzip gunzip

       gzip是一个GNU自由软件的文件压缩程序。

       gunzip用于解开被gzip压缩过的文件,文件的扩展名为".gz"。

gzip 压缩的命令

# echo hello > a                        //生成一个文件,内容为hello

# gzip a                                //把a文件压缩

# ls                                    //查看生成的 a.gz 

gunzip 解压缩的命令

# gunzip a.gz                           //解压缩a.gz 文件

zcat  *.gz   查看压缩文件的内容

# zcat a.gz  

2、bzip2 bunzip2

bzip2 能够进行高质量的数据压缩,能够把普通的数据文件压缩10%至15%,压缩的速度和解压的效率都非常高。

bzip2 压缩的命令

# echo hello > b                  //生成一个文件,内容为hello

# bzip2 b                         //把b文件压缩

# ls                                    //查看生成的 b.bz2 

bunzip2 解压缩的命令

# bunzip2 b.bz2                          //解压缩b.bz2 文件

注意:bzip2无法压缩目录!~

bzcat *.bz2  //查看压缩文件的内容

# bzcat b.bz2                         查看压缩文件的内容

3、zip unzip 

# touch c

# zip c.zip c

# unzip c.zip

--------------------------------------------------------------------

file  验证文件类型。

# gzip a

# ls

a.gz 

# mv a.gz afile

# file afile

afile: gzip compressed data, was "a", from Unix, last modified: Wed May 23 16:45:30 2012

-------------------------------------------------

tar 打包、压缩

选项:

c 创建一个 tarball 

  x 解开一个 tarball 

  v 显示打包或者解包的过程 

  f 指定 tarball 的名字 

  t 查看 tarball 的压缩文件列表 

  r 将文件添加到一个已经存在的 tarball 之内 

  u 更新一个 tarball 中的文件 

  z 将 tarball 压缩成为.gz 的格式 

  j 将 tarball 压缩成为.bz2 的格式 

  C 解包的时候,指定存放压缩文件的路径 

 

#tar cvf backupground.tar b1.jpg b2.jpg b3.jpg 

  #tar cvf bg.tar /usr/shared/backgrounds 

  #tar zcvf bg1.tar.gz /usr/shared/backgrounds 

  #tar jcvf bg2.tar.bz2 /usr/shared/backgrounds 

打包  [root@x1 tmp]# tar cvf file.tar a b c 

查看  [root@x1 tmp]# tar tf file.tar 

追加  [root@x1 tmp]# tar rf file.tar d 

查看  [root@x1 tmp]# tar tf file.tar 

  a 

  b 

  c 

  d 

更新 [root@x1 tmp]#echo hello > b

[root@x1 tmp]# tar uf file.tar b

将压缩包解压到特定的目录内 

  [root@x1 ~]# tar zxvf bg1.tar.gz -C /tmp 

 

删除 tarball 内的指定文件 

[root@x1 tmp]# tar tf file.tar 

[root@x1 tmp]# tar --delete -f file.tar d 

[root@x1 tmp]# tar tf file.tar 

 

练习 

  * 在/etc 的两层目录之内查找  *.conf 文件,将这些文件打包为 etc2conf.tar 

    

  * 在确认 etc2conf.tar 内的文件准确无误后,将该文件压缩为 gz 格式 

---------------------------------------------

软件包安装 

  rpm 包    redhat package manager   红帽包管理器

    查询

-q   查询 

    -a   所有 

    #rpm -qa   查询系统安装的所有软件包 

    #rpm -qf /bin/ls   查看 ls 命令是由那个安装包安装的 

    #rpm -qi vsftpd     查看已经安装过的服务的信息 

    #rpm -qpi vsftpd-2.0.5-16.el5_4.1.i386.rpm   查看一个安装包的信息 

#rpm -ql vsftpd       查看已经安装国的服务在安装时都安装了那些文件 

    # rpm -qc vsftpd查看某个服务软件的配置文件信息

#rpm -qpl vsftpd-2.0.5-16.el5_4.1.i386.rpm   查看安装包都会安装哪些文件 

安装

    #rpm -ivh vsftpd-2.0.5-16.el5_4.1.i386.rpm   安装一个文件 

    #rpm -e vsftpd      卸载 

    #rpm -ivh vsftpd-2.0.5-16.el5_4.1.i386.rpm --force  强制安装 

    #rpm -ivh mysql-server-5.0.77-4.el5_4.2.i386.rpm --nodeps   

不检查依赖关系;不建议在安装时使用,出现依赖性时,建议使用 yum 等前端安装工具 

验证 使用 /var/lib/rpm 底下的数据库内容来比对目前 Linux 系统的环境下的所有软件文件

#rpm -V 验证软件包声称的命令或文件是否被人修改过。 

#rpm V 已经安装的软件名称

    #rpm -Va      验证所有软件

    #rpm -Vf 验证某个文件是否被人修改 

# rpm -Vf /etc/vsftpd/vsftpd.conf  

S.5....T  c /etc/vsftpd/vsftpd.conf 

 

       S file Size differs   文件大小

       M Mode differs (includes permissions and file type) 权限与类型

       5 MD5 sum differs     MD5值

       D Device major/minor number mismatch  设备文件的主,从号码

       L readLink(2) path mismatch   符号链接文件找不到链接对象

       U User ownership differs       文件的所有者

       G Group ownership differs     文件的所属组

       T mTime differs               内容修改时间

    

 

   #ls /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release   //系统中的公钥 

   #ls /mnt/cdrom/RPM-GPG-KEY-redhat-release   //光盘里的公钥 

   #rpm -K /mnt/cdrom/Server/vsftpd-2.0.5-16.el5_4.1.i386.rpm  

/mnt/cdrom/Server/vsftpd-2.0.5-16.el5_4.1.i386.rpm: (SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS: 

GPG#37017186)  

   #rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 

   #rpm -K /mnt/cdrom/Server/vsftpd-2.0.5-16.el5_4.1.i386.rpm  

/mnt/cdrom/Server/vsftpd-2.0.5-16.el5_4.1.i386.rpm: (sha1) dsa sha1 md5 gpg OK 

 

[root@x1 cdrom]# rpm -ivh Server/vsftpd-2.0.5-16.el5_4.1.i386.rpm --force 

Preparing...    ########################################### [100%] 

   1:vsftpd     ########################################### [100%] 

---------------------------------------

当出现大量的依赖关系的问题的时候,我们需要改变安装的方式。 

使用 yum 

# rpm -q yum 

yum-3.2.22-26.el5 

# rpm -qa |grep yum 

yum-updatesd-0.9-2.el5 

yum-rhn-plugin-0.5.4-15.el5 

yum-metadata-parser-1.1.2-3.el5 

yum-3.2.22-26.el5 

 

repo 文件 yum 客户端配置文件,必须放在/etc/yum.repos.d 目录内 

  

# pwd 

/etc/yum.repos.d 

# ls 

local.repo  rhel-debuginfo.repo  server153.repo 

 

[base]:代表容器的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的容器名称

name=zxy        说明,留给自己看的 

baseurl=file:///mnt/cdrom/Server  YUM 服务器提供安装包的位置  本地路径或网络路径(FTP,HTTP) 

enabled=1       是否可用,0 代表不可用,默认可以没有此选项,如果没有,代表可用 

gpgcheck=1      是否对软件进行数字签名的验证,0 代表不验证 

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release   数字签名的位置 

 

[s2] 

name=z1 

baseurl=ftp://192.168.1.254/iso/Server   通过 FTP 方式访问 YUM 仓库 

enabled=1 

gpgcheck=0 

 

[s3] 

name=x1 

baseurl=http://192.168.1.254/iso/Server  通过 HTTP 方式访问 YUM 仓库 

enabled=1 

gpgcheck=0 

 

yum list   列出目前 yum 所管理的所有的软件名称与版本

  * yum clean all    删除本地缓存的 yum 数据库文件 

  * yum install vsftpd -y   使用 yum 进行安装  -y 参数表示不经过询问,直接安装 

  * yum remove vsftpd   删除一个服务 

  * yum search httpd  搜寻某个软件名称或者是描述 (description) 的重要关键字;

  * yum provides createrepo   搜索个安装包包含该命令或配置文件  

  * yum grouplist 列出目前 yum 所管理的所有的软件包组名称

* yum groupinstall Development tools y 安装软件包组

* yum groupremove “Development tools”      移除软件包组

练习 

  * 将光盘挂载到/mnt/cdrom 目录上 

    #mkdir /mnt/cdrom 

    #mount /dev/cdrom /mnt/cdrom 

 

  * 编写一个 up.repo 文件,将 baseurl 指向/mnt/cdrom/Server 

    #cd /etc/yum.repos.d 

    #vi up.repo 

    [up] 

    name=up 

    baseurl=file:///mnt/cdrom/Server 

    enabled=1 

    gpgcheck=0 

 

  * 使用 yum list 进行测试 

    #yum list 

 

  *使用 yum install httpd 安装一个 web 服务器 

    #yum install httpd  -y 参数表示不要询问是否安装,直接安装 

 

------------------------------------------------ 

  * 从光盘目录内的 VT 子目录中拷贝所有的 rpm 文件,到/rpm 目录内 

  * 将你的 up.repo 文件修改,添加/rpm 到新的 baseurl 内。 

  *尝试使用 yum list 来测试,/rmp 目录内的安装包是否可用 

 

  #cd /mnt/cdrom/Server 

  #rpm -ivh createrepo   

  #createrepo -v /rpm     创建 yum 需要的数据库 

  

----------------------------------------------- 

  * 将光盘挂载到/mnt/cdrom 上。 

  * 配置本地的 yum 源,指向/mnt/cdrom/Server 

  * 使用 yum 安装 FTP 服务器,启动                 

  * 将光盘从/mnt/cdrom 上卸载下来,并挂载到/var/ftp/iso 目录上。 

  * 删除原有的 repo 文件,重新编辑一个, 

yum 仓库 baseurl 通过 FTP 方式连接。 

使用 yum 安装一个 web 服务器,httpd 

***************************************************************

进程 

  什么是进程?       一个程序运行之后,在内存中的状态。 

如何查看进程? 

  ps 

This version of ps accepts several kinds of options: 

1   UNIX options, which may be grouped and must be preceded by a dash. 

2   BSD options, which may be grouped and must not be used with a dash. 

3   GNU long options, which are preceded by two dashes. 

 

a: 显示现行终端机下的所有程序,包括其他用户的程序。

# ps a

  PID TTY      STAT   TIME COMMAND

 1956 tty3     Ss+    0:00 /sbin/mingetty /dev/tty3

 1958 tty4     Ss+    0:00 /sbin/mingetty /dev/tty4

 1960 tty5     Ss+    0:00 /sbin/mingetty /dev/tty5

 1964 tty6     Ss+    0:00 /sbin/mingetty /dev/tty6

 1979 tty1     Ss+    0:54 /usr/bin/Xorg :0 -nr -verbose -audit 4 -auth /var/run/gdm/au

 2539 pts/0    Ss+    0:00 /bin/bash

 3915 tty2     Ss     0:00 -bash

 3934 tty2     S+     0:00 vim

 3938 pts/1    Ss+    0:00 bash

 3960 pts/2    Ss     0:00 -bash

 3979 pts/2    R+     0:00 ps a

[root@www swap]# ps 

  PID TTY          TIME CMD 

 6044 pts/1    00:00:00 bash 

22650 pts/1    00:00:00 ps 

pts/1  伪终端 虚拟终端 

tty1tty6  文本终端 

    x:不连接终端的进程也显示出来 

    u:显示更加详细的信息 

    l:长格式

[root@www swap]# ps aux 

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND 

 

USER: 进程的用户 

PID:进程号 

%CPU:cpu 占用比率 

%MEM:内存占用比率 

VSZ:总虚拟内存大小

RSS:进程使用的总物理内存数

TTY:进程运行的终端 

STAT:进程运行状态 

  S--sleep 休眠状态 

  R--Running 运行状态 

  D无法中断的休眠状态

  Z--僵尸进程   在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程。

START:启动时间 

TIME:进程执行到现在总的 CPU 占用时间 

COMMAND:命令名 

 

USER       PID %CPU %MEM    VSZ   RSS TTY     STAT  START   TIME COMMAND 

root         1  0.0  0.0   2072   632 ?                Ss    Aug03    0:00    init [3]  

 

大写字母

   不可中断 Uninterruptibleusually IO

   R 正在运行,或在队列中的进程

   S 处于休眠状态

   T 停止或被追踪

   Z 僵尸进程

   W 进入内存交换(从内核2.6开始无效)

   X   死掉的进程

小写字母及其它符号

    高优先级

    n   低优先级

    s   包含子进程

    +   位于后台的进程组

 

  

top 实时监控进程状态 

是对系统管理员来说一个极为重要的命令。Top命令默认会输出一个CPU占用最多的进程列表,能够实时显示系统中各个进程的资源占用状况。

# top

top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0


统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,其内容如下:

01:06:48

当前时间

up 1:22

系统运行时间,格式为时:分

1 user

当前登录用户数

load average: 0.06, 0.60, 0.48

系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。


第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total

进程总数

1 running

正在运行的进程数

28 sleeping

睡眠的进程数

0 stopped

停止的进程数

0 zombie

僵尸进程数

Cpu(s): 0.3% us

用户空间占用CPU百分比

1.0% sy

内核空间占用CPU百分比

0.0% ni

用户进程空间内改变过优先级的进程占用CPU百分比

98.7% id

空闲CPU百分比

0.0% wa

等待输入输出的CPU时间百分比

0.0% hi

0.0% si


最后两行为内存信息。内容如下:

Mem: 191272k total

物理内存总量

173656k used

使用的物理内存总量

17616k free

空闲内存总量

22052k buffers

用作内核缓存的内存量

Swap: 192772k total

交换区总量

0k used

使用的交换区总量

192772k free

空闲交换区总量

123988k cached

缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。


进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号

列名

含义

a

PID

进程id

b

PPID

父进程id

c

RUSER

Real user name

d

UID

进程所有者的用户id

e

USER

进程所有者的用户名

f

GROUP

进程所有者的组名

g

TTY

启动进程的终端名。不是从终端启动的进程则显示为 ?

h

PR

优先级

i

NI

nice值。负值表示高优先级,正值表示低优先级

j

P

最后使用的CPU,仅在多CPU环境下有意义

k

%CPU

上次更新到现在的CPU时间占用百分比

l

TIME

进程使用的CPU时间总计,单位秒

m

TIME+

进程使用的CPU时间总计,单位1/100秒

n

%MEM

进程使用的物理内存百分比

o

VIRT

进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

p

SWAP

进程使用的虚拟内存中,被换出的大小,单位kb。

q

RES

进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

r

CODE

可执行代码占用的物理内存大小,单位kb

s

DATA

可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

t

SHR

共享内存大小,单位kb

u

nFLT

页面错误次数

v

nDRT

最后一次写入到现在,被修改过的页面数。

w

S

进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程

x

COMMAND

命令名/命令行

y

WCHAN

若该进程在睡眠,则显示睡眠中的系统函数名

z

Flags

任务标志,参考 sched.h


默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。文件的推荐方法。

-----------------------------

free  查看内存和交换区的使用情况

# free

Total  used  free  shared  buffers  cached

Mem: 1035108  1008984  26124  0  124212  413000

-/+ buffers/cache: 471772  563336

Swap: 2096472 842320 1254152

这里显示的单位是KB

linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。有关Linux内存机制参考:

Mem:表示物理内存统计。

-/+ buffers/cached:表示物理内存的缓存统计

Swap:表示硬盘上交换分区的使用情况。只有mem被当前进程实际占用完,即没有了bufferscache时,才会使用到swap

Mem 行(第一行)数据说明:

Total1035108KB。表示物理内存总大小。

Used1008984KB。表示总计分配给缓存(包含buffers cache )使用的数量,但其中可能部分缓存并未实际使用。

Free26124KB。表示未被分配的内存。

Shared0kb。共享内存,一般系统不会用到。

Buffers124212KB。系统分配但未被使用的buffers 数量。

Cached413000KB。系统分配但未被使用的cache 数量。

-/+ buffers/cache 行(第二行)数据说明:

Used471772kb,实际使用的buffers cache 总量,也是实际使用的内存总量。

Free: 563336kb, 未被使用的buffers cache 和未被分配的内存之和,这就是系统当前实际可用内存。

1. 实际可用内存大小:

Free-/+ buffers/cache行)= Free(Mem)+buffers(Mem)+Cached(Mem);

563336 = 26124 + 124212+ 413000

2. 已经分配的内存大小:

Used(Mem) = Used(-/+ buffers/cache)+ buffers(Mem) + Cached(Mem)

1008984kb = 471772 + 124212 +413000

3. 物理内存总大小

totalMem= used(-/+ buffers/cache) + free(-/+ buffers/cache)

1035108 = 471772 + 563336

buffer cache 的区别

Buffer:缓冲区,一个用于存储速度不同步的设备或优先级不同的设备之间传输数据的区域。通过缓冲区,可以使进程之间的相互等待变少,从而使从速度慢的设备读入数据时,速度快的设备的操作进程不发生间断。

A buffer is something that has yet to be "written" to disk.

cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁盘的读IO 必会非常小

A cache is something that has been "read" from the disk and stored for later use.

--------------------------------------------

/proc

# man proc

proc目录下有很多用数字命名的目录,这些目录的名字就是当前系统中进程的进程号。

进到一个进程目录,里面有很多文件。

cmdline:这个主要是当前这个进程被运行时的command line,里面包括了运行时指定的一些参数

environ:里面记录了当前进程的一些环境变量

exe:这个就是这个进程的执行文件

fd:进程打开的文件描述符

mem This  file can be used to access the pages of a process’s mem-

              ory through open(2), read(2), and fseek(3).

----------------------------------------

cat /proc/cpuinfo  查看cpu信息

判断CPU是否64位,检查cpuinfo中的flags区段,看是否有lm标识。

-------------------------------------------

 谦让度    -20 ~~ 19 

 

    -20      谦让度最低

      19      谦让度最高

    用户的谦让度不能小于 

 

如何设置优先级! 

  nice                           //运行程序时设置谦让度

    格式: 

      nice -n number command 

  

  renice                         //对已经运行的程序设置谦让度

    格式: 

      renice number pid 

 

进程的前、后台运行,以及作业控制 

 

前台运行,意味这终端被占用。 

后台运信,不占用终端,其他命令依然响应 

 

fg:  将后台进程,调到前台运行。  

bg:  将后台停止的进程,调到后台运行。 

 

#fg  %n   //n 为作业号 

#bg  %n

 

[root@www tmp]# jobs 

[1]   Running                 gedit /var/www/html/docs/day08.txt &  (wd: ~) 

[2]-  Stopped                 vim a.file 

[3]+  Stopped                 vim b.file 

[root@www tmp]# fg %3 

vim b.file 

 

 

ctrl+z 将前台运行的进程,扔到后台去,但是此时进程为停止状态。 

 

# vi w.sh 

#!/bin/bash

for i in `seq 1 10000`

do 

echo hello

sleep 1

done 

# chmod +x w.sh

# ./w.sh & 

[1] 24114 

# jobs 

[1]+  Running                 ./w.sh & 

# fg 

./w.sh 

//按 Ctrl+z 将进程扔到后台,并停止进程 

[1]+  Stopped                 ./w.sh 

# jobs 

[1]+  Stopped                 ./w.sh 

# bg 

[1]+ ./w.sh & 

# jobs 

[1]+  Running                 ./w.sh & 

 

 

杀死后台的进程: 

 

 

[root@www swap]# ps aux | grep w.sh 

root     24114  0.0  0.1   5264  1548 pts/2    S    16:29   0:00 /bin/bash ./w.sh 

root     24403  0.0  0.0   4164   704 pts/2    R+   16:33   0:00 grep w.sh 

[root@www swap]# ps aux | grep w.sh | grep -v grep 

root     24114  0.0  0.1   5264  1548 pts/2    S    16:29   0:00 /bin/bash ./w.sh 

[root@www swap]# kill -9 24114 

[root@www swap]# jobs 

[1]+  已杀死               ./w.sh 

[root@www swap]#  

 

kill 使用信号传递命令 

 

[root@www swap]# kill -l 

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL 

 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE 

 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2 

13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT 

17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP 

21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU 

25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH 

29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN 

35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4 

39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8 

43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 

47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 

51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 

55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6 

59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2 

63) SIGRTMAX-1  64) SIGRTMAX 

 

1) SIGHUP    --- 重新读取配置文件 

2) SIGINT    --- ctrl+c 

9) SIGKILL   --- 强制杀死进程信号 

15) SIGTERM  --- 通知进程终止,至于进程是否终止,不一定。 

 

用法 

kill 信号   pid 

[root@www swap]# kill -9 24114 

[root@www swap]# kill 24114   (默认使用信号 15) 

 

 

xkill   杀死图形化进程 

 

******************************************************************

管道和重定向

 

在 Linux中,管道和 I/O 重定向是两个最强大的命令行功能。

I/O重定向   允许你将标准输出或错误消息从程序重定向至文件,以进行保存或稍后进行分析,或禁止其在终端显示,你还可以通过文件而非键盘输入读取至命令行程序。

管道  允许你将标准输出信息从程序连接至另一个程序的输入。这允许将多个小程序连接成一个管道,每个程序作用于前一个程序的输出。前一个程序的输出是后一个程序的参数

名称

说明

编号

默认

STDIN

标准输入

0

键盘

STDOUT

标准输出

1

终端

STDERR

标准错误输出

2

终端

关键字

定义

示例

或 1>

STDOUT重定向到文件(覆盖)

date > /tmp/file

cat file1 file2 > /tmp/file 

echo hello > /dev/tty2

ls l / > /dev/tty3

>> 或 1>>

STDOUT重定向到文件(追加)

date >> /tmp/file

ls >> /tmp/file

2>

STDERR重定向到文件(覆盖)

find / -user mike 2>/tmp/error

find / -user mike >/tmp/output 2>/tmp/error

2>/dev/null

通过重定向到

/dev/null (黑洞文件)丢弃错误

find / -user mike 2>/dev/null

find / -user mike >/tmp/output 2>/dev/null

2>&1

STDERR

STDOUT组合

find / -user mike > /tmp/all 2>&1

ls  bucunzai  2>&1 | less

(错误输出不能通过管道)

&>

STDERR

STDOUT一起重定向到文件

find / -user mike &> /tmp/all

或 0<

重定向STDIN

# echo y > y.txt

# touch file

# rm file < y.txt

<<

重定向STDIN(追加)

cmd<< 界位符 > filename  打开临时缓冲区,直到遇到界位符

$ cat << END > f5

> a

> b

> end

> END

|

管道 将一个命令的STDOUT 发送到另一个命令的

STDIN

# cat /etc/passwd | less

# ls l /bin | tail

练习:

在图形界面上按 alt+F2 ,输入 free the fish 点击 Run 。想办法把让鱼消失。

阅读(1274) | 评论(0) | 转发(0) |
0

上一篇:day 2

下一篇:day 03

给主人留下些什么吧!~~