写一点Linux知识(准备长期更新)

一、shell符号展开

{},花括号展开

pei@ubuntu:~$ echo a{A{1,2},B{3,4}}b
aA1b aA2b aB3b aB4b

” ,在双引号之间的文本,除了$,\ (反斜杠),和‘(单引号)之外,都被当作普通字符来看待。这意味着单词分割,路径名展开,波浪线展开,和花括号展开都被禁止,然而参数展开,算术展开,和命令替换仍然执行。使用双引号,我们可以处理包含空格的文件名。

’ ,可以禁止所有的展开,原样输出。

//~被展开为路径,*通配符展开,{}花括号展开,$(expression)展开,$((2+2))展开,$USER展开
pei@ubuntu:~$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
text /home/pei/a.txt a b foo 4 pei
//~不展开,*不展开,{}不展开,$(expression)展开,$((2+2))展开,$USER展开
pei@ubuntu:~$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"
text ~/*.txt {a,b} foo 4 pei
//全部不展开
pei@ubuntu:~$ echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'
text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
//试一试转义字符 \
pei@ubuntu:~$ echo text \~/\*.txt \{a,b\} $(echo foo) $((2+2)) \$USER
text ~/*.txt {a,b} foo 4 $USER

二、通配符与正则表达式

一般来讲,通配符是shell相关的,常用来文件名操作什么的。
正则表达式则是用来过滤文本的,查找文件内容。

通配符
*:匹配0个字符或多个字符。
?:匹配任何单个字符,且不能为空字符。
[a-z]或[123]:匹配方括号中指定范围内的单个字符或方括号列出的其中一个字符。
[!9]:不匹配方括号中所列字符或指定范围内的单个字符。

正则表达式
POSIX 把正则表达式的实现分成了两类:基本正则表达式(BRE)和扩展的正则表达式(ERE)
BRE
^ 匹配所有以指定正则表达式开始的行。
$ 匹配所有以指定正则表达式结束的行。
* 匹配该字符的前一个字符的0次或多次出现。
. 匹配任何单个字符,功能上和通配符中的?符号相同。
[a-z]或[123] 匹配[]的任一个元素。
ERE
+ 匹配前面字符一次以上。
? 匹配字符1次或0次,即可有可无。
{m} {m,} {m,n} {,n} 表示前边字符的匹配次数,匹配次数是一个数 或者 区间。
() 将候选的元素放在括号内用 | 展开,例 a(b|c)d 匹配abd或者acd。

//必须加-E
pei@ubuntu:~$ grep -iE '^(zions|zippe)' /usr/share/dict/words
Zions
zipped
zipper
zipper's
zippered
zippering
zippers
//匹配这样一种格式,xxx xxx-xxxx 或者(xxx) xxx xxx-xxxx
pei@ubuntu:~$ echo "(555) 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$'
(555) 123-4567
pei@ubuntu:~$ echo "123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$'
pei@ubuntu:~$ echo "555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$'
555 123-4567
//发现包含空格和其它不规范字符的路径名
pei@ubuntu:~$ find . -regex '.*[^-\_./0-9a-zA-Z].*'
./.mozilla/firefox/Pending Pings
./.mozilla/firefox/wbjk9bl7.default/bookmarkbackups/bookmarks-2017-09-18_20_O51MxMYeOYYWoX469Lsi6w==.jsonlz4
./.mozilla/firefox/wbjk9bl7.default/features/{73ac8073-8b04-4519-9d3b-00626167b392}
//当前目录下有a.txt abtxt
pei@ubuntu:~$ find . -regex "./a\.txt"
./a.txt
pei@ubuntu:~$ find . -regex "./a.txt"
./a.txt
./abtxt

三、一些命令:

命令里一些通用的选项:

-a 通常指 all
-h 通常指 human, 也就是 human-readable
-i 可能指ignore ,即忽略大小写
-f 可能指force
-r 通常指 recursive
-n 通常指 n个数量
-v 通常指 显示过程

locate:

locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

whereis

可以查找二进制程序、源代码文件和man手册页等相关文件的路径。和locate一样,数据存在数据库中,快但不及时。
比如 whereis pwd
显示pwd: /bin/pwd /usr/include/pwd.h /usr/share/man/man1/pwd.1.gz
如果加上-b,-s,-m则分别显示其中的一个。

find的搭配:

1.find + exec
查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中。应该知道 {}这个东西是花括号展开,\; 代表着命令结束。
find . -type f -name “*.txt” -exec cat {} > all.txt \;

2.find + xargs
查找当前目录下的普通文件并去掉他们的可执行权限
find . -type f -print | xargs chmod a-x

3.find + grep
查找当前目录下的普通文件,并查找含有hello的行,然后统计行数。
find . -type f | xargs grep “hello” | wc -l

4.还有其他的一些选项,-type,-name,-maxdepth (0的话什么也没有,1的话就是只查找当前目录里边的,······),-size,-perm。!代表“非”, -o代表“或”。

which

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
比如说which pwd 显示/bin/pwd
环境变量可以这样查看 echo $PATH,我的电脑上显示/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

iostat

监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
例如
这里写图片描述
Device 监测设备名称; rrqm/s 每秒需要读取需求的数量; wrqm/s 每秒需要写入需求的数量; r/s 每秒实际读取需求的数量; w/s 每秒实际写入需求的数量; rsec/s 每秒读取区段的数量; wsec/s 每秒写入区段的数量; rkB/s 每秒实际读取的大小,单位为KB; wkB/s 每秒实际写入的大小单位为KB; avgrq-sz 需求的平均大小区段; avgqu-sz 需求的平均队列长度; await 等待I/O平均的时间(milliseconds); svctm I/O需求完成的平均时间; %util 被I/O需求消耗的CPU百分比。

vmstat

http://man.linuxde.net/vmstat
显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。
例如下图,每5s执行一次,执行100次,输出到vmstat.out文件中,并后台运行。
写一点Linux知识(准备长期更新)_第1张图片

写一点Linux知识(准备长期更新)_第2张图片

netstat

打印Linux中网络系统的状态信息。

pei@ubuntu:~/test$ netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33     1500    17883      0      0 0          9913      0      0      0 BMRU
lo       65536      344      0      0 0           344      0      0      0 LRU
//netstat -r  route
pei@ubuntu:~/test$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 ens33
link-local      0.0.0.0         255.255.0.0     U         0 0          0 ens33
192.168.168.0   0.0.0.0         255.255.255.0   U         0 0          0 ens33
//-p, --programs           display PID/Program name for sockets
root@ubuntu:/home/pei/test# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 ubuntu:44024            a184-51-15-141.dep:http ESTABLISHED 7251/firefox        
tcp        0      1 ubuntu:33860            243.185.187.39:http     SYN_SENT    7251/firefox        
tcp        0      0 ubuntu:53238            ec2-54-69-100-200:https ESTABLISHED 7251/firefox        
tcp        0      0 ubuntu:51910            117.18.237.29:http      ESTABLISHED 7251/firefox        
tcp        0      1 ubuntu:33858            243.185.187.39:http     SYN_SENT    7251/firefox        
tcp        0      0 ubuntu:55782            ec2-54-186-39-123:https ESTABLISHED 7251/firefox        
tcp        0      0 ubuntu:60064            ec2-54-68-15-229.:https ESTABLISHED 7251/firefox        
tcp        0      0 ubuntu:51904            117.18.237.29:http      ESTABLISHED 7251/firefox        
tcp        0      0 ubuntu:57468            server-54-192-75-:https ESTABLISHED 7251/firefox 
//-l listening -t tcp
root@ubuntu:/home/pei/test# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:hostmon         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:hostmon            [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN 

top

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。类似于任务管理器。

free是真正的空闲的,
buffers是用来给块设备做的缓冲大小、buffers是用来存储目录里面有什么内容,权限等等。
cached用来给文件做缓冲,用来记忆我们打开的文件。
所以操作系统目前可用内存总量=free + buffers/cached。而真正已用的是buffer/cache - used。

SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。

top - 02:17:32 up 18:55,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 238 total,   1 running, 237 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.1 us,  1.7 sy,  0.0 ni, 94.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2027028 total,   215092 free,  1034668 used,   777268 buff/cache
KiB Swap:  2097148 total,  2027632 free,    69516 used.   764204 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                   
  1144 root      20   0  528620  53796  23924 S  2.0  2.7   4:45.72 Xorg                                                                      
  6987 pei       20   0  770964  28100  18324 S  2.0  1.4   0:29.52 gnome-terminal-                                                           
  7489 root      20   0   44792   4144   3344 R  0.7  0.2   0:45.84 top                                                                       
  2038 pei       20   0 1065872  58236  26020 S  0.3  2.9   1:15.87 nautilus                                                                  
  2045 pei       20   0  594140  14500  10380 S  0.3  0.7   0:00.52 unity-fallback-                                                           
  2126 pei       20   0 1242272  68096  27204 S  0.3  3.4   4:28.74 compiz               

ulimit

ulimit -a 查看

pei@ubuntu:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 11771
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 11771
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

你可能感兴趣的:(Linux,linux)