mv命令
例子:
①将一个名为abc.txt的文件重命名为1234.txt
[root@station90 root]#mv abc.txt 1234.txt
②将目录A重命名为B
[root@station90 root]#mv A B
③将a.txt移动到/b下,并重命名为c.txt
[root@station90 root]#mv a.txt /b/c.txt
rm -rf 命令
删除文件夹实例:
rm -rf /var/log/httpd/access
将会删除/var/log/httpd/access目录以及其下所有文件、文件夹
删除文件使用实例:
rm -f /var/log/httpd/access.log
将会强制删除/var/log/httpd/access.log这个文件
zip命令
压缩: zip -r [目标文件名].zip [原文件/目录名] 解压: unzip [原文件名].zip
注:-r参数代表递归
tar命令 (该格式仅仅打包,不压缩)
打包:tar -cvf [目标文件名].tar [原文件名/目录名] 解包:tar -xvf [原文件名].tar
注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。
gzip 命令
方式一:利用前面已经打包好的tar文件,直接用压缩命令。
压缩:gzip [原文件名].tar 解压:gunzip [原文件名].tar.gz
方式二:一次性打包并压缩、解压并解包
打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名] 解压并解包: tar -zxvf [原文件名].tar.gz
注:z代表用gzip算法来压缩/解压。
bzip2命令
方式一:利用已经打包好的tar文件,直接执行压缩命令:
压缩:bzip2 [原文件名].tar 解压:bunzip2 [原文件名].tar.bz2
方式二:一次性打包并压缩、解压并解包
打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名] 解压并解包: tar -jxvf [原文件名].tar.bz2
注:小写j代表用bzip2算法来压缩/解压。
xz命令
方式一:利用已经打包好的tar文件,直接用压缩命令:
压缩:xz [原文件名].tar 解压:unxz [原文件名].tar.xz
方式二:一次性打包并压缩、解压并解包
打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名] 解压并解包: tar -Jxvf [原文件名].tar.xz
注:大写J代表用xz算法来压缩/解压。
jar命令
压缩:jar -cvf [目标文件名].jar [原文件名/目录名] 解压:jar -xvf [原文件名].jar
注:如果是打包的是Java类库,并且该类库中存在主类,那么需要写一个META-INF/MANIFEST.MF配置文件,内容如下:
Manifest-Version: 1.0 Created-By: 1.6.0_27 (Sun Microsystems Inc.) Main-class: the_name_of_the_main_class_should_be_put_here
然后用如下命令打包:
jar -cvfm [目标文件名].jar META-INF/MANIFEST.MF [原文件名/目录名]
这样以后就能用“java -jar [文件名].jar”命令直接运行主类中的public static void main方法了。
7z命令
压缩:7z a [目标文件名].7z [原文件名/目录名] 解压:7z x [原文件名].7z
注:这个7z解压命令支持rar格式,即:
7z x [原文件名].rar
linux中内存,cpu使用情况
(1). ps aux命令:
其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存。
RSS列 表示, 程序占用了多少物理内存。
虚拟内存可以不用考虑,它并不占用实际物理内存。
(2). top 命令:
其中 VIRT(或VSS)列 表示,程序占用了多少虚拟内存。 同 ps aux 中的 VSZ列
RES列 表示, 程序占用了多少物理内存。同 ps aux 中的RSS列
(3) free命令
在linux下, 查看当前系统占用了多少内存,其中, free就是系统还有多少内存可以使用。
但由于 linux 系统对内存使用有一个原则, 就是, 内存是宝贵的, 能使用多少就使用多少。 所以, linux会把已经调用过的包缓存起来,放在内存里。
这样,实际上,可以使用的内存,就可以理解为, free+buffers+cached
问题:当你了解完这些命令以后, 再去使用ps aux 命令去查看的时候, 会发现一个奇怪的现象。
所有的 RSS 列的数据,加起来, 比物理内存的数要大很多。
比如, 物理内存为2G, 而RSS列的数据加起来,可能有5个G之多, 这是怎么回事了?
这是因为RSS列的值骗了我们。
linux的内存机制是这样的:
在运行一个程序时, linux会调用该程序依赖的链接库, 如lib.xx.so。 首先看该链接库是否被映射进内存中,如果没有被映射,则将代码段与数据段映射到内存中,否则只是将其加入进程的地址空间。
这样,当N个程序,依赖到lib.xx.so的时候, 实际上,内存中只有一个lib.xx.so ,而不是N个。
而RSS在显示一个程序占用的实际物理内存时, 将lib.xx.so也算了进来。
比如, X程序, 本身占用内存为5M, lib.xx.so 占用内存2M,lib.xx.so被N个程序共享依赖。 则RSS显示为,X程序运行,占用内存为7M。 实际上, X程序占用了5M空间。 多余的2m被讨入到RSS中了。
当你在用ps aux显示内存占用情况时, N个共享依赖lib.xx.so的N个程序,都把这2m空间,算在自己的RSS中了, 这样RSS的sum值,就比实际物理内存多了。
当然, linux的内存使用机制很复杂, 不是一句两句能说清楚的。这里只是简单的说明了一下, ps aux中的RSS值, 并不能真实反映物理内存的使用情况。
如果查看更详细的内存使用情况, 可用以下几种方法, 或者几种方法结合使用:
这几种方法,都需要root账户的权限
(1). pmap -d $pid 命令
$pid 是正在运行的程序的pid
例如:pmap -d 27223
27223: /usr/java/jdk1.8.0_101/bin/java -Dproc_regionserver -XX:OnOutOfMemoryError=kill -9 %p -XX:+UseConcMarkSweepGC -XX:PermSize=128m -XX:MaxPermSize=128m -Dhbase.log.dir=/usr/wanggang/tools/hbase-1.2.3/bin/../logs -Dhbase.log.file=hbase-root-regionserver-ffl-o-hadoop04.log -Dhbase.home.dir=/usr/wanggang/tools/hbase-1.2.3/bin/.. -Dhbase.id.str=root -Dhbase.root.logger=INFO,RFA -Dhbase.security.logger=INFO,RFAS org.apache.hadoop.hbase.regionserver.HRegionServer start
Address Kbytes Mode Offset Device Mapping
0000000000400000 4 r-x-- 0000000000000000 008:00022 java
0000000000600000 4 rw--- 0000000000000000 008:00022 java
(2). cat /proc/$pid/smaps
smaps的数据比较详细,可简单的归纳一下,归纳的命令如下:
cat /proc/$pid/smaps | awk '/Size|Rss|Pss|Shared|Private|Referenced|Swap/{val_name=gensub(/([a-zA-Z_]*).*/,"\\1",1,$1); list[val_name]+=$2; }END{for(val in list)print val,list[val];}'
(3). cat /proc/$pid/maps
(4). cat /proc/$pid/statm
# cat /proc/27223/statm
2069216 123284 4277 1 0 2031137 0
例子:
输出解释
第一列 size:任务虚拟地址空间大小
第二列 Resident:正在使用的物理内存大小
第三列 Shared:共享页数
第四列 Trs:程序所拥有的可执行虚拟内存大小
第五列 Lrs:被映像倒任务的虚拟内存空间的库的大小
第六列 Drs:程序数据段和用户态的栈的大小
第七列 dt:脏页数量
(5). vmstat
这个命令据说也可以提供一些参考信息,具体还未研究
2段
在 Linux 操作系统下,几乎所有的软件均通过RPM 进行安装、卸载及管理等操作。RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证。
RPM 安装操作
rpm -i 需要安装的包文件名 命令
举例如下:
rpm -i example.rpm 安装 example.rpm 包;
rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;
rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;
RPM 查询操作
命令:
rpm -q … 命令
附加查询命令:
a 查询所有已经安装的包以下两个附加命令用于查询安装包的信息;
i 显示安装包的信息;
l 显示安装包中的所有文件被安装到哪些目录下;
s 显示安装版中的所有文件状态及被安装到哪些目录下;以下两个附加命令用于指定需要查询的是安装包还是已安装后的文件;
p 查询的是安装包的信息;
f 查询的是已安装的某文件信息;
举例如下:
rpm -qa | grep tomcat4 查看 tomcat4 是否被安装;
rpm -qip example.rpm 查看 example.rpm 安装包的信息;
rpm -qif /bin/df 查看/bin/df 文件所在安装包的信息;
rpm -qlf /bin/df 查看/bin/df 文件所在安装包中的各个文件分别被安装到哪个目录下;
rpm -e 需要卸载的安装包 命令:
在卸载之前,通常需要使用rpm -q …命令查出需要卸载的安装包名称。
举例如下:
rpm -e tomcat4 卸载 tomcat4 软件包
RPM 升级操作
rpm -U 需要升级的包 命令:
举例如下:
rpm -Uvh example.rpm 升级 example.rpm 软件包
RPM 验证操作
rpm -V 需要验证的包 命令:
举例如下:
rpm -Vf /etc/tomcat4/tomcat4.conf
输出信息类似如下:
S.5....T c /etc/tomcat4/tomcat4.conf
其中,S 表示文件大小修改过,T 表示文件日期修改过。限于篇幅,更多的验证信息请您参考rpm 帮助文件:man rpm
RPM 的其他附加命令
--force 强制操作 如强制安装删除等;
--requires 显示该包的依赖关系;
--nodeps 忽略依赖关系并继续操作;
查看文件文件夹大小:
df命令:查看目前所有文件系统的可用空间及使用情况
df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力
df -lh命令
参数 -h 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。
上面的命令输出的第一个字段(Filesystem)及最后一个字段(Mounted on)分别是档案系统及其挂入点。我们可以看到 /dev/sda1 这个分割区被挂在根目录下。
接下来的四个字段 Size、Used、Avail、及 Use% 分别是该分割区的容量、已使用的大小、剩下的大小、及使用的百分比
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdc2 133G 52G 75G 41% /
tmpfs 12G 12K 12G 1% /dev/shm
/dev/sdb1 1.8T 445G 1.3T 26% /hadoop01
/dev/sda1 1.8T 398G 1.4T 23% /hadoop02
du命令:查询文件或文件夹的磁盘使用空间
如果当前目录下文件和文件夹很多,使用不带参数du的命令,可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是那个地方过大是不利的,所以得指定深入目录的层数,参数:–max-depth=,这是个极为有用的参数!如下,注意使用“*”,可以得到文件的使用空间大小。
[root@bsso yayu]# du -h –max-depth=1 work/testing
27M work/testing/logs
35M work/testing</p> <p>[root@bsso yayu]# du -h –max-depth=1 work/testing/*
8.0K work/testing/func.php
27M work/testing/logs
8.1M work/testing/nohup.out
8.0K work/testing/testing_c.php
12K work/testing/testing_func_reg.php
8.0K work/testing/testing_get.php
8.0K work/testing/testing_g.php
8.0K work/testing/var.php</p> <p>[root@bsso yayu]# du -h –max-depth=1 work/testing/logs/
27M work/testing/logs/</p> <p>[root@bsso yayu]# du -h –max-depth=1 work/testing/logs/*
24K work/testing/logs/errdate.log_show.log
8.0K work/testing/logs/pertime_show.log
27M work/testing/logs/show.log
du -h --max-depth=1
113M ./qiuyue
8.0K ./.pki
20K ./.sqoop
28K ./.ssh
108K ./liuchao
115M ./Shauna
4.0K ./test0720
8.0K ./.oracle_jre_usage
1.9G ./20part
87M ./git-2.2.1
48K ./.java
15M ./logs
1.9G ./100part
47M ./20161025
909M ./wanggang
8.0K ./.groovy
40K ./.beeline
40K ./hiveLogs
32M ./jars
8.0K ./ErrorLog
69M ./llbtest
28K ./yxr
210M ./10part
99M ./qyTest
4.0K ./20170111test
29G .
查看linux文件目录的大小和文件夹包含的文件数
du -sh 统计总数大小
例子:
du -sh ./10part
210M ./10part
du -sm * | sort -n //统计当前目录大小 并安大小 排序
例子
du -sm * |sort -n
1 out
1 test.txt
du -sk * | sort -n
du -sk * | grep guojf //看一个人的大小
du -m | cut -d “/” -f 2 //看第二个/ 字符前的文字
[root@ffl-o-hadoop04 kx]# du -m
125 ./hbasejardir
1 ./hadoopjardir/com/flyoung/hello
1 ./hadoopjardir/com/flyoung
1 ./hadoopjardir/com
329 ./hadoopjardir
1 ./classdir/b/com/flyoung/hello
1 ./classdir/b/com/flyoung
1 ./classdir/b/com
1 ./classdir/b
1 ./classdir/a/com/flyoung/hello
1 ./classdir/a/com/flyoung
1 ./classdir/a/com
1 ./classdir/a
1 ./classdir
1 ./ErrorLog
197 ./data
650 .
[root@ffl-o-hadoop04 kx]# du -m|cut -d "/" -f 4
flyoung
flyoung
com
com
com
com
com
com
650
查看此文件夹有多少文件 /*/*/* 有多少文件
du ./xd
du ./xd/*/*/* |wc -l
du与df的区别
du 统计文件大小相加
df 统计数据块使用情况
如果有一个进程在打开一个大文件的时候,这个大文件直接被rm 或者mv掉,则du会更新统计数值,df不会更新统计数值,还是认为空间没有释放。直到这个打开大文件的进程被Kill掉。
如此一来在定期删除 /var/spool/clientmqueue下面的文件时,如果没有杀掉其进程,那么空间一直没有释放。
使用下面的命令杀掉进程之后,系统恢复。
fuser -u /var/spool/clientmqueue
ls命令:以K、M、G为单位查看文件大小
ls
ls -l
ls -lh
ll -h
Linux系统使用time计算命令执行的时间
当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的。所有类UNIX系统都包含time命令
,使用这个命令可以统计时间消耗。例如:
[root@localhost ~]# time ls
anaconda-ks.cfg install.log install.log.syslog satools text
real 0m0.009s
user 0m0.002s
sys 0m0.007s
输出的信息分别显示了该命令所花费的real时间、user时间和sys时间。
real时间
是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。user时间
是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。sys时间
是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。
shell内建也有一个time命令,当运行time时候是调用的系统内建命令,应为系统内建的功能有限,所以需要时间其他功能需要使用time命令可执行二进制文件/usr/bin/time
。
使用-o选项
将执行时间写入到文件中:
/usr/bin/time -o outfile.txt ls
使用-a选项
追加信息:
/usr/bin/time -a -o outfile.txt ls
使用-f选项
格式化时间输出:
/usr/bin/time -f "time: %U" ls
-f选项后的参数:
参数 | 描述 |
---|---|
%E | real时间,显示格式为[小时:]分钟:秒 |
%U | user时间。 |
%S | sys时间。 |
%C | 进行计时的命令名称和命令行参数。 |
%D | 进程非共享数据区域,以KB为单位。 |
%x | 命令退出状态。 |
%k | 进程接收到的信号数量。 |
%W | 进程被交换出主存的次数。 |
%Z | 系统的页面大小,这是一个系统常量,不用系统中常量值也不同。 |
%P | 进程所获取的CPU时间百分百,这个值等于user+system时间除以总共的运行时间。 |
%K | 进程的平均总内存使用量(data+stack+text),单位是KB。 |
%w | 进程主动进行上下文切换的次数,例如等待I/O操作完成。 |
%c | 进程被迫进行上下文切换的次数(由于时间片到期)。 |
以下补充
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -cf all.tar *.jpg这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
在 Linux下,可以对某个文件或文件夹所占空间大小进行统计,这里将一些常用用法汇总如下:
1、对指定文件或文件夹进行统计,缺省单位为kbyte(k或千字节),下例对文件夹testa进行统计:
[web@localhost ~]$ du -s testa
1589308 testa
2、对文件夹统计的正确做法,如果想知道某个文件夹所占空间的大小,用什么命令?直接用du可以吗?
可以是可以,但是,它会将该文件夹底下所有目录都统计一遍,显然,这不是我们想要的。正确的做法是使用 -s操作符,下面是不用-s 的结果:
[web@localhost Oracle]$ du utils
16 utils/config/10.3
172 utils/config/help/7.2.0.0/en/cw
176 utils/config/help/7.2.0.0/en
204 utils/config/help/7.2.0.0/pt_BR/cw
208 utils/config/help/7.2.0.0/pt_BR
204 utils/config/help/7.2.0.0/fr/cw
208 utils/config/help/7.2.0.0/fr
188 utils/config/help/7.2.0.0/de/cw
192 utils/config/help/7.2.0.0/de
164 utils/config/help/7.2.0.0/zh_CN/cw
使用-s后:
[web@localhost Oracle]$ du -s utils
30028 utils
3、显示实际文件夹的大小(对实际文件大小进行统计,而不是对所占用磁盘空间进行统计)
[web@localhost Oracle]$ du --apparent-size utils
6 utils/config/10.3
103 utils/config/help/7.2.0.0/en/cw
107 utils/config/help/7.2.0.0/en
128 utils/config/help/7.2.0.0/pt_BR/cw
132 utils/config/help/7.2.0.0/pt_BR
128 utils/config/help/7.2.0.0/fr/cw
132 utils/config/help/7.2.0.0/fr
119 utils/config/help/7.2.0.0/de/cw
123 utils/config/help/7.2.0.0/de
94 utils/config/help/7.2.0.0/zh_CN/cw
98 utils/config/help/7.2.0.0/zh_CN
97 utils/config/help/7.2.0.0/zh_TW/cw
101 utils/config/help/7.2.0.0/zh_TW
111 utils/config/help/7.2.0.0/ko/cw
115 utils/config/help/7.2.0.0/ko
119 utils/config/help/7.2.0.0/es/cw
123 utils/config/help/7.2.0.0/es
29055 utils
可以看到文件的实际大小总是比占用空间小的。
4、如果要想让结果看起来易读一点咋办?也就是我们平时口中习惯说的空间大小,也就是转换为多少G, 或多少M,或多少K,当然只是一个概数。
[web@localhost ~]$ du -s -h testa
1.6G testa
5、指定统计单位,统计单位可以是块(512byte),byte,Kbyte(千字节)等
按块统计:
[web@localhost ~]$ du -s -B 512 testa
3178616 testa
按字节进行统计
[web@localhost ~]$ du -s -B 1 testa
1627451392 testa
按K字节进行统计
[web@localhost ~]$ du -s -B 1024 testa
1589308 testa
6、统计深度,比如,我不仅想看当前目录下各个文件夹的大小,我还希望看到二级目录下各个文件夹下的大小
[web@localhost Oracle]$ du --max-depth=2
1912 ./utils/config
27188 ./utils/ccr
20 ./utils/clone
44 ./utils/bsu
128 ./utils/quickstart
712 ./utils/uninstall
30028 ./utils
21240 ./wlserver_10.3/common
4 ./wlserver_10.3/L10N
也就是说对两级目录进行分别统计,其中对子文件夹的统计(文件夹内容所占空间的和),这和单独统计文件夹是一样的,如对
./wlserver_10.3/common 统计的结果是21240,单独统计该文件夹试试看:
[web@localhost Oracle]$ du -s ./wlserver_10.3/common
21240 ./wlserver_10.3/common
7、嫌结果输出行数太多?那就不换行!
[web@localhost Oracle]$ du -0 utils
16 utils/config/10.3172 utils/config/help/7.2.0.0/en/cw176 utils/config/help/7.2.0.0/en204 utils/config/help/7.2.0.0/pt_BR/cw208 utils/config/help/7.2.0.0/pt_BR204 utils/config/help/7.2.0.0/fr/cw208 utils/config/help/7.2.0.0/fr188 utils/config/help/7.2.0.0/de/cw192 utils/config/help/7.2.0.0/de164 utils/config/help/7.2.0.0/zh_CN/cw168 utils/config/help/7.2.0.0/zh_CN168 utils/config/help/7.2.0.0/zh_TW/cw172 utils/config/help/7.2.0.0/zh_TW176 utils/config/help/7.2.0.0/ko/cw180 utils/config/help/7.2.0.0/ko196 utils/config/help/7.2.0.0/es/cw200 utils/config/help/7.2.0.0/es192 utils/config/help/7.2.0.0/ja/cw196 utils/config/help/7.2.0.0/ja180 utils/config/help/7.2.0.0/it/cw184 utils/config/help/7.2.0.0/it1888 utils/config/help/7.2.0.01892 utils/config/help1912 utils/config8 utils/ccr/config/default16 utils/ccr/config3336 utils/ccr/lib23508 utils/ccr/inventory/pending23512 utils/ccr/inventory180 utils/ccr/bin16 utils/ccr/doc27188 utils/ccr20 utils/clone44 utils/bsu28utils/quickstart/images128 utils/quickstart572 utils/uninstall/WebLogic_Platform_10.3.6.040 util
8、统计时,不想将某些文件统计在内,怎么办,使用--exclude=[pattern]去掉,下面的例子中,对文件夹logs进行统计:
[web@localhost logs]$ ls -l
总计 20
-rw-r--r-- 1 web weblogic 1317 07-02 09:19 log.txt
-rw-r----- 1 web weblogic 1743 07-02 09:25 wlsconfig_20140702092113.log
-rw-r----- 1 web weblogic 1743 07-02 09:27 wlsconfig_20140702092546.log
-rw-r----- 1 web weblogic 1743 07-02 09:28 wlsconfig_20140702092738.log
-rw-r----- 1 web weblogic 1743 07-02 09:29 wlsconfig_20140702092819.log
可以文件夹中一共有5个文件,每个文件大小2K左右,看一下实际占用空间大小
[web@localhost logs]$ du -s *
4 log.txt
4 wlsconfig_20140702092113.log
4 wlsconfig_20140702092546.log
4 wlsconfig_20140702092738.log
4 wlsconfig_20140702092819.log
实际每个所占用的空间4k左右(注意:文件占用空间和文件大小有区别)
[web@localhost logs]$ du --apparent-size *
2 log.txt
2 wlsconfig_20140702092113.log
2 wlsconfig_20140702092546.log
2 wlsconfig_20140702092738.log
2 wlsconfig_20140702092819.log
使用k字节统计大约2K左右
[web@localhost logs]$ du --apparent-size -B 1 *
1317 log.txt
1743 wlsconfig_20140702092113.log
1743 wlsconfig_20140702092546.log
1743 wlsconfig_20140702092738.log
1743 wlsconfig_20140702092819.log
使用字节统计,则和ls命令获取的文件大小结果一样
[web@localhost logs]$ cd ..
[web@localhost Oracle]$ du -s logs
24 logs
不包含txt文件后统计,大小少了4k
[web@localhost Oracle]$ du -s --exclude=*.txt logs
20 logs
9、统计符号链接,在统计某文件夹磁盘空间大小时,符号链接实际存储位置可能在其他分区上,缺省是不进行统计的,若要进行统计,则使用-L参数
[web@localhost logs]$ ls -l ../registry.xml
-rw-r--r-- 1 web weblogic 1908 07-02 09:19 ../registry.xml
可以看到registry.xml实际大小2K左右,创建两个符号链接:
[web@localhost logs]$ ln -s ../registry.xml ./test.xml
[web@localhost logs]$ ln -s ../registry.xml test2.xml
[web@localhost logs]$ ls -l
总计 20
-rw-r--r-- 1 web weblogic 1317 07-02 09:19 log.txt
lrwxrwxrwx 1 web weblogic 15 07-11 10:36 test2.xml -> ../registry.xml
lrwxrwxrwx 1 web weblogic 15 07-11 10:36 test.xml -> ../registry.xml
-rw-r----- 1 web weblogic 1743 07-02 09:25 wlsconfig_20140702092113.log
-rw-r----- 1 web weblogic 1743 07-02 09:27 wlsconfig_20140702092546.log
-rw-r----- 1 web weblogic 1743 07-02 09:28 wlsconfig_20140702092738.log
-rw-r----- 1 web weblogic 1743 07-02 09:29 wlsconfig_20140702092819.log
这时,可以看到统计的磁盘空间多了8k,变成了32
[web@localhost Oracle]$ du -L logs
32 logs
试验文件大小:204M,文件名:xx.dat
压缩 1. tar czvf test.tar.gz xx.dat 耗时20秒,打包后大小:123M
2. tar cjvf test.tar.bz2 xx.dat 耗时82秒,打包后大小:133M
解压 1. tar zxvf test.tar.gz 耗时 5秒
2. tar jxvf test.tar.bz2 耗时 25秒
结论:使用tar czvf 方式更快,压缩包更小,即使用gzip效率最高,gzip的压缩效率参数试验,用缺省设置的压缩效率是最高的,再人为设高也没有用。如
gzip="-9" tar czvf test.tar.gz xx.dat
执行效果与 tar czvf test.tar.gz 一样压缩包都是123M大小
查看linux操作系统信息
uname -a
Linux aaaa 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/issue
CentOS release 6.5 (Final)
Kernel \r on an \m
cat /proc/version
Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013
SCP特定端口连接远程主机拷贝-非22端口号;
今天有要求需要对考文件,突然发现命了不好使了~一看是服务器端口不是22了,好吧~百度了一下找到方法:
scp -P 9989 root@192.168.8.138:/home/ligh/index.php root@192.168.8.139:/root
注意:
1. 参数-P 的位置一定要紧跟在scp命令后面
2. 参数-P 指的是远程主机的端口,而非本地主机的端口
curl "http://www.baidu.com"返回网页内容
iotop命令
性能监测与优化
iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。
iotop使用Python语言编写而成,要求Python2.5(及以上版本)和Linux kernel2.6.20(及以上版本)。iotop提供有源代码及rpm包,可从其官方主页下载。
安装 Ubuntu apt-get install iotop
CentOS yum install iotop
编译安装
wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz
tar zxf iotop-0.4.4.tar.gz
python setup.py build
python setup.py install
语法 iotop(选项)
选项 -o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。
iotop常用快捷键:
左右箭头:改变排序方式,默认是按IO排序。
r:改变排序顺序。
o:只显示有IO输出的进程。
p:进程/线程的显示方式的切换。
a:显示累积使用量。
q:退出。
实例 直接执行iotop就可以看到效果了:
iotop -d 6
Total DISK READ: 0.00 B/s | Total DISK WRITE: 20.83 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]
4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
可以使用 chmod -R 权限值 目录或文件
例如:改变 testdir 及其目录下所有的文件和目录的权限为 750
[root@livecd /]# chmod -R 750 testdir
[root@livecd /]# man chmod
可以得到:OPTIONS -R, --recursive change files and directories recursively
意思是:chmod命令有个选项 -R 可以通过“递归”的方式改变文件和目录的权限。
将Linux命令的结果作为下一个命令的参数
1. 符号:` `
名称:反引号,上分隔符
位置:反引号(`)这个字符一般在键盘的左上角,数字1的左边,不要将其同单引号(’)混淆
作用:反引号括起来的字符串被shell解释为命令行,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分
使用:可以用于把结果作为多个参数之一的需求
举例:
$ echo `date`
Thu Mar 7 21:31:11 CST 2013
2. $()
效果同` `
3. 命令:xargs
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据。xargs的默认命令是echo,这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。
[xml] view plain copy
- <code class="hljs bash" style="display:block;padding:10px;background-color:rgb(253,246,227);color:rgb(119,119,119);line-height:1.4;">$ date | xargs <span class="hljs-built_in" style="color:rgb(38,139,210);">echo</span>
- Thu Mar 7 21:47:12 CST 2013</code>
管道与xargs的区别:
- 管道是实现“将前面的标准输出作为后面的标准输入”
- xargs是实现“将标准输入作为命令的参数”
4. find命令的-exec参数
xargs:通过缓冲方式并以前面命令行的输出作为参数,随后的命令调用该参数
若忽略 xargs 的 options 来看的话,
cm1 | xargs cm2
可以单纯看成: cm2 `cm1`
因此, find .... | xargs rm 也可作 rm `find ...` 来处理.
然而, 若 find 的结果太多, 可能会超过rm 可能接受的最大argument数量而失败.
xargs优点:由于是批处理的,所以执行效率比较高(通过缓冲方式)
xargs缺点:有可能由于参数数量过多(成千上万),导致后面的命令执行失败
若换成 find .... -exec rm {} \; 的话,
因为rm 是" 逐个 " item 去处理的, 则无此忧虑