﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-paulwong-随笔分类-LINUX</title><link>http://www.blogjava.net/paulwong/category/50768.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 16 Jan 2025 02:42:00 GMT</lastBuildDate><pubDate>Thu, 16 Jan 2025 02:42:00 GMT</pubDate><ttl>60</ttl><item><title>开源镜像库</title><link>http://www.blogjava.net/paulwong/archive/2025/01/13/451550.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 13 Jan 2025 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2025/01/13/451550.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451550.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2025/01/13/451550.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451550.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451550.html</trackback:ping><description><![CDATA[华为：<br />
<a href="https://mirrors.huaweicloud.com/home" target="_blank">https://mirrors.huaweicloud.com/home</a><br />
<a href="https://mirrors.huaweicloud.com/artifactory/pypi-public/simple/torch/" target="_blank">https://mirrors.huaweicloud.com/artifactory/pypi-public/simple/torch/</a><br />
<br />
清华:
<div><a href="https://mirrors.tuna.tsinghua.edu.cn" target="_blank">https://mirrors.tuna.tsinghua.edu.cn</a><br />
点击问号进详情<br />
<br />
docker:<br />
<a href="https://mirrors.huaweicloud.com/mirrorDetail/5ea14d84b58d16ef329c5c13?mirrorName=docker-ce&amp;catalog=docker" target="_blank">https://mirrors.huaweicloud.com/mirrorDetail/5ea14d84b58d16ef329c5c13?mirrorName=docker-ce&amp;catalog=docker</a><br />
</div><img src ="http://www.blogjava.net/paulwong/aggbug/451550.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2025-01-13 10:32 <a href="http://www.blogjava.net/paulwong/archive/2025/01/13/451550.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux删除多余的旧内核</title><link>http://www.blogjava.net/paulwong/archive/2025/01/05/451537.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 05 Jan 2025 04:01:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2025/01/05/451537.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451537.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2025/01/05/451537.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451537.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451537.html</trackback:ping><description><![CDATA[linux每次升级后都会留下多余的内核, 一键删除的方法(Centos):@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<div><br />
</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->dnf&nbsp;remove&nbsp;$(dnf&nbsp;repoquery&nbsp;--installonly&nbsp;--latest-limit=-<span style="color: #800000; ">2</span>)</div>
</div>
<div><br />
</div>
<div><br />
</div><img src ="http://www.blogjava.net/paulwong/aggbug/451537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2025-01-05 12:01 <a href="http://www.blogjava.net/paulwong/archive/2025/01/05/451537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>REDHEAD 8 LINUX 软件集合</title><link>http://www.blogjava.net/paulwong/archive/2022/06/23/450773.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 23 Jun 2022 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2022/06/23/450773.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/450773.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2022/06/23/450773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/450773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/450773.html</trackback:ping><description><![CDATA[<div><a href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/index" target="_blank">https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/index</a><br /><br /><br /></div><img src ="http://www.blogjava.net/paulwong/aggbug/450773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2022-06-23 17:27 <a href="http://www.blogjava.net/paulwong/archive/2022/06/23/450773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LINUX YUM</title><link>http://www.blogjava.net/paulwong/archive/2022/06/23/450772.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 23 Jun 2022 09:21:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2022/06/23/450772.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/450772.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2022/06/23/450772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/450772.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/450772.html</trackback:ping><description><![CDATA[列出某个软件的所有版本号：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->yum&nbsp;module&nbsp;list&nbsp;nginx<br /><br />Red&nbsp;Hat&nbsp;Enterprise&nbsp;Linux&nbsp;8&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;x86_64&nbsp;-&nbsp;AppStream&nbsp;(RPMs)<br />Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stream&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Profiles&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Summary<br />nginx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.14&nbsp;[d]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;common&nbsp;[d]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nginx&nbsp;webserver<br />nginx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;common&nbsp;[d]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nginx&nbsp;webserver<br />nginx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;common&nbsp;[d]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nginx&nbsp;webserver<br />nginx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.20&nbsp;[e]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;common&nbsp;[d]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nginx&nbsp;webserver<br /><br />Hint:&nbsp;[d]efault,&nbsp;[e]nabled,&nbsp;[x]disabled,&nbsp;[i]nstalled</div><br /><br />设定某个版本为默认版本<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->yum&nbsp;module&nbsp;enable&nbsp;nginx:1.20</div><br /><br />安装默认版本<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->yum&nbsp;install&nbsp;nginx</div><br /><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/450772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2022-06-23 17:21 <a href="http://www.blogjava.net/paulwong/archive/2022/06/23/450772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>openJDK无法进行jmap</title><link>http://www.blogjava.net/paulwong/archive/2022/05/19/450751.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 19 May 2022 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2022/05/19/450751.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/450751.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2022/05/19/450751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/450751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/450751.html</trackback:ping><description><![CDATA[<a href="https://blog.csdn.net/qq_32447301/article/details/85109014" target="_blank">https://blog.csdn.net/qq_32447301/article/details/85109014</a><br /><img src ="http://www.blogjava.net/paulwong/aggbug/450751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2022-05-19 13:53 <a href="http://www.blogjava.net/paulwong/archive/2022/05/19/450751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>REDHEAD 7 LINUX 软件集合</title><link>http://www.blogjava.net/paulwong/archive/2021/12/22/436243.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 22 Dec 2021 06:28:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/12/22/436243.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/436243.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/12/22/436243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/436243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/436243.html</trackback:ping><description><![CDATA[<a href="https://www.softwarecollections.org/en/" target="_blank">https://www.softwarecollections.org/en/</a><br /><br />不用再GOOGLE寻找安装方法。<br /><br />安装MYSQL示例：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;2.&nbsp;Install&nbsp;the&nbsp;collection:</span><span style="color: #008000; "><br /></span>$&nbsp;sudo&nbsp;yum&nbsp;install&nbsp;rh-mariadb103<br /><br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;3.&nbsp;Start&nbsp;using&nbsp;software&nbsp;collections:</span><span style="color: #008000; "><br /></span>$&nbsp;scl&nbsp;enable&nbsp;rh-mariadb103&nbsp;bash</div><br /><pre style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; padding: 9.5px; margin-top: 0px; margin-bottom: 10px; line-height: 1.42857; color: #333333; word-break: break-all; overflow-wrap: break-word; background-color: #f5f5f5; border: 1px solid #cccccc; border-radius: 4px;"><code style="box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: inherit; padding: 0px; color: inherit; white-space: pre-wrap; background-color: transparent; border-radius: 0px;">$ service rh-mariadb103-mariadb start <br />$ mysql <br />$ mysqld<br /><br />#开机加载命令<br />cp /opt/rh/rh-mariadb103/enable /etc/profile.d/rh-mariadb103.sh</code></pre><img src ="http://www.blogjava.net/paulwong/aggbug/436243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-12-22 14:28 <a href="http://www.blogjava.net/paulwong/archive/2021/12/22/436243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LINUX下循环读取文件参数并CURL远程API</title><link>http://www.blogjava.net/paulwong/archive/2021/08/26/435954.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 26 Aug 2021 07:40:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/08/26/435954.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435954.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/08/26/435954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435954.html</trackback:ping><description><![CDATA[一系列参数存于文本文件，需在LINUX下循环读取，之后以此参数进行CURL远程API调用，同时需记录每次CURL的总时间<br /><br />参数文件，test1.json<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->{"ADDRESS_FREE":"XXX","NAME":{"SURNAME":"XXX","FIRST_NAME":"XXX"}}<br />{"ADDRESS_FREE":"XXX","NAME":{"SURNAME":"XXX","FIRST_NAME":"XXX"}}<br />{"ADDRESS_FREE":"XXX","NAME":{"SURNAME":"XXX","FIRST_NAME":"XXX"}}</div><br />test1.sh<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#!&nbsp;/bin/bash<br /><br />RESULT_FILE="result.csv"<br />echo&nbsp;""&nbsp;&gt;&nbsp;$RESULT_FILE<br />i=1<br />while&nbsp;read&nbsp;line&nbsp;||&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">[&nbsp;"$line"&nbsp;</span><span style="color: #800000; font-weight: bold; ">]</span>]&nbsp;#In&nbsp;case&nbsp;the&nbsp;file&nbsp;has&nbsp;an&nbsp;incomplete&nbsp;(missing&nbsp;newline)&nbsp;last&nbsp;line,&nbsp;you&nbsp;could&nbsp;use&nbsp;this&nbsp;alternative:<br />do&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"$i"<br />&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;"$i;$line;"&nbsp;&gt;&gt;&nbsp;$RESULT_FILE<br />&nbsp;&nbsp;&nbsp;&nbsp;curl&nbsp;-w&nbsp;%{time_total}&nbsp;-o&nbsp;/dev/null&nbsp;-X&nbsp;POST&nbsp;-H&nbsp;"Content-Type:application/json"&nbsp;-d&nbsp;"$line"&nbsp;http://ip:port&nbsp;&nbsp;&gt;&gt;&nbsp;$RESULT_FILE<br />&nbsp;&nbsp;&nbsp;&nbsp;#printf&nbsp;"\n\r"&nbsp;&gt;&gt;&nbsp;$RESULT_FILE<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;""&nbsp;&gt;&gt;&nbsp;$RESULT_FILE<br />&nbsp;&nbsp;&nbsp;&nbsp;#i=$((&nbsp;$i&nbsp;+&nbsp;1&nbsp;))<br />&nbsp;&nbsp;&nbsp;&nbsp;((&nbsp;i++&nbsp;))<br />done&nbsp;&lt;&nbsp;test1.json</div><br />Reference:<br /><a href="https://stackoverflow.com/questions/30988586/creating-an-array-from-a-text-file-in-bash" target="_blank">https://stackoverflow.com/questions/30988586/creating-an-array-from-a-text-file-in-bash</a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-08-26 15:40 <a href="http://www.blogjava.net/paulwong/archive/2021/08/26/435954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux sha512sum command</title><link>http://www.blogjava.net/paulwong/archive/2021/07/14/435926.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 14 Jul 2021 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/07/14/435926.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435926.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/07/14/435926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435926.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435926.html</trackback:ping><description><![CDATA[检查file的SHA512值：<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->sha512sum&nbsp;[OPTION] [FILE]</div><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-07-14 13:41 <a href="http://www.blogjava.net/paulwong/archive/2021/07/14/435926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NAS vs. SAN - What Are the Differences Between Them</title><link>http://www.blogjava.net/paulwong/archive/2021/06/25/435910.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 25 Jun 2021 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/06/25/435910.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435910.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/06/25/435910.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435910.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435910.html</trackback:ping><description><![CDATA[<a href="https://www.backblaze.com/blog/whats-the-diff-nas-vs-san/" target="_blank">https://www.backblaze.com/blog/whats-the-diff-nas-vs-san/</a><br /><br />NAS vs. SAN: Differences and Use Cases<br /><a href="https://www.enterprisestorageforum.com/networking/nas-vs-san-differences-and-use-cases/" target="_blank">https://www.enterprisestorageforum.com/networking/nas-vs-san-differences-and-use-cases/</a><br /><br />DAS / NAS / IP SAN / FC SAN区别<br /><a href="https://cloud.tencent.com/developer/article/1580887" target="_blank">https://cloud.tencent.com/developer/article/1580887</a><img src ="http://www.blogjava.net/paulwong/aggbug/435910.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-06-25 15:18 <a href="http://www.blogjava.net/paulwong/archive/2021/06/25/435910.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Bash get filename from given path on Linux or Unix</title><link>http://www.blogjava.net/paulwong/archive/2021/05/21/435879.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 21 May 2021 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2021/05/21/435879.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435879.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2021/05/21/435879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435879.html</trackback:ping><description><![CDATA[<a href="https://www.cyberciti.biz/faq/bash-get-filename-from-given-path-on-linux-or-unix/" target="_blank">https://www.cyberciti.biz/faq/bash-get-filename-from-given-path-on-linux-or-unix/</a><img src ="http://www.blogjava.net/paulwong/aggbug/435879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2021-05-21 14:10 <a href="http://www.blogjava.net/paulwong/archive/2021/05/21/435879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP 連線狀態機制與流程</title><link>http://www.blogjava.net/paulwong/archive/2020/12/29/435758.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 29 Dec 2020 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/12/29/435758.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435758.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/12/29/435758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435758.html</trackback:ping><description><![CDATA[<p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;"><a href="https://dev.twsiyuan.com/2017/09/tcp-states.html" target="_blank">https://dev.twsiyuan.com/2017/09/tcp-states.html</a><br />在開發基於 HTTP 的網路應用服務時，當有大量連線要求，或是與長連線 (Persistent connection) 要求時，常常遇到底層 TCP 的連線斷線錯誤，導致服務不穩定。因此研究了解 TCP 的連線狀態機制，並嘗試用自己的方式整理筆記，希望能從基礎知識中找到解決錯誤的線索，或是任何能更進一步優化服務的手段。</p><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">僅紀錄 TCP 連線狀態以及建立或是斷開連線流程，關於進一步的 TCP 封包協定可參考 Reference 連線。</p><h2>TCP 建立連線 (Open)</h2><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">通常的 TCP 連線建立流程與狀態，需要三次的訊息交換來建立連線 (three-way handshaking)：</p><div style="margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><a href="https://2.bp.blogspot.com/-2mx35jqEZGM/Wa5u2IscCeI/AAAAAAAAcuM/EffX5Qq_ByE0RU6C5OYNfIfD8UX5iO1fwCHMYCw/s1600/tcp-open-state-flow.png" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;"><img alt="TCP 建立連線流程圖" src="https://2.bp.blogspot.com/-2mx35jqEZGM/Wa5u2IscCeI/AAAAAAAAcuM/EffX5Qq_ByE0RU6C5OYNfIfD8UX5iO1fwCHMYCw/s780/tcp-open-state-flow.png" title="TCP 建立連線流程圖" style="padding: 0px; margin: 0px auto; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: middle; background: 0px 0px; display: block; max-width: 100%; height: auto;" /></a><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: smaller; vertical-align: baseline; background: 0px 0px; line-height: 1.7em; text-align: center; font-style: italic;">TCP 建立連線流程圖</p></div><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">其中左邊通常為 server，右邊則為 client，文字流程描述：</p><ol style="padding: 0px; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Server 建立 TCB，開啟監聽連線，進入狀態 LISTENING</li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Client 發出連線要求&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">SYN</em>，進入狀態 SYN-SENT，等待回應</li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Server 收到&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">SYN</em>&nbsp;要求，回應連線傳送&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">SYN</em>+<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>，並進入狀態 SYN-RCVD (SYN-RECEIVED)</li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Client 收到&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">SYN</em>+<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>&nbsp;確認完成連線進入狀態 ESTABLISHED，並送出&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em></li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Server 收到&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>&nbsp;確認連線完成，也進入狀態 ESTABLISHED</li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">雙方開始傳送交換資料</li></ol><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">該些名詞與狀態說明：</p><ul style="padding: 0px; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">CLOSED：連線關閉狀態</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">LISTENING：監聽狀態，被動等待連線</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">SYN-SENT：主動送出連線要求 SYN，並等待對方回應</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">SYN-RCVD：收到連線要求 SYN，送出己方的 SYN+ACK 後，等待對方回應</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ESTABLISHED：確定完成連線，可開始傳輸資料</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">TCB：Transmission Control Block，see&nbsp;<a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Resource_usage" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;">wiki</a></li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">SYN</em>：Synchronous，表示與對方建立連線的同步符號</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>：Acknowledgement，表示發送的數據已收到無誤</li></ul><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">在建立連線時，可能會發生雙方同步建立連線的情形 (Simultaneous open)，常見於 P2P 的應用中，其 TCP 建立連線的流程不太一樣：</p><div style="margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><a href="https://2.bp.blogspot.com/-nnxA1swfqQY/Wa5u2c-OG5I/AAAAAAAAcuQ/Tkw_aIM24mIdWqc7vvJsrWGJqZ6J3swPgCHMYCw/s1600/tcp-simultaneous-open-state-flow.png" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;"><img alt="TCP 同步建立連線流程圖" src="https://2.bp.blogspot.com/-nnxA1swfqQY/Wa5u2c-OG5I/AAAAAAAAcuQ/Tkw_aIM24mIdWqc7vvJsrWGJqZ6J3swPgCHMYCw/s780/tcp-simultaneous-open-state-flow.png" title="TCP 同步建立連線流程圖" style="padding: 0px; margin: 0px auto; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: middle; background: 0px 0px; display: block; max-width: 100%; height: auto;" /></a><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: smaller; vertical-align: baseline; background: 0px 0px; line-height: 1.7em; text-align: center; font-style: italic;">TCP 同步建立連線流程圖</p></div><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">畫成 TCP 狀態流程圖會是這樣：</p><div style="margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><a href="https://2.bp.blogspot.com/-h1UBJNPvlcI/Wa5u2QYeR9I/AAAAAAAAcuU/s18PlBSPCEABhRF6fdohXTbC8gBGqAOmwCHMYCw/s1600/tcp-open-state-diagram.png" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;"><img alt="TCP Open 狀態圖" src="https://2.bp.blogspot.com/-h1UBJNPvlcI/Wa5u2QYeR9I/AAAAAAAAcuU/s18PlBSPCEABhRF6fdohXTbC8gBGqAOmwCHMYCw/s780/tcp-open-state-diagram.png" title="TCP Open 狀態圖" style="padding: 0px; margin: 0px auto; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: middle; background: 0px 0px; display: block; max-width: 100%; height: auto;" /></a><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: smaller; vertical-align: baseline; background: 0px 0px; line-height: 1.7em; text-align: center; font-style: italic;">TCP Open 狀態圖</p></div><h2>TCP 斷開連線 (Close)</h2><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">TCP 關閉流程如下，比建立連線還要複雜一些，需要經過四次的訊息交換 (four-way handshaking)，要注意的是可以是由 server 發起主動關閉，抑或是 client 發起主動關閉：</p><div style="margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><a href="https://2.bp.blogspot.com/-EVTQe_4Vk00/Wa5u2iHmHQI/AAAAAAAAcuY/LnHrPzqczAQMs_dRnwzCuI_aQGyID_MMQCHMYCw/s1600/tcp-close-state-flow.png" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;"><img alt="TCP 關閉連線流程圖" src="https://2.bp.blogspot.com/-EVTQe_4Vk00/Wa5u2iHmHQI/AAAAAAAAcuY/LnHrPzqczAQMs_dRnwzCuI_aQGyID_MMQCHMYCw/s780/tcp-close-state-flow.png" title="TCP 關閉連線流程圖" style="padding: 0px; margin: 0px auto; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: middle; background: 0px 0px; display: block; max-width: 100%; height: auto;" /></a><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: smaller; vertical-align: baseline; background: 0px 0px; line-height: 1.7em; text-align: center; font-style: italic;">TCP 關閉連線流程圖</p></div><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">其中左邊通常為 client 狀態 (由 client 主動發起關閉連線)，右邊則為 server 狀態，文字流程描述：</p><ol style="padding: 0px; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Client 準備關閉連線，發出&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN</em>，進入狀態 FIN-WAIT-1</li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Server 收到&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN</em>，發回收到的&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>，進入狀態 CLOSE-WAIT，並通知 App 準備斷線</li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Client 收到&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>，進入狀態 FIN-WAIT-2，等待 server 發出&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN</em></li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Server 確認 App 處理完斷線請求，發出&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN</em>，並進入狀態 LAST-ACK</li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Client 收到&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN</em>，並回傳確認的&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>，進入狀態 TIME-WAIT，等待時間過後正式關閉連線</li><li style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">Server 收到&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>，便直接關閉連線</li></ol><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">該些名詞與狀態說明：</p><ul style="padding: 0px; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ESTABLISHED：連線開啟狀態</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">CLOSE-WAIT：等待連線關閉狀態，等待 App 回應</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">LAST-ACK：等待連線關閉狀態，等待遠端回應&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>&nbsp;後，便關閉連線</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN-WAIT-1：等待連線關閉狀態，等待遠端回應&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em></li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN-WAIT-2：等待連線關閉狀態，等待遠端回應&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN</em></li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">TIME-WAIT：等待連線關閉狀態，等段一段時候，保證遠端有收到其 ACK 關閉連線 (網路延遲問題)</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">CLOSED：連線關閉狀態</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">FIN</em>：表示關閉連線的同步符號</li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em>：Acknowledgement，表示發送的數據已收到無誤</li></ul><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">有可能連線的雙方同時發起關閉，雖然機率還蠻低的：</p><div style="margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><a href="https://2.bp.blogspot.com/-QvO1WNqd01w/Wa5u21Cmx5I/AAAAAAAAcuc/jRp47O6GvSwIffpwcdge21j1_Lfs0kO2ACHMYCw/s1600/tcp-simultaneous-close-state-flow.png" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;"><img alt="TCP 同步關閉連線流程圖" src="https://2.bp.blogspot.com/-QvO1WNqd01w/Wa5u21Cmx5I/AAAAAAAAcuc/jRp47O6GvSwIffpwcdge21j1_Lfs0kO2ACHMYCw/s780/tcp-simultaneous-close-state-flow.png" title="TCP 同步關閉連線流程圖" style="padding: 0px; margin: 0px auto; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: middle; background: 0px 0px; display: block; max-width: 100%; height: auto;" /></a><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: smaller; vertical-align: baseline; background: 0px 0px; line-height: 1.7em; text-align: center; font-style: italic;">TCP 同步關閉連線流程圖</p></div><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">這邊多一個狀態：</p><ul style="padding: 0px; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">CLOSING：等待連線關閉狀態，等待遠端回應&nbsp;<em style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">ACK</em></li></ul><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">畫成 TCP 狀態流程圖會是這樣：</p><div style="margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><a href="https://2.bp.blogspot.com/-VCsQkhIyQGw/Wa5u3IDGhRI/AAAAAAAAcug/plhn7GLFVmUFbXb0DkZ6gE0AZgrRa6MyQCHMYCw/s1600/tcp-close-state-diagram.png" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;"><img alt="TCP Close 狀態圖" src="https://2.bp.blogspot.com/-VCsQkhIyQGw/Wa5u3IDGhRI/AAAAAAAAcug/plhn7GLFVmUFbXb0DkZ6gE0AZgrRa6MyQCHMYCw/s780/tcp-close-state-diagram.png" title="TCP Close 狀態圖" style="padding: 0px; margin: 0px auto; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: middle; background: 0px 0px; display: block; max-width: 100%; height: auto;" /></a><p style="padding: 0px; margin-top: 0px; margin-bottom: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: smaller; vertical-align: baseline; background: 0px 0px; line-height: 1.7em; text-align: center; font-style: italic;">TCP Close 狀態圖</p></div><h2>查詢現在電腦的 TCP 狀態</h2><p style="padding: 0px 0px 0.5em; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; line-height: 1.7em; color: #666666; font-family: Roboto, sans-serif;">查詢目前所有的連線狀態 (Windows &amp; Linux)：</p><pre prettyprinted"="" style="padding: 9.5px; margin-top: 0px; margin-bottom: 10px; box-sizing: border-box; border: 1px solid #cccccc; outline: 0px; font-size: 13px; vertical-align: baseline; background: #ffffff; white-space: pre-wrap; line-height: 1.42857; font-family: Menlo, &quot;Bitstream Vera Sans Mono&quot;, &quot;DejaVu Sans Mono&quot;, Monaco, Consolas, monospace; word-break: break-all; overflow-wrap: break-word; color: #333333; border-radius: 4px; overflow: auto;"><code style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; font-size: inherit; vertical-align: baseline; background: 0px 0px transparent; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; color: inherit; border-radius: 0px;"><span style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">netstat </span><span style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">-</span><span style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;">a</span></code></pre><h2>Reference</h2><ul style="padding: 0px; margin: 0px 0px 10px; box-sizing: border-box; border: 0px; outline: 0px; font-size: 16px; vertical-align: baseline; background: 0px 0px #ffffff; color: #666666; font-family: Roboto, sans-serif;"><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><a href="https://community.apigee.com/articles/7970/tcp-states-explained.html" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;">TCP states - explained</a></li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><a href="https://www.youtube.com/watch?v=Ad38n2hYOuA" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;">TCP tutorial tcp state diagram for connection establishment closing</a></li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><a href="https://www.isi.edu/touch/pubs/infocomm99/infocomm99-web/" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;">The TIME-WAIT state in TCP and Its Effect on Busy Servers</a></li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><a href="https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.halu101/constatus.htm" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;">TCP connection status</a></li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><a href="http://tcpipguide.com/free/t_TCPOperationalOverviewandtheTCPFiniteStateMachineF-2.htm" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;">TCP Operational Overview and the TCP Finite State Machine (FSM)</a></li><li style="padding: 0px; margin: 0px 0px 0px 20px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px;"><a href="https://en.wikipedia.org/wiki/Transmission_Control_Protocol" style="padding: 0px; margin: 0px; box-sizing: border-box; border: 0px; outline: 0px; vertical-align: baseline; background: 0px 0px transparent; color: #337ab7; text-decoration-line: none;">Transmission Control Protocol<br /></a></li></ul><img src ="http://www.blogjava.net/paulwong/aggbug/435758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-12-29 10:04 <a href="http://www.blogjava.net/paulwong/archive/2020/12/29/435758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LINUX SHELL之SCL</title><link>http://www.blogjava.net/paulwong/archive/2020/11/05/435715.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 05 Nov 2020 08:42:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/11/05/435715.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435715.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/11/05/435715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435715.html</trackback:ping><description><![CDATA[什么是SCL<br /><a href="https://blog.51cto.com/hashlinux/1772066" target="_blank">https://blog.51cto.com/hashlinux/1772066</a><br /><br />CentOS/RHEL 开发环境之 devtoolset<br /><a href="http://blog.fungo.me/2016/03/centos-development-env/" target="_blank">http://blog.fungo.me/2016/03/centos-development-env/</a><br /><br />How can I make a Red Hat Software Collection persist after a reboot/logout?<br /><a href="https://access.redhat.com/solutions/527703" target="_blank">https://access.redhat.com/solutions/527703</a><img src ="http://www.blogjava.net/paulwong/aggbug/435715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-11-05 16:42 <a href="http://www.blogjava.net/paulwong/archive/2020/11/05/435715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>!!!服务器端各种安装</title><link>http://www.blogjava.net/paulwong/archive/2020/10/24/435705.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sat, 24 Oct 2020 15:46:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/10/24/435705.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435705.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/10/24/435705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435705.html</trackback:ping><description><![CDATA[<a href="https://www.server-world.info/en/" target="_blank">https://www.server-world.info/en/</a><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-10-24 23:46 <a href="http://www.blogjava.net/paulwong/archive/2020/10/24/435705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在LINUX中格式化JSON的工具-jq</title><link>http://www.blogjava.net/paulwong/archive/2020/10/12/435689.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 12 Oct 2020 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/10/12/435689.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435689.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/10/12/435689.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435689.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435689.html</trackback:ping><description><![CDATA[安装：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->wget&nbsp;-O&nbsp;jq&nbsp;https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64<br />chmod&nbsp;+x&nbsp;./jq<br />cp&nbsp;jq&nbsp;/usr/bin</div><img src ="http://www.blogjava.net/paulwong/aggbug/435689.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-10-12 09:55 <a href="http://www.blogjava.net/paulwong/archive/2020/10/12/435689.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线上JVM工具</title><link>http://www.blogjava.net/paulwong/archive/2020/10/09/435686.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 09 Oct 2020 11:12:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/10/09/435686.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435686.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/10/09/435686.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435686.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435686.html</trackback:ping><description><![CDATA[<a href="https://github.com/vipshop/vjtools" target="_blank">https://github.com/vipshop/vjtools</a><img src ="http://www.blogjava.net/paulwong/aggbug/435686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-10-09 19:12 <a href="http://www.blogjava.net/paulwong/archive/2020/10/09/435686.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux shell 中检查文件夹是否存在</title><link>http://www.blogjava.net/paulwong/archive/2020/09/25/435673.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 25 Sep 2020 03:11:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/09/25/435673.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435673.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/09/25/435673.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435673.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435673.html</trackback:ping><description><![CDATA[To check if a directory exists in a shell script, you can use the following:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->if&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">&nbsp;-d&nbsp;"$DIRECTORY"&nbsp;</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;</span><span style="color: #008000; ">&nbsp;then</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;#&nbsp;Control&nbsp;will&nbsp;enter&nbsp;here&nbsp;if&nbsp;$DIRECTORY&nbsp;exists.<br />fi</div><br />Or to check if a directory doesn't exist:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->if&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">&nbsp;!&nbsp;-d&nbsp;"$DIRECTORY"&nbsp;</span><span style="color: #800000; font-weight: bold; ">]</span><span style="color: #008000; ">;</span><span style="color: #008000; ">&nbsp;then</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;#&nbsp;Control&nbsp;will&nbsp;enter&nbsp;here&nbsp;if&nbsp;$DIRECTORY&nbsp;doesn't&nbsp;exist.<br />fi</div><img src ="http://www.blogjava.net/paulwong/aggbug/435673.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-09-25 11:11 <a href="http://www.blogjava.net/paulwong/archive/2020/09/25/435673.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux shell 中函数的调用</title><link>http://www.blogjava.net/paulwong/archive/2020/09/25/435672.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 25 Sep 2020 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/09/25/435672.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435672.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/09/25/435672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435672.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->function&nbsp;fun1(){<br />&nbsp;&nbsp;return&nbsp;34<br />}<br /><br />function&nbsp;fun2(){<br />&nbsp;&nbsp;local&nbsp;res=$(fun1)<br />&nbsp;&nbsp;echo&nbsp;$res<br />}</div><br />上面调用fun1时，打印结果却不返回34，这是为何？原来函数只是返回结果成功与否的值，并不能自定义。因此要改成下面这种写法<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->function&nbsp;fun1(){<br />&nbsp;&nbsp;echo&nbsp;34<br />}<br /><br />function&nbsp;fun2(){<br />&nbsp;&nbsp;local&nbsp;res=$(fun1)<br />&nbsp;&nbsp;echo&nbsp;$res<br />}</div><br /><a href="https://stackoverflow.com/questions/17336915/return-value-in-a-bash-function" target="_blank">https://stackoverflow.com/questions/17336915/return-value-in-a-bash-function</a><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-09-25 11:06 <a href="http://www.blogjava.net/paulwong/archive/2020/09/25/435672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向所有服务器发送相同命令</title><link>http://www.blogjava.net/paulwong/archive/2020/09/24/435670.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 24 Sep 2020 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/09/24/435670.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435670.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/09/24/435670.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435670.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435670.html</trackback:ping><description><![CDATA[先在主控机执行ssh-keygen，再向被控机传输key，<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ssh-copy-id&nbsp;-i&nbsp;~/.ssh/id_rsa.pub&nbsp;user1@ip</div><br />样例脚本transfer-artemis.sh如下：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#!/bin/bash<br /><br />loop_server(){<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;((i=2<span style="color: #008000; ">;</span><span style="color: #008000; ">&nbsp;i&lt;=8;&nbsp;i++))</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipd=10.10.31.1${i}2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;${ipd}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$1&nbsp;${ipd}<br />&nbsp;&nbsp;&nbsp;&nbsp;done<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;((i=1<span style="color: #008000; ">;</span><span style="color: #008000; ">&nbsp;i&lt;=2;&nbsp;i++))</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ipd=10.20.31.1${i}2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;${ipd}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$1&nbsp;${ipd}<br />&nbsp;&nbsp;&nbsp;&nbsp;done<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />start_artemis_cmd(){<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"ssh&nbsp;user1@${1}&nbsp;'/opt/myapp/artemis/apache-artemis-2.15.0/instance/bin/artemis-service&nbsp;start'"<br />&nbsp;&nbsp;&nbsp;&nbsp;ssh&nbsp;user1@${1}&nbsp;'/opt/myapp/artemis/apache-artemis-2.15.0/instance/bin/artemis-service&nbsp;start'<br />}<br /><br />stop_artemis_cmd(){<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"ssh&nbsp;user1@${1}&nbsp;'/opt/myapp/apache-activemq-5.15.10/bin/activemq&nbsp;stop'"<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"ssh&nbsp;user1@${1}&nbsp;'/opt/myapp/artemis/apache-artemis-2.15.0/instance/bin/artemis-service&nbsp;stop'"<br />&nbsp;&nbsp;&nbsp;&nbsp;ssh&nbsp;user1@${1}&nbsp;'/opt/myapp/apache-activemq-5.15.10/bin/activemq&nbsp;stop'<br />&nbsp;&nbsp;&nbsp;&nbsp;ssh&nbsp;user1@${1}&nbsp;'/opt/myapp/artemis/apache-artemis-2.15.0/instance/bin/artemis-service&nbsp;stop'<br />}<br /><br />scp_artemis_cmd(){<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"ssh&nbsp;user1@${1}&nbsp;'rm&nbsp;-rf&nbsp;/opt/myapp/artemis'"<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"scp&nbsp;-r&nbsp;/opt/myapp/artemis&nbsp;user1@${1}:/opt/myapp/"<br />&nbsp;&nbsp;&nbsp;&nbsp;ssh&nbsp;user1@${1}&nbsp;'rm&nbsp;-rf&nbsp;/opt/myapp/artemis'<br />&nbsp;&nbsp;&nbsp;&nbsp;scp&nbsp;-r&nbsp;/opt/myapp/artemis&nbsp;user1@${1}:/opt/myapp/<br />}<br /><br />stop_artemis(){<br />&nbsp;&nbsp;&nbsp;&nbsp;loop_server&nbsp;stop_artemis_cmd<br />}<br /><br />start_artemis(){<br />&nbsp;&nbsp;&nbsp;&nbsp;loop_server&nbsp;start_artemis_cmd<br />}<br /><br />scp_artemis(){&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;loop_server&nbsp;scp_artemis_cmd<br />}<br /><br />#start_artemis&nbsp;"Hello&nbsp;start_artemis"<br /><br />$1</div><br />执行命令：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->./transfer-artemis.sh&nbsp;start_artemis</div><img src ="http://www.blogjava.net/paulwong/aggbug/435670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-09-24 10:52 <a href="http://www.blogjava.net/paulwong/archive/2020/09/24/435670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux nohup命令详解</title><link>http://www.blogjava.net/paulwong/archive/2020/09/02/435652.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 02 Sep 2020 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/09/02/435652.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435652.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/09/02/435652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435652.html</trackback:ping><description><![CDATA[nohup命令及其输出文件<br /><br />nohup命令：如果你正在运行一个进程，而且你觉得在退出帐户时该进程还不会结束，那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。<br /><br />一般都是在linux下nohup格式：&nbsp;&nbsp;<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->nohup&nbsp;command</div><br />或者<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->nohup&nbsp;command&nbsp;&amp;</div><br />这之间的差别是带&amp;的命令行，即使terminal（终端）关闭，或者电脑死机程序依然运行（前提是你把程序递交到服务器上）；<br /><br />它把标准输出（STDOUT）和标准错误（STDERR）结果输出到nohup.txt文件这个看似很方便，但是当输出很大的时候，nohup.txt文件会非常大，或者多个后台命令的时候大家都会输出到nohup.txt文件，不利于查找结果和调试程序。<br /><br />所以能够重定向输出会非常方便。下面要介绍标准输出，标准输入 和标准错误了。<br /><br />其实我们一直都在用，只是没有注意到，&nbsp;<br /><br />比如<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&gt;./command.sh&nbsp;&gt;&nbsp;output</div><br />#这其中的&gt;就是标准输出符号，其实是 1&gt;output 的缩写<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&gt;./command.sh&nbsp;2&gt;&nbsp;output</div><br />＃这里的2&gt;就是将标准错误输出到output文件里。<br /><br />而0&lt; 则是标准输入了。<br /><br />下面步入正题，重定向后台命令<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&gt;nohup&nbsp;./command.sh&nbsp;&gt;&nbsp;output&nbsp;2&gt;&amp;1&nbsp;&amp;</div><br />解释：前面的nohup 和后面的&amp;我想大家都能明白了把。<br /><br />主要是中间的 2&gt;&amp;1的意思<br /><br />这个意思是把标准错误（2）重定向到标准输出中（1），而标准输出又导入文件output里面， &nbsp; www.2cto.com<br /><br />所以结果是标准错误和标准输出都导入文件output里面了。<br /><br />至于为什么需要将标准错误重定向到标准输出的原因，那就归结为标准错误没有缓冲区，而stdout有。<br /><br />这就会导致 &gt;output 2&gt;output 文件output被两次打开，而stdout和stderr将会竞争覆盖，这肯定不是我门想要的.<br /><br />这就是为什么有人会写成：<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->nohup&nbsp;./command.sh&nbsp;&gt;output&nbsp;2&gt;output</div>出错的原因了<br /><br />##########################<br /><br />最后谈一下/dev/null文件的作用<br /><br />这是一个无底洞，任何东西都可以定向到这里，但是却无法打开。<br /><br />所以一般很大的stdou和stderr当你不关心的时候可以利用stdout和stderr定向到这里<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&gt;./command.sh&nbsp;&gt;/dev/null&nbsp;2&gt;&amp;1</div><img src ="http://www.blogjava.net/paulwong/aggbug/435652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-09-02 11:52 <a href="http://www.blogjava.net/paulwong/archive/2020/09/02/435652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何找出LINUX中消耗CPU最大的应用的PID</title><link>http://www.blogjava.net/paulwong/archive/2020/08/14/435642.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 14 Aug 2020 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/08/14/435642.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435642.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/08/14/435642.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435642.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435642.html</trackback:ping><description><![CDATA[有时查看LINUX时，会发现当前CPU消耗连续保持80%，如何找出是哪个应用呢？<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->top&nbsp;-i&nbsp;//输出应用列表，并隐藏IDEL的应用<br />
P&nbsp;//在列表时，按P，则按CPU的使用排序</div><br /><br />How To Check CPU Utilization In Linux With Command Line<br /><a href="https://phoenixnap.com/kb/check-cpu-usage-load-linux" target="_blank">https://phoenixnap.com/kb/check-cpu-usage-load-linux</a><img src ="http://www.blogjava.net/paulwong/aggbug/435642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-08-14 11:52 <a href="http://www.blogjava.net/paulwong/archive/2020/08/14/435642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shell 脚本替换文件中某个字符串</title><link>http://www.blogjava.net/paulwong/archive/2020/08/07/435636.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 07 Aug 2020 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/08/07/435636.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435636.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/08/07/435636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435636.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435636.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->1、将当前目录下包含jack串的文件中，jack字符串替换为tom<br />sed&nbsp;-i&nbsp;"s/jack/tom/g"&nbsp;`grep&nbsp;"jack"&nbsp;-rl&nbsp;./`<br /><br />2、将某个文件中的jack字符串替换为tom<br /><br />sed&nbsp;-i&nbsp;"s/jack/tom/g"&nbsp;test.txt<br /><br />参考连接：http://blog.csdn.net/lizhi200404520/article/details/7968483</div><img src ="http://www.blogjava.net/paulwong/aggbug/435636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-08-07 18:01 <a href="http://www.blogjava.net/paulwong/archive/2020/08/07/435636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCL 的连接TIME_WAIT太多的处理</title><link>http://www.blogjava.net/paulwong/archive/2020/08/07/435632.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 07 Aug 2020 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/08/07/435632.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435632.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/08/07/435632.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435632.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435632.html</trackback:ping><description><![CDATA[TCP TIME_WAIT 详解<br /><a href="https://www.zhuxiaodong.net/2018/tcp-time-wait-instruction/" target="_blank">https://www.zhuxiaodong.net/2018/tcp-time-wait-instruction/</a><br /><br />mysql服务器，大量tcp连接状态TIME_WAIT<br /><a href="https://www.cnblogs.com/zhjh256/p/6363312.html" target="_blank">https://www.cnblogs.com/zhjh256/p/6363312.html</a><br /><br />linux下释放TIME_WAIT方法<br /><a href="https://blog.csdn.net/u013488847/article/details/46421867" target="_blank">https://blog.csdn.net/u013488847/article/details/46421867</a><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-08-07 10:27 <a href="http://www.blogjava.net/paulwong/archive/2020/08/07/435632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>统计文件行数或LIST目录的条数</title><link>http://www.blogjava.net/paulwong/archive/2020/08/05/435626.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 05 Aug 2020 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/08/05/435626.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435626.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/08/05/435626.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435626.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435626.html</trackback:ping><description><![CDATA[<a href="https://www.thegeekdiary.com/how-to-count-lines-in-a-file-in-unix-linux/" target="_blank">https://www.thegeekdiary.com/how-to-count-lines-in-a-file-in-unix-linux/</a><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-08-05 11:32 <a href="http://www.blogjava.net/paulwong/archive/2020/08/05/435626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录 和ssh常用命令</title><link>http://www.blogjava.net/paulwong/archive/2020/07/31/435622.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 31 Jul 2020 06:19:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/07/31/435622.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435622.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/07/31/435622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435622.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435622.html</trackback:ping><description><![CDATA[<div style="box-sizing: border-box; outline: 0px; margin: 0px; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">ssh-keygen</span>&nbsp; 产生公钥与私钥对.</div><div style="box-sizing: border-box; outline: 0px; margin: 0px; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">ssh-copy-id</span>&nbsp;将本机的公钥复制到远程机器的authorized_keys文件中，ssh-copy-id也能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized_keys的权利</div><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" />第一步:在本地机器上使用ssh-keygen产生公钥私钥对<div id="codeText" style="box-sizing: border-box; outline: 0px; margin: 0px; overflow-wrap: break-word;"><ol style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; overflow-wrap: break-word;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">zhz@zhz:~/$ ssh-keygen<br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" />Generating public/private rsa key pair.<br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" />Enter file in which to save the key (/home/zhz/.ssh/id_rsa):</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">Enter passphrase (empty for no passphrase): [Press enter key</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">same passphrase again: [Pess enter key]</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">Your identification has been saved in /home/zhz/.ssh/id_rsa.</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">Your public key has been saved in /home/zhz/.ssh/id_rsa.pub.</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">The key fingerprint is:</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">用cat命令查看是否生成产生公钥私钥对</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">zhz@zhz:~$ cat .ssh/id_rsa.pub<br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" />ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl9N5+xboqSIagBx02rdZ2fkROCPW8iW7hl6Gu+2hkBYYy/b1qcOm8RF/AMyas3i0QEK7Hcu9H51l2lulVbS5n9M9FaWIyYzssaS012x2mg9iA6MxPMlaXFsZ5jnVrGicndzf3VUu9kCErp5q0OzzMjsG3PKQevzWZJSBaFgc8NF5ZJ+VT54BN8ktMTHVwOo15I2Uai+bs4eP0NsuwIJmGyYIUOuvTuUtJxGV3hZ+tcjhupupqVCwYOE+cDz8VkFBGtnKsdE69hWoY2VUfEOAfHZptra7Ce9dXfDgx9jxuuNiJYtGo/bZDfe+UJ5HUv8wrL+hFeRIihdmP2CKJD8j5 zhz@zhz<br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></li></ol></div>第二步:用ssh-copy-id将公钥复制到远程机器中<div style="box-sizing: border-box; outline: 0px; margin: 0px; overflow-wrap: break-word;"><ol style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; overflow-wrap: break-word;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">zhz@zhz:~$&nbsp; ssh-copy-id -i .ssh/id_rsa.pub&nbsp; 用户名字@192.168.x.xxx<br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">注意:</span>&nbsp;ssh-copy-id&nbsp;<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">将key写到远程机器的 ~/</span>&nbsp;.ssh/authorized_key.文件中</p>第三步:&nbsp;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#115;&#109;&#105;&#116;&#104;&#64;&#108;&#111;&#99;&#97;&#108;&#45;&#104;&#111;&#115;&#116;&#36;" rel="nofollow" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; text-decoration-line: none; cursor: pointer; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; color: #6795b5; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #000000;">登录到</span></a>远程机器不用输入密码<div style="box-sizing: border-box; outline: 0px; margin: 0px; overflow-wrap: break-word;"><ol style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; overflow-wrap: break-word;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">zhz@zhz:~$&nbsp; ssh 用户名字@192.168.x.xxx</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;"><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2</li></ol></div><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">常见问题：</p><div style="box-sizing: border-box; outline: 0px; margin: 0px; overflow-wrap: break-word;"><ol style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; overflow-wrap: break-word;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">ssh-copy-id -u eucalyptus -i ~eucalyptus/.ssh/id_rsa.pub&nbsp;<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#117;&#99;&#97;&#108;&#121;&#112;&#116;&#117;&#115;&#64;&#114;&#101;&#109;&#111;&#116;&#101;&#95;&#104;&#111;&#115;&#116;" rel="nofollow" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; text-decoration-line: none; cursor: pointer; color: #6795b5; overflow-wrap: break-word;">ssh 用户名字@192.168.x.xxx</a></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">第一次需要密码登录<br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></li></ol></div><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">上述是给eucalyptus用户赋予无密码登陆的权利</p><div style="box-sizing: border-box; outline: 0px; margin: 0px; overflow-wrap: break-word;"><ol style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; overflow-wrap: break-word;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;">/usr/bin/ssh-copy-id: ERROR: No identities found</li></ol></div><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">使用选项<em style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">&nbsp;-i</em>&nbsp;，当没有值传递的时候或者&nbsp;如果&nbsp;<em style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">~/.ssh/identity.pub</em>&nbsp;文件不可访问（不存在）,&nbsp;<em style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">ssh-copy-id</em>&nbsp;将显示上述的错误信息&nbsp;&nbsp;（ -i选项会优先使用将ssh-add -L的内容）</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">ssh命令</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"></p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">1、复制SSH密钥到目标主机，开启无密码SSH登录</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh-copy-id user@host</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">如果还没有密钥，请使用ssh-keygen命令生成。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">2、从某主机的80端口开启到本地主机2001端口的隧道</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh -N -L2001:localhost:80 somemachine</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">现在你可以直接在浏览器中输入http://localhost:2001访问这个网站。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">3、将你的麦克风输出到远程计算机的扬声器</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">这样来自你麦克风端口的声音将在SSH目标计算机的扬声器端口输出，但遗憾的是，声音质量很差，你会听到很多嘶嘶声。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">4、比较远程和本地文件</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh user@host cat /path/to/remotefile | diff /path/to/localfile &#8211;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">在比较本地文件和远程文件是否有差异时这个命令很管用。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">5、通过SSH挂载目录/文件系统</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">sshfs name@server:/path/to/folder /path/to/mount/point</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">从<a href="http://fuse.sourceforge.net/sshfs.html" rel="nofollow" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; text-decoration-line: none; cursor: pointer; color: #6795b5; overflow-wrap: break-word;">http://fuse.sourceforge.net/sshfs.html</a>下载sshfs，它允许你跨网络安全挂载一个目录。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">6、通过中间主机建立SSH连接</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh -t reachable_host ssh unreachable_host</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">Unreachable_host表示从本地网络无法直接访问的主机，但可以从reachable_host所在网络访问，这个命令通过到reachable_host的&#8220;隐藏&#8221;连接，创建起到unreachable_host的连接。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">7、将你的SSH公钥复制到远程主机，开启无密码登录 &#8211; 简单的方法</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh-copy-id username@hostname</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">8、直接连接到只能通过主机B连接的主机A</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh -t hostA ssh hostB</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">当然，你要能访问主机A才行。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">9、创建到目标主机的持久化连接</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh -MNf &lt;user&gt;@&lt;host&gt;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">在后台创建到目标主机的持久化连接，将这个命令和你~/.ssh/config中的配置结合使用：</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">Host host ControlPath ~/.ssh/master-%r@%h:%p ControlMaster no</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">所有到目标主机的SSH连接都将使用持久化SSH套接字，如果你使用SSH定期同步文件（使用rsync/sftp/cvs/svn），这个命令将非常有用，因为每次打开一个SSH连接时不会创建新的套接字。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">10、通过SSH连接屏幕</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh -t remote_host screen &#8211;r</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">直接连接到远程屏幕会话（节省了无用的父bash进程）。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">11、端口检测（敲门）</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">knock &lt;host&gt; 3000 4000 5000 &amp;&amp; ssh -p &lt;port&gt; user@host &amp;&amp; knock &lt;host&gt; 5000 4000 3000</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">在一个端口上敲一下打开某个服务的端口（如SSH），再敲一下关闭该端口，需要先安装knockd，下面是一个配置文件示例。</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">[options] logfile = /var/log/knockd.log [openSSH] sequence = 3000,4000,5000 seq_timeout = 5 command = /sbin/iptables -A INPUT -i eth0 -s %IP% -p tcp &#8211;dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 5000,4000,3000 seq_timeout = 5 command = /sbin/iptables -D INPUT -i eth0 -s %IP% -p tcp &#8211;dport 22 -j ACCEPT tcpflags = syn</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">12、删除文本文件中的一行内容，有用的修复</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh-keygen -R &lt;the_offending_host&gt;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">在这种情况下，最好使用专业的工具。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">13、通过SSH运行复杂的远程shell命令</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh host -l user $(&lt;cmd.txt)</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">更具移植性的版本：</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh host -l user &#8220;`cat cmd.txt`&#8221;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">14、通过SSH将MySQL数据库复制到新服务器</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">mysqldump &#8211;add-drop-table &#8211;extended-insert &#8211;force &#8211;log-error=error.log -uUSER -pPASS OLD_DB_NAME | ssh -C user@newhost &#8220;mysql -uUSER -pPASS NEW_DB_NAME&#8221;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">通过压缩的SSH隧道Dump一个MySQL数据库，将其作为输入传递给mysql命令，我认为这是迁移数据库到新服务器最快最好的方法。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">15、删除文本文件中的一行，修复&#8220;SSH主机密钥更改&#8221;的警告</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">sed -i 8d ~/.ssh/known_hosts</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">16、从一台没有SSH-COPY-ID命令的主机将你的SSH公钥复制到服务器</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">cat ~/.ssh/id_rsa.pub | ssh user@machine &#8220;mkdir ~/.ssh; cat &gt;&gt; ~/.ssh/authorized_keys&#8221;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">如果你使用Mac OS X或其它没有ssh-copy-id命令的*nix变种，这个命令可以将你的公钥复制到远程主机，因此你照样可以实现无密码SSH登录。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">17、实时SSH网络吞吐量测试</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">yes | pv | ssh $host &#8220;cat &gt; /dev/null&#8221;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">通过SSH连接到主机，显示实时的传输速度，将所有传输数据指向/dev/null，需要先安装pv。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">如果是Debian：</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">apt-get install pv</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">如果是Fedora：</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">yum install pv</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">（可能需要启用额外的软件仓库）。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">18、如果建立一个可以重新连接的远程GNU screen</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh -t user@some.domain.com /usr/bin/screen &#8211;xRR</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">人们总是喜欢在一个文本终端中打开许多shell，如果会话突然中断，或你按下了&#8220;Ctrl-a d&#8221;，远程主机上的shell不会受到丝毫影响，你可以重新连接，其它有用的screen命令有&#8220;Ctrl-a c&#8221;（打开新的shell）和&#8220;Ctrl-a a&#8221;（在shell之间来回切换），请访问http://aperiodic.net/screen/quick_reference阅读更多关于screen命令的快速参考。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">19、继续SCP大文件</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">rsync &#8211;partial &#8211;progress &#8211;rsh=ssh $file_source $user@$host:$destination_file</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">它可以恢复失败的rsync命令，当你通过VPN传输大文件，如备份的数据库时这个命令非常有用，需要在两边的主机上安装rsync。</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">rsync &#8211;partial &#8211;progress &#8211;rsh=ssh $file_source $user@$host:$destination_file local -&gt; remote</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">或</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">rsync &#8211;partial &#8211;progress &#8211;rsh=ssh $user@$host:$remote_file $destination_file remote -&gt; local</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">20、通过SSH W/ WIRESHARK分析流量</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh root@server.com &#8216;tshark -f &#8220;port !22&#8243; -w -' | wireshark -k -i &#8211;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">使用tshark捕捉远程主机上的网络通信，通过SSH连接发送原始pcap数据，并在wireshark中显示，按下Ctrl+C将停止捕捉，但也会关闭wireshark窗口，可以传递一个&#8220;-c #&#8221;参数给tshark，让它只捕捉&#8220;#&#8221;指定的数据包类型，或通过命名管道重定向数据，而不是直接通过SSH传输给wireshark，我建议你过滤数据包，以节约带宽，tshark可以使用tcpdump替代：</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh root@example.com tcpdump -w &#8211; &#8216;port !22&#8242; | wireshark -k -i &#8211;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">21、保持SSH会话永久打开</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">autossh -M50000 -t server.example.com &#8216;screen -raAd mysession&#8217;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">打开一个SSH会话后，让其保持永久打开，对于使用笔记本电脑的用户，如果需要在Wi-Fi热点之间切换，可以保证切换后不会丢失连接。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">22、更稳定，更快，更强的SSH客户端</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh -4 -C -c blowfish-cbc</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">强制使用IPv4，压缩数据流，使用Blowfish加密。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">23、使用cstream控制带宽</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">tar -cj /backup | cstream -t 777k | ssh host &#8216;tar -xj -C /backup&#8217;</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">使用bzip压缩文件夹，然后以777k bit/s速率向远程主机传输。Cstream还有更多的功能，请访问http://www.cons.org/cracauer/cstream.html#usage了解详情，例如：</p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">echo w00t, i&#8217;m 733+ | cstream -b1 -t2</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">24、一步将SSH公钥传输到另一台机器</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh-keygen; ssh-copy-id user@host; ssh user@host</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">这个命令组合允许你无密码SSH登录，注意，如果在本地机器的~/.ssh目录下已经有一个SSH密钥对，ssh-keygen命令生成的新密钥可能会覆盖它们，ssh-copy-id将密钥复制到远程主机，并追加到远程账号的~/.ssh/authorized_keys文件中，使用SSH连接时，如果你没有使用密钥口令，调用ssh user@host后不久就会显示远程shell。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: 700; overflow-wrap: break-word;">25、将标准输入（stdin）复制到你的X11缓冲区</span></p><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; font-family: Consolas, Inconsolata, Courier, monospace; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px;">ssh user@host cat /path/to/some/file | xclip</pre><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">你是否使用scp将文件复制到工作用电脑上，以便复制其内容到电子邮件中？xclip可以帮到你，它可以将标准输入复制到X11缓冲区，你需要做的就是点击鼠标中键粘贴缓冲区中的内容。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">如果你还有其它SSH命令技巧，欢迎在本文评论中帖出。</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; color: #4d4d4d; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">原文：<a href="http://blog.urfix.com/25-ssh-commands-tricks/" rel="nofollow" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; text-decoration-line: none; cursor: pointer; color: #6795b5; overflow-wrap: break-word;">http://blog.urfix.com/25-ssh-commands-tricks/</a></p><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /><ol style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; font-size: 16px; overflow-wrap: break-word;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;"><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;"><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; overflow-wrap: break-word;"><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #333333; background-color: #ffffff;" /></li></ol><img src ="http://www.blogjava.net/paulwong/aggbug/435622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-07-31 14:19 <a href="http://www.blogjava.net/paulwong/archive/2020/07/31/435622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一次删除前5个以外的其他文件夹的SHELL</title><link>http://www.blogjava.net/paulwong/archive/2020/07/27/435614.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 27 Jul 2020 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/07/27/435614.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435614.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/07/27/435614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435614.html</trackback:ping><description><![CDATA[子文件夹按字母排倒序，只保留前5个，其他的删除。<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->find path/to/folder/ -mindepth 1 -maxdepth 1 -type d |&nbsp;head&nbsp;-n&nbsp;-5&nbsp;|&nbsp;xargs&nbsp;rm&nbsp;-rf<br /><br />-find: the unix command for finding files / directories / links etc.<br />-/path/to/base/dir: the directory to start your search in.<br />-mindepth 1 -maxdepth 1 only search the first sub folder<br />-type d: only find directories<br />-head&nbsp;-n&nbsp;-5:&nbsp;Filter&nbsp;out&nbsp;all&nbsp;lines&nbsp;except&nbsp;the&nbsp;last&nbsp;5<br />-xargs&nbsp;rm&nbsp;-rf:&nbsp;remove&nbsp;each&nbsp;given&nbsp;folder.</div><img src ="http://www.blogjava.net/paulwong/aggbug/435614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-07-27 11:35 <a href="http://www.blogjava.net/paulwong/archive/2020/07/27/435614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一次删除10天前的文件夹的SHELL</title><link>http://www.blogjava.net/paulwong/archive/2020/07/27/435613.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 27 Jul 2020 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/07/27/435613.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435613.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/07/27/435613.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435613.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435613.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->find&nbsp;/path/to/base&nbsp;-mindepth&nbsp;1&nbsp;-maxdepth&nbsp;1&nbsp;-type&nbsp;d&nbsp;-ctime&nbsp;+10&nbsp;|&nbsp;xargs&nbsp;rm&nbsp;-rf<br /><br />-find:&nbsp;the&nbsp;unix&nbsp;command&nbsp;for&nbsp;finding&nbsp;files&nbsp;/&nbsp;directories&nbsp;/&nbsp;links&nbsp;etc.<br />/path/to/base/dir:&nbsp;the&nbsp;directory&nbsp;to&nbsp;start&nbsp;your&nbsp;search&nbsp;in.<br />-type&nbsp;d:&nbsp;only&nbsp;find&nbsp;directories<br />-ctime&nbsp;+10:&nbsp;only&nbsp;consider&nbsp;the&nbsp;ones&nbsp;with&nbsp;modification&nbsp;time&nbsp;older&nbsp;than&nbsp;10&nbsp;days<br />-exec&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;\<span style="color: #008000; ">;</span><span style="color: #008000; ">:&nbsp;for&nbsp;each&nbsp;such&nbsp;result&nbsp;found,&nbsp;do&nbsp;the&nbsp;following&nbsp;command&nbsp;in&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #008000; "><br /></span>-rm&nbsp;-rf&nbsp;dir1&nbsp;dir2&nbsp;dir3&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></div><br /><br /><a href="https://stackoverflow.com/questions/13868821/shell-script-to-delete-directories-older-than-n-days" target="_blank">https://stackoverflow.com/questions/13868821/shell-script-to-delete-directories-older-than-n-days</a><img src ="http://www.blogjava.net/paulwong/aggbug/435613.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-07-27 10:48 <a href="http://www.blogjava.net/paulwong/archive/2020/07/27/435613.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LINUX SHELL</title><link>http://www.blogjava.net/paulwong/archive/2020/07/06/435591.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 06 Jul 2020 01:23:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/07/06/435591.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435591.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/07/06/435591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435591.html</trackback:ping><description><![CDATA[!!<br /><a href="https://tecadmin.net/tutorial/bash-scripting/" target="_blank">https://tecadmin.net/tutorial/bash-scripting/</a><br /><br />Shell 教程<br /><a href="https://www.runoob.com/linux/linux-shell.html" target="_blank">https://www.runoob.com/linux/linux-shell.html</a><br /><br />Check existence of input argument in a Bash shell script<br /><a href="https://stackoverflow.com/questions/6482377/check-existence-of-input-argument-in-a-bash-shell-script" target="_blank">https://stackoverflow.com/questions/6482377/check-existence-of-input-argument-in-a-bash-shell-script</a><br /><br />How to Check if a File or Directory Exists in Bash<br /><a href="https://linuxize.com/post/bash-check-if-file-exists/" target="_blank">https://linuxize.com/post/bash-check-if-file-exists/</a><br /><br />bash string compare to multiple correct values<br /><a href="https://stackoverflow.com/questions/21157435/bash-string-compare-to-multiple-correct-values" target="_blank">https://stackoverflow.com/questions/21157435/bash-string-compare-to-multiple-correct-values</a><br /><br />Bash &#8211; Check If Two Strings are Equal<br /><a href="https://tecadmin.net/tutorial/bash/examples/check-if-two-strings-are-equal/" target="_blank">https://tecadmin.net/tutorial/bash/examples/check-if-two-strings-are-equal/</a><br /><br /><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-07-06 09:23 <a href="http://www.blogjava.net/paulwong/archive/2020/07/06/435591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How To Run Java Jar Application with Systemd on Linux</title><link>http://www.blogjava.net/paulwong/archive/2020/05/11/435427.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 11 May 2020 08:16:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/05/11/435427.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435427.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/05/11/435427.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435427.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435427.html</trackback:ping><description><![CDATA[<a href="https://computingforgeeks.com/how-to-run-java-jar-application-with-systemd-on-linux/" target="_blank">https://computingforgeeks.com/how-to-run-java-jar-application-with-systemd-on-linux/</a><br /><br />systemd自启动java程序<br /><a href="https://www.cnblogs.com/yoyotl/p/8178363.html" target="_blank">https://www.cnblogs.com/yoyotl/p/8178363.html</a><br />------------------------------------------------------------<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">Unit</span><span style="color: #800000; font-weight: bold; ">]</span><br />Description=TestJava<br />After=network.target<br /><br /><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">Service</span><span style="color: #800000; font-weight: bold; ">]</span><br />Type=forking<br />ExecStart=/home/test/startTest.sh<br />ExecStop=/home/test/stopTest.sh<br /><br /><span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">Install</span><span style="color: #800000; font-weight: bold; ">]</span><br />WantedBy=multi-user.target</div><br />-------------------------------------------------------------<br />How to Autorun application at the start up in Linux<br /><a href="https://developer.toradex.com/knowledge-base/how-to-autorun-application-at-the-start-up-in-linux" target="_blank">https://developer.toradex.com/knowledge-base/how-to-autorun-application-at-the-start-up-in-linux</a><br /><br />How to automatically run program on Linux startup<br /><a href="https://www.simplified.guide/linux/automatically-run-program-on-startup" target="_blank">https://www.simplified.guide/linux/automatically-run-program-on-startup</a><br /><br /><br />Systemd 入门教程：实战篇<br /><a href="https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html" target="_blank">https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html</a><br /><br />Systemd 入门教程：命令篇<br /><br /><a href="http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html" target="_blank">http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html</a><img src ="http://www.blogjava.net/paulwong/aggbug/435427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-05-11 16:16 <a href="http://www.blogjava.net/paulwong/archive/2020/05/11/435427.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How to disable IPv6 on CentOS / RHEL 7</title><link>http://www.blogjava.net/paulwong/archive/2020/05/06/435410.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 06 May 2020 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/05/06/435410.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435410.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/05/06/435410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435410.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435410.html</trackback:ping><description><![CDATA[<br />
<a href="https://www.thegeekdiary.com/centos-rhel-7-how-to-disable-ipv6/" target="_blank">https://www.thegeekdiary.com/centos-rhel-7-how-to-disable-ipv6/</a><br />
<br />
<a href="https://linuxconfig.org/redhat-8-enable-disable-ipv6" target="_blank">https://linuxconfig.org/redhat-8-enable-disable-ipv6</a><br /><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-05-06 12:42 <a href="http://www.blogjava.net/paulwong/archive/2020/05/06/435410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How To Count Files in Directory on Linux</title><link>http://www.blogjava.net/paulwong/archive/2020/05/05/435404.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 05 May 2020 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2020/05/05/435404.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/435404.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2020/05/05/435404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/435404.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/435404.html</trackback:ping><description><![CDATA[<a href="https://devconnected.com/how-to-count-files-in-directory-on-linux/" target="_blank">https://devconnected.com/how-to-count-files-in-directory-on-linux/</a><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/435404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2020-05-05 17:01 <a href="http://www.blogjava.net/paulwong/archive/2020/05/05/435404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>