-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
689 lines (442 loc) · 103 KB
/
index.html
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
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hexo</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta property="og:type" content="website">
<meta property="og:title" content="Hexo">
<meta property="og:url" content="http://example.com/index.html">
<meta property="og:site_name" content="Hexo">
<meta property="og:locale" content="en_US">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary">
<link rel="alternate" href="/atom.xml" title="Hexo" type="application/atom+xml">
<link rel="shortcut icon" href="/favicon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/index.min.css">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/fancybox/jquery.fancybox.min.css">
<meta name="generator" content="Hexo 6.3.0"></head>
<body>
<div id="container">
<div id="wrap">
<header id="header">
<div id="banner"></div>
<div id="header-outer" class="outer">
<div id="header-title" class="inner">
<h1 id="logo-wrap">
<a href="/" id="logo">Hexo</a>
</h1>
</div>
<div id="header-inner" class="inner">
<nav id="main-nav">
<a id="main-nav-toggle" class="nav-icon"><span class="fa fa-bars"></span></a>
<a class="main-nav-link" href="/">Home</a>
<a class="main-nav-link" href="/archives">Archives</a>
</nav>
<nav id="sub-nav">
<a class="nav-icon" href="/atom.xml" title="RSS Feed"><span class="fa fa-rss"></span></a>
<a class="nav-icon nav-search-btn" title="Search"><span class="fa fa-search"></span></a>
</nav>
<div id="search-form-wrap">
<form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit"></button><input type="hidden" name="sitesearch" value="http://example.com"></form>
</div>
</div>
</div>
</header>
<div class="outer">
<section id="main">
<article id="post-Linux/Tcpdump常用命令" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/12/29/Linux/Tcpdump%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" class="article-date">
<time class="dt-published" datetime="2023-12-29T02:02:29.726Z" itemprop="datePublished">2023-12-29</time>
</a>
</div>
<div class="article-inner">
<div class="e-content article-entry" itemprop="articleBody">
<h4 id="TCP-FLAGS"><a href="#TCP-FLAGS" class="headerlink" title="TCP FLAGS"></a>TCP FLAGS</h4><p>Unskilled = URG = (Not Displayed in Flag Field, Displayed elsewhere)<br>Attackers = ACK = (Not Displayed in Flag Field, Displayed elsewhere)<br>Pester = PSH = [P] (Push Data)<br>Real = RST = [R] (Reset Connection)<br>Security = SYN = [S] (Start Connection)<br>Folks = FIN = [F] (Finish Connection)<br> SYN-ACK = [S.] (SynAcK Packet)<br> [.] (No Flag Set)</p>
<h4 id="USAGE"><a href="#USAGE" class="headerlink" title="USAGE"></a>USAGE</h4><h5 id="Basic-communication"><a href="#Basic-communication" class="headerlink" title="Basic communication"></a>Basic communication</h5><p>see the basics without many options</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -i eth0 -nS</span><br></pre></td></tr></table></figure>
<p>Basic communication (very verbose) ,see a good amount of traffic, with verbosity and no name help</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -i eth0 -nnvvS</span><br></pre></td></tr></table></figure>
<h5 id="A-deeper-look-at-the-traffic"><a href="#A-deeper-look-at-the-traffic" class="headerlink" title="A deeper look at the traffic"></a>A deeper look at the traffic</h5><p>adds -X for payload but doesn’t grab any more of the packet</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -i eth0 -nnvvXS</span><br></pre></td></tr></table></figure>
<h5 id="Heavy-packet-viewing"><a href="#Heavy-packet-viewing" class="headerlink" title="Heavy packet viewing"></a>Heavy packet viewing</h5><p>the final “s” increases the snaplength, grabbing the whole packet</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -nnvvXSs 1514</span><br></pre></td></tr></table></figure>
<h5 id="host"><a href="#host" class="headerlink" title="host"></a>host</h5><p>look for traffic based on IP address (also works with hostname if you’re not using -n) </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump host 1.2.3.4</span><br></pre></td></tr></table></figure>
<h5 id="src-dst"><a href="#src-dst" class="headerlink" title="src, dst"></a>src, dst</h5><p>find traffic from only a source or destination (eliminates one side of a host conversation) </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">tcpdump src 2.3.4.5 </span><br><span class="line">tcpdump dst 3.4.5.6</span><br></pre></td></tr></table></figure>
<h5 id="net"><a href="#net" class="headerlink" title="net"></a>net</h5><p>capture an entire network using CIDR notation </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump net 1.2.3.0/24</span><br></pre></td></tr></table></figure>
<h5 id="proto"><a href="#proto" class="headerlink" title="proto"></a>proto</h5><p>works for tcp, udp, and icmp. Note that you don’t have to type proto </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump icmp</span><br></pre></td></tr></table></figure>
<h5 id="port"><a href="#port" class="headerlink" title="port"></a>port</h5><p>see only traffic to or from a certain port </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump port 3389</span><br></pre></td></tr></table></figure>
<h5 id="src-dst-port"><a href="#src-dst-port" class="headerlink" title="src, dst port"></a>src, dst port</h5><p>filter based on the source or destination port </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump src port 1025 <span class="comment"># tcpdump dst port 389</span></span><br></pre></td></tr></table></figure>
<h5 id="src-dst-port-protocol"><a href="#src-dst-port-protocol" class="headerlink" title="src/dst, port, protocol"></a>src/dst, port, protocol</h5><p>combine all three </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">tcpdump src port 1025 and tcp </span><br><span class="line">tcpdump udp and src port 53</span><br></pre></td></tr></table></figure>
<h5 id="Port-Ranges"><a href="#Port-Ranges" class="headerlink" title="Port Ranges"></a>Port Ranges</h5><p>You also have the option to filter by a range of ports instead of declaring them individually, and to only see packets that are above or below a certain size.</p>
<p>see traffic to any port in a range </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump portrange 21-23</span><br></pre></td></tr></table></figure>
<h5 id="Packet-Size-Filter"><a href="#Packet-Size-Filter" class="headerlink" title="Packet Size Filter"></a>Packet Size Filter</h5><p>only see packets below or above a certain size (in bytes) </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">tcpdump less 32 </span><br><span class="line">tcpdump greater 128</span><br></pre></td></tr></table></figure>
<p>[ You can use the symbols for less than, greater than, and less than or equal / greater than or equal signs as well. ]<br>filtering for size using symbols </p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">tcpdump > 32 </span><br><span class="line">tcpdump <= 128</span><br></pre></td></tr></table></figure>
<p>[ Note: Only the PSH, RST, SYN, and FIN flags are displayed in tcpdump‘s flag field output. URGs and ACKs are displayed, but they are shown elsewhere in the output rather than in the flags field ]</p>
<p>Keep in mind the reasons these filters work. The filters above find these various packets because tcp[13] looks at offset 13 in the TCP header, the number represents the location within the byte, and the !=0 means that the flag in question is set to 1, i.e. it’s on.</p>
<h5 id="Show-all-URG-packets"><a href="#Show-all-URG-packets" class="headerlink" title="Show all URG packets:"></a>Show all URG packets:</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump <span class="string">'tcp[13] & 32 != 0'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-all-ACK-packets"><a href="#Show-all-ACK-packets" class="headerlink" title="Show all ACK packets:"></a>Show all ACK packets:</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump <span class="string">'tcp[13] & 16 != 0'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-all-PSH-packets"><a href="#Show-all-PSH-packets" class="headerlink" title="Show all PSH packets:"></a>Show all PSH packets:</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump <span class="string">'tcp[13] & 8 != 0'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-all-RST-packets"><a href="#Show-all-RST-packets" class="headerlink" title="Show all RST packets:"></a>Show all RST packets:</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump <span class="string">'tcp[13] & 4 != 0'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-all-SYN-packets"><a href="#Show-all-SYN-packets" class="headerlink" title="Show all SYN packets:"></a>Show all SYN packets:</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump <span class="string">'tcp[13] & 2 != 0'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-all-FIN-packets"><a href="#Show-all-FIN-packets" class="headerlink" title="Show all FIN packets:"></a>Show all FIN packets:</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump <span class="string">'tcp[13] & 1 != 0'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-all-SYN-ACK-packets"><a href="#Show-all-SYN-ACK-packets" class="headerlink" title="Show all SYN-ACK packets:"></a>Show all SYN-ACK packets:</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump <span class="string">'tcp[13] = 18'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-icmp-echo-request-and-reply"><a href="#Show-icmp-echo-request-and-reply" class="headerlink" title="Show icmp echo request and reply"></a>Show icmp echo request and reply</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -n icmp and <span class="string">'icmp[0] != 8 and icmp[0] != 0'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-all-IP-packets-with-a-non-zero-TOS-field"><a href="#Show-all-IP-packets-with-a-non-zero-TOS-field" class="headerlink" title="Show all IP packets with a non-zero TOS field"></a>Show all IP packets with a non-zero TOS field</h5><p>one byte TOS field is at offset 1 in IP header</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -v -n ip and ip[1]!=0</span><br></pre></td></tr></table></figure>
<h5 id="Show-all-IP-packets-with-TTL-less-than-some-value"><a href="#Show-all-IP-packets-with-TTL-less-than-some-value" class="headerlink" title="Show all IP packets with TTL less than some value"></a>Show all IP packets with TTL less than some value</h5><p>on byte TTL field is at offset 8 in IP header</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -v ip and <span class="string">'ip[8]<2'</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-TCP-SYN-packets"><a href="#Show-TCP-SYN-packets" class="headerlink" title="Show TCP SYN packets"></a>Show TCP SYN packets</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -n tcp and port 80 and <span class="string">'tcp[tcpflags] & tcp-syn == tcp-syn'</span></span><br><span class="line">tcpdump tcp and port 80 and <span class="string">'tcp[tcpflags] == tcp-syn'</span></span><br><span class="line">tcpdump -i <interface> <span class="string">"tcp[tcpflags] & (tcp-syn) != 0"</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-TCP-ACK-packets"><a href="#Show-TCP-ACK-packets" class="headerlink" title="Show TCP ACK packets"></a>Show TCP ACK packets</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -i <interface> <span class="string">"tcp[tcpflags] & (tcp-ack) != 0"</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-TCP-SYN-ACK-packets"><a href="#Show-TCP-SYN-ACK-packets" class="headerlink" title="Show TCP SYN/ACK packets"></a>Show TCP SYN/ACK packets</h5><p>(typically, responses from servers):</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -n tcp and <span class="string">'tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)'</span></span><br><span class="line">tcpdump -n tcp and <span class="string">'tcp[tcpflags] & tcp-syn == tcp-syn'</span> and <span class="string">'tcp[tcpflags] & tcp-ack == tcp-ack'</span></span><br><span class="line">tcpdump -i <interface> <span class="string">"tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"</span></span><br></pre></td></tr></table></figure>
<h4 id="Show-TCP-FIN-packets"><a href="#Show-TCP-FIN-packets" class="headerlink" title="Show TCP FIN packets"></a>Show TCP FIN packets</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -i <interface> <span class="string">"tcp[tcpflags] & (tcp-fin) != 0"</span></span><br></pre></td></tr></table></figure>
<h5 id="Show-ARP-Packets-with-MAC-address"><a href="#Show-ARP-Packets-with-MAC-address" class="headerlink" title="Show ARP Packets with MAC address"></a>Show ARP Packets with MAC address</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -vv -e -nn ether proto 0x0806</span><br></pre></td></tr></table></figure>
<h5 id="Show-packets-of-a-specified-length-IP-packet-length-16-bits-is-located-at-offset-2-in-IP-header"><a href="#Show-packets-of-a-specified-length-IP-packet-length-16-bits-is-located-at-offset-2-in-IP-header" class="headerlink" title="Show packets of a specified length (IP packet length (16 bits) is located at offset 2 in IP header):"></a>Show packets of a specified length (IP packet length (16 bits) is located at offset 2 in IP header):</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tcpdump -l icmp and <span class="string">'(ip[2:2]>50)'</span> -w - |tcpdump -r - -v ip and <span class="string">'(ip[2:2]<60)'</span></span><br></pre></td></tr></table></figure>
<p>More Details:<br><a target="_blank" rel="noopener" href="http://danielmiessler.com/study/tcpdump/">http://danielmiessler.com/study/tcpdump/</a></p>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/12/29/Linux/Tcpdump%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/" data-id="clqq0vv300003u8qa9eyhbmng" data-title="" class="article-share-link"><span class="fa fa-share">Share</span></a>
</footer>
</div>
</article>
<article id="post-Windows/wsl异常处理" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/12/29/Windows/wsl%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/" class="article-date">
<time class="dt-published" datetime="2023-12-29T02:01:33.856Z" itemprop="datePublished">2023-12-29</time>
</a>
</div>
<div class="article-inner">
<div class="e-content article-entry" itemprop="articleBody">
<h4 id="WSL2-占位程序接收到错误数据"><a href="#WSL2-占位程序接收到错误数据" class="headerlink" title="WSL2 占位程序接收到错误数据"></a>WSL2 占位程序接收到错误数据</h4><p>Error code: Wsl/Service/0x800706f7</p>
<pre><code class="bash">netsh winsock reset
</code></pre>
<p>然后就可以正常启动 WSL2 了,不用重启电脑</p>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/12/29/Windows/wsl%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/" data-id="clqq0vv320006u8qac38l6udo" data-title="" class="article-share-link"><span class="fa fa-share">Share</span></a>
</footer>
</div>
</article>
<article id="post-云原生/RocketMQ常识" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/12/29/%E4%BA%91%E5%8E%9F%E7%94%9F/RocketMQ%E5%B8%B8%E8%AF%86/" class="article-date">
<time class="dt-published" datetime="2023-12-29T02:00:29.759Z" itemprop="datePublished">2023-12-29</time>
</a>
</div>
<div class="article-inner">
<div class="e-content article-entry" itemprop="articleBody">
<h4 id="系统配置建议"><a href="#系统配置建议" class="headerlink" title="系统配置建议"></a>系统配置建议</h4><ol>
<li>中间件系统肯定要开启大量的线程(跟vm.max_map_count有关)</li>
<li>而且要进行大量的网络通信和磁盘IO(跟ulimit有关)</li>
<li>然后大量的使用内存(跟vm.swappiness和vm.overcommit_memory有关)</li>
</ol>
<h4 id="JVM参数"><a href="#JVM参数" class="headerlink" title="JVM参数"></a>JVM参数</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">就是默认的堆大小是8g内存,新生代是4g内存.</span><br><span class="line">-Xms8g -Xmx8g -Xmn4g</span><br><span class="line"></span><br><span class="line">选用了G1垃圾回收器来做分代回收,对新生代和老年代都是用G1来回收</span><br><span class="line">-XX:+UseG1GC -XX:G1HeapRegionSize=16m</span><br><span class="line"></span><br><span class="line">在G1管理的老年代里预留25%的空闲内存. 默认值是10%</span><br><span class="line">-XX:G1ReservePercent=25</span><br><span class="line"></span><br><span class="line">堆内存的使用率达到30%之后就会自动启动G1的并发垃圾回收。默认值是45%,这里调低了一些,也就是提高了GC的频率,</span><br><span class="line">但是避免了垃圾对象过多,一次垃圾回收耗时过长的问题</span><br><span class="line">-XX:InitiatingHeapOccupancyPercent=30</span><br><span class="line"></span><br><span class="line">JVM会抛弃一些异常堆栈信息</span><br><span class="line">-XX:-OmitStackTraceInFastThrow</span><br><span class="line"></span><br><span class="line">是强制让JVM启动的时候直接分配我们指定的内存,不要等到使用内存的时候再分配</span><br><span class="line">-XX:+AlwaysPreTouch</span><br><span class="line"></span><br><span class="line">RocketMQ里大量用了NIO中的direct buffer,这里限定了direct buffer最多申请多少</span><br><span class="line">-XX:MaxDirectMemorySize=15g</span><br><span class="line"></span><br><span class="line">是禁用大内存页和偏向锁</span><br><span class="line">XX:-UseLargePages -XX:-UseBiasedLocking:</span><br></pre></td></tr></table></figure>
<h4 id="压力测试过程"><a href="#压力测试过程" class="headerlink" title="压力测试过程"></a>压力测试过程</h4><ol>
<li><p>压测目的<br>应该在TPS和机器的cpu负载、内存使用率、jvm gc频率、磁盘io负载、网络流量负载之间取得一个平衡,尽量让TPS尽可能的提高,同时让机器的各项资源负载不要太高。</p>
</li>
<li><p>压测过程:<br>采用几台机器开启大量线程并发读写消息。然后观察TPS、cpu load (top)、内存使用率(free), jvm gc频率(jstat), 磁盘io负载(top-wa字段)、网卡流量负载(使用sar命令),不断增加机器和线程,让TPS不断提升上去,同时观察各项资源负载是否过高。</p>
</li>
</ol>
<h4 id="RocketMQ发送消息"><a href="#RocketMQ发送消息" class="headerlink" title="RocketMQ发送消息"></a>RocketMQ发送消息</h4><ol>
<li>同步发送消息</li>
<li>异步发送消息</li>
<li>单向发送消息</li>
</ol>
<h4 id="RocketMQ消费模式"><a href="#RocketMQ消费模式" class="headerlink" title="RocketMQ消费模式"></a>RocketMQ消费模式</h4><ol>
<li>PUSH消费模式</li>
<li>PULL消费模式</li>
</ol>
<h4 id="Topic、MessageQueue、Broker"><a href="#Topic、MessageQueue、Broker" class="headerlink" title="Topic、MessageQueue、Broker"></a>Topic、MessageQueue、Broker</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$HOME</span>/store/consumequeue/{topic}/{queueId}/{fileName}</span><br></pre></td></tr></table></figure>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/12/29/%E4%BA%91%E5%8E%9F%E7%94%9F/RocketMQ%E5%B8%B8%E8%AF%86/" data-id="clqq0vv330007u8qa0mca6hbb" data-title="" class="article-share-link"><span class="fa fa-share">Share</span></a>
</footer>
</div>
</article>
<article id="post-Linux/Linux检查U盘是否挂载" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/12/29/Linux/Linux%E6%A3%80%E6%9F%A5U%E7%9B%98%E6%98%AF%E5%90%A6%E6%8C%82%E8%BD%BD/" class="article-date">
<time class="dt-published" datetime="2023-12-29T01:59:01.470Z" itemprop="datePublished">2023-12-29</time>
</a>
</div>
<div class="article-inner">
<div class="e-content article-entry" itemprop="articleBody">
<p>原文参见: <a target="_blank" rel="noopener" href="https://unix.stackexchange.com/questions/497351/detect-if-usb-disk-is-mounted-in-c-application-in-linux">detect-if-usb-disk-is-mounted-in-c-application-in-linux</a></p>
<p>If you need to check the full list of mount points, use getmntent(3) or its thread-safe GNU extension getmntent_r(3).</p>
<p>If you just want to quickly check whether a given directory has a filesystem mounted on it or not, then use one of the functions in the stat(2) family. For example, if you want to check if /mnt has a filesystem mounted or not, you could do something like this。</p>
<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><sys/types.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><sys/stat.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><unistd.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><stdio.h></span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string"><stdlib.h></span></span></span><br><span class="line"></span><br><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">stat</span> <span class="title">mountpoint</span>;</span></span><br><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">stat</span> <span class="title">parent</span>;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/* Get the stat structure of the directory...*/</span></span><br><span class="line"><span class="keyword">if</span> <span class="title function_">stat</span><span class="params">(<span class="string">"/mnt"</span>, &mountpoint)</span> == <span class="number">-1</span>) {</span><br><span class="line"> perror(<span class="string">"failed to stat mountpoint:"</span>);</span><br><span class="line"> <span class="built_in">exit</span>(EXIT_FAILURE);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">/* ... and its parent. */</span></span><br><span class="line"><span class="keyword">if</span> <span class="title function_">stat</span><span class="params">(<span class="string">"/mnt/.."</span>, &parent)</span> == <span class="number">-1</span>) {</span><br><span class="line"> perror(<span class="string">"failed to stat parent:"</span>);</span><br><span class="line"> <span class="built_in">exit</span>(EXIT_FAILURE);</span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="comment">/* Compare the st_dev fields in the results: if they are</span></span><br><span class="line"><span class="comment"> equal, then both the directory and its parent belong </span></span><br><span class="line"><span class="comment"> to the same filesystem, and so the directory is not </span></span><br><span class="line"><span class="comment"> currently a mount point.</span></span><br><span class="line"><span class="comment">*/</span></span><br><span class="line"><span class="keyword">if</span> (mountpoint.st_dev == parent.st_dev) {</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"No, there is nothing mounted in that directory.\n"</span>);</span><br><span class="line">} <span class="keyword">else</span> {</span><br><span class="line"> <span class="built_in">printf</span>(<span class="string">"Yes, there is currently a filesystem mounted.\n"</span>);</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/12/29/Linux/Linux%E6%A3%80%E6%9F%A5U%E7%9B%98%E6%98%AF%E5%90%A6%E6%8C%82%E8%BD%BD/" data-id="clqq0vv2y0001u8qaclmz45ck" data-title="" class="article-share-link"><span class="fa fa-share">Share</span></a>
</footer>
</div>
</article>
<article id="post-Linux/Linux常用运维" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/12/29/Linux/Linux%E5%B8%B8%E7%94%A8%E8%BF%90%E7%BB%B4/" class="article-date">
<time class="dt-published" datetime="2023-12-29T01:53:48.391Z" itemprop="datePublished">2023-12-29</time>
</a>
</div>
<div class="article-inner">
<div class="e-content article-entry" itemprop="articleBody">
<h3 id="磁盘管理"><a href="#磁盘管理" class="headerlink" title="磁盘管理"></a>磁盘管理</h3><h4 id="磁盘分区"><a href="#磁盘分区" class="headerlink" title="磁盘分区"></a>磁盘分区</h4><p>通用分区使用fdisk,如果需要分配超过1T的分区,使用parted。 </p>
<h5 id="fidsk分区"><a href="#fidsk分区" class="headerlink" title="fidsk分区"></a>fidsk分区</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 操作磁盘</span></span><br><span class="line">$ fdisk /dev/sdc</span><br><span class="line">Welcome to fdisk (util-linux 2.30.1).</span><br><span class="line">Changes will remain <span class="keyword">in</span> memory only, <span class="keyword">until</span> you decide to write them.</span><br><span class="line">Be careful before using the write <span class="built_in">command</span>.</span><br><span class="line"></span><br><span class="line"><span class="comment"># 新建分区</span></span><br><span class="line">Command (m <span class="keyword">for</span> <span class="built_in">help</span>): n</span><br><span class="line">Partition <span class="built_in">type</span></span><br><span class="line"> p primary (0 primary, 0 extended, 4 free)</span><br><span class="line"> e extended (container <span class="keyword">for</span> logical partitions)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 分区类型:p 主分区;e 扩展分区</span></span><br><span class="line">Select (default p): Enter</span><br><span class="line">Using default response p.</span><br><span class="line">Partition number (1-4, default 1): Enter</span><br><span class="line">First sector (2048-20971519, default 2048): Enter</span><br><span class="line"></span><br><span class="line"><span class="comment"># 分区大小</span></span><br><span class="line">Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +1G</span><br><span class="line">Created a new partition 1 of <span class="built_in">type</span> <span class="string">'Linux'</span> and of size 1 GiB.</span><br><span class="line"></span><br><span class="line">Command (m <span class="keyword">for</span> <span class="built_in">help</span>): p</span><br><span class="line">Disk /dev/sdc: 10 GiB, 10737418240 bytes, 20971520 sectors</span><br><span class="line">Units: sectors of 1 * 512 = 512 bytes</span><br><span class="line">Sector size (logical/physical): 512 bytes / 512 bytes</span><br><span class="line">I/O size (minimum/optimal): 512 bytes / 512 bytes</span><br><span class="line">Disklabel <span class="built_in">type</span>: dos</span><br><span class="line">Disk identifier: 0x8cc8f9e5</span><br><span class="line">Device Boot Start End Sectors Size Id Type</span><br><span class="line">/dev/sdc1 2048 2099199 2097152 1G 83 Linux</span><br><span class="line"></span><br><span class="line"><span class="comment"># 保存分区表</span></span><br><span class="line">Command (m <span class="keyword">for</span> <span class="built_in">help</span>): w</span><br><span class="line">The partition table has been altered.</span><br><span class="line">Calling ioctl() to re-read partition table.</span><br><span class="line">Syncing disks.</span><br></pre></td></tr></table></figure>
<h5 id="parted分区"><a href="#parted分区" class="headerlink" title="parted分区"></a>parted分区</h5><p>超过1T的大空间分区,操作如下</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line">$ parted /dev/sdb</span><br><span class="line"># 对/dev/sdb进行分区或管理操作</span><br><span class="line"> </span><br><span class="line">GNU Parted 3.1</span><br><span class="line">使用 /dev/sdb</span><br><span class="line">Welcome to GNU Parted! Type 'help' to view a list of commands.</span><br><span class="line"> </span><br><span class="line">(parted) mklabel gpt</span><br><span class="line"># 定义分区表格式(常用的有msdos和gpt分区表格式,msdos不支持2TB以上容量的磁盘,所以大于2TB的磁盘选gpt分区表格式)</span><br><span class="line"> </span><br><span class="line">警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?</span><br><span class="line"># /dev/sdb上现有的磁盘标签将被销毁,该磁盘上的所有数据将丢失。你想要继续</span><br><span class="line">是/Yes/否/No? yes </span><br><span class="line"> </span><br><span class="line">(parted) mkpart p1</span><br><span class="line"># 创建第一个分区,名称为p1(p1只是第一个分区的名称,用别的名称也可以,如part1)</span><br><span class="line"> </span><br><span class="line">文件系统类型? [ext2]? xfs </span><br><span class="line"># 定义分区格式(不支持ext4,想分ext4格式的分区,可以通过mkfs.ext4格式化成ext4格式)</span><br><span class="line"> </span><br><span class="line">起始点? 1 </span><br><span class="line"># 定义分区的起始位置(单位支持K,M,G,T)</span><br><span class="line"> </span><br><span class="line">结束点? 100% </span><br><span class="line"># 定义分区的结束位置(单位支持K,M,G,T) </span><br><span class="line"> </span><br><span class="line">(parted) print # 查看当前分区情况</span><br><span class="line">Model: VMware, VMware Virtual S (scsi)</span><br><span class="line">Disk /dev/sdb: 107GB</span><br><span class="line">Sector size (logical/physical): 512B/512B</span><br><span class="line">Partition Table: gpt</span><br><span class="line">Disk Flags: </span><br><span class="line"> </span><br><span class="line">Number Start End Size File system Name 标志</span><br><span class="line"> 1 1049kB 107GB 107GB xfs p1</span><br></pre></td></tr></table></figure>
<p>parted删除分析</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">$ parted /dev/sdb</span><br><span class="line"># 对/dev/sdb进行分区或管理操作</span><br><span class="line"> </span><br><span class="line">(parted) rm </span><br><span class="line"># rm删除命令(删除之前必须确保分区没有被挂载)</span><br><span class="line"> </span><br><span class="line">分区编号? 1 </span><br><span class="line"># 删除第一个分区</span><br><span class="line"> </span><br><span class="line">(parted) print # 打印当前分区情况 </span><br><span class="line">Model: VMware, VMware Virtual S (scsi)</span><br><span class="line">Disk /dev/sdb: 107GB</span><br><span class="line">Sector size (logical/physical): 512B/512B</span><br><span class="line">Partition Table: gpt</span><br><span class="line">Disk Flags: </span><br><span class="line"> </span><br><span class="line">Number Start End Size File system Name 标志</span><br></pre></td></tr></table></figure>
<h4 id="磁盘格式化"><a href="#磁盘格式化" class="headerlink" title="磁盘格式化"></a>磁盘格式化</h4><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">$ sudo mkfs.ext4 /dev/sdc1</span><br><span class="line">或</span><br><span class="line">$ sudo mkfs -t ext4 /dev/sdc1</span><br><span class="line">或</span><br><span class="line">$ sudo mke2fs /dev/sdc1</span><br><span class="line">mke2fs 1.43.5 (04-Aug-2017)</span><br><span class="line">Creating filesystem with 262144 4k blocks and 65536 inodes</span><br><span class="line">Filesystem UUID: c0a99b51-2b61-4f6a-b960-eb60915faab0</span><br><span class="line">Superblock backups stored on blocks:</span><br><span class="line"> 32768, 98304, 163840, 229376</span><br><span class="line">Allocating group tables: done</span><br><span class="line">Writing inode tables: done</span><br><span class="line">Creating journal (8192 blocks): done</span><br><span class="line">Writing superblocks and filesystem accounting information: done</span><br></pre></td></tr></table></figure>
<ul>
<li>Filesystem UUID: UUID 代表了通用且独一无二的识别符,UUID 在 Linux 中通常用来识别设备。它 128 位长的数字代表了 32 个十六进制数。</li>
<li>Superblock: 超级块储存了文件系统的元数据。如果某个文件系统的超级块被破坏,我们就无法挂载它了(也就是说无法访问其中的文件了)。</li>
<li>Inode: Inode 是类 Unix 系统中文件系统的数据结构,它储存了所有除名称以外的文件信息和数据。</li>
<li>Journal: 日志式文件系统包含了用来修复电脑意外关机产生下错误信息的日志。</li>
</ul>
<h4 id="挂载分区"><a href="#挂载分区" class="headerlink" title="挂载分区"></a>挂载分区</h4><p>在创建完分区和文件系统之后,我们需要挂载它们以便使用。我们需要创建一个挂载点来挂载分区,使用 mkdir 来创建一个挂载点。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建挂载点</span></span><br><span class="line">sudo <span class="built_in">mkdir</span> -p /mnt/2g-new</span><br></pre></td></tr></table></figure>
<p>进行临时挂载,请使用下面的命令。在计算机重启之后,你会丢失这个挂载点。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo mount /dev/sdc1 /mnt/2g-new</span><br></pre></td></tr></table></figure>
<p>如果你希望永久挂载某个分区,请将分区详情加入 fstab 文件。我们既可以输入设备名称,也可以输入 UUID。 推荐使用设备名称挂载。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># vi /etc/fstab</span></span><br><span class="line">/dev/sdc1 /mnt/2g-new ext4 defaults 0 0</span><br></pre></td></tr></table></figure>
<p>也可以使用 UUID 来进行永久挂载(请使用 blkid 来获取 UUID):</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">$ sudo blkid</span><br><span class="line">/dev/sdc1: UUID=<span class="string">"d17e3c31-e2c9-4f11-809c-94a549bc43b7"</span> TYPE=<span class="string">"ext2"</span> PARTUUID=<span class="string">"8cc8f9e5-01"</span></span><br><span class="line">/dev/sda1: UUID=<span class="string">"d92fa769-e00f-4fd7-b6ed-ecf7224af7fa"</span> TYPE=<span class="string">"ext4"</span> PARTUUID=<span class="string">"eab59449-01"</span></span><br><span class="line">/dev/sdc3: UUID=<span class="string">"ca307aa4-0866-49b1-8184-004025789e63"</span> TYPE=<span class="string">"ext4"</span> PARTUUID=<span class="string">"8cc8f9e5-03"</span></span><br><span class="line">/dev/sdc5: PARTUUID=<span class="string">"8cc8f9e5-05"</span></span><br><span class="line"><span class="comment"># vi /etc/fstab</span></span><br><span class="line">UUID=d17e3c31-e2c9-4f11-809c-94a549bc43b7 /mnt/2g-new ext4 defaults 0 0</span><br></pre></td></tr></table></figure>
<h4 id="校验修改是否正常"><a href="#校验修改是否正常" class="headerlink" title="校验修改是否正常"></a>校验修改是否正常</h4><p>mount -a 命令无报错</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mount -a</span><br></pre></td></tr></table></figure>
<h4 id="查看分区空间"><a href="#查看分区空间" class="headerlink" title="查看分区空间"></a>查看分区空间</h4><p>df 命令用于查看磁盘分区的空间及使用和剩余的空间信息。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 默认显示所有挂载的磁盘,默认以 KB 为单位。</span></span><br><span class="line">[Linux]$ <span class="built_in">df</span></span><br><span class="line">文件系统 1K-块 已用 可用 已用% 挂载点</span><br><span class="line">udev 3975328 0 3975328 0% /dev</span><br><span class="line">tmpfs 799028 9516 789512 2% /run</span><br><span class="line">/dev/mmcblk0p3 21977248 12651688 8186104 61% /</span><br><span class="line">tmpfs 3995128 120492 3874636 4% /dev/shm</span><br><span class="line">tmpfs 5120 4 5116 1% /run/lock</span><br><span class="line">tmpfs 3995128 0 3995128 0% /sys/fs/cgroup</span><br><span class="line">/dev/mmcblk0p4 95569324 10825896 79845740 12% /home/xiao/Videos/vlc</span><br><span class="line">/dev/mmcblk0p1 94759 5199 89560 6% /boot/efi</span><br><span class="line">tmpfs 799024 20 799004 1% /run/user/1000</span><br><span class="line"></span><br><span class="line"><span class="comment"># 以更可读的方式显示</span></span><br><span class="line">[Linux]$ <span class="built_in">df</span> -h</span><br><span class="line">文件系统 容量 已用 可用 已用% 挂载点</span><br><span class="line">udev 3.8G 0 3.8G 0% /dev</span><br><span class="line">tmpfs 781M 9.3M 772M 2% /run</span><br><span class="line">/dev/mmcblk0p3 21G 13G 7.9G 61% /</span><br><span class="line">tmpfs 3.9G 118M 3.7G 4% /dev/shm</span><br><span class="line">tmpfs 5.0M 4.0K 5.0M 1% /run/lock</span><br><span class="line">tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup</span><br><span class="line">/dev/mmcblk0p4 92G 11G 77G 12% /home/xiao/Videos/vlc</span><br><span class="line">/dev/mmcblk0p1 93M 5.1M 88M 6% /boot/efi</span><br><span class="line">tmpfs 781M 20K 781M 1% /run/user/1000</span><br></pre></td></tr></table></figure>
<h3 id="用户管理"><a href="#用户管理" class="headerlink" title="用户管理"></a>用户管理</h3><h4 id="用户分组"><a href="#用户分组" class="headerlink" title="用户分组"></a>用户分组</h4><p>在ubuntu系统创建新用户群组ai-study。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ groupadd ai-study</span><br></pre></td></tr></table></figure>
<h4 id="创建用户并加入分组"><a href="#创建用户并加入分组" class="headerlink" title="创建用户并加入分组"></a>创建用户并加入分组</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#参数-m 自动创建用户的home目录</span></span><br><span class="line">$ useradd -m user05 </span><br><span class="line"></span><br><span class="line"><span class="comment"># 创建用户user05,账号家目录为/home/user05, 附加组为ai-study</span></span><br><span class="line">$ useradd -d /home/user05 -G ai-study user05</span><br><span class="line"></span><br><span class="line"><span class="comment">#为用户user05设置密码</span></span><br><span class="line">$ passwd user05 </span><br><span class="line"></span><br><span class="line"><span class="comment">#添加普通用户user05到附加组ai-study</span></span><br><span class="line">$ sudo usermod -a -G ai-study user01 </span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看用户分组信息</span></span><br><span class="line">$ <span class="built_in">id</span> user05</span><br></pre></td></tr></table></figure>
<h4 id="查看分组下的用户"><a href="#查看分组下的用户" class="headerlink" title="查看分组下的用户"></a>查看分组下的用户</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">### 查看ai-study用户组下的所有用户</span></span><br><span class="line">grep <span class="string">'ai-study'</span> /etc/group</span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看root用户组下的所有用户</span></span><br><span class="line">grep <span class="string">'root'</span> /etc/group</span><br></pre></td></tr></table></figure>
<h4 id="分组内共享文件"><a href="#分组内共享文件" class="headerlink" title="分组内共享文件"></a>分组内共享文件</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建共享文件夹work-share</span></span><br><span class="line">$ <span class="built_in">mkdir</span> /data/work-share </span><br><span class="line"></span><br><span class="line"><span class="comment"># 将work-share文件夹共享给ai-study 用户组</span></span><br><span class="line">$ <span class="built_in">chgrp</span> ai-study /data/work-share/</span><br></pre></td></tr></table></figure>
<h4 id="批量创建用户"><a href="#批量创建用户" class="headerlink" title="批量创建用户"></a>批量创建用户</h4><p>下列操作见目录《批量生成账号并修改目录》<br>user.txt</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">user01</span><br><span class="line">user02</span><br><span class="line">user03</span><br></pre></td></tr></table></figure>
<p>passwd.txt</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">user01:123456</span><br><span class="line">user02:123456</span><br><span class="line">user03:123456</span><br></pre></td></tr></table></figure>
<p>执行脚本:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"><span class="keyword">for</span> user <span class="keyword">in</span> `<span class="built_in">cat</span> user.txt`; <span class="keyword">do</span></span><br><span class="line"> <span class="comment">## 创建用户,并指定用户所在目录</span></span><br><span class="line"> useradd -d /home/<span class="variable">$user</span> -G ai-study <span class="variable">$user</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"123456"</span> | passwd --stdin <span class="variable">$user</span></span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"密码写入成功"</span></span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"></span><br><span class="line"><span class="comment">### 修改密码</span></span><br><span class="line">chpasswd < passwd.txt</span><br><span class="line">pwconv</span><br><span class="line"><span class="built_in">cat</span> passwd.txt</span><br></pre></td></tr></table></figure>
<h3 id="远程登录"><a href="#远程登录" class="headerlink" title="远程登录"></a>远程登录</h3><h4 id="通过ssh登录主机"><a href="#通过ssh登录主机" class="headerlink" title="通过ssh登录主机"></a>通过ssh登录主机</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh [email protected]</span><br></pre></td></tr></table></figure>
<h4 id="scp拷贝文件"><a href="#scp拷贝文件" class="headerlink" title="scp拷贝文件"></a>scp拷贝文件</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">## 将本机的text.zip文件,拷贝到远程主机的/home/user01/目录。</span></span><br><span class="line">scp text.zip [email protected]:/home/user01/</span><br><span class="line"></span><br><span class="line"><span class="comment">## 将远程主机的/home/user01/test.zip文件,拷贝到本机的当前目录</span></span><br><span class="line">scp [email protected]:/home/user01/test.zip .</span><br></pre></td></tr></table></figure>
<h4 id="查看当前登录主机的用户"><a href="#查看当前登录主机的用户" class="headerlink" title="查看当前登录主机的用户"></a>查看当前登录主机的用户</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 列出本机所有的 session</span></span><br><span class="line"><span class="comment"># 不带参数执行 loginctl 和执行 loginctl list-sessions 效果一样</span></span><br><span class="line">[Linux]$ loginctl</span><br><span class="line">SESSION UID USER SEAT TTY</span><br><span class="line"> 1 1000 xiao pts/0</span><br><span class="line"> 5 1000 xiao pts/1</span><br><span class="line"></span><br><span class="line">2 sessions listed.</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看 session 的详细信息</span></span><br><span class="line">[Linux]$ loginctl show-session 5</span><br><span class="line">EnableWallMessages=no</span><br><span class="line">NAutoVTs=6</span><br><span class="line">KillUserProcesses=no</span><br><span class="line">RebootToFirmwareSetup=no</span><br><span class="line">IdleSinceHint=1627474393034083</span><br><span class="line">UserStopDelayUSec=10s</span><br><span class="line">HandlePowerKey=poweroff</span><br><span class="line">IdleAction=ignore</span><br><span class="line">PreparingForShutdown=no</span><br><span class="line">Docked=no</span><br><span class="line">NCurrentSessions=2</span><br><span class="line">...</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># 杀死 session</span></span><br><span class="line">[Linux]$ loginctl kill-session 976</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看登录用户的详细信息</span></span><br><span class="line">[Linux]$ loginctl show-user 1000</span><br><span class="line">UID=1000</span><br><span class="line">GID=1000</span><br><span class="line">Name=xiao</span><br><span class="line">Timestamp=Wed 2021-07-28 18:53:32 CST</span><br><span class="line">RuntimePath=/run/user/1000</span><br><span class="line">Slice=user-1000.slice</span><br><span class="line">...</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看登录用户的状态</span></span><br><span class="line">[Linux]$ loginctl user-status xiao</span><br><span class="line">xiao (1000)</span><br><span class="line"> Since: Wed 2021-07-28 18:53:32 CST; 1h 25min ago</span><br><span class="line"> State: active</span><br><span class="line"> Sessions: 5 *1</span><br><span class="line"> Linger: no</span><br><span class="line"> Unit: user-1000.slice</span><br><span class="line"> ├─session-1.scope</span><br><span class="line"> │ ├─730 sshd: xiao [priv]</span><br><span class="line"> │ ├─747 sshd: xiao@pts/0</span><br><span class="line"> │ ├─748 -bash</span><br><span class="line"> │ └─851 vim 00_loginctl.rst</span><br><span class="line"> ├─session-5.scope</span><br><span class="line"> │ ├─852 sshd: xiao [priv]</span><br><span class="line"> │ ├─858 sshd: xiao@pts/1</span><br><span class="line"> │ ├─859 -bash</span><br><span class="line"> │ ├─862 su</span><br><span class="line"> │ ├─863 bash</span><br><span class="line"> │ ├─934 loginctl user-status xiao</span><br><span class="line"> │ └─935 pager</span><br><span class="line"> └─[email protected]</span><br><span class="line"> └─init.scope</span><br><span class="line"> ├─733 /lib/systemd/systemd --user</span><br><span class="line"> └─734 (sd-pam)</span><br><span class="line"></span><br><span class="line">Jul 28 18:53:33 debian systemd[733]: Listening on GnuPG cryptographic agent and passphrase</span><br><span class="line">Jul 28 18:53:33 debian systemd[733]: Listening on GnuPG cryptographic agent (ssh-agent emu</span><br></pre></td></tr></table></figure>
<h3 id="网络管理"><a href="#网络管理" class="headerlink" title="网络管理"></a>网络管理</h3><h4 id="Linux设置固定IP"><a href="#Linux设置固定IP" class="headerlink" title="Linux设置固定IP"></a>Linux设置固定IP</h4><ol>
<li>进入到/etc/sysconfig/network-scripts </li>
<li>编辑对应iface的文件,将BOOTPROTO=dhcp的值改为static,并在最后面加上IP信息。<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">#BOOTPROTO=dhcp</span><br><span class="line">BOOTPROTO=static </span><br><span class="line"></span><br><span class="line">IPADDR=192.168.8.101</span><br><span class="line">NETMASK=255.255.255.0 </span><br><span class="line">GATEWAY=192.168.8.1</span><br><span class="line">DNS1=114.114.114.114</span><br></pre></td></tr></table></figure></li>
</ol>
<h4 id="网络连接分析"><a href="#网络连接分析" class="headerlink" title="网络连接分析"></a>网络连接分析</h4><p>查看当前系统TCP连接状态</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">netstat -n | awk <span class="string">'/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'</span></span><br></pre></td></tr></table></figure>
<ul>
<li>netstat -n,这个命令负责查看主机上的所有 TCP、UDP 连接信息,i</li>
<li>awk 命令则负责对这些信息进行进一步的处理,awk 后有一个用两个 “斜杠” 括起来的正则表达式,主要用来匹配以 tcp 开头的每一行信息,所以这里的正则表达式起到了一个过滤的作用(只分析tcp的连接),后面则是对信息过滤后进行具体的统计和输出</li>
</ul>
<h4 id="查看IP"><a href="#查看IP" class="headerlink" title="查看IP"></a>查看IP</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ip a | grep global | awk <span class="string">'{print $2}'</span> | awk -F/ <span class="string">'{print $1}'</span></span><br></pre></td></tr></table></figure>
<h4 id="netcat连通性测试"><a href="#netcat连通性测试" class="headerlink" title="netcat连通性测试"></a>netcat连通性测试</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">## TCP</span></span><br><span class="line">nc -z -v 192.168.1.60 19000-19100 2>&1 | grep succeeded</span><br><span class="line"></span><br><span class="line"><span class="comment">## UDP</span></span><br><span class="line">nc -z -v -u 192.168.1.60 19000-19100 2>&1 | grep succeeded</span><br></pre></td></tr></table></figure>
<h3 id="修改swap交换分区"><a href="#修改swap交换分区" class="headerlink" title="修改swap交换分区"></a>修改swap交换分区</h3><p>Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用Swap分区来提升系统运行效率。</p>
<h4 id="查看swap状态"><a href="#查看swap状态" class="headerlink" title="查看swap状态"></a>查看swap状态</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">free -h</span><br><span class="line">swapon -s</span><br></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">### 生成文件</span></span><br><span class="line"><span class="built_in">mkdir</span> /usr/swap</span><br><span class="line"><span class="built_in">dd</span> <span class="keyword">if</span>=/dev/zero of=/usr/swap/swapfile1 bs=1M count=2048</span><br><span class="line"></span><br><span class="line"><span class="comment">## 目标文件表示为swap分区文件</span></span><br><span class="line">mkswap /usr/swap/swapfile1</span><br><span class="line"><span class="built_in">chmod</span> 600 /usr/swap/swapfile1</span><br><span class="line"></span><br><span class="line"><span class="comment">## 激活swap文件</span></span><br><span class="line">swapon /usr/swap/swapfile1</span><br><span class="line"></span><br><span class="line"><span class="comment">## 自动挂载</span></span><br><span class="line">vim /etc/fstab</span><br><span class="line"><span class="comment">##添加</span></span><br><span class="line">/usr/swap/swapfile1 swap swap defaults 0 0</span><br></pre></td></tr></table></figure>
<h4 id="修改swapiness设置swap使用时机"><a href="#修改swapiness设置swap使用时机" class="headerlink" title="修改swapiness设置swap使用时机"></a>修改swapiness设置swap使用时机</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> /proc/sys/vm/swappiness</span><br><span class="line"></span><br><span class="line"><span class="comment">## 临时修改</span></span><br><span class="line">sysctl vm.swappiness=60</span><br><span class="line"></span><br><span class="line"><span class="comment">## sysctl.conf 持久化</span></span><br><span class="line">vm.swappiness=60</span><br></pre></td></tr></table></figure>
<ul>
<li>0意味着“在任何情况下都不要发生交换”。</li>
<li>swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。</li>
</ul>
<h4 id="关闭swap"><a href="#关闭swap" class="headerlink" title="关闭swap"></a>关闭swap</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">## 临时修改</span></span><br><span class="line">swapoff</span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除/etc/fsta添加的内容</span></span><br><span class="line">```nux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。Android是基于Linux的操作系统,所以也可以使用Swap分区来提升系统运行效率。</span><br><span class="line"></span><br><span class="line"><span class="comment">### 查看swap状态</span></span><br><span class="line">```bash</span><br><span class="line">free -h</span><br><span class="line"></span><br><span class="line">swapon -s</span><br></pre></td></tr></table></figure>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">### 生成文件</span></span><br><span class="line"><span class="built_in">mkdir</span> /usr/swap</span><br><span class="line"><span class="built_in">dd</span> <span class="keyword">if</span>=/dev/zero of=/usr/swap/swapfile1 bs=1M count=2048</span><br><span class="line"></span><br><span class="line"><span class="comment">## 目标文件表示为swap分区文件</span></span><br><span class="line">mkswap /usr/swap/swapfile1</span><br><span class="line"><span class="built_in">chmod</span> 600 /usr/swap/swapfile1</span><br><span class="line"></span><br><span class="line"><span class="comment">## 激活swap文件</span></span><br><span class="line">swapon /usr/swap/swapfile1</span><br><span class="line"></span><br><span class="line"><span class="comment">## 自动挂载</span></span><br><span class="line">vim /etc/fstab</span><br><span class="line"><span class="comment">##添加</span></span><br><span class="line">/usr/swap/swapfile1 swap swap defaults 0 0</span><br></pre></td></tr></table></figure>
<h4 id="修改swapiness设置swap使用时机-1"><a href="#修改swapiness设置swap使用时机-1" class="headerlink" title="修改swapiness设置swap使用时机"></a>修改swapiness设置swap使用时机</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> /proc/sys/vm/swappiness</span><br><span class="line"></span><br><span class="line"><span class="comment">## 临时修改</span></span><br><span class="line">sysctl vm.swappiness=60</span><br><span class="line"></span><br><span class="line"><span class="comment">## sysctl.conf 持久化</span></span><br><span class="line">vm.swappiness=60</span><br></pre></td></tr></table></figure>
<ul>
<li>0意味着“在任何情况下都不要发生交换”。</li>
<li>swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。</li>
</ul>
<h4 id="关闭swap-1"><a href="#关闭swap-1" class="headerlink" title="关闭swap"></a>关闭swap</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">## 临时修改</span></span><br><span class="line">swapoff</span><br><span class="line"></span><br><span class="line"><span class="comment"># 删除/etc/fsta添加的内容</span></span><br></pre></td></tr></table></figure>
<h3 id="常用脚本"><a href="#常用脚本" class="headerlink" title="常用脚本"></a>常用脚本</h3><h4 id="操作快捷键"><a href="#操作快捷键" class="headerlink" title="操作快捷键"></a>操作快捷键</h4><ul>
<li>Ctrl + r:可以快速查找历史命令;</li>
<li>Ctrl + l:可以清理控制台屏幕;</li>
<li>Ctrl + a \ Ctrl + e:移动光标到命令行首\行尾;</li>
<li>Ctrl + w \ Ctrl + k:删除光标之前\之后的内容。</li>
<li>Ctrl + c:强制终止程序的执行;</li>
<li>Ctrl + z:挂起一个进程;</li>
<li>Ctrl + d:终端中输入 exit 后回车。</li>
</ul>
<h4 id="磁盘空间分析"><a href="#磁盘空间分析" class="headerlink" title="磁盘空间分析"></a>磁盘空间分析</h4><h5 id="查看系统最大文件"><a href="#查看系统最大文件" class="headerlink" title="查看系统最大文件"></a>查看系统最大文件</h5><p>当磁盘空间不足,需要快速定位或者对文件使用率进行排序,需要查看哪一些文件目录或者文件占用的空间比较多,就需要如下组合命令。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">du</span> -x --max-depth=1 / | <span class="built_in">sort</span> -k1 -nr</span><br></pre></td></tr></table></figure>
<p>du命令</p>
<ul>
<li>-x 参数表示跳过其他文件系统,也就是只分析本文件系统里的文件,它可以帮助我们排除一些非本文件系统的统计信息,这样执行速度会更快也不容易出现一些额外的干扰项。</li>
<li>–max-depth 参数设置为 1,这样就可以统计出根目录下第一级目录中的所有文件的大小。</li>
</ul>
<p>sort命令</p>
<ul>
<li>-k 参数指明具体按照哪一列进行排序</li>
<li>-n 参数表示只对数值进行排序,</li>
<li>-r 参数表示反向排序</li>
</ul>
<h5 id="查找目录下文件数量"><a href="#查找目录下文件数量" class="headerlink" title="查找目录下文件数量"></a>查找目录下文件数量</h5><p>适用于系统上产生很多碎片文件时,随之产生大量的 Inode , Inode 用于存放着文件系统中文件的源数据,Inode过渡的使用会导致系统 Inode 资源不足。这种情况是不正常的,这个时候分析如果通过du 命令指能具体展示出磁盘空间的使用情况,但并不能分析出具体目录下产生了多少碎片文件,我们就需要如下的命令组合来对文件进行统计分析。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">find . -<span class="built_in">type</span> f | awk -F / -v OFS=/ <span class="string">'{$NF="";dir[$0]++}END{for(i in dir)print dir[i]" "i}'</span> | <span class="built_in">sort</span> -k1 -nr | <span class="built_in">head</span></span><br></pre></td></tr></table></figure>
<p>find命令</p>
<ul>
<li>-type f 查找指定文件类型</li>
</ul>
<p>awk命令</p>
<ul>
<li>-F / 指定处理文件时字符串之间以/分割</li>
<li>-v OFS=/ 显示结果时以/分割展示</li>
<li>awk的{} END {}格式, 前面{}表示行处理操作,END{}表示行处理后需要进行增提输出。</li>
<li>$NF设置为空,表示将每一行的文件名信息去除,从而保留文件路径</li>
<li>dir 是一个自增数组,用于统计结果</li>
</ul>
<h4 id="批量文件修改"><a href="#批量文件修改" class="headerlink" title="批量文件修改"></a>批量文件修改</h4><h4 id="批量文件改名"><a href="#批量文件改名" class="headerlink" title="批量文件改名"></a>批量文件改名</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rename .yml _pre.yml *</span><br></pre></td></tr></table></figure>
<h4 id="awk-文档处理"><a href="#awk-文档处理" class="headerlink" title="awk 文档处理"></a>awk 文档处理</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 排序</span></span><br><span class="line"><span class="built_in">cat</span> fund_cust.txt | <span class="built_in">sort</span> > fund_cust_sort.txt</span><br><span class="line"></span><br><span class="line"><span class="comment">## 取奇数行</span></span><br><span class="line"><span class="built_in">cat</span> fund_cust_sort.txt | awk <span class="string">'{if (NR%2==1) print $0}'</span> > fund_cust_sort_1.txt</span><br><span class="line"></span><br><span class="line"><span class="comment">### 取偶数行</span></span><br><span class="line"><span class="built_in">cat</span> fund_cust_sort.txt | awk <span class="string">'{if (NR%2==0) print $0}'</span> > fund_cust_sort_2.txt</span><br><span class="line"></span><br><span class="line"><span class="comment">### 合并</span></span><br><span class="line"><span class="comment"># NR:awk 处理的当前的行数,从1开始,直到所有文件处理完</span></span><br><span class="line"><span class="comment"># FNR:awk 处理的当前行在当前文件中所在的行数,从1开始,直到当前这个文件处理完,且在下一个文件会重新计数</span></span><br><span class="line"><span class="comment"># NR==FNR:表示当在处理第一个文件时</span></span><br><span class="line"><span class="comment"># a[NR]=$0:表示建立一个数组a,每行的行号和改行的内容形成一一对应的关系</span></span><br><span class="line"><span class="comment"># nr=NR:这里用nr这个变量记录第一个文件的行数;每处理一行nr被刷新一次,直到第一个文件结尾,最后nr就是第一个文件的行数!</span></span><br><span class="line"><span class="comment"># NR>FNR:表示处理第二个文件时</span></span><br><span class="line"><span class="comment"># a[NR-nr]:表示第一个文件的内容</span></span><br><span class="line"><span class="comment"># $0:表示第二个文件的每行的所有内容</span></span><br><span class="line">awk <span class="string">'NR==FNR{a[NR]=$1","$2","$3;nr=NR;} NR>FNR{print a[NR-nr]","$3","$1}'</span> fund_cust_sort_1.txt fund_cust_sort_2.txt > fund_cust.csv</span><br><span class="line"></span><br><span class="line"><span class="comment">##gbk 转化为utf8</span></span><br><span class="line">iconv -f gbk -t utf-8 2023-01-09.<span class="built_in">log</span> > 2023-01-09_1.<span class="built_in">log</span></span><br><span class="line"></span><br><span class="line"><span class="comment">## 分隔符使用[]处理为 '[][]'</span></span><br><span class="line"><span class="built_in">tail</span> -65000 2023-01-09_1.<span class="built_in">log</span> | awk -F<span class="string">'[][]'</span> <span class="string">'/请求功能号为/{print $18" "$12" " $1}'</span> | <span class="built_in">sort</span> -n </span><br><span class="line"></span><br><span class="line"><span class="comment">## 搜索过滤</span></span><br><span class="line"><span class="built_in">cat</span> last05.log | awk -F<span class="string">'[: ]'</span> <span class="string">'/结束,共花费时间/{print $8" "$13$14}'</span></span><br></pre></td></tr></table></figure>
<h5 id="批量替换文件中内容"><a href="#批量替换文件中内容" class="headerlink" title="批量替换文件中内容"></a>批量替换文件中内容</h5><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">find ./-type f -name application.yml -<span class="built_in">exec</span> sed -i<span class="string">"s/aaaaaa/bbbbbb/g"</span>{}\; </span><br><span class="line"></span><br><span class="line"><span class="built_in">ls</span> | xargs sed -i<span class="string">"2s/aa/bb/g"</span>;</span><br></pre></td></tr></table></figure>
<p>find 命令, </p>
<ul>
<li>-name 参数指定查找的文件名</li>
<li>-exec 参数将查找到的内容传递给下一个命令去继续执行相关逻辑</li>
</ul>
<p>sed 命令<br>主要对文件内容进行替换,这里会将 application.yml 文件中的 aaaaaa 替换成 bbbbbb</p>
<h3 id="文件打包"><a href="#文件打包" class="headerlink" title="文件打包"></a>文件打包</h3><p>查找所有的txt文件,打包并拷贝</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">(find . -name <span class="string">"*.txt"</span> | xargs tar -cvf test.tar) && <span class="built_in">cp</span> -f test.tar ~</span><br></pre></td></tr></table></figure>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/12/29/Linux/Linux%E5%B8%B8%E7%94%A8%E8%BF%90%E7%BB%B4/" data-id="clqq0vv2u0000u8qa9a00ggsv" data-title="" class="article-share-link"><span class="fa fa-share">Share</span></a>
</footer>
</div>
</article>
<article id="post-Linux/systemd监控和启动应用程序" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/12/29/Linux/systemd%E7%9B%91%E6%8E%A7%E5%92%8C%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/" class="article-date">
<time class="dt-published" datetime="2023-12-29T01:51:56.983Z" itemprop="datePublished">2023-12-29</time>
</a>
</div>
<div class="article-inner">
<div class="e-content article-entry" itemprop="articleBody">
<h4 id="创建测试程序"><a href="#创建测试程序" class="headerlink" title="创建测试程序"></a>创建测试程序</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># file systemd_test.sh</span></span><br><span class="line"><span class="keyword">while</span> :; <span class="keyword">do</span></span><br><span class="line"> <span class="built_in">echo</span> `<span class="built_in">date</span>` >> /tmp/systemd_test.log</span><br><span class="line"> <span class="built_in">sleep</span> 1</span><br><span class="line"><span class="keyword">done</span></span><br></pre></td></tr></table></figure>
<h4 id="设置全局可访问"><a href="#设置全局可访问" class="headerlink" title="设置全局可访问"></a>设置全局可访问</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">chmod</span> +x systemd_test.sh</span><br><span class="line">$ <span class="built_in">ln</span> -sf systemd_test.sh /usr/sbin/sysd-test</span><br></pre></td></tr></table></figure>
<h4 id="创建-systemd-配置文件"><a href="#创建-systemd-配置文件" class="headerlink" title="创建 systemd 配置文件"></a>创建 systemd 配置文件</h4><p>sysd-test.service</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line">Description=sysd server daemon</span><br><span class="line">Documentation=no</span><br><span class="line">After=no</span><br><span class="line">Wants=no</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">EnvironmentFile=no</span><br><span class="line">ExecStart=/usr/sbin/sysd-test</span><br><span class="line">ExecReload=/bin/kill -HUP $MAINPID</span><br><span class="line">KillMode=process</span><br><span class="line">Restart=on-failure</span><br><span class="line">RestartSec=1s</span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target graphic.target #相当于runlevel:2345</span><br></pre></td></tr></table></figure>
<h4 id="启用"><a href="#启用" class="headerlink" title="启用"></a>启用</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ systemctl <span class="built_in">enable</span> sysd-test.service</span><br></pre></td></tr></table></figure>
<h4 id="查看程序日志"><a href="#查看程序日志" class="headerlink" title="查看程序日志"></a>查看程序日志</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">journalctl -f</span><br><span class="line"></span><br><span class="line">journalctl -u frpc.service</span><br></pre></td></tr></table></figure>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/12/29/Linux/systemd%E7%9B%91%E6%8E%A7%E5%92%8C%E5%90%AF%E5%8A%A8%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/" data-id="clqq0vv310004u8qafc82g3jj" data-title="" class="article-share-link"><span class="fa fa-share">Share</span></a>
</footer>
</div>
</article>
<article id="post-Linux/Python3离线升级" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/12/29/Linux/Python3%E7%A6%BB%E7%BA%BF%E5%8D%87%E7%BA%A7/" class="article-date">
<time class="dt-published" datetime="2023-12-29T01:48:25.525Z" itemprop="datePublished">2023-12-29</time>
</a>
</div>
<div class="article-inner">
<div class="e-content article-entry" itemprop="articleBody">
<ol>
<li><p>安装依赖</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yum install gcc libffi-devel zlib* openssl-devel libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make</span><br></pre></td></tr></table></figure>
</li>
<li><p>下载安装包</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">wget https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz</span><br></pre></td></tr></table></figure>
</li>
<li><p>编译安装</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">tar -xvJf Python-3.10.6.tar.xz</span><br><span class="line"><span class="built_in">cd</span> Python-3.10.6</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3.编译安装</span></span><br><span class="line">./configure prefix=/usr/local/python3 --with-openssl=/usr/</span><br><span class="line">make && make install</span><br></pre></td></tr></table></figure>
</li>
<li><p>环境替换</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ln</span> -s /usr/local/python3/bin/python3 /usr/bin/python3</span><br><span class="line"><span class="built_in">ln</span> -s /usr/local/python3/bin/pip3 /usr/bin/pip3</span><br></pre></td></tr></table></figure>
</li>
<li><p>替换默认python</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ln</span> -s /usr/bin/python3 /usr/bin/python</span><br><span class="line"></span><br><span class="line"><span class="comment">## 替换后 yum不可用</span></span><br><span class="line">vim /usr/bin/yum </span><br><span class="line">vim /usr/libexec/urlgrabber-ext-down</span><br><span class="line"></span><br><span class="line"><span class="comment">#!/usr/bin/python -> #!/usr/bin/python2</span></span><br></pre></td></tr></table></figure></li>
</ol>
<h4 id="【选做】问题openssl兼容"><a href="#【选做】问题openssl兼容" class="headerlink" title="【选做】问题openssl兼容"></a>【选做】问题openssl兼容</h4><ol>
<li><p>升级openssl</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">wget https://www.openssl.org/source/openssl-1.1.1a.tar.gz</span><br><span class="line">tar -zxvf openssl-1.1.1a.tar.gz</span><br><span class="line"><span class="built_in">cd</span> openssl-1.1.1a</span><br><span class="line"></span><br><span class="line">./config --prefix=/usr/local/openssl no-zlib <span class="comment">#不需要zlib</span></span><br><span class="line">make</span><br><span class="line">make install</span><br></pre></td></tr></table></figure>
</li>
<li><p>备份替换openssl</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">## 备份</span></span><br><span class="line"><span class="built_in">mv</span> /usr/bin/openssl /usr/bin/openssl.bak</span><br><span class="line"><span class="built_in">mv</span> /usr/include/openssl/ /usr/include/openssl.bak</span><br><span class="line"></span><br><span class="line"><span class="comment">#替换</span></span><br><span class="line"><span class="built_in">ln</span> -s /usr/local/openssl/include/openssl /usr/include/openssl</span><br><span class="line"><span class="built_in">ln</span> -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so</span><br><span class="line"><span class="built_in">ln</span> -s /usr/local/openssl/bin/openssl /usr/bin/openssl</span><br><span class="line"></span><br><span class="line"><span class="built_in">ln</span> -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1</span><br><span class="line"><span class="built_in">ln</span> -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1</span><br><span class="line"></span><br><span class="line"><span class="comment">## 动态库搜索路径</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">"/usr/local/openssl/lib"</span> >> /etc/ld.so.conf</span><br><span class="line">ldconfig -v</span><br><span class="line"></span><br><span class="line"><span class="comment">## 查看版本 </span></span><br><span class="line">openssl version</span><br><span class="line"></span><br></pre></td></tr></table></figure>
</li>
<li><p>重新安装python</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl</span><br><span class="line">make</span><br><span class="line">make install</span><br></pre></td></tr></table></figure></li>
</ol>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/12/29/Linux/Python3%E7%A6%BB%E7%BA%BF%E5%8D%87%E7%BA%A7/" data-id="clqq0vv300002u8qacum59xdw" data-title="" class="article-share-link"><span class="fa fa-share">Share</span></a>
</footer>
</div>
</article>
<article id="post-云原生/Docker常见问题" class="h-entry article article-type-post" itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<div class="article-meta">
<a href="/2023/12/29/%E4%BA%91%E5%8E%9F%E7%94%9F/Docker%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/" class="article-date">
<time class="dt-published" datetime="2023-12-29T01:45:32.241Z" itemprop="datePublished">2023-12-29</time>
</a>
</div>
<div class="article-inner">
<div class="e-content article-entry" itemprop="articleBody">
<h4 id="设置docker日志大小"><a href="#设置docker日志大小" class="headerlink" title="设置docker日志大小"></a>设置docker日志大小</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># vim /etc/docker/daemon.json</span></span><br><span class="line">{</span><br><span class="line"> <span class="string">"registry-mirrors"</span>: [<span class="string">"http://f613ce8f.m.daocloud.io"</span>],</span><br><span class="line"> <span class="string">"log-driver"</span>:<span class="string">"json-file"</span>,</span><br><span class="line"> <span class="string">"log-opts"</span>: {<span class="string">"max-size"</span>:<span class="string">"500m"</span>, <span class="string">"max-file"</span>:<span class="string">"3"</span>}</span><br><span class="line">}</span><br></pre></td></tr></table></figure>
<h4 id="清理日志"><a href="#清理日志" class="headerlink" title="清理日志"></a>清理日志</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/bash</span></span><br><span class="line"></span><br><span class="line">logs=$(find /var/lib/docker/containers/ -name *-json.log) </span><br><span class="line"><span class="keyword">for</span> <span class="built_in">log</span> <span class="keyword">in</span> <span class="variable">$logs</span> </span><br><span class="line"><span class="keyword">do</span> </span><br><span class="line"> <span class="built_in">echo</span> <span class="string">"clean logs : <span class="variable">$log</span>"</span> </span><br><span class="line"> <span class="built_in">cat</span> /dev/null > <span class="variable">$log</span> </span><br><span class="line"><span class="keyword">done</span> </span><br></pre></td></tr></table></figure>
<h4 id="清理镜像"><a href="#清理镜像" class="headerlink" title="清理镜像"></a>清理镜像</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker rmi $(docker images -q -f dangling=<span class="literal">true</span>)</span><br></pre></td></tr></table></figure>
</div>
<footer class="article-footer">
<a data-url="http://example.com/2023/12/29/%E4%BA%91%E5%8E%9F%E7%94%9F/Docker%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/" data-id="clqq0vv310005u8qa3e134al8" data-title="" class="article-share-link"><span class="fa fa-share">Share</span></a>
</footer>
</div>
</article>
</section>
<aside id="sidebar">
<div class="widget-wrap">
<h3 class="widget-title">Archives</h3>
<div class="widget">
<ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2023/12/">December 2023</a></li></ul>
</div>
</div>
<div class="widget-wrap">
<h3 class="widget-title">Recent Posts</h3>
<div class="widget">
<ul>
<li>
<a href="/2023/12/29/Linux/Tcpdump%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/">(no title)</a>
</li>
<li>
<a href="/2023/12/29/Windows/wsl%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86/">(no title)</a>
</li>
<li>
<a href="/2023/12/29/%E4%BA%91%E5%8E%9F%E7%94%9F/RocketMQ%E5%B8%B8%E8%AF%86/">(no title)</a>
</li>
<li>
<a href="/2023/12/29/Linux/Linux%E6%A3%80%E6%9F%A5U%E7%9B%98%E6%98%AF%E5%90%A6%E6%8C%82%E8%BD%BD/">(no title)</a>
</li>
<li>
<a href="/2023/12/29/Linux/Linux%E5%B8%B8%E7%94%A8%E8%BF%90%E7%BB%B4/">(no title)</a>
</li>
</ul>
</div>
</div>
</aside>
</div>
<footer id="footer">
<div class="outer">
<div id="footer-info" class="inner">
© 2023 John Doe<br>
Powered by <a href="https://hexo.io/" target="_blank">Hexo</a>
</div>
</div>
</footer>
</div>
<nav id="mobile-nav">
<a href="/" class="mobile-nav-link">Home</a>
<a href="/archives" class="mobile-nav-link">Archives</a>
</nav>
<script src="/js/jquery-3.6.4.min.js"></script>
<script src="/fancybox/jquery.fancybox.min.js"></script>
<script src="/js/script.js"></script>
</div>
</body>
</html>