forked from netkiller/netkiller.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample.html
More file actions
268 lines (222 loc) · 11.8 KB
/
example.html
File metadata and controls
268 lines (222 loc) · 11.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>1.10. Example</title><link rel="stylesheet" type="text/css" href="..//docbook.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><meta name="keywords" content="shell,bash,zsh, awk,sed,curl,expect, grep,sort" /><link rel="home" href="../index.html" title="Netkiller Shell 手札" /><link rel="up" href="index.html" title="第 1 章 Bash Shell" /><link rel="prev" href="subshell.html" title="1.9. subshell" /><link rel="next" href="../zsh/index.html" title="第 2 章 Z Shell" /></head><body><a xmlns="" href="//www.netkiller.cn/">Home</a> |
<a xmlns="" href="//netkiller.github.io/">简体中文</a> |
<a xmlns="" href="http://netkiller.sourceforge.net/">繁体中文</a> |
<a xmlns="" href="/journal/index.html">杂文</a> |
<a xmlns="" href="//www.netkiller.cn/home/donations.html">打赏(Donations)</a> |
<a xmlns="" href="https://github.com/netkiller">Github</a> |
<a xmlns="" href="http://my.oschina.net/neochen/">OSChina 博客</a> |
<a xmlns="" href="https://cloud.tencent.com/developer/column/2078">云社区</a> |
<a xmlns="" href="https://yq.aliyun.com/u/netkiller/">云栖社区</a> |
<a xmlns="" href="https://www.facebook.com/bg7nyt">Facebook</a> |
<a xmlns="" href="http://cn.linkedin.com/in/netkiller/">Linkedin</a> |
<a xmlns="" href="https://zhuanlan.zhihu.com/netkiller">知乎专栏</a> |
<a xmlns="" href="//www.netkiller.cn/home/video.html">视频教程</a> |
<a xmlns="" href="//www.netkiller.cn/home/about.html">About</a><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">1.10. Example</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="subshell.html">上一页</a> </td><th width="60%" align="center">第 1 章 Bash Shell</th><td width="20%" align="right"> <a accesskey="n" href="../zsh/index.html">下一页</a></td></tr></table><hr /></div><table xmlns=""><tr><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&repo=netkiller.github.io&type=watch&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe></td><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&repo=netkiller.github.io&type=fork&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe></td><td><iframe src="//ghbtns.com/github-btn.html?user=netkiller&type=follow&count=true&size=large" height="30" width="240" frameborder="0" scrolling="0" style="width:240px; height: 30px;" allowTransparency="true"></iframe></td></tr></table><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="example"></a>1.10. Example</h2></div></div></div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idp38"></a>1.10.1. 有趣的Shell</h3></div></div></div>
<p>运行后会不停的fork新的进程,直到你的资源消耗尽。</p>
<pre class="screen">
:() { :|:& }; :
.() { .|.& }; .
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="example.backup"></a>1.10.2. backup</h3></div></div></div>
<pre class="screen">
#!/bin/sh
umount /mnt/backup
mount /dev/sdb1 /mnt/backup
if [ `date +%d` = '01' ] #每月1号进行完全备份
then
bakdir="/mnt/bak/daybak/month/"`date +%m%d`
zl="" #进行完全备份
else
backup_dir="/mnt/backup/"`date +%d`
zl="-N "`date +'%Y-%m-01 00:00:01'`; #差异备份
#zl="-N "`date -d '-1 day' +'%Y-%m-%d 00:00:01'` #日增量备份
fi
tar "${zl}" -czf ${backup_dir}/www.tgz /var/www
umount /mnt/backup
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="example.cpuinfo"></a>1.10.3. CPU 核心数</h3></div></div></div>
<pre class="screen">
cat /proc/cpuinfo | grep processor | wc -l
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="example.password"></a>1.10.4. Password</h3></div></div></div>
<div class="example"><a id="idp159"></a><p class="title"><strong>例 1.12. random password</strong></p><div class="example-contents">
<pre class="screen">
cat /dev/urandom | head -1 | md5sum | head -c 8
od -N 4 -t x4 /dev/random | head -1 | awk '{print $2}'
</pre>
</div></div><br class="example-break" />
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="example.processes"></a>1.10.5. processes</h3></div></div></div>
<div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idp39"></a>1.10.5.1. pid</h4></div></div></div>
<pre class="screen">
neo@debian:~/html/temp$ pidof lighttpd
2775
neo@debian:~/html/temp$ pgrep lighttpd
2775
neo@debian:~/html/temp$ pid=`pidof lighttpd`
neo@debian:~/html/temp$ echo $pid
2775
</pre>
<pre class="screen">
# user=`whoami`
# pgrep -u $user -f cassandra | xargs kill -9
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idp40"></a>1.10.5.2. kill</h4></div></div></div>
<p>kill 占用7800端口的进程</p>
<pre class="screen">
kill -9 `netstat -nlp | grep '192.168.0.5:7800' | awk -F ' ' '{print $7}' | awk -F '/' '{print $1}'`
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idp41"></a>1.10.5.3. pgrep</h4></div></div></div>
<pre class="screen">
#!/bin/bash
ntpdate 172.16.10.10
pid=$(pgrep rsync)
if [ -z "$pid" ]; then
rsync -auzP --delete -e ssh --exclude=example/images --exclude=project/product --exclude=project/templates/caches root@172.16.10.10:/www/project /www
fi
</pre>
</div>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="example1"></a>1.10.6. Shell 技巧</h3></div></div></div>
<div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idp42"></a>1.10.6.1. 行转列,再批评</h4></div></div></div>
<pre class="screen">
echo "abc def gfh ijk"| sed "s:\ :\n:g" |grep -w gfh
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idp43"></a>1.10.6.2. for vs while</h4></div></div></div>
<pre class="screen">
echo "aaa bbb ccc" > test.txt
echo "ddd eee fff" >> test.txt
</pre>
<pre class="screen">
for line in $(cat test.txt)
do
echo $line
done
</pre>
<pre class="screen">
cat test.txt| while read line
do
echo $line
done
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idp44"></a>1.10.6.3. 遍历字符串</h4></div></div></div>
<pre class="screen">
# find . -name "*.html" -o -name "*.php" -o -name '*.dwt' -printf "[%p] " -exec grep -c 'head' {} \; | grep -v "0$" |more
</pre>
</div>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="example.convert"></a>1.10.7. to convert utf-8 from gb2312 code</h3></div></div></div>
<pre class="programlisting">
perl - MEncode - pi - e ' $_=encode_utf8(decode(gb2312=>$_)) ' filename
for f in `find .`; do [ -f $f ] && perl -MEncode -pi -e '$_=encode_utf8(decode(gb2312=>$_))' $f; done;
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="example.memory"></a>1.10.8. 使用内存的百分比 </h3></div></div></div>
<pre class="screen">
$ free | sed -n 2p | awk '{print "used="$3/$2*100"%","free="$4/$2*100"%"}'
used=53.9682% free=46.0318%
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="example.log"></a>1.10.9. 合并apache被cronlog分割的log文件</h3></div></div></div>
<pre class="screen">
$ find 2009 -type f -name access.log -exec cat {} >> access.log \;
</pre>
</div>
<div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idp45"></a>1.10.10. Linux 交集 差集 并集</h3></div></div></div>
<pre class="screen">
测试文件如下:
[root@test23 ~]# cat a.txt
1.1.1.1
2.2.2.2
3.3.3.3
1.2.3.4
[root@test23 ~]# cat b.txt
4.4.4.4
1.2.3.4
2.2.2.2
a.b.c.d
```
#### grep
```
1) 差集
// 使用 grep -v 和 -f 参数方式 是最容易想到的
[root@test23 ~]# grep -v -f a.txt b.txt
4.4.4.4
a.b.c.d
[root@test23 ~]# grep -v -f b.txt a.txt
1.1.1.1
3.3.3.3
```
#### uniq
```
1) 差集
// -u表示的是输出出现次数为1的内容
[root@test23 ~]# sort a.txt b.txt | uniq -u
1.1.1.1
3.3.3.3
4.4.4.4
a.b.c.d
2) 并集
[root@test23 ~]# sort a.txt b.txt | uniq
1.1.1.1
1.2.3.4
2.2.2.2
3.3.3.3
4.4.4.4
a.b.c.d
3) 交集
// -d 表示的是输出出现次数大于1的内容
[root@test23 ~]# sort a.txt b.txt | uniq -d
1.2.3.4
2.2.2.2
</pre>
</div>
</div><div xmlns="" id="disqus_thread"></div><script xmlns="">
var disqus_config = function () {
this.page.url = "http://www.netkiller.cn"; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = 'netkiller'; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = '//netkiller.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script><noscript xmlns="">Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript><br xmlns="" /><script xmlns="" type="text/javascript" id="clustrmaps" src="//cdn.clustrmaps.com/map_v2.js?u=r5HG&d=9mi5r_kkDC8uxG8HuY3p4-2qgeeVypAK9vMD-2P6BYM"></script><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="subshell.html">上一页</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">上一级</a></td><td width="40%" align="right"> <a accesskey="n" href="../zsh/index.html">下一页</a></td></tr><tr><td width="40%" align="left" valign="top">1.9. subshell </td><td width="20%" align="center"><a accesskey="h" href="../index.html">起始页</a></td><td width="40%" align="right" valign="top"> 第 2 章 Z Shell</td></tr></table></div><script xmlns="">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-11694057-1', 'auto');
ga('send', 'pageview');
</script><script xmlns="" async="async">
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?93967759a51cda79e49bf4e34d0b0f2c";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script><script xmlns="" async="async">
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script><script xmlns="" type="text/javascript" src="/js/q.js" async="async"></script></body></html>