对于linux命令不断更新感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解linux更新命令,并且为您提供关于2018/09/26LINUX安装及linux命令之ls命令学习、570个常用的
对于linux命令不断更新感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解linux 更新命令,并且为您提供关于2018/09/26 LINUX安装及linux命令之ls命令学习、570个常用的Linux命令,1349页Linux命令速查手册(附PDF)、Java程序员常用的Linux命令01——linux命令基础、linux screen 命令详解(后台执行linux命令)的宝贵知识。
本文目录一览:- linux命令不断更新(linux 更新命令)
- 2018/09/26 LINUX安装及linux命令之ls命令学习
- 570个常用的Linux命令,1349页Linux命令速查手册(附PDF)
- Java程序员常用的Linux命令01——linux命令基础
- linux screen 命令详解(后台执行linux命令)
linux命令不断更新(linux 更新命令)
序号 | 命令 | 备注 |
1 | mv | |
2 | rm | |
3 | zip unzip | |
4 | tar | |
5 | gzip | |
6 | jar | |
7 | 7z | |
8 | ps aux | |
9 | top | |
10 | free | |
11 | vmstat | |
12 | pmap -d | |
13 | rpm | |
14 | df -lh | |
15 | du | |
16 | du -sh | |
17 | ls | |
18 | time | |
19 | uname | |
20 | scp | |
21 | curl | |
22 | iotop | |
23 | chmod | |
24 | ifconfig | |
25 | ||
26 | ||
27 | ||
28 | ||
29 | ||
30 | ||
31 | ||
32 | ||
33 | ||
34 | ||
35 | ||
36 | ||
37 | ||
38 | ||
39 | ||
40 | ||
41 | ||
42 | ||
43 | ||
44 | ||
45 | ||
46 | ||
47 | ||
48 | ||
49 | ||
50 | ||
51 |
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 >$ date | xargs <span >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 去处理的, 则无此忧虑
2018/09/26 LINUX安装及linux命令之ls命令学习
第一部分: LINUX系统安装(选择了ubuntu系统)
工具包:Vmware + Ubuntu
①从vmware官网下载相应虚拟机安装包。
②从ubuntu官网下载相应的虚拟镜像安装包。
③先安装vmware之后,再在里面添加操作系统时,将ubuntu安装好。
到此,关于学习linux操作系统的实验环境搭建完成。
第二部分:ls命令
①简介:
ls命令就是list的缩写,它也是linux系统中常用的命令。
ls用来打印出当前目录的清单,如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等。
在linux命令行界面,输入 man ls 命令,我们可以得到关于ls命令的简介,及它的一些常用参数组合。输入ls --help 命令,可以得到关于ls命令的具体用法。
②具体参数介绍
如下:
-a 列出目录下的一切文件,包含以 . 最初的隐含文件。//常用
-m 横向输出文件名,并以“,”作分格符。
-c 输出文件的 i 节点的修正时刻,并以此排序。
-R 列出一切子目录下的文件。
-l 列出文件的具体信息。
-s 在每个文件名后输出该文件的巨细。
-k 以 k 字节的方式表明文件的巨细。
-i 输出文件的 i 节点的索引信息。
-t 以时刻排序。
-r 对目录反向排序
-f -U 对输出的文件不排序。
-X 以文件的扩展名(最终一个 . 后的字符)排序。
-S 以文件巨细排序。
-u 以文件前次被拜访的时刻排序。
-n 用数字的 UID,GID 替代称号。
-o 显现文件的除组信息外的具体信息。
-p -F 在每个文件名后附上一个字符以阐明该文件的类型,“*”表明可执行的一般
文件;“/”表明目录;“@”表明符号连接;“|”表明FIFOs;“=”表明套接字(sockets)。
-q 用?替代不行输出的字符。
-x 按列输出,横向排序。
暂时无用选项:
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C言语里相同)的方式列出。//不常用
-d 将目录象文件相同显现,而不是显现其下的文件。
-e 输出时刻的悉数信息,而不是输出简略信息。 //没用
-g 无用。
-A 显现除 “.”和“..”外的一切文件。
-B 不输出以 “~”结束的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出连接文件名而不是连接到的文件。
-N 不约束文件长度。
-Q 把输出的文件名用双引号括起来。
-1 一行只输出一个文件。
--color=no 不显现五颜六色文件名
--help 在规范输出上显现协助信息。
--version 在规范输出上输出版别信息并退出
③示例:
示例一:ls -a
示例二:ls -al /home 和 ls -a -l /home 最终效果一样
570个常用的Linux命令,1349页Linux命令速查手册(附PDF)


