淡定从容,宁静致远
全部博文(329)
分类: 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
a
b
c
d
[root@x1 tmp]# tar --delete -f file.tar d
[root@x1 tmp]# tar tf file.tar
a
b
c
练习
* 在/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 伪终端 虚拟终端
tty1~tty6 文本终端
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]
大写字母:
D 不可中断 Uninterruptible(usually 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 |
统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,其内容如下:
01:06:48 |
当前时间 |
up 1:22 |
系统运行时间,格式为时:分 |
1 user |
当前登录用户数 |
load average: 0.06, 0.60, 0.48 |
系统负载,即任务队列的平均长度。 |
第二、三行为进程和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 |
进程状态。 |
x |
COMMAND |
命令名/命令行 |
y |
WCHAN |
若该进程在睡眠,则显示睡眠中的系统函数名 |
z |
Flags |
任务标志,参考 sched.h |
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
更改显示内容通过 f 键可以选择显示的内容。按 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被当前进程实际占用完,即没有了buffers和cache时,才会使用到swap。
Mem 行(第一行)数据说明:
Total:1035108KB。表示物理内存总大小。
Used:1008984KB。表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
Free:26124KB。表示未被分配的内存。
Shared:0kb。共享内存,一般系统不会用到。
Buffers:124212KB。系统分配但未被使用的buffers 数量。
Cached:413000KB。系统分配但未被使用的cache 数量。
-/+ buffers/cache 行(第二行)数据说明:
Used:471772kb,实际使用的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. 物理内存总大小
total(Mem)= 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 谦让度最高
用户的谦让度不能小于 0
如何设置优先级!
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 。想办法把让鱼消失。