-
由于Linux命令太多,在此仅展示部分,完整版领取方式请见文末
570个超全Linux命令大全!
Linux命令全集!
常Linux命令解读!
Linux命令大全完整版!
Linux命令虽然基础又简单,但却是直接影响工作效率,还是很值得运维朋友学习的。 所有资料已经打包好了,需要的朋友请务必拿走学习! 资料整理自网络,仅作免费交流分享,侵删
以上就是570个常用的Linux命令,1349页Linux命令速查手册(附PDF)的详细内容,更多请关注php中文网其它相关文章!
Java程序员常用的Linux命令01——linux命令基础
1.显示日期的命令date
显示日期:
1 [root@localhost ~]# date
显示年月日:
1 [root@localhost ~]# date ''+%Y%m%d''
2.显示日历指令cal
显示当月的日历。
1 [root@localhost ~]# cal
3.使用计算器命令:bc
第一种方式:
1 [root@localhost ~]# bc <<< 1+2
第二种方式:
将要计算的字符串以管道流的方式传递给bc
[root@localhost ~]# echo ''5*6'' | bc
4.几个比较重要的热键
【Tab】-----具有命令补全的功能
【Ctrl】+C------让当前程序停掉
【Ctrl】+D -------键盘输出结束:相当于exit
5.查看帮助手册的命令man
使用方法:man [你要查询的命令]
[root@localhost ~]# man cat
6.将内存中需要保存的数据都写到硬盘中:sync
我们在关机之前,很可能会有一些在内存中,比如说缓存等等数据没有写入到硬盘当中,然而我们在关机之前执行一下这个命令,就可以把那些应该写入硬盘的数据,都写入硬盘,避免数据丢失。
[root@localhost ~]# sync
我们无法显式的看到效果。
7.切换执行等级:init
Linux系统有7种执行等级,其中比较常用的是0,3,5,6
0:停机或者关机(千万不能将initdefault设置为0)3:纯文本模式5:图形化(即图形界面)
6:重启(千万不要把initdefault设置为6)
用法是:init 执行等级
1 [root@localhost ~]# init 3
linux screen 命令详解(后台执行linux命令)
一、背景
系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。
二、简介
GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。
GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
- 会话恢复
- 只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行 screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令 detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。
- 多窗口
- 在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。
- 会话共享
- Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
GNU's Screen 官方站点:http://www.gnu.org/software/screen/
三、语法
# screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
参数说明
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
四、常用screen参数
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window
C-a p -> PrevIoUs,切换到前一个 window
C-a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> Time,显示当前时间,和系统的 load
C-a k -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上
五、使用 screen
5.1 安装screen
流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。
[root@TS-DEV ~]# yum install screen
[root@TS-DEV ~]# rpm -qa|grep screen
screen-4.0.3-4.el5
[root@TS-DEV ~]#
5.2 创建一个新的窗口
安装完成后,直接敲命令screen就可以启动它。但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨:
[root@TS-DEV ~]# screen -S david
screen启动后,会创建第一个窗口,也就是窗口No. 0,并在其中打开一个系统默认的shell,一般都会是bash。所以你敲入命令screen之后,会立刻又返回到命令提示符,仿佛什么也没有发生似的,其实你已经进入Screen的世界了。当然,也可以在screen命令之后加入你喜欢的参数,使之直接打开你指定的程序,例如:
[root@TS-DEV ~]# screen vi david.txt
screen创建一个执行vi david.txt的单窗口会话,退出vi 将退出该窗口/会话。
5.3 查看窗口和窗口名称
打开多个窗口后,可以使用快捷键C-a w列出当前所有窗口。如果使用文本终端,这个列表会列在屏幕左下角,如果使用X环境下的终端模拟器,这个列表会列在标题栏里。窗口列表的样子一般是这样:
0$ bash 1-$ bash 2*$ bash
这个例子中我开启了三个窗口,其中*号表示当前位于窗口2,-号表示上一次切换窗口时位于窗口1。
Screen默认会为窗口命名为编号和窗口中运行程序名的组合,上面的例子中窗口都是默认名字。练习了上面查看窗口的方法,你可能就希望各个窗口可以有不同的名字以方便区分了。可以使用快捷键C-a A来为当前窗口重命名,按下快捷键后,Screen会允许你为当前窗口输入新的名字,回车确认。
5.4 会话分离与恢复
你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。例如,我们打开一个screen窗口编辑/tmp/david.txt文件:
[root@TS-DEV ~]# screen vi /tmp/david.txt
之后我们想暂时退出做点别的事情,比如出去散散步,那么在screen窗口键入C-a d
,Screen会给出detached提示:
暂时中断会话
半个小时之后回来了,找到该screen会话:
[root@TS-DEV ~]# screen -ls
重新连接会话:
[root@TS-DEV ~]# screen -r 12865
一切都在。
当然,如果你在另一台机器上没有分离一个Screen会话,就无从恢复会话了。
这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来:
5.5 清除dead 会话
如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话:
5.6 关闭或杀死窗口
正常情况下,当你退出一个窗口中最后一个程序(通常是bash)后,这个窗口就关闭了。另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。
如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。
除了依次退出/杀死当前Screen会话中所有窗口这种方法之外,还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。其实C-a :这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入split等,这也是实现Screen功能的一个途径,不过个人认为还是快捷键比较方便些。
六、screen 高级应用
6.1 会话共享
还有一种比较好玩的会话恢复,可以实现会话共享。假设你在和朋友在不同地点以相同用户登录一台机器,然后你创建一个screen会话,你朋友可以在他的终端上命令:
[root@TS-DEV ~]# screen -x
这个命令会将你朋友的终端Attach到你的Screen会话上,并且你的终端不会被Detach。这样你就可以和朋友共享同一个会话了,如果你们当前又处于同一个窗口,那就相当于坐在同一个显示器前面,你的操作会同步演示给你朋友,你朋友的操作也会同步演示给你。当然,如果你们切换到这个会话的不同窗口中去,那还是可以分别进行不同的操作的。
6.2 会话锁定与解锁
Screen允许使用快捷键C-a s锁定会话。锁定以后,再进行任何输入屏幕都不会再有反应了。但是要注意虽然屏幕上看不到反应,但你的输入都会被Screen中的进程接收到。快捷键C-a q可以解锁一个会话。
也可以使用C-a x锁定会话,不同的是这样锁定之后,会话会被Screen所属用户的密码保护,需要输入密码才能继续访问这个会话。
6.3 发送命令到screen会话
在Screen会话之外,可以通过screen命令操作一个Screen会话,这也为使用Screen作为脚本程序增加了便利。关于Screen在脚本中的应用超出了入门的范围,这里只看一个例子,体会一下在会话之外对Screen的操作:
[root@TS-DEV ~]# screen -S sandy -X screen ping www.baidu.com
这个命令在一个叫做sandy的screen会话中创建一个新窗口,并在其中运行ping命令。
6.4 屏幕分割
现在显示器那么大,将一个屏幕分割成不同区域显示不同的Screen窗口显然是个很酷的事情。可以使用快捷键C-a S将显示器水平分割,Screen 4.00.03版本以后,也支持垂直分屏,快捷键是C-a |。分屏以后,可以使用C-a <tab>在各个区块间切换,每一区块上都可以创建窗口并在其中运行进程。
可以用C-a X快捷键关闭当前焦点所在的屏幕区块,也可以用C-a Q关闭除当前区块之外其他的所有区块。关闭的区块中的窗口并不会关闭,还可以通过窗口切换找到它。
6.5 C/P模式和操作
screen的另一个很强大的功能就是可以在不同窗口之间进行复制粘贴了。使用快捷键C-a <Esc>或者C-a [可以进入copy/paste模式,这个模式下可以像在vi中一样移动光标,并可以使用空格键设置标记。其实在这个模式下有很多类似vi的操作,譬如使用/进行搜索,使用y快速标记一行,使用w快速标记一个单词等。关于C/P模式下的高级操作,其文档的这一部分有比较详细的说明。
一般情况下,可以移动光标到指定位置,按下空格设置一个开头标记,然后移动光标到结尾位置,按下空格设置第二个标记,同时会将两个标记之间的部分储存在copy/paste buffer中,并退出copy/paste模式。在正常模式下,可以使用快捷键C-a ]将储存在buffer中的内容粘贴到当前窗口。
6.6 更多screen功能
同大多数UNIX程序一样,GNU Screen提供了丰富强大的定制功能。你可以在Screen的默认两级配置文件/etc/screenrc和$HOME/.screenrc中指定更多,例如设定screen选项,定制绑定键,设定screen会话自启动窗口,启用多用户模式,定制用户访问权限控制等等。如果你愿意的话,也可以自己指定screen配置文件。
以多用户功能为例,screen默认是以单用户模式运行的,你需要在配置文件中指定multiuser on 来打开多用户模式,通过acl*(acladd,acldel,aclchg...)命令,你可以灵活配置其他用户访问你的screen会话。更多配置文件内容请参考screen的man页。
今天关于linux命令不断更新和linux 更新命令的分享就到这里,希望大家有所收获,若想了解更多关于2018/09/26 LINUX安装及linux命令之ls命令学习、570个常用的Linux命令,1349页Linux命令速查手册(附PDF)、Java程序员常用的Linux命令01——linux命令基础、linux screen 命令详解(后台执行linux命令)等相关知识,可以在本站进行查询。
本文标签: