{"title":"TypeCodes","link":[{"@attributes":{"href":"https:\/\/typecodes.com\/","rel":"alternate"}},{"@attributes":{"href":"https:\/\/typecodes.com\/atom.xml","rel":"self"}}],"id":"https:\/\/typecodes.com\/","updated":"2026-03-12T14:00:00+08:00","subtitle":"Beauty of programming","entry":[{"title":"OpenAI\u9650\u5236\u514d\u8d39\u8d26\u53f7\uff08Free Tier\uff09\u4f7f\u7528gpt-5.3-codex \u548c gpt-5.4","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/openairemovefreegpt534.html","rel":"alternate"}},"published":"2026-03-12T14:00:00+08:00","updated":"2026-03-12T14:00:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2026-03-12:\/mix\/openairemovefreegpt534.html","summary":"<p>2026-03-10 \u4e0a\u5348\u53d1\u73b0\u672c\u5730 codex \u65e0\u6cd5\u8c03\u7528 cpa \u670d\u52a1\u5668\u7684 api\uff0c\u4e8e\u662f\u4e0a cpa \u670d\u52a1\u5668\u67e5\u770b\u4e86\u4e00\u4e0b\u8d26\u53f7\uff0c\u53d1\u73b0\u5df2\u7ecf\u65e0\u6cd5\u4f7f\u7528 gpt5.4 \u4e86\u3002\u540c\u65f6 github \u548c openai \u793e\u533a\u4e5f\u6709\u53cd\u9988\u514d\u8d39\u8d26\u53f7\uff08Free Tier\uff09\u7684\u7528\u6237\u65e0\u6cd5\u4f7f\u7528 gpt-5.3-codex \u548c gpt-5.4\u3002<\/p>\n{&quot;detail&quot;:&quot;The &#39;gpt-5.3-codex&#39; model is not supported when using Codex with a ChatGPT account.&quot;}\n{&quot;detail&quot;:&quot;The &#39;gpt-5.4&#39; model is not supported when using Codex with a ChatGPT account.&quot;}\n<\/code><\/pre>\n\n<p><img alt=\"openai\u514d\u8d39\u7528\u6237\u65e0\u6cd5\u4f7f\u7528code5.3\u548c5.4\" src=\"https:\/\/cdn.typecodes.com\/2026\/03\/openairemovefreegpt534_1.png\"><\/p>\n","content":"<p>2026-03-10 \u4e0a\u5348\u53d1\u73b0\u672c\u5730 codex \u65e0\u6cd5\u8c03\u7528 cpa \u670d\u52a1\u5668\u7684 api\uff0c\u4e8e\u662f\u4e0a cpa \u670d\u52a1\u5668\u67e5\u770b\u4e86\u4e00\u4e0b\u8d26\u53f7\uff0c\u53d1\u73b0\u5df2\u7ecf\u65e0\u6cd5\u4f7f\u7528 gpt5.4 \u4e86\u3002\u540c\u65f6 github \u548c openai \u793e\u533a\u4e5f\u6709\u53cd\u9988\u514d\u8d39\u8d26\u53f7\uff08Free Tier\uff09\u7684\u7528\u6237\u65e0\u6cd5\u4f7f\u7528 gpt-5.3-codex \u548c gpt-5.4\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>{&quot;detail&quot;:&quot;The &#39;gpt-5.3-codex&#39; model is not supported when using Codex with a ChatGPT account.&quot;}\n{&quot;detail&quot;:&quot;The &#39;gpt-5.4&#39; model is not supported when using Codex with a ChatGPT account.&quot;}\n<\/code><\/pre><\/div>\n\n<p><img alt=\"openai\u514d\u8d39\u7528\u6237\u65e0\u6cd5\u4f7f\u7528code5.3\u548c5.4\" src=\"https:\/\/cdn.typecodes.com\/2026\/03\/openairemovefreegpt534_1.png\"><\/p>\n\n\n<h3>\u4e00\u3001\u672c\u5730 codex \u5f02\u5e38<\/h3>\n<p>\u4e0a cpa \u670d\u52a1\u5668\u53d1\u73b0 <code>Auth Files<\/code> \u4e2d\u7684\u514d\u8d39\u8d26\u53f7\u5df2\u7ecf\u5168\u90e8\u79fb\u9664\u4e86 <code>gpt-5.3-codex<\/code> \u548c <code>gpt-5.4<\/code> \u8fd9\u4e24\u4e2a\u6a21\u578b\uff0c\u6700\u65b0\u53ef\u7528\u7684 coding \u53ea\u5269\u4e0b <code>gpt-5.2-codex<\/code> \u4e86\u3002<\/p>\n<p><img alt=\"cpa \u670d\u52a1\u5668\u67e5\u770b Auth Files\u514d\u8d39\u8d26\u53f7\u53ea\u80fdgpt-codex-5.2\" src=\"https:\/\/cdn.typecodes.com\/2026\/03\/openairemovefreegpt534_2.png\"><\/p>\n<h3>\u4e8c\u3001\u793e\u533a\u56de\u5e94<\/h3>\n<p>\u5728 github \u4e0a <a href=\"https:\/\/github.com\/openai\/codex\/issues\/14181\">Issue \u00b7 GitHub<\/a> \u548c <a href=\"https:\/\/github.com\/openai\/codex\/issues\/10873\">Codex Desktop App: gpt-5.3-codex not shown in model selector dropdown \u00b7 Issue #10873 \u00b7 openai\/codex<\/a> \u5b98\u65b9\u56de\u5e94\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"k\">If<\/span><span class=\"w\"> <\/span><span class=\"nv\">you<\/span><span class=\"s1\">&#39;re a paid subscriber and are not able to access gpt-5.3-codex or gpt-5.4, please look at my request here. we&#39;<\/span><span class=\"nv\">re<\/span><span class=\"w\"> <\/span><span class=\"nv\">looking<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nv\">a<\/span><span class=\"w\"> <\/span><span class=\"nv\">few<\/span><span class=\"w\"> <\/span><span class=\"nv\">more<\/span><span class=\"w\"> <\/span><span class=\"nv\">affected<\/span><span class=\"w\"> <\/span><span class=\"nv\">users<\/span><span class=\"w\"> <\/span><span class=\"nv\">to<\/span><span class=\"w\"> <\/span><span class=\"nv\">post<\/span><span class=\"w\"> <\/span><span class=\"nv\">their<\/span><span class=\"w\"> <\/span><span class=\"nv\">user<\/span><span class=\"w\"> <\/span><span class=\"nv\">IDs<\/span>.<span class=\"w\"> <\/span><span class=\"nv\">This<\/span><span class=\"w\"> <\/span><span class=\"nv\">will<\/span><span class=\"w\"> <\/span><span class=\"nv\">help<\/span><span class=\"w\"> <\/span><span class=\"nv\">us<\/span><span class=\"w\"> <\/span><span class=\"nv\">investigate<\/span>.\n<\/code><\/pre><\/div>\n\n<p>\u5728 openai \u793e\u533a\u4e0a <a href=\"https:\/\/community.openai.com\/t\/temporary-issue-or-best-available-model-has-been-actually-downgraded-for-free-tier-users\/1376162\">Temporary issue or best available model has been actually downgraded for free tier users? - Codex - OpenAI Developer Community<\/a> \u5b98\u65b9\u56de\u5e94\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nv\">We<\/span>\u2019<span class=\"nv\">ve<\/span><span class=\"w\"> <\/span><span class=\"nv\">limited<\/span><span class=\"w\"> <\/span><span class=\"nv\">access<\/span><span class=\"w\"> <\/span><span class=\"nv\">to<\/span><span class=\"w\"> <\/span><span class=\"nv\">our<\/span><span class=\"w\"> <\/span><span class=\"nv\">latest<\/span><span class=\"w\"> <\/span><span class=\"nv\">models<\/span><span class=\"w\"> <\/span><span class=\"ss\">(<\/span><span class=\"nv\">gpt<\/span><span class=\"o\">-<\/span><span class=\"mi\">5<\/span>.<span class=\"mi\">3<\/span><span class=\"o\">-<\/span><span class=\"nv\">codex<\/span><span class=\"w\"> <\/span><span class=\"nv\">and<\/span><span class=\"w\"> <\/span><span class=\"nv\">gpt<\/span><span class=\"o\">-<\/span><span class=\"mi\">5<\/span>.<span class=\"mi\">4<\/span><span class=\"ss\">)<\/span><span class=\"w\"> <\/span><span class=\"nv\">to<\/span><span class=\"w\"> <\/span><span class=\"nv\">paid<\/span><span class=\"w\"> <\/span><span class=\"nv\">subscriptions<\/span>.<span class=\"w\"> <\/span><span class=\"nv\">This<\/span><span class=\"w\"> <\/span><span class=\"nv\">is<\/span><span class=\"w\"> <\/span><span class=\"nv\">necessary<\/span><span class=\"w\"> <\/span><span class=\"nv\">to<\/span><span class=\"w\"> <\/span><span class=\"nv\">ensure<\/span><span class=\"w\"> <\/span><span class=\"nv\">capacity<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nv\">paid<\/span><span class=\"w\"> <\/span><span class=\"nv\">subscribers<\/span>.<span class=\"w\"> <\/span><span class=\"k\">If<\/span><span class=\"w\"> <\/span><span class=\"nv\">you<\/span>\u2019<span class=\"nv\">re<\/span><span class=\"w\"> <\/span><span class=\"nv\">on<\/span><span class=\"w\"> <\/span><span class=\"nv\">a<\/span><span class=\"w\"> <\/span><span class=\"nv\">Free<\/span><span class=\"w\"> <\/span><span class=\"nv\">plan<\/span>,<span class=\"w\"> <\/span><span class=\"nv\">you<\/span><span class=\"w\"> <\/span><span class=\"nv\">can<\/span><span class=\"w\"> <\/span><span class=\"nv\">still<\/span><span class=\"w\"> <\/span><span class=\"nv\">use<\/span><span class=\"w\"> <\/span><span class=\"nv\">Codex<\/span><span class=\"w\"> <\/span><span class=\"nv\">with<\/span><span class=\"w\"> <\/span><span class=\"nv\">other<\/span><span class=\"w\"> <\/span><span class=\"nv\">models<\/span><span class=\"w\"> <\/span><span class=\"nv\">including<\/span><span class=\"w\"> <\/span><span class=\"nv\">gpt<\/span><span class=\"o\">-<\/span><span class=\"mi\">5<\/span>.<span class=\"mi\">2<\/span><span class=\"o\">-<\/span><span class=\"nv\">codex<\/span>.\n<\/code><\/pre><\/div>\n\n<h3>\u4e09\u3001\u5176\u5b83<\/h3>\n<p>\u76ee\u524d\u793e\u533a\u6709\u5f88\u591a\u9488\u5bf9 gpt free tier \u7528\u6237\u7684\u6ce8\u518c\u673a\uff0c\u5df2\u7ecf\u5728 B \u7ad9\u3001\u6296\u97f3\u7b49\u6e20\u9053\u88ab\u4f20\u5f00\uff0c\u901a\u8fc7\u6ce8\u518c\u673a\u53ef\u4ee5\u5806\u53f7\u6765\u5b9e\u73b0 gpt-5.3-codex \u6216\u8005 gpt-5.4 <code>\u65e0\u9650<\/code> token \u7684\u6f0f\u6d1e\u3002\u5b98\u65b9\u8fd9\u4e00\u64cd\u4f5c\u4e5f\u7b97\u662f <code>\u4ec1\u4e49<\/code> \u4e86\uff08\u867d\u7136\u672c\u4eba\u4e5f\u5728\u4f7f\u7528\uff09\uff0c\u5426\u5219\u53ef\u4ee5\u9488\u5bf9\u6ce8\u518c ip\u3001\u6ce8\u518c\u90ae\u7bb1\u3001\u6ce8\u518c\u65f6\u95f4\u7b49\u7279\u5f81\u5bf9\u8fd9\u4e9b <code>\u6ce8\u518c\u673a<\/code> \u8d26\u53f7\u6279\u91cf\u5c01\u7981\u3002<\/p>\n<p><img alt=\"openai\u514d\u8d39\u7528\u6237\u65e0\u6cd5\u4f7f\u7528code5.3\u548c5.4\" src=\"https:\/\/cdn.typecodes.com\/2026\/03\/openairemovefreegpt534_3.png\"><\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"gtp"}},{"@attributes":{"term":"codex"}},{"@attributes":{"term":"openai"}}]},{"title":"serv00\u5b98\u65b94\u6708\u6e05\u7406\u8ba1\u5212\u548c\u65b0\u670d\u52a1\u6761\u6b3e","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/serv00forbiddennezha.html","rel":"alternate"}},"published":"2025-04-05T16:01:00+08:00","updated":"2025-04-05T16:01:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2025-04-05:\/mix\/serv00forbiddennezha.html","summary":"<p>serv00\u5b98\u65b9\u57282025-04-03\u7a81\u7136\u53d1\u5e03\u4e86<code>02.04.2025 - 06.04.2025<\/code>\u7684\u6e05\u7406\u8ba1\u5212\u3010April cleaning and new ToS\u3011\uff0c\u5e76\u7981\u6b62\u4e86<code>fastdownload<\/code>\u3001<code>p2p<\/code>\u3001<code>\u76d7\u7248<\/code>\u3001<code>\u7f51\u7edc\u653b\u51fb\u5de5\u5177\/\u811a\u672c<\/code>\u7b49\u5185\u5bb9\u7684\u6258\u7ba1\u3002<\/p>\nTo maintain the quality of our free services, we will be conducting a series of verification operations.\nNew points will be added to the list every week.\n<\/code><\/pre>\n\n","content":"<p>serv00\u5b98\u65b9\u57282025-04-03\u7a81\u7136\u53d1\u5e03\u4e86<code>02.04.2025 - 06.04.2025<\/code>\u7684\u6e05\u7406\u8ba1\u5212\u3010April cleaning and new ToS\u3011\uff0c\u5e76\u7981\u6b62\u4e86<code>fastdownload<\/code>\u3001<code>p2p<\/code>\u3001<code>\u76d7\u7248<\/code>\u3001<code>\u7f51\u7edc\u653b\u51fb\u5de5\u5177\/\u811a\u672c<\/code>\u7b49\u5185\u5bb9\u7684\u6258\u7ba1\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>To maintain the quality of our free services, we will be conducting a series of verification operations.\nNew points will be added to the list every week.\n<\/code><\/pre><\/div>\n\n\n\n<h3>\u4e00\u3001\u6e05\u7406\u7684\u5bf9\u8c61<\/h3>\n<p>\u6839\u636e<a href=\"https:\/\/forum.serv00.com\/d\/2787-april-cleaning-and-new-tos\">\u516c\u544a\u5185\u5bb9<\/a>\uff0c\u6e05\u7406\u7684\u5bf9\u8c61\u5305\u62ec\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">02.04.2025<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mf\">06.04.2025<\/span>\n<span class=\"n\">Detecting<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">blocking<\/span><span class=\"w\"> <\/span><span class=\"n\">accounts<\/span><span class=\"w\"> <\/span><span class=\"n\">using<\/span><span class=\"w\"> <\/span><span class=\"kr\">for<\/span><span class=\"n\">bidden<\/span><span class=\"w\"> <\/span><span class=\"n\">software<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">including<\/span><span class=\"p\">:<\/span>\n<span class=\"err\">\ud83d\udeab<\/span><span class=\"w\"> <\/span><span class=\"n\">Proxy<\/span><span class=\"w\"> <\/span><span class=\"n\">software<\/span>\n<span class=\"err\">\ud83d\udeab<\/span><span class=\"w\"> <\/span><span class=\"n\">VPN<\/span>\n<span class=\"err\">\ud83d\udeab<\/span><span class=\"w\"> <\/span><span class=\"n\">Tunneling<\/span><span class=\"w\"> <\/span><span class=\"n\">software<\/span>\n<span class=\"err\">\ud83d\udeab<\/span><span class=\"w\"> <\/span><span class=\"n\">Alist<\/span>\n<span class=\"err\">\ud83d\udeab<\/span><span class=\"w\"> <\/span><span class=\"n\">Nezha<\/span>\n<span class=\"err\">\ud83d\udeab<\/span><span class=\"w\"> <\/span><span class=\"n\">Hikka<\/span>\n<span class=\"err\">\ud83d\udeab<\/span><span class=\"w\"> <\/span><span class=\"n\">Randomly<\/span><span class=\"w\"> <\/span><span class=\"n\">named<\/span><span class=\"w\"> <\/span><span class=\"n\">binaries<\/span>\n<span class=\"err\">\ud83d\udeab<\/span><span class=\"w\"> <\/span><span class=\"n\">Binary<\/span><span class=\"w\"> <\/span><span class=\"n\">names<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">don<\/span><span class=\"err\">&#39;<\/span><span class=\"n\">t<\/span><span class=\"w\"> <\/span><span class=\"n\">match<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">software<\/span>\n\n<span class=\"err\">\u26a0\ufe0f<\/span><span class=\"w\"> <\/span><span class=\"kr\">To<\/span><span class=\"w\"> <\/span><span class=\"n\">keep<\/span><span class=\"w\"> <\/span><span class=\"n\">your<\/span><span class=\"w\"> <\/span><span class=\"n\">account<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"c1\">remove any of the above.<\/span>\n<span class=\"err\">\u2705<\/span><span class=\"w\"> <\/span><span class=\"kr\">If<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"w\"> <\/span><span class=\"n\">don<\/span><span class=\"err\">\u2019<\/span><span class=\"n\">t<\/span><span class=\"w\"> <\/span><span class=\"n\">use<\/span><span class=\"w\"> <\/span><span class=\"n\">anything<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"n\">this<\/span><span class=\"w\"> <\/span><span class=\"kr\">list<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">your<\/span><span class=\"w\"> <\/span><span class=\"n\">account<\/span><span class=\"w\"> <\/span><span class=\"n\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">safe<\/span><span class=\"err\">!<\/span>\n<\/code><\/pre><\/div>\n\n<h3>\u4e8c\u3001\u8d26\u53f7\u88ab\u7981\u7528<\/h3>\n<p>\u7531\u4e8e\u81ea\u5df1\u7684s13\u5b89\u88c5\u4e86<code>Nezha<\/code>\uff0c\u521a\u767b\u5f55\u673a\u5668\u67e5\u770b\u4e86\u4e0b\uff0c\u5df2\u7ecf\u88ab\u7981\u7528\u4e86\uff1aTHE ACCOUNT HAS BEEN BLOCKED: ToS violation: forbidden software - nezha \u3002<\/p>\n<p><img alt=\"serv00_forbidden_nezha\" src=\"https:\/\/cdn.typecodes.com\/2025\/04\/serv00_forbidden_nezha.png\"><\/p>\n<h3>\u4e09\u3001\u89e3\u51b3\u65b9\u6848<\/h3>\n<p>\u53ea\u80fd\u9759\u89c2\u5176\u53d8\u5566\uff0c\u7b49\u5f85\u5b98\u65b96\u67084\u53f7\u5b98\u65b9\u6e05\u7406\u5b8c\u6bd5\u540e\u518d\u8bf4\u3002\u5f53\u524d\u5982\u679c\u5b89\u88c5\u4e86\u4e0a\u8ff0\u6e05\u7406\u5bf9\u8c61\u7684\uff0c\u53ef\u4ee5\u5148\u5378\u8f7d\uff0c\u4e0d\u8981\u9876\u98ce\u4f5c\u6848\u3002<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"\u54ea\u5412\u63a2\u9488"}}]},{"title":"github workflow\u6784\u5efa\u54ea\u5412\u63a2\u9488FreeBSD\u5b89\u88c5\u5305","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/githubworkflownezhafreebsdserv00.html","rel":"alternate"}},"published":"2025-02-09T18:30:00+08:00","updated":"2025-02-09T18:30:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2025-02-09:\/linux\/githubworkflownezhafreebsdserv00.html","summary":"<p>\u4e4b\u524d\u5199\u4e86\u5173\u4e8e<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html\">\u5982\u4f55\u5728serv00\/ct8\u673a\u5668\u4e0a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488<\/a>\u7684\u5185\u5bb9\uff0c\u8fd9\u91cc\u4e3b\u8981\u5206\u4eab\u4e0b\u5982\u4f55\u6784\u5efa\u8fd9\u79cd\u8fd0\u884c\u5728<code>serv00\/ct8<\/code>\u8fd9\u79cd<code>FreeBSD<\/code>\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u7684\u54ea\u5412\u63a2\u9488\u9762\u677f\u4e8c\u8fdb\u5236\u5b89\u88c5\u5305\u3002<\/p>\n<p>\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4e86\u5f53\u7684\u5728github\u4e0a\u67e5\u770b<a href=\"https:\/\/github.com\/vfhky\/nezha-build\">https:\/\/github.com\/vfhky\/nezha-build<\/a>\u7684\u6e90\u4ee3\u7801\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4e0b\u8f7d\u4ee3\u7801\u6784\u5efa\u51fa\u6765\u7684\u53ef\u7528\u4e8e<code>serv00\/ct8<\/code>\u8fd9\u79cd<code>FreeBSD<\/code>\u4e3b\u673a\u7684<a href=\"https:\/\/github.com\/vfhky\/nezha-build\/releases\">\u54ea\u5412\u9762\u677f\u5b89\u88c5\u5305<\/a>\u3002<\/p>\n<p><img alt=\"https:\/\/github.com\/vfhky\/nezha-build\" src=\"https:\/\/cdn.typecodes.com\/2025\/02\/githubworkflownezhafreebsdserv00_1.png\"><\/p>\n","content":"<p>\u4e4b\u524d\u5199\u4e86\u5173\u4e8e<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html\">\u5982\u4f55\u5728serv00\/ct8\u673a\u5668\u4e0a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488<\/a>\u7684\u5185\u5bb9\uff0c\u8fd9\u91cc\u4e3b\u8981\u5206\u4eab\u4e0b\u5982\u4f55\u6784\u5efa\u8fd9\u79cd\u8fd0\u884c\u5728<code>serv00\/ct8<\/code>\u8fd9\u79cd<code>FreeBSD<\/code>\u64cd\u4f5c\u7cfb\u7edf\u4e0a\u7684\u54ea\u5412\u63a2\u9488\u9762\u677f\u4e8c\u8fdb\u5236\u5b89\u88c5\u5305\u3002<\/p>\n<p>\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4e86\u5f53\u7684\u5728github\u4e0a\u67e5\u770b<a href=\"https:\/\/github.com\/vfhky\/nezha-build\">https:\/\/github.com\/vfhky\/nezha-build<\/a>\u7684\u6e90\u4ee3\u7801\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4e0b\u8f7d\u4ee3\u7801\u6784\u5efa\u51fa\u6765\u7684\u53ef\u7528\u4e8e<code>serv00\/ct8<\/code>\u8fd9\u79cd<code>FreeBSD<\/code>\u4e3b\u673a\u7684<a href=\"https:\/\/github.com\/vfhky\/nezha-build\/releases\">\u54ea\u5412\u9762\u677f\u5b89\u88c5\u5305<\/a>\u3002<\/p>\n<p><img alt=\"https:\/\/github.com\/vfhky\/nezha-build\" src=\"https:\/\/cdn.typecodes.com\/2025\/02\/githubworkflownezhafreebsdserv00_1.png\"><\/p>\n\n\n<h3>\u4e00\u3001\u80cc\u666f<\/h3>\n<p>\u7531\u4e8e<a href=\"https:\/\/github.com\/nezhahq\/nezha\/releases\">\u54ea\u5412\u5b98\u65b9<\/a>\u6ca1\u6709\u63d0\u4f9b<code>FreeBSD<\/code>\u7684dashboard\u9762\u677f\u5b89\u88c5\u5305\uff0c\u6240\u4ee5\u5982\u679c\u60f3\u5728<code>serv00\/ct8<\/code>\u4e0a\u4f7f\u7528\u5c31\u5f97\u5148\u81ea\u5df1\u6784\u5efa\u4e00\u4e2a\u3002<\/p>\n<p>\u53ef\u4ee5\u770b\u5230<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">serv00_ct8_nezha<\/a>\u9879\u76ee\u6700\u521d\u7684\u51e0\u4e2a\u7248\u672c(\u4e5f\u662f\u54ea\u5412\u63a2\u9488V0\u7248\u672c\u671f\u95f4)\uff0c\u662f\u5728\u5b89\u88c5\u671f\u95f4\u76f4\u63a5\u62c9\u53d6\u5b98\u65b9\u6e90\u4ee3\u7801\u6784\u5efa\u51fa\u6765\u7684\uff1a\u5373\u5728<code>serv00\/ct8<\/code>\u673a\u5668\u5b89\u88c5\u63a2\u9488\u9762\u677f\u65f6\uff0c\u4f1a\u5148\u7528\u547d\u4ee4<code>go build -ldflags=\"-s -w --extldflags '-static -fpic' -X github.com\/naiba\/nezha\/service\/singleton.Version=${version_num}\"<\/code>\u6784\u5efa\u5f97\u5230\u5b89\u88c5\u5305\u7136\u540e\u518d\u5b89\u88c5\u3002<\/p>\n<p>\u8fd9\u6837\u5e26\u6765\u7684\u95ee\u9898\u5c31\u662f<code>\u6bcf\u6b21\u5b89\u88c5\u6216\u8005\u5347\u7ea7<\/code>dashboard\u9762\u677f\u65f6\u90fd\u4f1a\u6d88\u8017\u8f83\u957f\u65f6\u95f4\uff0c\u6240\u4ee5\u572824\u5e7410\u6708\u505a\u4e86<a href=\"(https:\/\/github.com\/vfhky\/serv00_ct8_nezha\/commit\/07db62f4dba03d04073905fb7c9f7a8b9bfd92c4)\">\u4f18\u5316<\/a>\uff1a<\/p>\n<ol>\n<li>\u521b\u5efa\u4e00\u4e2a\u65b0\u7684github\u5de5\u7a0b<a href=\"https:\/\/github.com\/vfhky\/nezha-build\">nezha-build<\/a>\u4f7f\u7528 workflow \u6765\u6784\u5efa\u54ea\u5412\u9762\u677f<code>FreeBSD<\/code>\u5b89\u88c5\u5305\uff1b<\/li>\n<li>\u539f\u6709github\u5de5\u7a0b<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">serv00_ct8_nezha<\/a>\u89e3\u8026\u540e\u5c31\u53ea\u9700\u4ece nezha-build \u4e0b\u8f7d<code>FreeBSD<\/code>\u5305\u5b89\u88c5\u5373\u53ef\u3002<\/li>\n<\/ol>\n<h3>\u4e8c\u3001\u5f00\u542fCGO<\/h3>\n<p>\u54ea\u5412\u63a2\u9488dashboard\u9762\u677f\u662fgo\u8bed\u8a00\u5f00\u53d1\u7684\uff0c\u4f46\u662f\u4f7f\u7528\u4e86<code>go-sqlite3<\/code>\u9a71\u52a8\uff0c\u6240\u4ee5\u5728\u4ea4\u53c9\u7f16\u8bd1\u7684\u65f6\u5019\u5fc5\u987b\u5f97\u8bbe\u7f6e<code>CGO_ENABLED=1<\/code>\uff0c\u5426\u5219\u5c31\u4f1a\u5f97\u5230<code>go-sqlite3 requires cgo to work<\/code>\u7684\u9519\u8bef\uff1a<\/p>\n<p><img alt=\"https:\/\/github.com\/vfhky\/nezha-build\" src=\"https:\/\/cdn.typecodes.com\/2025\/02\/githubworkflownezhafreebsdserv00_2.png\"><\/p>\n<h3>\u4e09\u3001\u4ea4\u53c9\u7f16\u8bd1\u7684\u56f0\u5c40<\/h3>\n<p>\u5728\u5f00\u542f<code>CGO<\/code>\u7684\u524d\u63d0\u4e0b\uff0c\u6700\u521d<a href=\"https:\/\/github.com\/vfhky\/nezha-build\">nezha-build<\/a>\u5de5\u7a0b\u5c1d\u8bd5\u5728github workflow\u4e2d\u4f7f\u7528 Ubuntu \u73af\u5883\uff0c\u7136\u540e\u4f7f\u7528\u4ea4\u53c9\u7f16\u8bd1\u5de5\u5177\u94fe\uff08\u5982 Clang\u3001musl-tools\uff09\u6765\u6784\u5efa FreeBSD amd64 \u4e8c\u8fdb\u5236\u6587\u4ef6\u3002\u4f46\u5b9e\u9645\u64cd\u4f5c\u4e2d\uff0c\u5374\u9047\u5230\u4e86\u5404\u79cd\u68d8\u624b\u7684\u96be\u9898\uff1a\u4e3b\u8981\u662f\u7f3a\u5c11<code>FreeBSD C<\/code>\u5934\u6587\u4ef6\u3002<\/p>\n<h4>3.1 \u4f7f\u7528clang\u7f16\u8bd1<\/h4>\n<p>\u5148\u8d34\u4e00\u4e0bworkflow\u6838\u5fc3\u4ee3\u7801\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"w\">      <\/span>-<span class=\"w\"> <\/span>name:<span class=\"w\"> <\/span>Build\n<span class=\"w\">        <\/span>uses:<span class=\"w\"> <\/span>goreleaser\/goreleaser-action@v6\n<span class=\"w\">        <\/span>env:\n<span class=\"w\">          <\/span>GOOS:<span class=\"w\"> <\/span><span class=\"cp\">${<\/span><span class=\"p\">{<\/span> <span class=\"n\">matrix<\/span><span class=\"o\">.<\/span><span class=\"n\">goos<\/span> <span class=\"cp\">}<\/span>}\n<span class=\"w\">          <\/span>GOARCH:<span class=\"w\"> <\/span><span class=\"cp\">${<\/span><span class=\"p\">{<\/span> <span class=\"n\">matrix<\/span><span class=\"o\">.<\/span><span class=\"n\">goarch<\/span> <span class=\"cp\">}<\/span>}\n<span class=\"w\">          <\/span>CGO_ENABLED:<span class=\"w\"> <\/span>1\n<span class=\"w\">          <\/span>CC:<span class=\"w\"> <\/span>\/usr\/bin\/clang\n<span class=\"w\">        <\/span>with:\n<span class=\"w\">          <\/span>distribution:<span class=\"w\"> <\/span>goreleaser\n<span class=\"w\">          <\/span>version:<span class=\"w\"> <\/span>&quot;~&gt;<span class=\"w\"> <\/span>v2&quot;\n<span class=\"w\">          <\/span>workdir:<span class=\"w\"> <\/span>nezha\n<span class=\"w\">          <\/span>args:<span class=\"w\"> <\/span>build<span class=\"w\"> <\/span>--single-target<span class=\"w\"> <\/span>--clean<span class=\"w\"> <\/span>--skip=validate\n<\/code><\/pre><\/div>\n\n<p>\u7136\u540e\u8fd0\u884cworkflow\u62a5\u9519\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">\u2502<\/span><span class=\"w\"> <\/span><span class=\"n\">build<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">build<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">freebsd_amd64_v1<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">exit<\/span><span class=\"w\"> <\/span><span class=\"n\">status<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"c1\"># runtime\/cgo<\/span>\n<span class=\"err\">\u2502<\/span><span class=\"w\"> <\/span><span class=\"n\">In<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"n\">included<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"n\">_cgo_export<\/span><span class=\"o\">.<\/span><span class=\"n\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">3<\/span><span class=\"p\">:<\/span>\n<span class=\"err\">\u2502<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">include<\/span><span class=\"o\">\/<\/span><span class=\"n\">stdlib<\/span><span class=\"o\">.<\/span><span class=\"n\">h<\/span><span class=\"p\">:<\/span><span class=\"mi\">25<\/span><span class=\"p\">:<\/span><span class=\"mi\">10<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">fatal<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;bits\/libc-header-start.h&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">found<\/span>\n<span class=\"err\">\u2502<\/span><span class=\"w\"> <\/span><span class=\"n\">target<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">freebsd_amd64_v1<\/span>\n<span class=\"n\">Error<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;\/__t\/goreleaser-action\/2.6.1\/x64\/goreleaser&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"n\">exit<\/span><span class=\"w\"> <\/span><span class=\"n\">code<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u539f\u56e0\uff1a\u5728 Go runtime \u5c1d\u8bd5\u7f16\u8bd1\u5176 C \u4ee3\u7801\u90e8\u5206\u65f6\uff0c\u4f1a\u9ed8\u8ba4\u4f7f\u7528\u5f53\u524d Ubuntu \u7cfb\u7edf\u4e2d\u7684 glibc \u5934\u6587\u4ef6\uff0c\u5bfc\u81f4\u7f16\u8bd1\u5668\u5c1d\u8bd5\u5305\u542b bits\/libc-header-start.h\uff0c\u4ece\u800c\u5f15\u53d1\u9519\u8bef\u3002<\/p>\n<h4>3.2 \u4f7f\u7528musl-tools\u7f16\u8bd1<\/h4>\n<p>\u5148\u8d34\u4e00\u4e0bworkflow\u6838\u5fc3\u4ee3\u7801\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"w\">      <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"n\">name<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Install<\/span><span class=\"w\"> <\/span><span class=\"n\">dependencies<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">run<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span>\n<span class=\"w\">          <\/span><span class=\"n\">apt<\/span><span class=\"o\">-<\/span><span class=\"n\">get<\/span><span class=\"w\"> <\/span><span class=\"n\">install<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">y<\/span><span class=\"w\"> <\/span><span class=\"n\">clang<\/span><span class=\"w\"> <\/span><span class=\"n\">lld<\/span><span class=\"w\"> <\/span><span class=\"n\">musl<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span>\n<span class=\"w\">      <\/span><span class=\"o\">.......................<\/span>\n\n<span class=\"w\">      <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"n\">name<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Build<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">uses<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">goreleaser<\/span><span class=\"o\">\/<\/span><span class=\"n\">goreleaser<\/span><span class=\"o\">-<\/span><span class=\"n\">action<\/span><span class=\"err\">@<\/span><span class=\"n\">v6<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">env<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">          <\/span><span class=\"n\">GOOS<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">$<\/span><span class=\"p\">{{<\/span><span class=\"w\"> <\/span><span class=\"n\">matrix<\/span><span class=\"o\">.<\/span><span class=\"n\">goos<\/span><span class=\"w\"> <\/span><span class=\"p\">}}<\/span>\n<span class=\"w\">          <\/span><span class=\"n\">GOARCH<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">$<\/span><span class=\"p\">{{<\/span><span class=\"w\"> <\/span><span class=\"n\">matrix<\/span><span class=\"o\">.<\/span><span class=\"n\">goarch<\/span><span class=\"w\"> <\/span><span class=\"p\">}}<\/span>\n<span class=\"w\">          <\/span><span class=\"n\">CGO_ENABLED<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"w\">          <\/span><span class=\"n\">CC<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"n\">musl<\/span><span class=\"o\">-<\/span><span class=\"n\">gcc<\/span><span class=\"w\"> <\/span><span class=\"c1\"># Use musl-gcc symlink<\/span>\n<span class=\"w\">          <\/span><span class=\"n\">LDFLAGS<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;-static&quot;<\/span><span class=\"w\"> <\/span><span class=\"c1\"># Crucial: Static linking with musl<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7136\u540e\u8fd0\u884cworkflow\u62a5\u9519\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">\u2502<\/span><span class=\"w\"> <\/span><span class=\"n\">build<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">build<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">freebsd_amd64_v1<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">exit<\/span><span class=\"w\"> <\/span><span class=\"n\">status<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"c1\"># runtime\/cgo<\/span>\n<span class=\"err\">\u2502<\/span><span class=\"w\"> <\/span><span class=\"n\">gcc_freebsd_amd64<\/span><span class=\"o\">.<\/span><span class=\"n\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">7<\/span><span class=\"p\">:<\/span><span class=\"mi\">10<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">fatal<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">sys<\/span><span class=\"o\">\/<\/span><span class=\"n\">signalvar<\/span><span class=\"o\">.<\/span><span class=\"n\">h<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">such<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"n\">directory<\/span>\n<span class=\"err\">\u2502<\/span><span class=\"w\">     <\/span><span class=\"mi\">7<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"c1\">#include &lt;sys\/signalvar.h&gt;<\/span>\n<span class=\"err\">\u2502<\/span><span class=\"w\">       <\/span><span class=\"o\">|<\/span><span class=\"w\">          <\/span><span class=\"o\">^~~~~~~~~~~~~~~~~<\/span>\n<span class=\"err\">\u2502<\/span><span class=\"w\"> <\/span><span class=\"n\">compilation<\/span><span class=\"w\"> <\/span><span class=\"n\">terminated<\/span><span class=\"o\">.<\/span>\n<span class=\"err\">\u2502<\/span><span class=\"w\"> <\/span><span class=\"n\">target<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">freebsd_amd64_v1<\/span>\n<span class=\"n\">Error<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;\/__t\/goreleaser-action\/2.6.1\/x64\/goreleaser&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"n\">exit<\/span><span class=\"w\"> <\/span><span class=\"n\">code<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u539f\u56e0\uff1a\u540c\u6837\u7684\uff0csys\/signalvar.h \u662f FreeBSD \u7279\u6709\u7684\u7cfb\u7edf\u5934\u6587\u4ef6\uff0c\u5b83\u5728 Ubuntu \u7cfb\u7edf\u4e2d\u5e76\u4e0d\u5b58\u5728\u3002\u5c3d\u7ba1\u6211\u5c1d\u8bd5\u4f7f\u7528 musl-gcc \u4f5c\u4e3a\u4ea4\u53c9\u7f16\u8bd1\u5668\uff0c\u4f46\u662f Go runtime \u81ea\u8eab\u7684 C \u4ee3\u7801\u4ecd\u7136\u4f1a\u5c1d\u8bd5\u4f7f\u7528 Ubuntu \u7cfb\u7edf\u4e2d\u7684\u5934\u6587\u4ef6\uff0c\u5bfc\u81f4\u7f16\u8bd1\u5668\u65e0\u6cd5\u627e\u5230 sys\/signalvar.h\u3002<\/p>\n<h4>3.3 \u56f0\u5c40<\/h4>\n<p>\u901a\u8fc7\u591a\u6b21\u6784\u5efa\uff0c\u6211\u53d1\u73b0\u5373\u4f7f\u4f7f\u7528\u4e86clang \u3001musl-tools \u548c\u5176\u5b83\u4ea4\u53c9\u7f16\u8bd1\u5de5\u5177\u94fe\uff0c\u4ecd\u7136\u65e0\u6cd5\u5728 Ubuntu \u73af\u5883\u4e0b\u6210\u529f\u6784\u5efa FreeBSD amd64 \u4e8c\u8fdb\u5236\u6587\u4ef6\u3002<\/p>\n<h3>\u56db\u3001\u89e3\u51b3\u65b9\u6848\uff1avmactions\/freebsd-vm<\/h3>\n<p>\u4e0a\u8ff0\u95ee\u9898\u5f52\u6839\u7ed3\u5e95\u662f\u7531\u4e8e\u6784\u5efa\u73af\u5883\u4e0d\u4e00\u81f4\u5bfc\u81f4\u7684\u3002\u6211\u5728 Ubuntu \u73af\u5883\u4e2d\u5c1d\u8bd5\u6784\u5efa FreeBSD \u7a0b\u5e8f\uff0c\u867d\u7136\u4f7f\u7528\u4e86\u4ea4\u53c9\u7f16\u8bd1\u5de5\u5177\uff0c\u4f46\u662f Go runtime \u4ecd\u7136\u4f1a\u53d7\u5230 Ubuntu \u7cfb\u7edf\u5e93\u7684\u5f71\u54cd\u3002\u56e0\u6b64\uff0c\u6211\u9700\u8981\u4e00\u4e2a\u771f\u6b63\u7684 FreeBSD \u73af\u5883\u6765\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<p><a href=\"https:\/\/github.com\/vmactions\/freebsd-vm\">vmactions\/freebsd-vm<\/a> \u6b63\u662f\u4e3a\u6b64\u800c\u751f\uff0c\u5b83\u53ef\u4ee5\u5728 GitHub Actions \u5de5\u4f5c\u6d41\u7a0b\u4e2d\u542f\u52a8\u4e00\u4e2a\u771f\u5b9e\u7684 FreeBSD \u865a\u62df\u673a\uff0c\u63d0\u4f9b\u4e00\u4e2a\u4e0e\u76ee\u6807\u73af\u5883\u5b8c\u5168\u4e00\u81f4\u7684\u6784\u5efa\u73af\u5883\uff0c\u4ece\u800c\u5f7b\u5e95\u89e3\u51b3\u4ea4\u53c9\u7f16\u8bd1\u5e26\u6765\u7684\u5404\u79cd\u95ee\u9898\u3002<\/p>\n<p><code>vmactions\/freebsd-vm<\/code>\u7684\u5927\u81f4\u539f\u7406\uff1a\u4f9d\u8d56\u4e8e QEMU \u8fdb\u884c\u865a\u62df\u5316\uff0c\u5e76\u901a\u8fc7 SSH \u8fdb\u884c\u8fdc\u7a0b\u63a7\u5236\uff0c\u4ee5\u5b9e\u73b0\u81ea\u52a8\u5316\u4efb\u52a1\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mi\">1<\/span><span class=\"err\">\u3001\u5728<\/span><span class=\"n\">Ubuntu\u4e2d\u8fd0\u884c<\/span><span class=\"w\"> <\/span><span class=\"n\">QEMU<\/span><span class=\"err\">\uff0c\u7136\u540e\u521b\u5efa<\/span><span class=\"w\"> <\/span><span class=\"n\">FreeBSD<\/span><span class=\"w\"> <\/span><span class=\"err\">\u865a\u62df\u673a\uff1b<\/span>\n<span class=\"mi\">2<\/span><span class=\"err\">\u3001\u4f7f\u7528\u9884\u6784\u5efa\u7684<\/span><span class=\"w\"> <\/span><span class=\"n\">FreeBSD<\/span><span class=\"w\"> <\/span><span class=\"err\">\u78c1\u76d8\u955c\u50cf\u3002\u4ece\u6e90\u4ee3\u7801\u4e2d\u7684<\/span><span class=\"n\">freebsd<\/span><span class=\"o\">-<\/span><span class=\"n\">vm<\/span><span class=\"o\">\/<\/span><span class=\"n\">conf<\/span><span class=\"o\">\/<\/span><span class=\"mf\">14.1<\/span><span class=\"o\">.<\/span><span class=\"n\">conf\u53ef\u4ee5\u770b\u5230\u8bf8\u5982<\/span>\n<span class=\"n\">OVA_LINK<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;https:\/\/github.com\/vmactions\/freebsd-builder\/releases\/download\/v${BUILDER_VERSION}\/freebsd-${VM_RELEASE}.qcow2.zst&quot;<\/span>\n<span class=\"mi\">3<\/span><span class=\"err\">\u3001\u4f7f\u7528<\/span><span class=\"n\">SSH\u516c\u79c1\u94a5\u8fde\u63a5<\/span><span class=\"w\"> <\/span><span class=\"n\">FreeBSD<\/span><span class=\"w\"> <\/span><span class=\"err\">\u865a\u62df\u673a\uff0c\u4e0a\u4f20\u54ea\u5412\u63a2\u9488<\/span><span class=\"n\">dashboard\u9762\u677f\u6e90\u7801\u5e76\u6784\u5efa<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h3>\u4e94\u3001\u603b\u7ed3<\/h3>\n<p>\u53ef\u4ee5\u770b\u5230\u5728\u76f8\u8f83\u4e8e\u5f00\u542f<code>CGO<\/code>\u540e\u4ea4\u53c9\u7f16\u8bd1\u6784\u5efa\u54ea\u5412\u63a2\u9488\u9762\u677f<code>FreeBSD<\/code>\u5b89\u88c5\u5305\u7684\u590d\u6742\uff0c\u4f7f\u7528<code>vmactions\/freebsd-vm<\/code>\u63d0\u4f9b\u7684\u771f\u5b9eFreeBSD\u6784\u5efa\u73af\u5883\u53ef\u4ee5\u5f88\u7b80\u5355\u7684\u5b9e\u73b0\u3002<\/p>\n<p>\u6700\u540e\uff0c\u5927\u5bb6\u53ef\u4ee5\u5728 <a href=\"https:\/\/github.com\/vfhky\/nezha-build\">https:\/\/github.com\/vfhky\/nezha-build<\/a> \u67e5\u770b\u5b9e\u73b0\u7684\u6e90\u4ee3\u7801\u3002\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4e0b\u8f7d\u6784\u5efa\u597d\u7684\u54ea\u5412\u63a2\u9488dashboard\u9762\u677f\uff08<code>FreeBSD<\/code>\u7248\u672c\uff09\uff0c\u76ee\u524d\u8bbe\u7f6e\u6bcf\u59298\u70b9\u300116\u70b9\u300124\u70b9\u62c9\u53d6\u5b98\u65b9\u6700\u65b0\u4ee3\u7801\u8fdb\u884c\u6784\u5efa\uff0c\u4ee5\u4fbf<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488V1\u7248\u672c<\/a>\u5de5\u7a0b\u80fd\u4e0b\u8f7d\u548c\u5b89\u88c5\u5230\u6700\u65b0\u7684\u63a2\u9488\u9762\u677f\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"cgo"}},{"@attributes":{"term":"\u54ea\u5412\u63a2\u9488"}},{"@attributes":{"term":"workflow"}}]},{"title":"serv00\u548cct8\u4e0a\u7684\u54ea\u5412\u63a2\u9488V1\u5f00\u542fGithub\u548cGitee\u767b\u5f55","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/serv00ct8nezhav1githubgiteelogin.html","rel":"alternate"}},"published":"2025-01-04T13:40:00+08:00","updated":"2025-01-04T13:40:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2025-01-04:\/python\/serv00ct8nezhav1githubgiteelogin.html","summary":"<h3>\u4e00\u3001\u80cc\u666f<\/h3>\n<p>\u4e0a\u7bc7\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html\">https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html<\/a>\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728serv00\/ct8\u4e3b\u673a\u4e0a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488V1\u7248\u672c\uff08\u542b\u9762\u677f\u548cagent\uff09\uff0c\u8fd9\u6b21\u770bnaiba\u6700\u8fd1\u5df2\u7ecf\u589e\u52a0\u4e86<code>Github<\/code>\u548c<code>Gitee<\/code>\u7b49OAuth2\u8ba4\u8bc1\u767b\u5f55\u7684\u652f\u6301\uff0c\u6240\u4ee5\u628a <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a> \u5de5\u7a0b\u505a\u4e86\u8ddf\u8fdb\u5347\u7ea7\u3002<\/p>\n<p><img alt=\"serv00\/ct8\u54ea\u5412\u63a2\u9488v1\u4f7f\u7528Github\/Gitee\u767b\u5f55\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_github_gitee_oauth2.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u80cc\u666f<\/h3>\n<p>\u4e0a\u7bc7\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html\">https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html<\/a>\u4ecb\u7ecd\u4e86\u5982\u4f55\u5728serv00\/ct8\u4e3b\u673a\u4e0a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488V1\u7248\u672c\uff08\u542b\u9762\u677f\u548cagent\uff09\uff0c\u8fd9\u6b21\u770bnaiba\u6700\u8fd1\u5df2\u7ecf\u589e\u52a0\u4e86<code>Github<\/code>\u548c<code>Gitee<\/code>\u7b49OAuth2\u8ba4\u8bc1\u767b\u5f55\u7684\u652f\u6301\uff0c\u6240\u4ee5\u628a <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a> \u5de5\u7a0b\u505a\u4e86\u8ddf\u8fdb\u5347\u7ea7\u3002<\/p>\n<p><img alt=\"serv00\/ct8\u54ea\u5412\u63a2\u9488v1\u4f7f\u7528Github\/Gitee\u767b\u5f55\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_github_gitee_oauth2.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u5982\u4f55\u5b89\u88c5\u6216\u8005\u5347\u7ea7<\/h3>\n<p>\u5982\u679c\u4e4b\u524d\u6ca1\u6709\u4f7f\u7528\u524d\u9762\u7684<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html\">https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html<\/a>\u5b89\u88c5\u8fc7\u54ea\u5412\u63a2\u9488\uff0c\u90a3\u4e48\u76f4\u63a5\u6309\u7167\u6559\u7a0b\u8fdb\u884c\u5b89\u88c5\u5373\u53ef\u3002<\/p>\n<p>\u5bf9\u4e8e\u4e4b\u524d\u5df2\u7ecf\u4f7f\u7528\u672c\u9879\u76ee\u5b89\u88c5\u8fc7\u4e86\u54ea\u5412\u63a2\u9488V1\u7248\u672c\u7684\u7528\u6237\uff0c\u90a3\u4e48\u53ef\u4ee5\u9009\u62e9\u9009\u62e9\u76f4\u63a5\u5347\u7ea7\u6216\u8005\u4fee\u6539dashboard\u9762\u677f\u914d\u7f6e\u3002<\/p>\n<h3>\u4e09\u3001\u8be6\u7ec6\u5b89\u88c5\u6216\u8005\u5347\u7ea7\u8fc7\u7a0b<\/h3>\n<h4>3.1 \u521b\u5efaGitHub\u548cGitee\u5e94\u7528<\/h4>\n<p>\u5982\u4e0b\u6240\u793a\uff0c\u5728\u521b\u5efa\u5e94\u7528\u65f6\uff0c<code>\u3010\u5e94\u7528\u4e3b\u9875\u3011<\/code>\u586b\u5199\u4f60\u7684\u54ea\u5412\u63a2\u9488\u9762\u677f\u5730\u5740\uff0c\u4f8b\u5982\uff1ahttps:\/\/monitor2.typecodes.us.kg \uff1b<\/p>\n<p><code>\u3010\u6388\u6743\u56de\u8c03\u5730\u5740\u3011<\/code>\u586b\u5199<code>\u4f60\u7684\u54ea\u5412\u63a2\u9488\u9762\u677f\u5730\u5740\/api\/v1\/oauth2\/callback<\/code>\uff0c\u4f8b\u5982\uff1ahttps:\/\/monitor2.typecodes.us.kg\/api\/v1\/oauth2\/callback \u3002<\/p>\n<p>1\u3001\u521b\u5efaGitHub\u5e94\u7528\uff1a<a href=\"https:\/\/github.com\/settings\/developers\">https:\/\/github.com\/settings\/developers<\/a><\/p>\n<p><img alt=\"\u521b\u5efaGithub\u5e94\u7528\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_v1_github_oauth_app.png\"><\/p>\n<p>2\u3001\u521b\u5efaGitee\u5e94\u7528\uff1a<a href=\"https:\/\/gitee.com\/oauth\/applications\">https:\/\/gitee.com\/oauth\/applications<\/a><\/p>\n<p><img alt=\"\u521b\u5efaGitee\u5e94\u7528\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_v1_gitee_oauth_app.png\"><\/p>\n<h4>3.2 \u76f4\u63a5\u5b89\u88c5\u6216\u8005\u5347\u7ea7<\/h4>\n<p>\u5bf9\u4e8e\u4e4b\u524d\u6ca1\u6709\u5b89\u88c5\u8fc7\u54ea\u5412\u9762\u677fV1\u7248\u672c\u7684\u7528\u6237\uff0c\u6309\u7167<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html\">https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html<\/a>\u64cd\u4f5c\u5373\u53ef\u3002<\/p>\n<p>\u5bf9\u4e8e\u5df2\u7ecf\u4f7f\u7528\u672c\u9879\u76ee\u5b89\u88c5\u8fc7\u4e86\u54ea\u5412\u63a2\u9488V1\u9762\u677f\u7684\u7528\u6237\uff0c\u53ef\u4ee5\u76f4\u63a5\u6309\u7167\u4e0b\u9762\u64cd\u4f5c\u8fdb\u884c\u5347\u7ea7\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u66f4\u65b0\u4ee3\u7801<\/span><span class=\"err\">\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">pull<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"n\">gin<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5347\u7ea7\u54ea\u5412<\/span><span class=\"err\">\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">python3<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span><span class=\"mf\">.<\/span><span class=\"n\">py<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u4ee5\u4e0b\u662f\u5b89\u88c5\u6216\u8005\u5347\u7ea7\u7684\u8bb0\u5f55\uff0c\u53ef\u4ee5\u770b\u5230\u7b2c2\u6b65\u9aa4\u4e2d\u8f93\u5165<code>Github<\/code>\u548c<code>Gitee<\/code>\u5e94\u7528\u5f97\u5230\u7684<code>client id<\/code>\u548c<code>client secret<\/code>\uff1a<\/p>\n<p><img alt=\"\u9009\u62e9\u5b89\u88c5V1\u7248\u672c\u7684\u54ea\u5412\u63a2\u9488\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_v1_install_1.png\"><\/p>\n<p><img alt=\"\u5b89\u88c5dashboard\u9762\u677f\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_v1_install_oauth2.png\"><\/p>\n<p><img alt=\"\u5b89\u88c5agent\u5ba2\u6237\u7aef\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_v1_install_agent.png\"><\/p>\n<h4>3.3 \u4fee\u6539\u914d\u7f6e<\/h4>\n<p>\u5bf9\u4e8e\u4e4b\u524d\u5df2\u7ecf\u4f7f\u7528\u672c\u9879\u76ee\u5b89\u88c5\u8fc7\u4e86\u54ea\u5412\u63a2\u9488V1\u9762\u677f\u7684\u7528\u6237\uff0c\u8fd8\u53ef\u4ee5\u9009\u62e9\u4fee\u6539dashboard\u914d\u7f6e\u6587\u4ef6\u6765\u5f00\u901a<code>Github<\/code>\u548c<code>Gitee<\/code>\u7684\u529f\u80fd\u3002<\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u53ea\u9700\u6267\u884c\u547d\u4ee4<code>bash utils.sh modify_config<\/code>\u5373\u53ef\uff1a<\/p>\n<p><img alt=\"\u5b89\u88c5agent\u5ba2\u6237\u7aef\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_github_gitee_modify_config.png\"><\/p>\n<h4>3.4 \u7ed1\u5b9a\u54ea\u5412\u63a2\u9488<\/h4>\n<p>\u5b8c\u6210\u4e0a\u9762\u7684\u64cd\u4f5c\u540e\uff0c\u4f60\u5df2\u7ecf\u6210\u529f\u62e5\u6709\u4e86<code>Github<\/code>\u548c<code>Gitee<\/code>\u7684\u529f\u80fd\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u53ea\u9700\u8981\u767b\u5f55dashboard\u7ba1\u7406\u9762\u677f\uff0c\u7136\u540e\u5728<code>\u3010\u4e2a\u4eba\u4fe1\u606f\u3011<\/code>\u83dc\u5355\u4e2d\uff0c\u70b9\u51fb<code>\u3010GitHub\u3011<\/code>\u6216\u8005<code>\u3010Gitee\u3011<\/code>\u4e2d\u7684<code>bind<\/code>\u6309\u94ae\u6765\u7ed1\u5b9a\u54ea\u5412\u63a2\u9488\u7528\u6237\u5373\u53ef\u3002<\/p>\n<p><img alt=\"Github\u548cGitee\u7ed1\u5b9a\u54ea\u5412\u63a2\u9488\u7528\u6237\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_github_gitee_bind_req.png\"><\/p>\n<p>\u5982\u4e0b\u6240\u793a\uff0c\u8fd9\u91cc\u628a<code>Github<\/code>\u548c<code>Gitee<\/code>\u90fd\u7ed1\u5b9a\u4e86\u54ea\u5412\u63a2\u9488\u7528\u6237\uff1a<\/p>\n<p><img alt=\"Github\u548cGitee\u7ed1\u5b9a\u54ea\u5412\u63a2\u9488\u7528\u6237\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_github_gitee_bind_rsp.png\"><\/p>\n<h4>3.5 \u5173\u95ed\u5bc6\u7801\u767b\u5f55<\/h4>\n<p>\u56e0\u4e3a\u540e\u9762\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528<code>\u3010GitHub\u3011<\/code>\u6216\u8005<code>\u3010Gitee\u3011<\/code>\u767b\u5f55dashboard\u9762\u677f\u4e86\uff0c\u6240\u4ee5\u6211\u8fd9\u91cc\u5173\u95ed\u5bc6\u94a5\u767b\u5f55\u7684\u529f\u80fd\u3002<\/p>\n<p><img alt=\"\u5173\u95ed\u5bc6\u7801\u767b\u5f55\" src=\"https:\/\/cdn.typecodes.com\/2025\/01\/serv00_nezha_github_gitee_close_password.png\"><\/p>\n<h3>\u56db\u3001\u7ed3\u5c3e<\/h3>\n<p>\u6700\u540e\uff0c\u5927\u5bb6\u6709\u4ec0\u4e48\u95ee\u9898\u6216\u8005\u5efa\u8bae\u53ef\u4ee5\u5728 <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a> \u53cd\u9988\u3002<\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u54ea\u5412\u63a2\u9488"}}]},{"title":"serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488V1\u7248\u672c\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/serv00ct8nezhav1.html","rel":"alternate"}},"published":"2024-12-11T20:10:00+08:00","updated":"2024-12-11T20:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-12-11:\/python\/serv00ct8nezhav1.html","summary":"<h3>\u4e00\u3001\u80cc\u666f<\/h3>\n<p>\u4e0a\u5468\u672bL\u7ad9\u6709\u4f6c\u53cb\u53cd\u9988\u4e4b\u524d\u5199\u7684<code>serv00<\/code> \u548c <code>ct8<\/code>\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u7684github\u9879\u76ee: <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a>\u51fa\u73b0\u65e0\u6cd5<code>unzip: Unrecognized archive format<\/code>\u7684\u95ee\u9898\uff0c\u540e\u9762\u6392\u67e5\u662f\u54ea\u5412\u63a2\u9488\u5347\u7ea7\u5230V1\u7248\u672c\uff0c\u5bfc\u81f4\u5728github\u6784\u5efafreebsd\u5305\u5f02\u5e38\uff0c\u6240\u4ee5\u5b89\u88c5\u5931\u8d25\u3002<\/p>\n<p>\u7ecf\u8fc7\u8fd9\u51e0\u5929\u62bd\u7a7a\u7814\u7a76\uff0c\u5df2\u7ecf\u5b8c\u6210\u4e86\u54ea\u5412V1\u7248\u672c\u7684freebsd\u6253\u5305\u4ee5\u53ca\u5b8c\u6210\u4e86<code>serv00<\/code> \u548c <code>ct8<\/code>\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u9879\u76ee\u7684\u5347\u7ea7\u3002<\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u8fd9\u662f\u5728s13\u673a\u5668\u4e0a\u7684\u5b89\u88c5v1\u6700\u65b0\u7248\u672c\u54ea\u5412\u63a2\u9488\u7684\u6548\u679c\uff1a<\/p>\n<p><img alt=\"\u54ea\u5412\u63a2\u9488v1\u7248\u672c\" src=\"https:\/\/cdn.typecodes.com\/2024\/12\/serv00_nezha_v1_4.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u80cc\u666f<\/h3>\n<p>\u4e0a\u5468\u672bL\u7ad9\u6709\u4f6c\u53cb\u53cd\u9988\u4e4b\u524d\u5199\u7684<code>serv00<\/code> \u548c <code>ct8<\/code>\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u7684github\u9879\u76ee: <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a>\u51fa\u73b0\u65e0\u6cd5<code>unzip: Unrecognized archive format<\/code>\u7684\u95ee\u9898\uff0c\u540e\u9762\u6392\u67e5\u662f\u54ea\u5412\u63a2\u9488\u5347\u7ea7\u5230V1\u7248\u672c\uff0c\u5bfc\u81f4\u5728github\u6784\u5efafreebsd\u5305\u5f02\u5e38\uff0c\u6240\u4ee5\u5b89\u88c5\u5931\u8d25\u3002<\/p>\n<p>\u7ecf\u8fc7\u8fd9\u51e0\u5929\u62bd\u7a7a\u7814\u7a76\uff0c\u5df2\u7ecf\u5b8c\u6210\u4e86\u54ea\u5412V1\u7248\u672c\u7684freebsd\u6253\u5305\u4ee5\u53ca\u5b8c\u6210\u4e86<code>serv00<\/code> \u548c <code>ct8<\/code>\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u9879\u76ee\u7684\u5347\u7ea7\u3002<\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u8fd9\u662f\u5728s13\u673a\u5668\u4e0a\u7684\u5b89\u88c5v1\u6700\u65b0\u7248\u672c\u54ea\u5412\u63a2\u9488\u7684\u6548\u679c\uff1a<\/p>\n<p><img alt=\"\u54ea\u5412\u63a2\u9488v1\u7248\u672c\" src=\"https:\/\/cdn.typecodes.com\/2024\/12\/serv00_nezha_v1_4.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u91cd\u8981\u8bf4\u660e<\/h3>\n<p>\u7ecf\u8fc7\u8fd9\u6b21\u7684\u5347\u7ea7\u540e\uff0c\u9879\u76ee\u5df2\u7ecf\u652f\u6301\u81ea\u4e3b\u9009\u62e9\u5b89\u88c5\u54ea\u5412v0\u8fd8\u662fv1\u7248\u672c\u7684\u63a2\u9488\u3002<\/p>\n<p>\u4e0d\u8fc7\u7531\u4e8e\u54ea\u5412\u63a2\u9488\u81ea\u8eabv0\u548cv1\u7248\u672c\u5b58\u5728\u4e0d\u517c\u5bb9\u7684\u95ee\u9898\uff0c\u6240\u4ee5\u5982\u679c\u60f3\u4e0d\u65ad\u5728v0\u548cv1\u7248\u672c\u95f4\u8fdb\u884c\u5207\u6362\uff0c\u8bf7\u5148<code>\u5907\u4efd<\/code>\u54ea\u5412\u9762\u677f\u4e2d\u7684\u6570\u636e\u5e93<code>sqlite.db<\/code>\u518d\u64cd\u4f5c\u3002<\/p>\n<p>\u54ea\u5412v0\u7248\u672c\u7684\u6548\u679c\u4f53\u9a8c\uff1a<a href=\"https:\/\/monitor1.typecodes.us.kg\">https:\/\/monitor1.typecodes.us.kg<\/a><\/p>\n<p>\u54ea\u5412v1\u7248\u672c\u7684\u6548\u679c\u4f53\u9a8c\uff1a<a href=\"https:\/\/monitor2.typecodes.us.kg\">https:\/\/monitor2.typecodes.us.kg<\/a><\/p>\n<h3>\u4e09\u3001\u5982\u4f55\u5b89\u88c5\u6216\u8005\u5347\u7ea7<\/h3>\n<p>\u7531\u4e8e\u8fd9\u6b21\u5bf9 <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a> \u7684\u505a\u4e86\u5b8c\u5168\u517c\u5bb9\u7684\u5347\u7ea7\uff0c\u6240\u4ee5\u5b89\u88c5v1\u7248\u672c\u7684\u54ea\u5412\u63a2\u9488\u548c\u4e4b\u524d<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha.html\">\u5b89\u88c5v0\u7248\u672c<\/a>\u64cd\u4f5c\u662f\u5b8c\u5168\u4e00\u6837\u7684\uff0c\u90fd\u662f\u5f88\u7b80\u5355\u7684\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4e0b\u8f7d\u811a\u672c<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">clone<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">github<\/span><span class=\"mf\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">serv00_ct8_nezha<\/span><span class=\"mf\">.<\/span><span class=\"n\">git<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u8fdb\u5165\u9879\u76ee<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">cd<\/span><span class=\"w\"> <\/span><span class=\"n\">serv00_ct8_nezha<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">vim<\/span><span class=\"w\"> <\/span><span class=\"n\">config<\/span><span class=\"o\">\/<\/span><span class=\"n\">host<\/span><span class=\"mf\">.<\/span><span class=\"n\">eg<\/span><span class=\"w\"> <\/span><span class=\"n\">\u7136\u540e\u6dfb\u52a0\u9700\u8981\u4fdd\u6d3b\u7684\u4e3b\u673a\u4fe1\u606f<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"mf\">4<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5f00\u59cb\u5b89\u88c5<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">python3<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span><span class=\"mf\">.<\/span><span class=\"n\">py<\/span><span class=\"w\"> <\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u518d\u6b21\u63d0\u9192\uff0c\u5bf9\u4e8e\u60f3\u4e0d\u65ad\u5728v0\u548cv1\u7248\u672c\u95f4\u8fdb\u884c\u5207\u6362\u7684\u7528\u6237\uff0c\u8bf7\u5148\u5907\u4efd<code>sqlite.db<\/code>\u3002<\/p>\n<h3>\u56db\u3001\u8be6\u7ec6\u5b89\u88c5\u6216\u8005\u5347\u7ea7\u8fc7\u7a0b<\/h3>\n<p>\u4e0b\u9762\u662f\u5b89\u88c5\u8fc7\u7a0b\u7684\u4e00\u4e9b\u622a\u56fe\uff1a<\/p>\n<h4>4.1 \u751f\u6210ssh\u516c\u79c1\u94a5<\/h4>\n<p><img alt=\"\u751f\u6210ssh\u516c\u79c1\u94a5\" src=\"https:\/\/cdn.typecodes.com\/2024\/12\/serv00_nezha_v1_1.png\"><\/p>\n<h4>4.2 \u9009\u62e9\u5e76\u5b89\u88c5v1\u7248\u672c\u7684\u54ea\u5412dashboard<\/h4>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5728\u914d\u7f6edashboard\u9762\u677f\u65f6\uff0c<code>\u3010\u9762\u677f\u8bbf\u95ee\u7aef\u53e3\u3011<\/code>\u586b\u5199\u5728<code>serv00\/ct8<\/code>\u7684panel\u9762\u677f\u521b\u5efa\u7684\u4efb\u610ftcp\u7aef\u53e3\uff1b<\/p>\n<p><code>\u3010GRPC\u901a\u4fe1\u5730\u5740\u3011<\/code>\u586b\u5199\u5728<code>serv00\/ct8<\/code>\u7684panel\u9762\u677f\u5206\u914d\u7684<code>\u57df\u540d:tcp\u7aef\u53e3<\/code>\uff0c\u6216\u8005\u81ea\u5df1\u7684\u53cd\u4ee3\u57df\u540d\u3002<\/p>\n<p>\u7531\u4e8ev1\u7248\u672c\u7684dashboard\u9762\u677f\u8bbf\u95ee\u7aef\u53e3\u548cagent\u7684GRPC\u901a\u4fe1\u7aef\u53e3\u5df2\u7ecf\u5408\u5e76\u6210\u4e86\uff0c\u6240\u4ee5\u53ea\u9700\u8981\u5728panel\u9762\u677f\u7533\u8bf7\u4e00\u4e2atcp\u7aef\u53e3\u5373\u53ef\u3002\u8fd9\u4e2a\u662f\u548c\u5b89\u88c5v0\u7248\u672c\u4e0d\u4e00\u6837\u7684\u5730\u65b9\uff0c\u5927\u5bb6\u4e0d\u8981\u8e29\u5751\uff01\uff01\uff01<\/p>\n<p>\u53e6\u5916\uff0c\u7b2c4\u6b65\u9aa4\u5b89\u88c5python\u4f9d\u8d56\u53ef\u80fd\u8017\u65f6\u8f83\u957f(\u4e3b\u8981\u662f\u673a\u5668\u78c1\u76d8\u6027\u80fd\u592a\u5dee)\uff0c\u8bf7\u8010\u5fc3\u7b49\u5f85\u3002<\/p>\n<p>\u6700\u540e\uff0c\u8bf7\u7559\u610f\u6253\u5370\u7684<code>\u3010\u7528\u4e8eagent\u8fde\u63a5\u7684\u5bc6\u94a5\u3011<\/code>\uff0c\u4e5f\u5c31\u662f<code>agentsecretkey<\/code>\uff0c\u5728\u540e\u9762\u5b89\u88c5\u54ea\u5412agent\u5ba2\u6237\u7aef\u65f6\u9700\u8981\u7528\u5230\u3002<\/p>\n<p><img alt=\"\u5b89\u88c5\u54ea\u5412dashboard \" src=\"https:\/\/cdn.typecodes.com\/2024\/12\/serv00_nezha_v1_2.png\"><\/p>\n<h4>4.3 \u5b89\u88c5\u54ea\u5412agent<\/h4>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5728\u914d\u7f6e\u54ea\u5412agent\u7684\u65f6\u5019\u9700\u8981dashboard\u6b65\u9aa4\u4e2d\u7684<code>\u3010agentsecretkey\u3011<\/code>\uff0c<code>\u3010GRPC\u901a\u4fe1\u5730\u5740\u3011<\/code>\u4e5f\u662f\u586b\u5199dashboard\u6b65\u9aa4\u4e2d\u7684<code>\u57df\u540d:tcp\u7aef\u53e3<\/code>\u3002<\/p>\n<p><img alt=\"\u5b89\u88c5\u54ea\u5412agent\" src=\"https:\/\/cdn.typecodes.com\/2024\/12\/serv00_nezha_v1_3.png\"><\/p>\n<h4>4.4 \u5b89\u88c5\u5b8c\u6bd5<\/h4>\n<p>\u81f3\u6b64\u5df2\u7ecf\u5b8c\u6210\u4e86v1\u7248\u672c\u7684\u5b89\u88c5\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc74.2\u5c0f\u8282\u4e2d\u586b\u5199\u7684<code>\u3010GRPC\u901a\u4fe1\u5730\u5740\u3011<\/code>\u8bbf\u95ee\u54ea\u5412\u63a2\u9488\u9875\u9762\u4e86\u3002<\/p>\n<p>\u6211\u8fd9\u91cc\u989d\u5916\u591a\u505a\u4e86\u4e00\u6b65\uff1a\u5728cloudflare\u4e0a\u7528 <a href=\"https:\/\/monitor2.typecodes.us.kg\">https:\/\/monitor2.typecodes.us.kg<\/a> \u5bf9\u8fd9\u4e2a\u901a\u4fe1\u5730\u5740\u505a\u4e86\u4e00\u4e2a\u53cd\u4ee3\u3002<\/p>\n<h3>\u4e94\u3001\u7ed3\u5c3e<\/h3>\n<p>\u7efc\u4e0a\uff0c\u6574\u4e2a\u54ea\u5412\u63a2\u9488V1\u7248\u672c\u7684\u5b89\u88c5\u6216\u8005\u5347\u7ea7\u8fc7\u7a0b\u90fd\u662f\u5f88\u7b80\u5355\u7684\uff0c\u548c\u4e4b\u524d<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha.html\">\u5b89\u88c5v0\u7248\u672c<\/a>\u5b8c\u5168\u517c\u5bb9\u3002<\/p>\n<p>\u53e6\u5916\uff0c\u5982\u679c\u9009\u62e9\u5b89\u88c5v0\u7248\u672c\u7684\u54ea\u5412\u63a2\u9488\uff0c\u90a3\u4e48\u4f1a\u76f4\u63a5\u5b89\u88c5\u57fa\u4e8ev0\u6700\u540e\u4e00\u6b21\u66f4\u65b0\u7684\u4ee3\u7801\u6784\u5efa\u7684freebsd\u5305\uff0c\u4e5f\u5c31\u662f<code>v0.20.13<\/code>\u7248\u672c\u7684dashboard\u548c<code>v0.20.5<\/code>\u7248\u672c\u7684agent\u3002<\/p>\n<p>\u6700\u540e\uff0c\u5927\u5bb6\u6709\u4ec0\u4e48\u95ee\u9898\u6216\u8005\u5efa\u8bae\u53ef\u4ee5\u5728 <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a> \u53cd\u9988\u3002<\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u63a2\u9488"}}]},{"title":"\u535a\u5ba2\u5b8c\u6210Follow.is\u8ba2\u9605\u8ba4\u8bc1","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/blogrssfollowiscertification.html","rel":"alternate"}},"published":"2024-10-19T17:10:00+08:00","updated":"2024-10-19T17:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-10-19:\/mix\/blogrssfollowiscertification.html","summary":"<h3>\u4e00\u3001\u524d\u8a00<\/h3>\n<p>\u6700\u8fd1\u4e00\u4e2aRSS\u8ba2\u9605<a href=\"https:\/\/follow.is\">follow.is<\/a>\u706b\u4e86\u8d77\u6765\uff0c\u5728\u6536\u5230\u5185\u6d4b\u9080\u8bf7\u7801\u6ce8\u518c\u540e\uff0c\u987a\u4fbf\u5728\u4e0a\u9762\u628a\u535a\u5ba2\u7684\u8ba2\u9605\u4e5f\u505a\u4e86\u8ba4\u8bc1\u3002<\/p>\n<p>\u76ee\u524d\u4f53\u9a8c\u4e0b\u6765\u8fd8\u53ef\u4ee5\uff0c\u754c\u9762\u6bd4\u8f83\u6e05\u723d\uff0c\u8ba2\u9605\u6e90\u6bd4\u8f83\u4e30\u5bcc\uff0c\u7f8e\u4e2d\u4e0d\u8db3\u7684\u662f\u76ee\u524d\u8fd8\u6ca1\u6709\u624bY\u5ba2\u6237\u7aef\u3002<\/p>\n<p><img alt=\"typecodes.com\u5b8c\u6210follow.is\u8ba2\u9605\u8ba4\u8bc1\" src=\"https:\/\/cdn.typecodes.com\/2024\/10\/typecodes_follow_is_1.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u524d\u8a00<\/h3>\n<p>\u6700\u8fd1\u4e00\u4e2aRSS\u8ba2\u9605<a href=\"https:\/\/follow.is\">follow.is<\/a>\u706b\u4e86\u8d77\u6765\uff0c\u5728\u6536\u5230\u5185\u6d4b\u9080\u8bf7\u7801\u6ce8\u518c\u540e\uff0c\u987a\u4fbf\u5728\u4e0a\u9762\u628a\u535a\u5ba2\u7684\u8ba2\u9605\u4e5f\u505a\u4e86\u8ba4\u8bc1\u3002<\/p>\n<p>\u76ee\u524d\u4f53\u9a8c\u4e0b\u6765\u8fd8\u53ef\u4ee5\uff0c\u754c\u9762\u6bd4\u8f83\u6e05\u723d\uff0c\u8ba2\u9605\u6e90\u6bd4\u8f83\u4e30\u5bcc\uff0c\u7f8e\u4e2d\u4e0d\u8db3\u7684\u662f\u76ee\u524d\u8fd8\u6ca1\u6709\u624bY\u5ba2\u6237\u7aef\u3002<\/p>\n<p><img alt=\"typecodes.com\u5b8c\u6210follow.is\u8ba2\u9605\u8ba4\u8bc1\" src=\"https:\/\/cdn.typecodes.com\/2024\/10\/typecodes_follow_is_1.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u5982\u4f55\u8ba4\u8bc1<\/h3>\n<p>\u9996\u5148\u6253\u5f00Follow\u5ba2\u6237\u7aef\uff0c\u70b9\u51fb\u5de6\u4e0a\u65b9\u7684<code>+<\/code>\u53f7\u3002\u7136\u540e\u76f4\u63a5\u5728rss\u8ba2\u9605\u6e90\u91cc\u9762\u6dfb\u52a0\u8981\u8ba2\u9605\u7684\u7f51\u7ad9\u7684rss\u6570\u636e\u6e90\uff0c\u4f8b\u5982\uff1a<a href=\"https:\/\/typecodes.com\/feed.xml\">https:\/\/typecodes.com\/feed.xml<\/a> \u3002<\/p>\n<p>\u5728\u70b9\u51fbfollow\u8ba2\u9605\u540e\uff0c\u5728\u5de6\u4fa7\u9762\u677f\u7684\u8ba2\u9605\u5217\u8868\u4e2d\u53f3\u952e\u8981\u8ba4\u8bc1\u7684follow\u6e90\u3002\u63a5\u7740\u5c31\u662f\u6309\u7167<code>follow.is<\/code>\u7684\u63d0\u793a\u64cd\u4f5c\u5373\u53ef\u3002<\/p>\n<p>BZ\u8fd9\u91cc\u662f\u76f4\u63a5\u5728<code>feed.xml<\/code>\u6587\u4ef6\u4e2d\u6dfb\u52a0<code>follow.is<\/code>\u63d0\u4f9b\u7684\u4ee3\u7801\uff0c\u7136\u540e\u70b9\u51fb\u8ba4\u8bc1\u5c31\u901a\u8fc7\u4e86\u3002<\/p>\n<p><img alt=\"Follow.is\u8ba2\u9605\u8ba4\u8bc1\" src=\"https:\/\/cdn.typecodes.com\/2024\/10\/typecodes_follow_is_2.png\"><\/p>\n<h3>\u4e09\u3001\u754c\u9762\u6548\u679c<\/h3>\n<p>\u5982\u56fe\uff0c<a href=\"https:\/\/app.follow.is\/feed\/70387716523684864\">follow.is<\/a> \u7684\u9605\u8bfb\u6a21\u5f0f\u8fd8\u662f\u633a\u6e05\u723d\u7684\u3002<\/p>\n<p><img alt=\"Follow.is\u754c\u9762\u6548\u679c\" src=\"https:\/\/cdn.typecodes.com\/2024\/10\/typecodes_follow_is_3.png\"><\/p>\n<h3>\u56db\u3001\u672c\u7ad9\u7684\u8ba2\u9605\u5730\u5740<\/h3>\n<p>\u6b22\u8fce\u5927\u5bb6\u8ba2\u9605\u672c\u7ad9\uff0c\u65b9\u5f0f\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1.<\/span><span class=\"w\"> <\/span><span class=\"n\">\u5728Follow\u4e0a\u8ba2\u9605<\/span><span class=\"w\">   <\/span><span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">app<\/span><span class=\"mf\">.<\/span><span class=\"n\">follow<\/span><span class=\"mf\">.<\/span><span class=\"n\">is<\/span><span class=\"o\">\/<\/span><span class=\"n\">feed<\/span><span class=\"o\">\/<\/span><span class=\"mf\">70387716523684864<\/span>\n<span class=\"mf\">2.<\/span><span class=\"w\"> <\/span><span class=\"n\">\u76f4\u63a5RSS\u8ba2\u9605<\/span><span class=\"w\">      <\/span><span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">typecodes<\/span><span class=\"mf\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">feed<\/span><span class=\"mf\">.<\/span><span class=\"n\">xml<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"rss"}},{"@attributes":{"term":"follow.is"}}]},{"title":"serv00\u548c ct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b (\u516d)","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/serv00ct8nezha6.html","rel":"alternate"}},"published":"2024-10-13T15:10:00+08:00","updated":"2024-10-13T15:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-10-13:\/python\/serv00ct8nezha6.html","summary":"<h3>\u4e00\u3001\u524d\u8a00<\/h3>\n<p>\u7531\u4e8e serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u7684\u9879\u76ee(<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">github.com\/vfhky\/serv00_ct8_nezha<\/a>)\u7684\u6613\u7528\u6027\u548c\u529f\u80fd\u591a\u6837\u6027\uff0c\u76ee\u524d\u5728github\u4e0a\u5df2\u7ecf\u670950\u591a\u4e2astar\u4e86\u3002\u8fd9\u671f\u95f4\u4e5f\u6709\u591a\u4e2a\u5927\u4f6c\u53cd\u9988\u4f7f\u7528\u95ee\u9898\uff0c\u4e5f\u90fd\u505a\u4e86\u4e00\u4e9b\u4f18\u5316\u3002<\/p>\n<p>\u6700\u8fd1\u6709\u53cd\u9988\u5173\u4e8e\u54ea\u5412\u9762\u677f\u6ca1\u6709\u663e\u793a\u4e3b\u673a\u533a\u57df\u7684<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\/issues\/3\">PR<\/a>\uff0c\u540e\u9762\u6392\u67e5\u4e86\u4e00\u4e0b\u662f\u56e0\u4e3a\u5efa\u6784\u7684\u65f6\u5019\u6ca1\u6709\u6253\u5305<code>geoip<\/code>\u5e93\u5bfc\u81f4\u7684\u3002<\/p>\n<p>\u5b83\u548c\u4e4b\u524d\u53e6\u5916\u4e00\u4e2a\u5927\u4f6c\u53cd\u9988\u7684dashboard\u9762\u677f\u53ef\u80fd\u8017\u65f6\u5f88\u957f\u7684\u95ee\u9898\u5176\u5b9e\u90fd\u662f\u51fa\u5728dashboard\u7684\u5b89\u88c5\u5305\u4e0a\uff0c\uff0c\u6240\u4ee5\u8e6d\u5468\u672b\u6709\u65f6\u95f4\u4e00\u5e76\u89e3\u51b3\u4e00\u4e0b\u3002<\/p>\n<p><img alt=\"\u4fee\u590d\u54ea\u5412\u9762\u677f\u6ca1\u6709\u663e\u793a\u4e3b\u673a\u533a\u57df\" src=\"https:\/\/cdn.typecodes.com\/2024\/10\/nezha_area_icon.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u524d\u8a00<\/h3>\n<p>\u7531\u4e8e serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u7684\u9879\u76ee(<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">github.com\/vfhky\/serv00_ct8_nezha<\/a>)\u7684\u6613\u7528\u6027\u548c\u529f\u80fd\u591a\u6837\u6027\uff0c\u76ee\u524d\u5728github\u4e0a\u5df2\u7ecf\u670950\u591a\u4e2astar\u4e86\u3002\u8fd9\u671f\u95f4\u4e5f\u6709\u591a\u4e2a\u5927\u4f6c\u53cd\u9988\u4f7f\u7528\u95ee\u9898\uff0c\u4e5f\u90fd\u505a\u4e86\u4e00\u4e9b\u4f18\u5316\u3002<\/p>\n<p>\u6700\u8fd1\u6709\u53cd\u9988\u5173\u4e8e\u54ea\u5412\u9762\u677f\u6ca1\u6709\u663e\u793a\u4e3b\u673a\u533a\u57df\u7684<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\/issues\/3\">PR<\/a>\uff0c\u540e\u9762\u6392\u67e5\u4e86\u4e00\u4e0b\u662f\u56e0\u4e3a\u5efa\u6784\u7684\u65f6\u5019\u6ca1\u6709\u6253\u5305<code>geoip<\/code>\u5e93\u5bfc\u81f4\u7684\u3002<\/p>\n<p>\u5b83\u548c\u4e4b\u524d\u53e6\u5916\u4e00\u4e2a\u5927\u4f6c\u53cd\u9988\u7684dashboard\u9762\u677f\u53ef\u80fd\u8017\u65f6\u5f88\u957f\u7684\u95ee\u9898\u5176\u5b9e\u90fd\u662f\u51fa\u5728dashboard\u7684\u5b89\u88c5\u5305\u4e0a\uff0c\uff0c\u6240\u4ee5\u8e6d\u5468\u672b\u6709\u65f6\u95f4\u4e00\u5e76\u89e3\u51b3\u4e00\u4e0b\u3002<\/p>\n<p><img alt=\"\u4fee\u590d\u54ea\u5412\u9762\u677f\u6ca1\u6709\u663e\u793a\u4e3b\u673a\u533a\u57df\" src=\"https:\/\/cdn.typecodes.com\/2024\/10\/nezha_area_icon.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u66f4\u65b0\u8bf4\u660e<\/h3>\n<p>\u4e3a\u4e86\u4fee\u590d\u8fd9\u4e2a\u533a\u57df\u663e\u793a\u95ee\u9898\uff0c\u540c\u65f6\u5f7b\u5e95\u89e3\u51b3\u6709\u90e8\u5206\u7528\u6237\u53cd\u9988\u5728\u5b89\u88c5dashboard\u9762\u677f\u53ef\u80fd\u8017\u65f6\u5f88\u957f\u7684\u95ee\u9898\uff0c\u672c\u6b21\u66f4\u65b0\u653e\u5f03\u4e86\u4e4b\u524d\u5728\u5b89\u88c5\u9762\u677f\u65f6\u5148\u7f16\u8bd1\u6784\u5efa\u4e8c\u8fdb\u5236\u5305\u7684\u903b\u8f91\uff0c\u91c7\u7528\u4e86\u76f4\u63a5\u62c9\u53d6\u5df2\u7ecf\u5728github\u6784\u5efa\u597d\u7684\u5305\u7684\u65b9\u6848\u3002<\/p>\n<p>\u5e26\u6765\u7684\u4f18\u52bf\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"m\">1<\/span>\u3001\u5173\u952e\u70b9\uff1a\u5728<span class=\"w\"> <\/span>github<span class=\"w\"> <\/span>\u4e0a\u65b0\u5efa<span class=\"w\"> <\/span>github.com\/vfhky\/nezha-build<span class=\"w\"> <\/span>\u9879\u76ee\uff0c\u6784\u5efa\u5305\u542bfreebsd\u5e73\u53f0\u7684\u54ea\u5412\u9762\u677f\u7684\u5b89\u88c5\u5305\uff08\u9664\u4e86\u624b\u52a8\u8f93\u5165\u8981\u6784\u5efa\u7684\u7248\u672c\uff0c\u6bcf\u5929\u51cc\u66683\u70b9\u8fd8\u4f1a\u81ea\u52a8\u540c\u6b65\u62c9\u53d6\u54ea\u5412\u9762\u677f\u6700\u65b0\u5b98\u65b9\u4ee3\u7801\u8fdb\u884c\u6253\u5305\uff09\uff1b\n<span class=\"m\">2<\/span>\u3001\u901a\u8fc7\u4e0b\u8f7d\u4e0a\u9762\u7684\u6784\u5efa\u597d\u7684\u5b89\u88c5\u5305\uff0c\u53ef\u4ee5\u5927\u5927\u964d\u4f4e\u5728serv00\u6216\u8005ct8\u4e3b\u673a\u4e0a\u5b89\u88c5dashboard\u7684\u65f6\u957f\uff0c\u66f4\u4eab\u4e1d\u6ed1\u7684\u5b89\u88c5\u8fc7\u7a0b\uff1b\n<span class=\"m\">3<\/span>\u3001\u6253\u5305\u7684\u65f6\u5019\u5f15\u5165<span class=\"w\"> <\/span>geoip<span class=\"w\"> <\/span>\u5e93\uff0c\u89e3\u51b3\u54ea\u5412dashboard\u9762\u677f\u6ca1\u6709\u663e\u793a\u4e3b\u673a\u533a\u57df\u7684\u95ee\u9898\u3002\n<\/code><\/pre><\/div>\n\n<h3>\u4e09\u3001\u4f7f\u7528\u65b9\u6cd5<\/h3>\n<p>\u8fd9\u91cc\u53ea\u9488\u5bf9\u5df2\u7ecf\u5b89\u88c5\u7684dashboard\u9762\u677f\u7684\u7528\u6237\uff0c\u5bf9\u4e8e\u8fd8\u672a\u4f7f\u7528\u9879\u76ee\u8fdb\u884c\u5b89\u88c5\u7684\uff0c\u8bf7\u53c2\u8003\u4e4b\u524d\u7684\u6587\u6863 https:\/\/typecodes.com\/python\/serv00ct8nezha.html \u8fdb\u884c\u5b89\u88c5\u4f53\u9a8c\u3002<\/p>\n<h4>3.1\u3001\u66f4\u65b0 git \u4ee3\u7801\uff1a<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code>$<span class=\"w\"> <\/span><span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>~\/serv00_ct8_nezha<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>pull\n<\/code><\/pre><\/div>\n\n<h4>3.2\u3001\u91cd\u65b0\u4e0b\u8f7ddashboard:<\/h4>\n<p>\u63a5\u7740\u6267\u884c<code>python3 main.py<\/code>\u547d\u4ee4\u91cd\u65b0\u4e0b\u8f7ddashboard\u9762\u677f\uff08\u6ce8\u610f\uff1a\u4e0d\u9700\u8981\u751f\u6210\u6216\u8005\u62f7\u8d1dssh\u516c\u79c1\u94a5\u7b49\u6b65\u9aa4\uff09\uff0c\u7b49\u4e0b\u8f7d\u5b8c\u540e\u76f4\u63a5ctrl+c\u4e2d\u6b62\u540e\u9762\u4ee3\u7801\u8fd0\u884c\u5373\u53ef\u3002<\/p>\n<p><img alt=\"\u91cd\u65b0\u4e0b\u8f7ddashboard\" src=\"https:\/\/cdn.typecodes.com\/2024\/10\/nezha_area_icon_install.png\"><\/p>\n<h4>3.3\u3001\u91cd\u542fdashboard\u9762\u677f:<\/h4>\n<p>\u5728\u7528\u65b0\u7684dashboard\u5b89\u88c5\u5305\u66ff\u6362\u5b8c\u65e7\u7684\u540e\uff0c\u9700\u8981\u6267\u884c<code>bash utils.sh restart<\/code>\u547d\u4ee4\u6765\u91cd\u542fdashboard\u9762\u677f\u8fdb\u7a0b\uff1a<\/p>\n<p><img alt=\"\u91cd\u542fdashboard\u8fdb\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2024\/10\/nezha_area_icon_restart.png\"><\/p>\n<h3>\u56db\u3001\u7ed3\u5c3e<\/h3>\n<p>\u901a\u8fc7\u4e0a\u97623\u4e2a\u7b80\u5355\u7684\u64cd\u4f5c\u6b65\u9aa4\uff0c\u5c31\u53ef\u4ee5\u62e5\u6709\u5f00\u5934\u56fe\u7247\u4e2d\u6f14\u793a\u7684\u4e3b\u673a\u533a\u57df\u56fe\u6807\u4e86\uff01\u540c\u65f6\u4e5f\u611f\u8c22\u5927\u4f6c\u4eec\u7684\u53cd\u9988~<\/p>\n<p>PS\uff1adashboard\u9762\u677f\u548cagent\u5ba2\u6237\u7aef\u81ea\u52a8\u66f4\u65b0\u7684\u9700\u6c42\u4e5f\u6b63\u5728\u8ba1\u5212\u4e2d\uff0c\u656c\u8bf7\u5173\u6ce8\u9879\u76ee: <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">github.com\/vfhky\/serv00_ct8_nezha<\/a><\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u63a2\u9488"}}]},{"title":"\u535a\u5ba2\u5207\u6362\u5230Cloudflare\u5e76\u4f7f\u7528\u514d\u8d39\u57df\u540d\u8fdb\u884cDNS\u89e3\u6790\u4f18\u9009","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/blogcloudflaredns.html","rel":"alternate"}},"published":"2024-09-29T21:30:00+08:00","updated":"2024-09-29T21:30:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-09-29:\/mix\/blogcloudflaredns.html","summary":"<h3>\u4e00\u3001\u524d\u8a00<\/h3>\n<p>\u5927\u6982 6 \u6708\u4efd\u7684\u65f6\u5019\uff0c\u535a\u5ba2\u628a typecodes.com \u57df\u540d\u89e3\u6790\u8fc1\u79fb\u5230\u4e86 Cloudflare\u3002\u4f46\u662f\u5982\u679c\u76f4\u63a5\u4f7f\u7528 Cloudflare \u7684\u89e3\u6790\uff0c\u5728\u56fd\u5185\u7684\u6548\u679c\u57fa\u672c\u76f8\u5f53\u4e8e \u201c\u51cf\u901f\u5668\u201d\uff0c\u6240\u4ee5\u5f97\u9700\u8981\u5bf9\u57df\u540d\u7684 dns \u89e3\u6790\u8fdb\u884c\u4f18\u9009\u3002<\/p>\n<p><img alt=\"Cloudflare\u57df\u540d\u4f18\u9009\u540e\u7684\u6548\u679c\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/cloudflare_cloudns_result.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u524d\u8a00<\/h3>\n<p>\u5927\u6982 6 \u6708\u4efd\u7684\u65f6\u5019\uff0c\u535a\u5ba2\u628a typecodes.com \u57df\u540d\u89e3\u6790\u8fc1\u79fb\u5230\u4e86 Cloudflare\u3002\u4f46\u662f\u5982\u679c\u76f4\u63a5\u4f7f\u7528 Cloudflare \u7684\u89e3\u6790\uff0c\u5728\u56fd\u5185\u7684\u6548\u679c\u57fa\u672c\u76f8\u5f53\u4e8e \u201c\u51cf\u901f\u5668\u201d\uff0c\u6240\u4ee5\u5f97\u9700\u8981\u5bf9\u57df\u540d\u7684 dns \u89e3\u6790\u8fdb\u884c\u4f18\u9009\u3002<\/p>\n<p><img alt=\"Cloudflare\u57df\u540d\u4f18\u9009\u540e\u7684\u6548\u679c\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/cloudflare_cloudns_result.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u524d\u63d0\u51c6\u5907<\/h3>\n<p>\u8fd9\u91cc\u4f7f\u7528\u514d\u8d39\u57df\u540d cloudns \u5bf9\u6258\u7ba1\u5728 Cloudflare \u7684\u57df\u540d\u89e3\u6790\u8fdb\u884c\u4f18\u9009\uff0c\u9700\u8981\u51c6\u5907\u7684\u7d20\u6750\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4e00\u4e2a\u6258\u7ba1\u5728Cloudflare\u7684\u8f85\u52a9\u57df\u540d<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4e14\u5f00\u901a\u4e86\u81ea\u5b9a\u4e49\u57df\u540d\u529f\u80fd<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6258\u7ba1\u5728<\/span><span class=\"w\"> <\/span><span class=\"n\">Cloudflare<\/span><span class=\"w\"> <\/span><span class=\"n\">\u7684\u4e3b\u57df\u540d<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u81ea\u5df1\u771f\u5b9e\u7684\u670d\u52a1\u5668\u7684ip<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f8b\u5982\u81ea\u5df1\u7684\u535a\u5ba2\u6240\u5728\u7684\u670d\u52a1\u5668\u7684ip\u5730\u5740<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h3>\u4e09\u3001\u64cd\u4f5c\u6b65\u9aa4<\/h3>\n<p>\u5927\u81f4\u7684\u64cd\u4f5c\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u8f85\u52a9\u57df\u540d<\/span><span class=\"w\"> <\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f8b\u5982<\/span><span class=\"err\">\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">blog<\/span><span class=\"mf\">.<\/span><span class=\"n\">cloudns<\/span><span class=\"mf\">.<\/span><span class=\"n\">be<\/span>\n<span class=\"mf\">1.2<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"n\">igin<\/span><span class=\"mf\">.<\/span><span class=\"n\">blog<\/span><span class=\"mf\">.<\/span><span class=\"n\">cloudns<\/span><span class=\"mf\">.<\/span><span class=\"n\">be<\/span><span class=\"w\">   <\/span><span class=\"n\">A\u7c7b\u578b<\/span><span class=\"w\">   <\/span><span class=\"n\">\u6307\u5411\u81ea\u5df1\u7684\u771f\u5b9e\u670d\u52a1\u5668ip<\/span><span class=\"err\">\uff0c<\/span><span class=\"w\"> <\/span><span class=\"n\">\u5f00\u5c0f\u9ec4\u4e91<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u4ee3\u7406<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"mf\">1.1<\/span><span class=\"w\"> <\/span><span class=\"n\">\u6dfb\u52a0\u56de\u9000\u6e90<\/span><span class=\"err\">\uff1a<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"n\">igin<\/span><span class=\"mf\">.<\/span><span class=\"n\">blog<\/span><span class=\"mf\">.<\/span><span class=\"n\">cloudns<\/span><span class=\"mf\">.<\/span><span class=\"n\">be<\/span><span class=\"w\">    <\/span><span class=\"n\">\u81ea\u5b9a\u4e49\u4e3b\u673a\u540d<\/span><span class=\"p\">:<\/span><span class=\"w\">  <\/span><span class=\"n\">typecodes<\/span><span class=\"mf\">.<\/span><span class=\"n\">com<\/span>\n<span class=\"mf\">1.3<\/span><span class=\"w\"> <\/span><span class=\"n\">cdn<\/span><span class=\"mf\">.<\/span><span class=\"n\">blog<\/span><span class=\"mf\">.<\/span><span class=\"n\">cloudns<\/span><span class=\"mf\">.<\/span><span class=\"n\">be<\/span><span class=\"w\">   <\/span><span class=\"n\">CNAME<\/span><span class=\"w\">  <\/span><span class=\"n\">\u5230\u4f18\u9009\u57df\u540d<\/span><span class=\"w\"> <\/span><span class=\"n\">cloudflare<\/span><span class=\"mf\">.182682.<\/span><span class=\"n\">xyz<\/span><span class=\"w\"> <\/span><span class=\"n\">\u6216\u8005ip<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4e0d\u5f00\u5c0f\u9ec4\u4e91<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u4ee3\u7406<\/span><span class=\"err\">\uff09<\/span>\n\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4e3b\u57df\u540d<\/span><span class=\"w\"> <\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f8b\u5982<\/span><span class=\"err\">\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">typecodes<\/span><span class=\"mf\">.<\/span><span class=\"n\">com<\/span>\n<span class=\"n\">typecodes<\/span><span class=\"mf\">.<\/span><span class=\"n\">com<\/span><span class=\"w\">   <\/span><span class=\"n\">CNAME<\/span><span class=\"w\">  <\/span><span class=\"n\">cdn<\/span><span class=\"mf\">.<\/span><span class=\"n\">blog<\/span><span class=\"mf\">.<\/span><span class=\"n\">cloudns<\/span><span class=\"mf\">.<\/span><span class=\"n\">be<\/span><span class=\"w\">  <\/span><span class=\"n\">\u4e0d\u5f00\u5c0f\u9ec4\u4e91<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u4ee3\u7406<\/span><span class=\"err\">\uff09<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8be6\u7ec6\u64cd\u4f5c\u6b65\u9aa4\u53ef\u4ee5\u53c2\u8003\u4e0b\u9762\u7684\u5185\u5bb9\uff0c\u4e5f\u662f UP \u53c2\u7167 B \u7ad9\u7684<a href=\"https:\/\/www.bilibili.com\/video\/BV1SM4m1176E\">\u767d\u5ad6Cloudflare\u6700\u4f18CDN\u7ed9\u81ea\u5df1\u7f51\u7ad9\u52a0\u901f\uff0c\u5c3d\u60c5\u4eab\u53d7CF\u7684\u514d\u8d39\u670d\u52a1_\u54d4\u54e9\u54d4\u54e9_bilibili<\/a> \u89c6\u9891\u6559\u7a0b\u7684\u5b9e\u8df5\u3002<\/p>\n<h4>3.1\u3001\u8f85\u52a9\u57df\u540d<\/h4>\n<p>\u672c\u6559\u7a0b\u4f7f\u7528\u7684\u8f85\u52a9\u57df\u540d\u662f blog.cloudns.be \u8fd9\u4e2a\u514d\u8d39\u7684\u4e8c\u7ea7\u57df\u540d\uff0c\u800c\u4e14\u6258\u7ba1\u5230\u4e86 Cloudflare \u4e0a\u3002\u8f85\u52a9\u57df\u540d\u4e3b\u8981\u6267\u884c 3 \u4e2a\u64cd\u4f5c\u6b65\u9aa4\uff0c\u5177\u4f53\u5982\u4e0b\uff1a<\/p>\n<h5>3.1.1 \u65b0\u589e A \u8bb0\u5f55<\/h5>\n<p>\u65b0\u589e\u4e00\u4e2a A \u7c7b\u578b\u7684\u4efb\u610f\u524d\u7f00\u57df\u540d\u4f5c\u4e3a\u56de\u9000\u6e90\uff0c\u4e14\u89e3\u6790\u5230\u81ea\u5df1\u7684\u771f\u5b9e\u7684\u670d\u52a1\u5668\u7684 ip\uff0c\u53e6\u5916\u9700\u8981 <code>\u5f00\u542f\u5c0f\u9ec4\u4e91<\/code>\u3002<\/p>\n<p>\u5982\u4e0b\u56fe\uff1aorigin.blog.cloudns.be \u7684 A \u8bb0\u5f55\u89e3\u6790\u5230\u4e8611.12.13.14\u8fd9\u4e2a ip\u3002<\/p>\n<p><img alt=\"\u65b0\u589e\u56de\u9000\u6e90\u57df\u540d\u89e3\u6790\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/blog_cloudns_be_origin_cdn_cfg.png\"><\/p>\n<h5>3.1.2 \u5f00\u542f\u81ea\u5b9a\u4e49\u4e3b\u673a\u540d<\/h5>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5728\u8f85\u52a9\u57df\u540d\u7684 <code>\u81ea\u5b9a\u4e49\u4e3b\u673a\u540d<\/code> \u83dc\u5355\u4e2d\uff0c\u6dfb\u52a0\u4e4b\u524d\u8bbe\u7f6e\u7684\u56de\u9000\u6e90\uff0c\u4f8b\u5982 origin.blog.cloudns.be\u3002<\/p>\n<p>\u63a5\u7740\uff0c\u5728 <code>\u81ea\u5b9a\u4e49\u4e3b\u673a\u540d<\/code> \u4e2d\u586b\u5199\u81ea\u5df1\u7684\u4e3b\u57df\u540d\uff0c\u4f8b\u5982 typecodes.com\u3002\u6ce8\u610f\uff0c\u9700\u8981\u9a8c\u8bc1\u57df\u540d\uff0c\u6309\u7167\u754c\u9762\u4e0a\u7684\u63d0\u793a\u5728\u4e3b\u57df\u540d\u4e2d\u6dfb\u52a0\u76f8\u5e94\u7684 TXT \u8bb0\u5f55\u5373\u53ef\u3002<\/p>\n<p><img alt=\"\u8f85\u52a9\u57df\u540d\u5f00\u542f\u81ea\u5b9a\u4e49\u4e3b\u673a\u529f\u80fd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/blog_cloudns_be_self_cfg.png\"><\/p>\n<h5>3.1.3 \u9009\u62e9\u4f18\u9009\u57df\u540d<\/h5>\n<p>\u65b0\u589e CNAME \u7c7b\u578b\u4efb\u610f\u524d\u7f00\u7684\u5b50\u57df\u540d\u5230\u4e00\u4e2a\u4f18\u9009\u57df\u540d\uff0c<code>\u5173\u95ed\u5c0f\u9ec4\u4e91<\/code>\u3002<\/p>\n<p>\u6ce8\u610f\uff1a\u53ef\u4ee5\u7528\u4e8e\u4f18\u9009\u7684\u57df\u540d\u6216\u8005 ip \u6709\u5f88\u591a\uff0c\u53ef\u4ee5\u4ece <a href=\"https:\/\/cf.vvhan.com\/\">Cloudflare \u4f18\u9009IP - \u6bcf15\u5206\u949f\u66f4\u65b0<\/a> \u6587\u4e2d\u4efb\u9009\u4e00\u4e2a\uff0c\u4f8b\u5982\uff1atypecodes.cloudflare.182682.xyz \u3002<\/p>\n<p>\u5982\u4e0b\u56fe\uff1acdn.blog.cloudns.be \u7684 CNAME \u8bb0\u5f55\u89e3\u6790\u5230\u4e86 www.visa.cn \u3002<\/p>\n<p><img alt=\"\u65b0\u589e\u56de\u9000\u6e90\u57df\u540d\u89e3\u6790\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/blog_cloudns_be_origin_cdn_cfg.png\"><\/p>\n<h4>3.2 \u4e3b\u57df\u540d<\/h4>\n<p>\u4e3b\u57df\u540d\u7684\u64cd\u4f5c\u6bd4\u8f83\u7b80\u5355\uff0c\u53ea\u9700\u8981\u628a\u57df\u540d\u901a\u8fc7 <code>CNMAE<\/code> \u89e3\u6790\u5230\u524d\u9762\u7684\u4f18\u9009\u8f85\u52a9\u57df\u540d\u5373\u53ef\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u4e3b\u57df\u540d typecodes.com \u89e3\u6790\u5230\u4e86 cdn.blog.cloudns.be.<\/p>\n<p><img alt=\"\u65b0\u589e\u56de\u9000\u6e90\u57df\u540d\u89e3\u6790\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/typecodes_com_cname.png\"><\/p>\n<h3>\u56db\u3001\u5176\u5b83<\/h3>\n<p>\u9664\u4e86\u4e0a\u9762\u8fd9\u79cd\u4f7f\u7528\u53e6\u5916\u4e00\u4e2a\u8f85\u52a9\u57df\u540d\u89e3\u6790\u5230\u4e00\u4e2a\u4f18\u9009\u57df\u540d\u7684\u65b9\u5f0f\u4e4b\u5916\uff0c\u8fd8\u53ef\u4ee5\u901a\u8fc7\u4e3b\u57df\u540d\u7684\u5b50\u57df\u540d\u89e3\u6790\u5230\u56fd\u5185 DNS \u8fdb\u884c\u5206\u6d41\u4f18\u9009\u3002<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"cloudflare"}},{"@attributes":{"term":"cloudns"}}]},{"title":"serv00\u548c ct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b (\u4e94)","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/serv00ct8nezha5.html","rel":"alternate"}},"published":"2024-09-07T16:10:00+08:00","updated":"2024-09-07T16:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-09-07:\/python\/serv00ct8nezha5.html","summary":"<h3>\u4e00\u3001\u524d\u8a00<\/h3>\n<p>\u524d\u6587 <a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha4.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u56db) - TypeCodes<\/a> \u4ecb\u7ecd\u4e86\u5982\u4f55 <code>utils.sh<\/code> \u811a\u672c\u7684\u4f7f\u7528\u65b9\u6cd5\uff0c\u4f8b\u5982\u4fee\u6539\u914d\u7f6e\u7b49\u7b49\uff0c\u90a3\u4e48\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4ecb\u7ecd\u65b0\u589e\u7684\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93<code>sqlite.db<\/code>\u7684\u5907\u4efd\u529f\u80fd\u3002<\/p>\n<p>\u9879\u76ee\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">github.com\/vfhky\/serv00_ct8_nezha<\/a><\/p>\n<p><img alt=\"\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93\u5907\u4efd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_backup_aliyun.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u524d\u8a00<\/h3>\n<p>\u524d\u6587 <a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha4.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u56db) - TypeCodes<\/a> \u4ecb\u7ecd\u4e86\u5982\u4f55 <code>utils.sh<\/code> \u811a\u672c\u7684\u4f7f\u7528\u65b9\u6cd5\uff0c\u4f8b\u5982\u4fee\u6539\u914d\u7f6e\u7b49\u7b49\uff0c\u90a3\u4e48\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4ecb\u7ecd\u65b0\u589e\u7684\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93<code>sqlite.db<\/code>\u7684\u5907\u4efd\u529f\u80fd\u3002<\/p>\n<p>\u9879\u76ee\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">github.com\/vfhky\/serv00_ct8_nezha<\/a><\/p>\n<p><img alt=\"\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93\u5907\u4efd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_backup_aliyun.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u7279\u70b9\u8bf4\u660e<\/h3>\n<p>\u672c\u6b21\u65b0\u589e\u7684\u4e91\u5907\u4efd\u54ea\u5412\u9762\u677f\u7684\u6570\u636e\u5e93<code>sqlite.db<\/code>\u7684\u529f\u80fd\uff0c\u5176\u4e3b\u8981\u7279\u70b9\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"m\">1<\/span>\u3001\u652f\u6301<span class=\"w\"> <\/span>\u4e03\u725b\u4e91\u5b58\u50a8\u3001\u817e\u8baf\u4e91cos\u3001\u963f\u91cc\u4e91oss<span class=\"w\"> <\/span>\u8fd9\u4e09\u79cd\u4e91\u5b58\u50a8\u5e73\u53f0\uff1b\n<span class=\"m\">2<\/span>\u3001\u81ea\u52a8\u521b\u5efabucket\u5b58\u50a8\u4ed3\u5e93\uff0c\u65e0\u9700\u5176\u5b83\u590d\u6742\u64cd\u4f5c\uff1b\n<span class=\"m\">3<\/span>\u3001\u652f\u6301bucket\u5b58\u50a8\u4ed3\u5e93\u540d\u79f0\u3001\u5907\u4efd\u6587\u4ef6\u7684\u5b58\u653e\u8def\u5f84\u7b49\uff1b\n<span class=\"m\">4<\/span>\u3001\u652f\u6301\u81ea\u5b9a\u4e49\u8fc7\u671f\u65f6\u95f4\uff0c\u5bf9\u8fc7\u671f\u7684\u5907\u4efd\u6570\u636e\u80fd\u591f\u81ea\u52a8\u5220\u9664\uff0c\u8282\u7ea6\u6210\u672c\u3002\n<\/code><\/pre><\/div>\n\n<h3>\u4e09\u3001\u4f7f\u7528\u65b9\u6cd5<\/h3>\n<p>\u7531\u4e8e\u662f\u9488\u5bf9\u54ea\u5412\u9762\u677f\u7684\u6570\u636e\u5e93\u5907\u4efd\uff0c\u6240\u4ee5\u53ea\u9700\u8981\u5728 <code>\u5b89\u88c5\u4e86 dashboard \u9762\u677f<\/code> \u7684\u4e3b\u673a\u4e0a\u64cd\u4f5c\u5373\u53ef\u3002\u5177\u4f53\u64cd\u4f5c\u6b65\u9aa4\u5982\u4e0b\uff1a<\/p>\n<h4>3.1\u3001\u66f4\u65b0 git \u4ee3\u7801\uff1a<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"m\">1<\/span>\u3001\u4e4b\u524d\u672a\u5b89\u88c5\u8fc7\u9879\u76ee\u7684<span class=\"w\"> <\/span>:<span class=\"w\"> <\/span>\u8bf7\u5148\u6309\u7167<span class=\"w\"> <\/span>https:\/\/typecodes.com\/python\/serv00ct8nezha.html<span class=\"w\"> <\/span>\u64cd\u4f5c\u5b89\u88c5\u597d\u9879\u76ee\n<span class=\"m\">2<\/span>\u3001\u4e4b\u524d\u5df2\u7ecf\u5b89\u88c5\u8fc7\u9879\u76ee<span class=\"w\"> <\/span>:<span class=\"w\"> <\/span><span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>serv00_ct8_nezha<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>pull\n<\/code><\/pre><\/div>\n\n<h4>3.2\u3001\u66f4\u65b0\u914d\u7f6e:<\/h4>\n<p>\u6700\u7b80\u5355\u7684\u65b9\u5f0f\u662f\u901a\u8fc7<code>python3 main.py<\/code>\u7136\u540e\u7b49\u914d\u7f6e\u6587\u4ef6\u66f4\u65b0\u540e\uff0c\u76f4\u63a5ctrl+c\u4e2d\u6b62\u540e\u9762\u4ee3\u7801\u8fd0\u884c\u5373\u53ef\u3002<\/p>\n<p>\u5f53\u7136\u4e5f\u53ef\u4ee5\u624b\u5de5\u6309\u9700\u590d\u5236\u5982\u4e0b\u914d\u7f6e\u5230<code>sys.conf<\/code>\u6587\u4ef6\u672b\u5c3e\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">#<\/span><span class=\"w\"> <\/span><span class=\"err\">\u4e03\u725b\u5907\u4efd<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"mh\">0<\/span><span class=\"o\">-<\/span><span class=\"err\">\u5426<\/span><span class=\"w\"> <\/span><span class=\"mh\">1<\/span><span class=\"o\">-<\/span><span class=\"err\">\u662f<\/span>\n<span class=\"n\">ENABLE_QINIU_BACKUP<\/span><span class=\"o\">=<\/span><span class=\"mh\">0<\/span>\n<span class=\"n\">QINIU_ACCESS_KEY<\/span><span class=\"o\">=<\/span><span class=\"n\">xxxxxx<\/span>\n<span class=\"n\">QINIU_SECRET_KEY<\/span><span class=\"o\">=<\/span><span class=\"n\">xxxxxx<\/span>\n<span class=\"p\">#<\/span><span class=\"w\"> <\/span><span class=\"nl\">https:<\/span><span class=\"c1\">\/\/developer.qiniu.com\/kodo\/1671\/region-endpoint-fq<\/span>\n<span class=\"n\">QINIU_REGION<\/span><span class=\"o\">=<\/span><span class=\"n\">z2<\/span>\n<span class=\"n\">QINIU_BUCKET_NAME<\/span><span class=\"o\">=<\/span><span class=\"n\">serv00<\/span><span class=\"o\">-<\/span><span class=\"n\">ct8<\/span><span class=\"o\">-<\/span><span class=\"n\">nezha<\/span>\n<span class=\"n\">QINIU_DIR_NAME<\/span><span class=\"o\">=<\/span><span class=\"n\">serv00_ct_nezha<\/span>\n<span class=\"p\">#<\/span><span class=\"w\"> <\/span><span class=\"err\">\u6587\u4ef6\u4fdd\u5b58\u591a\u5c11\u5929<\/span>\n<span class=\"n\">QINIU_EXPIRE_DAYS<\/span><span class=\"o\">=<\/span><span class=\"mh\">30<\/span>\n<span class=\"p\">#<\/span><span class=\"w\"> <\/span><span class=\"err\">\u817e\u8baf\u4e91<\/span><span class=\"n\">cos\u5907\u4efd<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"mh\">0<\/span><span class=\"o\">-<\/span><span class=\"err\">\u5426<\/span><span class=\"w\"> <\/span><span class=\"mh\">1<\/span><span class=\"o\">-<\/span><span class=\"err\">\u662f<\/span>\n<span class=\"n\">ENABLE_QCLOUD_COS_BACKUP<\/span><span class=\"o\">=<\/span><span class=\"mh\">0<\/span>\n<span class=\"n\">QCLOUD_COS_APP_ID<\/span><span class=\"o\">=<\/span><span class=\"n\">xxxxxx<\/span>\n<span class=\"n\">QCLOUD_COS_SECRET_ID<\/span><span class=\"o\">=<\/span><span class=\"n\">xxxxxx<\/span>\n<span class=\"n\">QCLOUD_COS_SECRET_KEY<\/span><span class=\"o\">=<\/span><span class=\"n\">xxxxxx<\/span>\n<span class=\"p\">#<\/span><span class=\"w\"> <\/span><span class=\"nl\">https:<\/span><span class=\"c1\">\/\/cloud.tencent.com\/document\/product\/436\/6224<\/span>\n<span class=\"n\">QCLOUD_COS_REGION<\/span><span class=\"o\">=<\/span><span class=\"n\">ap<\/span><span class=\"o\">-<\/span><span class=\"n\">guangzhou<\/span>\n<span class=\"n\">QCLOUD_COS_BUCKET_NAME<\/span><span class=\"o\">=<\/span><span class=\"n\">serv00<\/span><span class=\"o\">-<\/span><span class=\"n\">ct8<\/span><span class=\"o\">-<\/span><span class=\"n\">nezha<\/span>\n<span class=\"n\">QCLOUD_COS_DIR_NAME<\/span><span class=\"o\">=<\/span><span class=\"n\">serv00_ct_nezha<\/span>\n<span class=\"n\">QCLOUD_COS_EXPIRE_DAYS<\/span><span class=\"o\">=<\/span><span class=\"mh\">30<\/span>\n<span class=\"p\">#<\/span><span class=\"w\"> <\/span><span class=\"err\">\u963f\u91cc\u4e91<\/span><span class=\"n\">OSS\u5907\u4efd<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"mh\">0<\/span><span class=\"o\">-<\/span><span class=\"err\">\u5426<\/span><span class=\"w\"> <\/span><span class=\"mh\">1<\/span><span class=\"o\">-<\/span><span class=\"err\">\u662f<\/span>\n<span class=\"n\">ENABLE_ALI_OSS_BACKUP<\/span><span class=\"o\">=<\/span><span class=\"mh\">0<\/span>\n<span class=\"n\">ALI_OSS_ACCESS_KEY_ID<\/span><span class=\"o\">=<\/span><span class=\"n\">xxxxxx<\/span>\n<span class=\"n\">ALI_OSS_ACCESS_KEY_SECRET<\/span><span class=\"o\">=<\/span><span class=\"n\">xxxxxx<\/span>\n<span class=\"p\">#<\/span><span class=\"w\"> <\/span><span class=\"nl\">https:<\/span><span class=\"c1\">\/\/help.aliyun.com\/zh\/oss\/user-guide\/regions-and-endpoints<\/span>\n<span class=\"n\">ALI_OSS_ENDPOINT<\/span><span class=\"o\">=<\/span><span class=\"n\">oss<\/span><span class=\"o\">-<\/span><span class=\"n\">cn<\/span><span class=\"o\">-<\/span><span class=\"n\">guangzhou<\/span><span class=\"p\">.<\/span><span class=\"n\">aliyuncs<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span>\n<span class=\"n\">ALI_OSS_BUCKET_NAME<\/span><span class=\"o\">=<\/span><span class=\"n\">serv00<\/span><span class=\"o\">-<\/span><span class=\"n\">ct8<\/span><span class=\"o\">-<\/span><span class=\"n\">nezha<\/span>\n<span class=\"n\">ALI_OSS_DIR_NAME<\/span><span class=\"o\">=<\/span><span class=\"n\">serv00_ct_nezha<\/span>\n<span class=\"n\">ALI_OSS_EXPIRE_DAYS<\/span><span class=\"o\">=<\/span><span class=\"mh\">30<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3.3\u3001\u4fee\u6539\u914d\u7f6e:<\/h4>\n<p>\u6309\u7167\u9700\u8981\u5f00\u542f\u5907\u4efd\u529f\u80fd\uff0c\u4f8b\u5982<code>ENABLE_QCLOUD_COS_BACKUP=1<\/code>\u5f00\u542f\u817e\u8baf\u4e91cos\u5907\u4efd\u3002\u5f53\u7136\uff0c\u8fd8\u5f97\u914d\u7f6e\u76f8\u5173\u5bc6\u94a5\u3002<\/p>\n<h3>\u56db\u3001\u5907\u4efd\u6548\u679c<\/h3>\n<h4>4.1 \u4e03\u725b\u4e91\u5b58\u50a8<\/h4>\n<p>\u53ef\u4ee5\u770b\u5230\u4e03\u725b\u4e91\u5b58\u50a8\u5907\u4efd\u540e\u7684\u6587\u4ef6\u547d\u540d\u98ce\u683c\u662f <code>yyyymm\/dd_hh_mm_sqlite.db<\/code>\uff1a<\/p>\n<p><img alt=\"\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93\u4e03\u725b\u4e91\u5b58\u50a8\u5907\u4efd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_backup_qiniu_1.png\"><\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u4e03\u725b\u4e91\u5b58\u50a8\u662f\u9488\u5bf9\u6587\u4ef6\u7ea7\u522b\u7684\u8fc7\u671f\u65f6\u95f4\uff1a<\/p>\n<p><img alt=\"\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93\u4e03\u725b\u4e91\u5b58\u50a8\u5907\u4efd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_backup_qiniu_2.png\"><\/p>\n<h4>4.2 \u817e\u8baf\u4e91cos\u5b58\u50a8<\/h4>\n<p>\u53ef\u4ee5\u770b\u5230\u817e\u8baf\u4e91cos\u5b58\u50a8\u5907\u4efd\u540e\u7684\u6587\u4ef6\u547d\u540d\u98ce\u683c\u4e5f\u662f<code>yyyymm\/dd_hh_mm_sqlite.db<\/code>\uff1a<\/p>\n<p><img alt=\"\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93\u817e\u8baf\u4e91cos\u5b58\u50a8\u5907\u4efd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_backup_qcloud_cos_1.png\"><\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u817e\u8baf\u4e91cos\u5b58\u50a8\u662f\u9488\u5bf9bucket\u7ea7\u522b\u7684\u8fc7\u671f\u65f6\u95f4\uff1a<\/p>\n<p><img alt=\"\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93\u817e\u8baf\u4e91cos\u5b58\u50a8\u5907\u4efd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_backup_qcloud_cos_2.png\"><\/p>\n<h4>4.3 \u963f\u91cc\u4e91 oss \u5b58\u50a8<\/h4>\n<p>\u53ef\u4ee5\u770b\u5230\u963f\u91cc\u4e91oss\u5b58\u50a8\u5907\u4efd\u540e\u7684\u6587\u4ef6\u547d\u540d\u98ce\u683c\u4e5f\u662f<code>yyyymm\/dd_hh_mm_sqlite.db<\/code>\uff1a<\/p>\n<p><img alt=\"\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93\u963f\u91cc\u4e91oss\u5b58\u50a8\u5907\u4efd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_backup_aliyun_1.png\"><\/p>\n<p>\u53ef\u4ee5\u770b\u5230\u548c\u817e\u8baf\u4e91cos\u5b58\u50a8\u4e00\u6837\uff0c\u963f\u91cc\u4e91oss\u5b58\u50a8\u4e5f\u662f\u9488\u5bf9\u6587\u4ef6\u7ea7\u522b\u7684\u8fc7\u671f\u65f6\u95f4\uff1a<\/p>\n<p><img alt=\"\u54ea\u5412\u9762\u677f\u6570\u636e\u5e93\u963f\u91cc\u4e91oss\u5b58\u50a8\u5907\u4efd\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_backup_aliyun_2.png\"><\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u63a2\u9488"}}]},{"title":"serv00\u548c ct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b (\u56db)","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/serv00ct8nezha4.html","rel":"alternate"}},"published":"2024-09-01T18:10:00+08:00","updated":"2024-09-01T18:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-09-01:\/python\/serv00ct8nezha4.html","summary":"<h3>\u4e00\u3001\u5de5\u5177\u8bf4\u660e<\/h3>\n<p>\u524d\u6587 <a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha3.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u4e09) - TypeCodes<\/a> \u4ecb\u7ecd\u4e86\u5982\u4f55\u4f7f\u7528\u9752\u9f99\u9762\u677f\u8fdb\u884c\u4fdd\u6d3b\uff0c\u8fd9\u4e00\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4ecb\u7ecd <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\"> https:\/\/github.com\/vfhky\/serv00_ct8_nezha <\/a>\u9879\u76ee\u4e2d\u7684 <code>utils.sh<\/code> \u811a\u672c\u5de5\u5177\u3002<\/p>\n<p><img alt=\"utils.sh\u811a\u672c\u5de5\u5177\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_utils.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u5de5\u5177\u8bf4\u660e<\/h3>\n<p>\u524d\u6587 <a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha3.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u4e09) - TypeCodes<\/a> \u4ecb\u7ecd\u4e86\u5982\u4f55\u4f7f\u7528\u9752\u9f99\u9762\u677f\u8fdb\u884c\u4fdd\u6d3b\uff0c\u8fd9\u4e00\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4ecb\u7ecd <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\"> https:\/\/github.com\/vfhky\/serv00_ct8_nezha <\/a>\u9879\u76ee\u4e2d\u7684 <code>utils.sh<\/code> \u811a\u672c\u5de5\u5177\u3002<\/p>\n<p><img alt=\"utils.sh\u811a\u672c\u5de5\u5177\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_utils.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u83dc\u5355\u8bf4\u660e<\/h3>\n<p><code>utils.sh<\/code> \u811a\u672c\u4e3b\u8981\u662f\u5c01\u88c5\u4e86\u4e00\u4e9b\u7b80\u5355\u7684\u64cd\u4f5c\uff0c\u5305\u62ec vim \u73af\u5883\u3001\u751f\u6210 ssh \u516c\u79c1\u94a5\u3001\u5199\u5165\u8fdb\u7a0b\u76d1\u63a7\u3001\u4fee\u6539 dashboard \u6216\u8005 agent \u914d\u7f6e\u7b49\u7b49\u3002<\/p>\n<p>\u4e0b\u9762\u7b80\u8981\u4ecb\u7ecd\u4e00\u4e0b\u6bcf\u4e2a\u9009\u9879\u7684\u529f\u80fd\u548c\u4f7f\u7528\u65b9\u6cd5\uff1a<\/p>\n<h4>2.1 init<\/h4>\n<p>\u4f5c\u7528\uff1a\u4f18\u5316\u4f7f\u7528\u73af\u5883\uff1avim \u4f18\u5316\u884c\u53f7\u3001\u4f18\u5316\u590d\u5236\u7c98\u8d34\u7b49\uff1b\u589e\u52a0 ll \u547d\u4ee4\u663e\u793a linux \u5f53\u524d\u76ee\u5f55\uff1b\u5bf9\u9879\u76ee\u6240\u6709 shell \u6587\u4ef6\u589e\u52a0 x \u53ef\u6267\u884c\u6743\u9650\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\u7528\u6cd5\uff1a sh utils.sh init\n<\/code><\/pre><\/div>\n\n<h4>2.2 kill<\/h4>\n<p>\u4f5c\u7528\uff1a\u505c\u6b62\u5f53\u524d\u7528\u6237\u542f\u52a8\u7684\u6240\u6709\u8fdb\u7a0b\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\u7528\u6cd5\uff1a sh utils.sh kill\n<\/code><\/pre><\/div>\n\n<h4>2.3 key<\/h4>\n<p>\u4f5c\u7528\uff1a\u5728\u5f53\u524d\u7528\u6237\u7684.ssh \u76ee\u5f55\u751f\u6210 id_ed25519\u7684\u516c\u79c1\u94a5\uff0c\u4e14\u628a\u516c\u94a5\u5185\u5bb9\u5199\u5165\u5230 authorized_keys \u4e2d\uff0c\u7528\u4e8e ssh \u767b\u5f55\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\u7528\u6cd5\uff1a sh utils.sh key\n<\/code><\/pre><\/div>\n\n<h4>2.4 monitor<\/h4>\n<p>\u4f5c\u7528\uff1a\u628a\u4efb\u610f\u4e00\u4e2a\u8fdb\u7a0b\uff08\u4f8b\u5982\u54ea\u5412\u9762\u677f\uff0c\u6216\u8005\u81ea\u5df1\u5199\u7684\u4efb\u610f\u540e\u9762\u670d\u52a1\uff09\u5199\u5165\u5230\u8fdb\u7a0b\u76d1\u63a7\u914d\u7f6e\u6587\u4ef6 <code>monitor.conf<\/code>\u4e2d\uff0c\u8fd9\u6837\u5f53 crontab \u8fd0\u884c\u65f6\uff0c\u9879\u76ee\u4f1a\u81ea\u52a8\u68c0\u67e5\u914d\u7f6e\u7684\u8fd9\u4e2a\u8fdb\u7a0b\u662f\u5426\u5b58\u5728\uff0c\u4e0d\u5b58\u5728\u7684\u8bdd\uff0c\u5219\u81ea\u52a8\u62c9\u8d77\u8be5\u8fdb\u7a0b\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">\u7528\u6cd5\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">sh<\/span><span class=\"w\"> <\/span><span class=\"n\">utils<\/span><span class=\"p\">.<\/span><span class=\"n\">sh<\/span><span class=\"w\"> <\/span><span class=\"n\">monitor<\/span><span class=\"w\"> <\/span><span class=\"err\">\u914d\u7f6e\u6587\u4ef6\u7684\u5b8c\u6574\u8def\u5f84<\/span><span class=\"w\">  <\/span><span class=\"err\">\u65b0\u589e\u7684\u8fdb\u7a0b\u8def\u5f84<\/span><span class=\"w\">  <\/span><span class=\"err\">\u65b0\u589e\u7684\u8fdb\u7a0b\u540d<\/span><span class=\"w\">  <\/span><span class=\"err\">\u8fdb\u7a0b\u7684\u542f\u52a8\u547d\u4ee4<\/span><span class=\"w\">  <\/span><span class=\"err\">\u65b0\u589e\u7684\u8fdb\u7a0b\u8fd0\u884c\u65b9\u5f0f<\/span><span class=\"p\">(<\/span><span class=\"n\">background<\/span><span class=\"o\">-<\/span><span class=\"err\">\u524d\u53f0<\/span><span class=\"w\"> <\/span><span class=\"n\">foreground<\/span><span class=\"o\">-<\/span><span class=\"err\">\u540e\u53f0<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">\u793a\u4f8b\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">sh<\/span><span class=\"w\"> <\/span><span class=\"n\">utils<\/span><span class=\"p\">.<\/span><span class=\"n\">sh<\/span><span class=\"w\"> <\/span><span class=\"n\">monitor<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">serv00_ct8_nezha<\/span><span class=\"o\">\/<\/span><span class=\"n\">config<\/span><span class=\"o\">\/<\/span><span class=\"n\">monitor<\/span><span class=\"p\">.<\/span><span class=\"n\">conf<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">nezha_app<\/span><span class=\"o\">\/<\/span><span class=\"n\">dashboard<\/span><span class=\"w\"> <\/span><span class=\"n\">dashboard<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"n\">dashboard<\/span><span class=\"w\"> <\/span><span class=\"n\">background<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2.5 heart<\/h4>\n<p>\u4f5c\u7528\uff1a\u5f53\u65b0\u589e\u4e86\u4e00\u53f0\u9700\u8981\u4fdd\u6d3b\u7684\u4e3b\u673a\u65f6\uff0c\u901a\u8fc7\u811a\u672c\u628a\u4e3b\u673a\u4fe1\u606f\u5199\u5165\u5230\u4e3b\u673a\u5fc3\u8df3\u6587\u4ef6 <code>heartbeat.conf<\/code> \u4e2d\uff0c\u6837\u5f53 crontab \u8fd0\u884c\u65f6\uff0c\u9879\u76ee\u4f1a\u81ea\u52a8\u901a\u8fc7 ssh \u79c1\u94a5\u767b\u5f55\u8fd9\u53f0\u65b0\u589e\u7684\u4e3b\u673a\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\u7528\u6cd5\uff1a sh utils.sh monitor \u914d\u7f6e\u6587\u4ef6\u7684\u5b8c\u6574\u8def\u5f84  serv00_ct8_host  serv00_ct8_port  serv00_ct8_username\n\u793a\u4f8b\uff1a sh utils.sh monitor \/home\/vfhky\/serv00_ct8_nezha\/config\/heartbeat.conf s10.serv00.net 22 mytest\n<\/code><\/pre><\/div>\n\n<h4>2.6 modify_config<\/h4>\n<p>\u4f5c\u7528\uff1a\u4fee\u6539\u54ea\u5412 dashboard \u9762\u677f\u6216\u8005 agent \u7684\u914d\u7f6e\uff0c\u4fee\u6539\u540e\u4f1a\u81ea\u52a8\u8c03\u7528 <code>sh heart_beat_entry.sh<\/code> \u91cd\u542f dashboard\u548c agent \u8fdb\u7a0b\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\u7528\u6cd5\uff1a bash utils.sh modify_config\n<\/code><\/pre><\/div>\n\n<p>\u793a\u4f8b\u64cd\u4f5c\uff1a<\/p>\n<p><img alt=\"utils.sh\u811a\u672c\u5de5\u5177\" src=\"https:\/\/cdn.typecodes.com\/2024\/09\/serv00_ct8_nezha_utils_modify_config.png\"><\/p>\n<h4>2.7 pushplus<\/h4>\n<p>\u4f5c\u7528\uff1a\u6d4b\u8bd5\u901a\u8fc7 pushplus \u53d1\u9001\u901a\u77e5\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\u7528\u6cd5\uff1a bash utils.sh pushplus token \u901a\u77e5\u7684\u6807\u9898 \u901a\u77e5\u7684\u5185\u5bb9\n<\/code><\/pre><\/div>\n\n<h4>2.8 restore<\/h4>\n<p>\u4f5c\u7528\uff1a\u91cd\u65b0 serv00 \u6216\u8005 ct8 \u4e3b\u673a\u7684\u7cfb\u7edf\u3002\u811a\u672c\u4f1a\u5220\u9664\u7528\u6237\u76ee\u5f55\u9664\u4e86 backup \u5916\u7684\u6240\u6709\u6587\u4ef6\u6216\u8005\u76ee\u5f55\uff0c\u8bf7 <code>\u3010\u8c28\u614e\u4f7f\u7528\u3011<\/code>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\u7528\u6cd5\uff1a bash utils.sh restore\n<\/code><\/pre><\/div>\n\n<h4>2.9 uninstall<\/h4>\n<p>\u4f5c\u7528\uff1a\u5378\u8f7d\u5df2\u7ecf\u5b89\u88c5\u7684\u54ea\u5412\u63a2\u9488\u7684dashboard\u548cagent \u5e76\u5220\u9664 crontab\u4e2d\u7684\u54ea\u5412\u63a2\u9488\u5fc3\u8df3(heart_beat_entry.sh)\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\u7528\u6cd5\uff1a bash utils.sh uninstall\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u63a2\u9488"}},{"@attributes":{"term":"\u9752\u9f99"}}]},{"title":"serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u4e09)","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/serv00ct8nezha3.html","rel":"alternate"}},"published":"2024-08-27T20:10:00+08:00","updated":"2024-08-27T20:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-08-27:\/python\/serv00ct8nezha3.html","summary":"<h3>\u4e00\u3001\u9752\u9f99\u9762\u677f<\/h3>\n<p>\u524d\u6587 <a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha2.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u4e8c) - TypeCodes<\/a> \u4ecb\u7ecd\u4e86 <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\"> https:\/\/github.com\/vfhky\/serv00_ct8_nezha <\/a> \u9879\u76ee\u7684\u67b6\u6784\uff0c\u8fd9\u4e00\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528\u9752\u9f99\u9762\u677f\u6765\u8c03\u7528\u9879\u76ee\u76d1\u63a7\u8fdb\u7a0b\u548c\u4e3b\u673a\u4fdd\u6d3b\u3002<\/p>\n<p><img alt=\"\u9752\u9f99\u9762\u677f\u6267\u884c\u5b9a\u65f6\u4efb\u52a1\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_qinglong_log.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u9752\u9f99\u9762\u677f<\/h3>\n<p>\u524d\u6587 <a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha2.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u4e8c) - TypeCodes<\/a> \u4ecb\u7ecd\u4e86 <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\"> https:\/\/github.com\/vfhky\/serv00_ct8_nezha <\/a> \u9879\u76ee\u7684\u67b6\u6784\uff0c\u8fd9\u4e00\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528\u9752\u9f99\u9762\u677f\u6765\u8c03\u7528\u9879\u76ee\u76d1\u63a7\u8fdb\u7a0b\u548c\u4e3b\u673a\u4fdd\u6d3b\u3002<\/p>\n<p><img alt=\"\u9752\u9f99\u9762\u677f\u6267\u884c\u5b9a\u65f6\u4efb\u52a1\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_qinglong_log.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u64cd\u4f5c\u6b65\u9aa4<\/h3>\n<p>\u7531\u4e8e\u9879\u76ee\u7684\u8fdb\u7a0b\u76d1\u63a7\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b\u7684\u5165\u53e3\u662f <code>heart_beat_entry.sh<\/code> \u811a\u672c\uff0c\u6240\u4ee5\u6211\u4eec\u53ea\u9700\u8981\u5728\u9752\u9f99\u9762\u677f\u4e2d\u6dfb\u52a0\u5b9a\u65f6\u4efb\u52a1\uff0c\u901a\u8fc7 ssh \u79c1\u94a5\u6765\u767b\u5f55\u4e3b\u673a\u5e76\u6267\u884c\u8fd9\u4e2a\u811a\u672c\u3002<\/p>\n<h4>2.1 \u73af\u5883\u53d8\u91cf<\/h4>\n<p>\u5728\u9752\u9f99\u9762\u677f\u4e2d\u6dfb\u52a0\u4ee5\u4e0b 3 \u4e2a\u73af\u5883\u53d8\u91cf\uff0c\u7528\u4e8e\u540e\u9762\u7684 shell \u811a\u672c\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">SERV00_SSH_PRIVATE_KEY<\/span><span class=\"w\">  <\/span><span class=\"err\">\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">\u7531serv00_ct8_nezha\u751f\u6210\u7684ssh\u79c1\u94a5<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4e5f\u5c31\u662f<\/span><span class=\"err\">~<\/span><span class=\"o\">\/<\/span><span class=\"mf\">.<\/span><span class=\"n\">ssh<\/span><span class=\"o\">\/<\/span><span class=\"n\">id_ed25519\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">SERV00_SSH_HOST<\/span><span class=\"w\">         <\/span><span class=\"err\">\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">\u4e3b\u673ahost<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f8b\u5982<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">s7<\/span><span class=\"mf\">.<\/span><span class=\"n\">serv00<\/span><span class=\"mf\">.<\/span><span class=\"n\">com<\/span><span class=\"w\"> <\/span><span class=\"err\">\uff0c<\/span><span class=\"w\"> <\/span><span class=\"n\">s1<\/span><span class=\"mf\">.<\/span><span class=\"n\">ct8<\/span><span class=\"mf\">.<\/span><span class=\"n\">pl<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">SERV00_SSH_USER<\/span><span class=\"w\">         <\/span><span class=\"err\">\uff1a<\/span><span class=\"w\"> <\/span><span class=\"n\">\u4e3b\u673a\u7528\u6237\u540d<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"\u9752\u9f99\u9762\u677f\u6dfb\u52a0\u73af\u5883\u53d8\u91cf\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_qinglong_env.png\"><\/p>\n<h4>2.2 \u65b0\u5efa\u811a\u672c<\/h4>\n<p>\u8fdb\u5165\u9752\u9f99\u9762\u677f\u4e2d\u7684 <code>\u811a\u672c\u7ba1\u7406<\/code> \u83dc\u5355\uff0c\u7136\u540e\u65b0\u5efa\u4e00\u4e2a\u540d\u4e3a <code>serv00_ct8_nezha<\/code> \u7684\u76ee\u5f55\uff0c\u518d\u65b0\u5efa\u4e00\u4e2a\u540d\u4e3a <code>monitor.sh<\/code> \u7684\u811a\u672c\u4f4d\u4e8e\u8be5\u76ee\u5f55\u4e0b\u3002\u811a\u672c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">$(<\/span>date<span class=\"k\">)<\/span><span class=\"s2\">: \u5f00\u59cb\u6267\u884c\u8fdc\u7a0b\u547d\u4ee4&quot;<\/span>\n\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$SERV00_SSH_PRIVATE_KEY<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span>\/tmp\/id_rsa\nchmod<span class=\"w\"> <\/span><span class=\"m\">600<\/span><span class=\"w\"> <\/span>\/tmp\/id_rsa\n\n<span class=\"nv\">REMOTE_USER<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">SERV00_SSH_USER<\/span><span class=\"k\">:-<\/span><span class=\"nv\">root<\/span><span class=\"si\">}<\/span>\n\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">$(<\/span>date<span class=\"k\">)<\/span><span class=\"s2\">: \u5c1d\u8bd5\u8fde\u63a5\u5230 <\/span><span class=\"si\">${<\/span><span class=\"nv\">REMOTE_USER<\/span><span class=\"si\">}<\/span><span class=\"s2\">@<\/span><span class=\"si\">${<\/span><span class=\"nv\">SERV00_SSH_HOST<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span>ssh<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>\/tmp\/id_rsa<span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">StrictHostKeyChecking<\/span><span class=\"o\">=<\/span>no<span class=\"w\"> <\/span><span class=\"nv\">$REMOTE_USER<\/span>@<span class=\"si\">${<\/span><span class=\"nv\">SERV00_SSH_HOST<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\/usr\/home\/<\/span><span class=\"si\">${<\/span><span class=\"nv\">REMOTE_USER<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/serv00_ct8_nezha\/heart_beat_entry.sh&quot;<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">$(<\/span>date<span class=\"k\">)<\/span><span class=\"s2\">: \u8fdc\u7a0b\u547d\u4ee4\u6267\u884c\u6210\u529f&quot;<\/span>\n<span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">$(<\/span>date<span class=\"k\">)<\/span><span class=\"s2\">: \u8fdc\u7a0b\u547d\u4ee4\u6267\u884c\u5931\u8d25&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\nrm<span class=\"w\"> <\/span>\/tmp\/id_rsa\n\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">$(<\/span>date<span class=\"k\">)<\/span><span class=\"s2\">: \u811a\u672c\u6267\u884c\u7ed3\u675f&quot;<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2.3 \u5b9a\u65f6\u4efb\u52a1<\/h4>\n<p>\u5728\u9752\u9f99\u9762\u677f\u7684 <code>\u5b9a\u65f6\u4efb\u52a1<\/code> \u83dc\u5355\u4e0b\u9762\u65b0\u5efa\u4e00\u4e2a\u5b9a\u65f6\u4efb\u52a1\uff0c\u8981\u6267\u884c\u7684\u547d\u4ee4\/\u811a\u672c\u4e3a <code>task serv00_ct8_nezha\/monitor.sh<\/code>\u3002<\/p>\n<p><img alt=\"\u9752\u9f99\u9762\u677f\u6dfb\u52a0\u5b9a\u65f6\u4efb\u52a1\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_qinglong_monitor.png\"><\/p>\n<h4>2.4 \u624b\u5de5\u6267\u884c\u67e5\u770b\u6548\u679c<\/h4>\n<p>\u5728\u9752\u9f99\u9762\u677f\u4e0a\u624b\u5de5\u6267\u884c\u8fd9\u4e2a\u5b9a\u65f6\u4efb\u52a1\uff0c\u7136\u540e\u5728 serv00 \u6216\u8005 ct8 \u4e3b\u673a\u4e0a\u4f7f\u7528 <code>ps<\/code> \u547d\u4ee4\u67e5\u770b\u6267\u884c\u6267\u884c\u60c5\u51b5\uff1a<\/p>\n<p><img alt=\"serv00\u6216ct8\u4e3b\u673a\u6267\u884c\u547d\u4ee4\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_qinglong_crontab.png\"><\/p>\n<h4>2.5 \u67e5\u770b\u9879\u76ee\u65e5\u5fd7<\/h4>\n<p>\u5728 serv00 \u6216\u8005 ct8 \u4e3b\u673a\u4e0a\u8fdb\u5165 serv00_ct8_nezha \u76ee\u5f55\u540e\uff0c\u4f7f\u7528 <code>tail -f log\/main.log<\/code> \u67e5\u770b\u9879\u76ee\u65e5\u5fd7\u3002<\/p>\n<p>\u6ce8\uff1a\u4e0b\u56fe\u4e2d\u7684\u4e3b\u673a\u7528\u6237\u548c\u4e3b\u673a\u540d\u5df2\u7ecf\u7528 shell \u547d\u4ee4\u8fdb\u884c\u4e86\u9510\u654f\uff1a<\/p>\n<p><img alt=\"serv00\u6216ct8\u4e3b\u673a\u6267\u884c\u547d\u4ee4\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_exec_log.png\"><\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u63a2\u9488"}},{"@attributes":{"term":"\u9752\u9f99"}}]},{"title":"serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u4e8c)","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/serv00ct8nezha2.html","rel":"alternate"}},"published":"2024-08-25T20:10:00+08:00","updated":"2024-08-25T20:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-08-25:\/python\/serv00ct8nezha2.html","summary":"<h3>\u4e00\u3001\u9879\u76ee\u7684\u7b80\u5355\u67b6\u6784\u8bf4\u660e<\/h3>\n<p>\u524d\u6587 <a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b - TypeCodes<\/a> \u4ecb\u7ecd\u4e86 <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a> \u9879\u76ee\u7684\u4f7f\u7528\u65b9\u6cd5\uff0c\u8fd9\u4e00\u7bc7\u6587\u7ae0\u7b80\u8981\u901a\u8fc7\u4e24\u4e2a\u6d41\u7a0b\u56fe\u6765\u8bf4\u660e\u4e00\u4e0b\u6574\u4e2a\u9879\u76ee\u7684\u5927\u4f53\u6d41\u7a0b\u3002<\/p>\n","content":"<h3>\u4e00\u3001\u9879\u76ee\u7684\u7b80\u5355\u67b6\u6784\u8bf4\u660e<\/h3>\n<p>\u524d\u6587 <a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b - TypeCodes<\/a> \u4ecb\u7ecd\u4e86 <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a> \u9879\u76ee\u7684\u4f7f\u7528\u65b9\u6cd5\uff0c\u8fd9\u4e00\u7bc7\u6587\u7ae0\u7b80\u8981\u901a\u8fc7\u4e24\u4e2a\u6d41\u7a0b\u56fe\u6765\u8bf4\u660e\u4e00\u4e0b\u6574\u4e2a\u9879\u76ee\u7684\u5927\u4f53\u6d41\u7a0b\u3002<\/p>\n\n\n<h3>\u4e8c\u3001\u811a\u672c\u5b89\u88c5\u6d41\u7a0b<\/h3>\n<p>\u5f53\u6267\u884c <code>python3 main.py<\/code> \u5b89\u88c5\u54ea\u5412 dashboard \u6216\u8005 agent \u65f6\uff0c\u4f1a\u8fdb\u5165\u5230\u5982\u4e0b\u6d41\u7a0b\uff1a<\/p>\n<p><img alt=\"\u811a\u672c\u5b89\u88c5\u6d41\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_install.png\"><\/p>\n<h3>\u4e09\u3001crontab \u8fdb\u7a0b\u76d1\u63a7\u548c\u4e3b\u673a\u95f4\u4fdd\u6d3b<\/h3>\n<p>\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u4f1a\u751f\u6210\u4e00\u4e2a crontab\uff0c\u901a\u8fc7\u8fd9\u4e2a crontab \u6765\u76d1\u63a7\u54ea\u5412 dashboard \u6216\u8005 agent \u4ee5\u53ca\u81ea\u5b9a\u4e49\u7684\u8fdb\u7a0b\uff0c\u4fdd\u6301\u8fdb\u7a0b\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u3002<\/p>\n<p>\u5f53\u8fdb\u7a0b\u88ab serv00 \u6216\u8005 ct8 \u4e3b\u673a\u81ea\u52a8 kill \u6389\u65f6\uff08\u4f7f\u7528 PM 2 \u811a\u672c\u88ab kill \u7684\u6982\u7387\u5f88\u5927\uff09\uff0c\u80fd\u591f\u81ea\u52a8\u91cd\u65b0\u62c9\u8d77\u8fdb\u7a0b\u3002<\/p>\n<p>\u6700\u540e\u4f1a\u901a\u8fc7ssh\u79c1\u94a5\u767b\u5f55\u5176\u5b83\u4e3b\u673a\uff0c\u5e76\u6267\u884c\u4fdd\u6d3b\u811a\u672c\uff0c\u4fdd\u8bc1\u6240\u6709\u4e3b\u673a\u7684\u54ea\u5412\u8fdb\u7a0b\u90fd\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\u3002<\/p>\n<p><img alt=\"\u8fdb\u7a0b\u76d1\u63a7\u548c\u4e3b\u673a\u4fdd\u6d3b\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_crontab.png\"><\/p>\n<h3>\u56db\u3001\u5176\u5b83<\/h3>\n<p>\u6574\u4e2a\u9879\u76ee\u5f00\u53d1\u91c7\u7528 <code>python3 + shell<\/code> \u7684\u65b9\u5f0f\uff0c\u5176\u4e2d python \u7528\u4e8e\u4e3b\u8981\u903b\u8f91\u5904\u7406\uff0cshell \u4e3b\u8981\u7528\u4e8e\u4e00\u4e9b\u7b80\u5355\u7684\u547d\u4ee4\u64cd\u4f5c\u3002<\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u63a2\u9488"}}]},{"title":"serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/serv00ct8nezha.html","rel":"alternate"}},"published":"2024-08-25T10:10:00+08:00","updated":"2024-08-25T10:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-08-25:\/python\/serv00ct8nezha.html","summary":"<h3>\u4e00\u3001\u80cc\u666f<\/h3>\n<p>\u57fa\u4e8e <code>serv00<\/code> \u548c <code>ct8<\/code> \u8fd9\u79cd\u914d\u7f6e\u8f83\u4f4e\u7684\u4e3b\u673a\uff0c\u6bd4\u8f83\u9002\u5408\u7528\u6765\u505a\u63a2\u9488\u3002\u76ee\u524d\u8fd8\u6ca1\u53d1\u73b0\u80fd\u81ea\u52a8\u5b89\u88c5\u54ea\u5412\u9762\u677f\u548c agent \u5ba2\u6237\u7aef\u7684\u811a\u672c\uff0c\u4ee5\u53ca\u591a\u4e3b\u673a\u95f4\u52a8\u6001\u4fdd\u6d3b\uff0c\u6240\u4ee5\u5199\u4e86\u8fd9\u4e2a github \u9879\u76ee: <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a>\u3002<\/p>\n<p><img alt=\"\u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba\u901a\u77e5\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_6.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u80cc\u666f<\/h3>\n<p>\u57fa\u4e8e <code>serv00<\/code> \u548c <code>ct8<\/code> \u8fd9\u79cd\u914d\u7f6e\u8f83\u4f4e\u7684\u4e3b\u673a\uff0c\u6bd4\u8f83\u9002\u5408\u7528\u6765\u505a\u63a2\u9488\u3002\u76ee\u524d\u8fd8\u6ca1\u53d1\u73b0\u80fd\u81ea\u52a8\u5b89\u88c5\u54ea\u5412\u9762\u677f\u548c agent \u5ba2\u6237\u7aef\u7684\u811a\u672c\uff0c\u4ee5\u53ca\u591a\u4e3b\u673a\u95f4\u52a8\u6001\u4fdd\u6d3b\uff0c\u6240\u4ee5\u5199\u4e86\u8fd9\u4e2a github \u9879\u76ee: <a href=\"https:\/\/github.com\/vfhky\/serv00_ct8_nezha\">https:\/\/github.com\/vfhky\/serv00_ct8_nezha<\/a>\u3002<\/p>\n<p><img alt=\"\u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba\u901a\u77e5\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_6.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u7279\u70b9<\/h3>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u652f\u6301\u5206\u522b\u5b89\u88c5\u6700\u65b0\u7248\u672c\u7684\u54ea\u5412dashboard\u548cagent\u5ba2\u6237\u7aef<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4e14\u5b89\u88c5\u65f6\u57fa\u672c\u4e00\u8def\u70b9\u786e\u8ba4\u5373\u53ef<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u65e0\u9700\u590d\u6742\u64cd\u4f5c<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5f03\u7528PM2<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f7f\u7528\u811a\u672c\u8fdb\u884c\u8fdb\u7a0b\u76d1\u63a7<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u5c3d\u91cf\u907f\u514d\u88abserv00\u6216\u8005ct8\u6740\u6389<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u81ea\u52a8\u751f\u6210crontab<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u5b9e\u73b0\u8fdb\u7a0b\u76d1\u63a7\u548c\u4e3b\u673a\u4fdd\u6d3b<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">4<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5bf9\u4e8e\u591a\u4e2a\u4e3b\u673a<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u53ef\u4ee5\u5b9e\u73b0\u76f8\u4e92\u4fdd\u6d3b<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">5<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u591a\u4e2a\u4e3b\u673a\u4e4b\u95f4\u7684\u901a\u4fe1<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f7f\u7528ssh\u516c\u79c1\u94a5<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u65e0\u9700\u66b4\u9732\u4e3b\u673a\u5bc6\u7801<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">6<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u652f\u6301<\/span><span class=\"w\"> <\/span><span class=\"n\">\u9752\u9f99\u9762\u677f<\/span><span class=\"w\"> <\/span><span class=\"n\">\u6216\u8005\u5176\u5b83\u4e91\u4e3b\u673a\u5bf9\u81ea\u5df1\u7684serv00\u6216\u8005ct8\u4e3b\u673a\u8fdb\u884c\u8fdb\u7a0b\u76d1\u63a7\u548c\u4fdd\u6d3b<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">7<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u652f\u6301\u81ea\u5b9a\u4e49\u8fdb\u7a0b\u4fdd\u6d3b<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f8b\u5982\u81ea\u5df1\u5199\u7684\u4efb\u4f55\u4e00\u4e2a\u670d\u52a1<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u53ef\u4ee5\u5728monitor<\/span><span class=\"mf\">.<\/span><span class=\"n\">conf\u914d\u7f6e\u6587\u4ef6\u4e2d\u7b80\u5355\u914d\u7f6e\u5373\u53ef<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">8<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u652f\u6301\u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4f01\u4e1a\u5fae\u4fe1app\u5e94\u7528<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">tg<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">pushPlus\u7b49\u76d1\u63a7\u901a\u77e5<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">9<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u81ea\u52a8\u5907\u4efd\u54ea\u5412dashboard\u9762\u677f\u6570\u636e\u5e93\u5230<\/span><span class=\"w\"> <\/span><span class=\"n\">\u4e03\u725b\u4e91\u5b58\u50a8<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u817e\u8baf\u4e91cos<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u963f\u91cc\u4e91oss<\/span><span class=\"w\"> <\/span><span class=\"n\">\u8fd9\u4e09\u79cd\u4e91\u5b58\u50a8\u5e73\u53f0<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h3>\u4e09\u3001\u4f7f\u7528\u6b65\u9aa4<\/h3>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4e0b\u8f7d\u811a\u672c<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">clone<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">github<\/span><span class=\"mf\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">serv00_ct8_nezha<\/span><span class=\"mf\">.<\/span><span class=\"n\">git<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u8fdb\u5165\u9879\u76ee<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">cd<\/span><span class=\"w\"> <\/span><span class=\"n\">serv00_ct8_nezha<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">vim<\/span><span class=\"w\"> <\/span><span class=\"n\">config<\/span><span class=\"o\">\/<\/span><span class=\"n\">host<\/span><span class=\"mf\">.<\/span><span class=\"n\">eg<\/span><span class=\"w\"> <\/span><span class=\"n\">\u7136\u540e\u6dfb\u52a0\u9700\u8981\u4fdd\u6d3b\u7684\u4e3b\u673a\u4fe1\u606f<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"mf\">4<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5f00\u59cb\u5b89\u88c5<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">python3<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span><span class=\"mf\">.<\/span><span class=\"n\">py<\/span><span class=\"w\"> <\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h3>\u56db\u3001\u914d\u7f6e\u6587\u4ef6\u8bf4\u660e<\/h3>\n<p>\u5728<code>config<\/code>\u914d\u7f6e\u76ee\u5f55\u4e0b\u9762\u67094\u4e2a\u6a21\u677f\u6587\u4ef6\uff0c\u5176\u4e2d<code>host.eg<\/code>\u548c<code>sys.eg<\/code>\u8fd9\u4e24\u4e2a\u914d\u7f6e\u6587\u4ef6\u662f\u9700\u8981\u624b\u5de5\u914d\u7f6e\uff0c\u5176\u5b83\u4e24\u4e2a\u6587\u4ef6\u90fd\u4e0d\u9700\u8981\u4fee\u6539\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u6839\u636e\u76f8\u5173\u903b\u8f91\u751f\u6210\u5bf9\u5e94\u7684<code>xxx.conf<\/code>\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<h4>4.1 \u4e3b\u673a\u914d\u7f6e\u6a21\u677f host.eg<\/h4>\n<p><code>host.eg<\/code>\u6a21\u677f\u6587\u4ef6\u662f\u586b\u5199\u9700\u8981\u4fdd\u6d3b\u7684\u4e3b\u673a\u4fe1\u606f\u3002\u4f8b\u5982\u5f53\u524d\u8981\u4fdd\u6d3b\u53e6\u5916\u4e00\u4e2as9\u7684serv00\u673a\u5668(\u7528\u6237\u540d\u662fvhub)\uff0c\u90a3\u4e48\u586b\u5199\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>s9.serv00.com|22|vhub|password\n<\/code><\/pre><\/div>\n\n<h4>4.2 \u7cfb\u7edf\u5e38\u91cf\u6a21\u677f sys.eg<\/h4>\n<p>\u8fd9\u4e2a\u662f\u7cfb\u7edf\u914d\u7f6e\u6587\u4ef6\uff0c\u53ef\u4ee5\u914d\u7f6e\u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba\u3001tg\u3001pushPlus \u7b49\u76d1\u63a7\u901a\u77e5\u7b49\u529f\u80fd\u3002<\/p>\n<h4>4.3 \u8fdb\u7a0b\u76d1\u63a7\u6a21\u677f monitor.eg<\/h4>\n<p>\u7528\u4e8e\u8fdb\u7a0b\u76d1\u63a7\uff1a\u5f53\u8fdb\u7a0b\u4e0d\u5b58\u5728\u65f6\uff08\u4f8b\u5982\u88abserv00\u7cfb\u7edf\u81ea\u52a8\u6740\u6389\uff09\uff0c\u4f1a\u81ea\u52a8\u91cd\u65b0\u62c9\u8d77\u8fdb\u7a0b\u3002\u5f53\u5b89\u88c5\u5b8c\u54ea\u5412dashboard\u548cagent\u540e\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u751f\u6210\u7c7b\u578b\u4ee5\u4e0b\u7684\u914d\u7f6e\u3002\u5f53\u7136\u4e5f\u53ef\u4ee5\u624b\u5de5\u8ffd\u52a0\u5176\u5b83\u8fdb\u7a0b\u6765\u5b9e\u73b0\u8be5\u8fdb\u7a0b\u7684\u76d1\u63a7\u4fdd\u6d3b\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">nezha_app<\/span><span class=\"o\">\/<\/span><span class=\"n\">agent<\/span><span class=\"o\">|<\/span><span class=\"n\">nezha<\/span><span class=\"o\">-<\/span><span class=\"n\">agent<\/span><span class=\"o\">|<\/span><span class=\"n\">sh<\/span><span class=\"w\"> <\/span><span class=\"n\">nezha<\/span><span class=\"o\">-<\/span><span class=\"n\">agent<\/span><span class=\"p\">.<\/span><span class=\"n\">sh<\/span><span class=\"o\">|<\/span><span class=\"n\">foreground<\/span>\n<span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">nezha_app<\/span><span class=\"o\">\/<\/span><span class=\"n\">dashboard<\/span><span class=\"o\">|<\/span><span class=\"n\">nezha<\/span><span class=\"o\">-<\/span><span class=\"n\">dashboard<\/span><span class=\"o\">|<\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"n\">nezha<\/span><span class=\"o\">-<\/span><span class=\"n\">dashboard<\/span><span class=\"o\">|<\/span><span class=\"n\">background<\/span>\n<\/code><\/pre><\/div>\n\n<h4>4.4 \u591a\u4e3b\u673a\u5fc3\u8df3\u4fdd\u6d3b\u6a21\u677f heartbeat.eg<\/h4>\n<p>\u5f53\u624b\u5de5\u914d\u7f6e\u4e86<code>host.eg<\/code>\u4e3b\u673a\u6a21\u677f\u5e76\u624b\u5de5\u6267\u884c\u5b89\u88c5\u540e\uff0c\u7cfb\u7edf\u4f1a\u6839\u636e\u8fd9\u4e2a\u6a21\u677f\u81ea\u52a8\u751f\u6210\u4e3b\u673a\u9700\u8981\u4fdd\u6d3b\u7684\u4e3b\u673a\u4fe1\u606f\u3002\u793a\u4f8b\u5982\u4e0b\uff1a<\/p>\n<p><code>s9.serv00.com|22|vhub<\/code><\/p>\n<h3>\u4e94\u3001\u5b89\u88c5\u8fc7\u7a0b\u8bb0\u5f55<\/h3>\n<p>\u4e0b\u9762\u662f\u5b89\u88c5\u8fc7\u7a0b\u7684\u4e00\u4e9b\u622a\u56fe\uff1a<\/p>\n<p><img alt=\"\u751f\u6210ssh\u516c\u79c1\u94a5\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_1.png\"><\/p>\n<p><img alt=\"\u5b89\u88c5\u54ea\u5412dashboard \" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_2.png\"><\/p>\n<p><img alt=\"\u5b89\u88c5\u54ea\u5412agent\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_3.png\"><\/p>\n<p><img alt=\"\u751f\u6210\u8fdb\u7a0b\u76d1\u63a7\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b\u7684crontab\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_4.png\"><\/p>\n<h3>\u516d\u3001\u76d1\u63a7\u6d88\u606f\u63a8\u9001<\/h3>\n<p>\u9879\u76ee\u652f\u6301\u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba\u3001\u4f01\u4e1a\u5fae\u4fe1 app \u5e94\u7528\u3001tg\u3001pushPlus \u7b49\u63a8\u9001\u65b9\u5f0f\u3002\u63a8\u9001\u6548\u679c\u5982\u4e0b\uff1a<\/p>\n<h4>6.1 \u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba\uff1a<\/h4>\n<p><img alt=\"\u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba\u901a\u77e5\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_qywx_bot.jpeg\"><\/p>\n<h4>6.2 \u4f01\u4e1a\u5fae\u4fe1 app \u5e94\u7528\uff1a<\/h4>\n<p>\u6ce8\u610f\uff0c\u4f01\u4e1a\u5fae\u4fe1\u5e94\u7528\u9700\u8981\u5728\u4f01\u5fae\u540e\u53f0\u8bbe\u7f6e <code>\u4f01\u4e1a\u53ef\u4fe1IP<\/code>\uff0c\u4e5f\u5c31\u662f\u9700\u8981\u6dfb\u52a0 serv00 \u6216\u8005 ct8 \u4e3b\u673a\u7684 ip\uff0c\u5426\u5219\u4f1a\u62a5\u9519\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">{<\/span><span class=\"s2\">&quot;errcode&quot;<\/span><span class=\"p\">:<\/span><span class=\"mi\">60020<\/span><span class=\"p\">,<\/span><span class=\"s2\">&quot;errmsg&quot;<\/span><span class=\"p\">:<\/span><span class=\"s2\">&quot;not allow to access from your ip, hint: [1724584289591812691117273], from ip: \u4f60\u7684serv00\u4e3b\u673aip, more info at https:\/\/open.work.weixin.qq.com\/devtool\/query?e=60020&quot;<\/span><span class=\"p\">}<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"\u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba\u901a\u77e5\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_5.png\"><\/p>\n<h4>6.3 TG\u901a\u77e5\uff1a<\/h4>\n<p><img alt=\"TG\u901a\u77e5\" src=\"https:\/\/cdn.typecodes.com\/2024\/08\/serv00_ct8_nezha_7.png\"><\/p>\n<h3>\u4e03\u3001\u67b6\u6784\u8bf4\u660e<\/h3>\n<p>\u4e0b\u4e00\u7bc7\u6587\u7ae0\u4f1a\u7b80\u5355\u8bf4\u4e00\u4e0b\u4e1a\u52a1\u67b6\u6784\uff0c\u8be6\u89c1\uff1a<a href=\"https:\/\/typecodes.com\/python\/serv00ct8nezha2.html\">serv00\u548cct8\u4e3b\u673a\u4e00\u952e\u5b89\u88c5\u54ea\u5412\u63a2\u9488\u548c\u591a\u4e3b\u673a\u4fdd\u6d3b(\u4e8c) - TypeCodes<\/a><\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u63a2\u9488"}}]},{"title":"\u5728serv00\u4e3b\u673a\u4e0a\u5b89\u88c5\u54ea\u5412\u63a2\u9488","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/server00installnezha.html","rel":"alternate"}},"published":"2024-07-28T15:10:00+08:00","updated":"2024-07-28T15:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-07-28:\/linux\/server00installnezha.html","summary":"<h3>\u4e00\u3001\u63a2\u9488<\/h3>\n<p>\u524d\u6bb5\u65f6\u95f4\u7533\u8bf7\u4e86 serv00 \u4e3b\u673a\u4e00\u76f4\u95f2\u7f6e\u6ca1\u6709\u7528\uff0c\u4f46\u662f\u8fd9\u4e2a\u4e3b\u673a\u7684\u914d\u7f6e\u6bd4\u8f83\u4f4e\uff08512 M \u5185\u5b58\uff09\uff0c\u6240\u4ee5\u51c6\u5907\u7528\u6765\u88c5\u4e2a\u5de5\u5177\u7c7b\u7684\u5c0f\u5e94\u7528\u3002<\/p>\n<p>\u4e4b\u524d\u4f7f\u7528 <code>Uptime Kuma<\/code> \u521b\u5efa\u4e86\u4e00\u4e2a\u6bd4\u8f83\u5168\u80fd\u7684\u63a2\u9488\uff1a<a href=\"https:\/\/status.typecodes.com\/status\/web\">web monitor<\/a> \uff0c\u770b\u7740\u54ea\u5412\u63a2\u9488\u4f7f\u7528\u91cf\u4e5f\u6bd4\u8f83\u5927\uff0c\u4e8e\u662f\u9009\u62e9\u5728 server00 \u4e3b\u673a\u4e0a\u5b89\u88c5\u4e86\u4e00\u4e0b\u3002<\/p>\n<p><img alt=\"pelican \u535a\u5ba2\u751f\u6210\u65f6\u589e\u52a0 gitcommit \u548c cicd \u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2024\/07\/nezha.png\"><\/p>\n","content":"<h3>\u4e00\u3001\u63a2\u9488<\/h3>\n<p>\u524d\u6bb5\u65f6\u95f4\u7533\u8bf7\u4e86 serv00 \u4e3b\u673a\u4e00\u76f4\u95f2\u7f6e\u6ca1\u6709\u7528\uff0c\u4f46\u662f\u8fd9\u4e2a\u4e3b\u673a\u7684\u914d\u7f6e\u6bd4\u8f83\u4f4e\uff08512 M \u5185\u5b58\uff09\uff0c\u6240\u4ee5\u51c6\u5907\u7528\u6765\u88c5\u4e2a\u5de5\u5177\u7c7b\u7684\u5c0f\u5e94\u7528\u3002<\/p>\n<p>\u4e4b\u524d\u4f7f\u7528 <code>Uptime Kuma<\/code> \u521b\u5efa\u4e86\u4e00\u4e2a\u6bd4\u8f83\u5168\u80fd\u7684\u63a2\u9488\uff1a<a href=\"https:\/\/status.typecodes.com\/status\/web\">web monitor<\/a> \uff0c\u770b\u7740\u54ea\u5412\u63a2\u9488\u4f7f\u7528\u91cf\u4e5f\u6bd4\u8f83\u5927\uff0c\u4e8e\u662f\u9009\u62e9\u5728 server00 \u4e3b\u673a\u4e0a\u5b89\u88c5\u4e86\u4e00\u4e0b\u3002<\/p>\n<p><img alt=\"pelican \u535a\u5ba2\u751f\u6210\u65f6\u589e\u52a0 gitcommit \u548c cicd \u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2024\/07\/nezha.png\"><\/p>\n\n\n<h3>\u4e8c\u3001\u64cd\u4f5c\u6b65\u9aa4<\/h3>\n<h4>1\u3001\u5b89\u88c5 pm2 \u7ba1\u7406\u5668<\/h4>\n<p>\u7528\u8fc7 NodeJs \u7684\u5bf9 pm2 \u5e94\u8be5\u6bd4\u8f83\u719f\u6089\uff0c\u5e38\u7528\u4e8e\u521b\u5efa\u8fdb\u7a0b\u5b88\u62a4\u3001\u8fdb\u7a0b\u76d1\u63a7\u3001\u65e5\u5fd7\u67e5\u770b\u7b49\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>bash<span class=\"w\"> <\/span>&lt;<span class=\"o\">(<\/span>curl<span class=\"w\"> <\/span>-s<span class=\"w\"> <\/span>https:\/\/raw.githubusercontent.com\/k0baya\/alist_repl\/main\/serv00\/install-pm2.sh<span class=\"o\">)<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2\u3001server00 \u5f00\u542f\u81ea\u5b9a\u4e49\u5e94\u7528<\/h4>\n<p>\u5728 server00 \u7684 panel \u63a7\u5236\u9762\u677f  <a href=\"https:\/\/panel7.serv00.com\/permissions\/binexec\">Zaloguj si\u0119<\/a> \u4e2d\u628a <code>run you own application<\/code> \u8bbe\u7f6e\u6210 enable \u3002<\/p>\n<p><img alt=\"server00 \u5f00\u542f\u81ea\u5b9a\u4e49\u5e94\u7528\" src=\"https:\/\/cdn.typecodes.com\/2024\/07\/server00_application_enable.png\"><\/p>\n<h4>3\u3001server00 \u5f00\u653e\u7aef\u53e3<\/h4>\n<p>\u540c\u6837\u5728 server00 \u7684 panel \u63a7\u5236\u9762\u677f  <a href=\"https:\/\/panel7.serv00.com\/port\/\">Zaloguj si\u0119<\/a> \u4e2d\u65b0\u589e <code>10087<\/code> \u548c <code>10089<\/code> \u8fd9\u4e24\u4e2a\u76d1\u542c\u7aef\u53e3\uff0c\u5206\u522b\u7528\u4e8e\u54ea\u5412\u7684 dashboard \u548c agent \u901a\u4fe1\u7aef\u53e3\u3002<\/p>\n<p><img alt=\"server00 \u5f00\u653e\u7aef\u53e3\" src=\"https:\/\/cdn.typecodes.com\/2024\/07\/server00_panel_port.png\"><\/p>\n<h4>4\u3001server00 \u8bbe\u7f6e\u54ea\u5412 dashboard \u4ee3\u7406<\/h4>\n<p>\u540c\u6837\u5728 server00 \u7684 panel \u63a7\u5236\u9762\u677f <a href=\"https:\/\/panel7.serv00.com\/www\/add\">Zaloguj si\u0119<\/a> \u4e2d\uff0c\u65b0\u589e\u57df\u540d <code>status.vfhky.serv00.net<\/code> \uff08\u524d\u7f00\u53ef\u4efb\u610f\uff09\uff0c\u7aef\u53e3\u9009\u62e9\u524d\u9762\u5f00\u653e\u7684 10087 \u7aef\u53e3\u3002<\/p>\n<p><img alt=\"\u4ee3\u7406\u54ea\u5412\u9762\u677f\u768410087\u7aef\u53e3\" src=\"https:\/\/cdn.typecodes.com\/2024\/07\/server00_proxy.png\"><\/p>\n<h4>5\u3001github \u4e0a\u7533\u8bf7\u4e00\u4e2a app \u6388\u6743\u5e94\u7528<\/h4>\n<p>\u7531\u4e8e\u54ea\u5412\u9762\u677f\u7684\u7ba1\u7406\u754c\u9762\u9700\u8981\u4f7f\u7528 github \u7b49 OAuth \u65b9\u5f0f\uff0c\u6240\u4ee5\u5f97\u5148\u53bb github \u7533\u8bf7\u4e00\u4e2a\u6388\u6743\u5e94\u7528\u3002<\/p>\n<p>\u4ee5\u4e0b\u6b65\u9aa4\u662f\u6839\u636e\u5b98\u65b9\u6587\u6863\uff1a<a href=\"https:\/\/nezha.wiki\/guide\/dashboard.html\">\u5b89\u88c5 Dashboard | \u54ea\u5412\u670d\u52a1\u5668\u76d1\u63a7<\/a>\u6574\u7406\u7684\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\"># 1\u3001\u767b\u5f55 https:\/\/github.com\/settings\/developers  \uff0c\u4f9d\u6b21\u9009\u62e9\u201cOAuth Apps\u201d - \u201cNew OAuth App\u201d\u3002<\/span>\n<span class=\"c1\"># 2\u3001Application name - \u4efb\u610f\u547d\u540d\u3002<\/span>\n<span class=\"c1\"># 3\u3001Homepage URL - \u9762\u677f\u7684\u8bbf\u95ee\u57df\u540d\u3002\u8fd9\u91cc\u5c31\u662f\u524d\u9762\u8bbe\u7f6e\u7684server00\u7684dashboard\u4ee3\u7406\uff1ahttps:\/\/status.vfhky.serv00.net \u3002<\/span>\n<span class=\"c1\"># 4\u3001Authorization callback URL - \u586b\u5199\u56de\u8c03\u5730\u5740\u3002\u4e5f\u5373\uff1a https:\/\/status.vfhky.serv00.net\/oauth2\/callback\uff08\u4e0d\u8981\u5fd8\u8bb0\/oauth2\/callback\uff09\u3002<\/span>\n<span class=\"c1\"># 5\u3001\u70b9\u51fb \u201cRegister application\u201d\u3002<\/span>\n<span class=\"c1\"># 6\u3001\u590d\u5236\u5e76\u4fdd\u5b58\u9875\u9762\u4e2d\u7684 Client ID\u3002<\/span>\n<span class=\"c1\"># 7\u3001\u70b9\u51fb \u201cGenerate a new client secret\u201d\uff0c\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 Client Secret\uff0c\u590d\u5236\u5e76\u4fdd\u5b58\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h4>6\u3001\u5f00\u59cb\u5b89\u88c5\u54ea\u5412 dashboard \u9762\u677f<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code>$<span class=\"w\"> <\/span><span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>~\ngit<span class=\"w\"> <\/span>clone<span class=\"w\"> <\/span>https:\/\/github.com\/naiba\/nezha.git\n<span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>~\/nezha\/cmd\/dashboard\ngo<span class=\"w\"> <\/span>build<span class=\"w\"> <\/span>-ldflags<span class=\"o\">=<\/span><span class=\"s2\">&quot;-s -w --extldflags &#39;-static -fpic&#39; -X github.com\/naiba\/nezha\/service\/singleton.Version=0.18.8&quot;<\/span>\nmkdir<span class=\"w\"> <\/span>~\/nezhapanel<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>~\/nezhapanel<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>cp<span class=\"w\"> <\/span>~\/nezha\/cmd\/dashboard\/dashboard<span class=\"w\"> <\/span>~\/nezhapanel\/dashboard<span class=\"w\"> <\/span>\n<span class=\"w\">    <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>cp<span class=\"w\"> <\/span>-r<span class=\"w\"> <\/span>~\/nezha\/resource<span class=\"w\"> <\/span>~\/nezhapanel\/resource<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>rm<span class=\"w\"> <\/span>~\/nezhapanel\/resource\/resource.go<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>mkdir<span class=\"w\"> <\/span>~\/nezhapanel\/data<span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">    <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>cp<span class=\"w\"> <\/span>~\/nezha\/script\/config.yaml<span class=\"w\"> <\/span>~\/nezhapanel\/data\/config.yaml\n\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^httpport: 80@httpport: 10087@g&quot;<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@nz_language@zh-CN@g&quot;<\/span><span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">    <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@nz_grpc_port@10089@g&quot;<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@nz_oauth2_type@github@g&quot;<\/span><span class=\"w\">   <\/span>~\/nezhapanel\/data\/config.yaml\n\n<span class=\"c1\">### \u6ce8\u610f\u4fee\u6539\u4e0b\u9762\u7684\u7ba1\u7406\u5458\u8d26\u53f7\uff0cgithub\u6388\u6743\u7684id\u548c\u5bc6\u94a5<\/span>\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@nz_admin_logins@vfhky@g&quot;<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@nz_github_oauth_client_id@github\u7684ClientId@g&quot;<\/span><span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">    <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@nz_github_oauth_client_id@github\u7684Client Secret@g&quot;<\/span><span class=\"w\">   <\/span>~\/nezhapanel\/data\/config.yaml\n\n<span class=\"c1\">### \u542f\u52a8\u9762\u677f\u7a0b\u5e8f<\/span>\n<span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>~\/nezhapanel<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>chmod<span class=\"w\"> <\/span>+x<span class=\"w\"> <\/span>.\/dashboard\npm2<span class=\"w\"> <\/span>start<span class=\"w\"> <\/span>.\/dashboard\npm2<span class=\"w\"> <\/span>save\n<\/code><\/pre><\/div>\n\n<h4>7\u3001\u5f00\u59cb\u5b89\u88c5\u54ea\u5412\u5ba2\u6237\u7aef\u5e94\u7528<\/h4>\n<p>\u8fd9\u4e00\u6b65\u662f\u975e\u5fc5\u9009\u7684\uff0c\u53ea\u662f\u7528\u4e8e\u6f14\u793a\u76d1\u63a7 server00 \u4e3b\u673a\u7684\u72b6\u6001\u3002\u7531\u4e8e\u5b98\u65b9\u5df2\u7ecf\u53d1\u5e03\u4e86 agent \u7f16\u8bd1\u540e\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6 <a href=\"https:\/\/github.com\/nezhahq\/agent\/releases\/tag\/v0.18.8\">Release v0.18.8 \u00b7 nezhahq\/agent \u00b7 GitHub<\/a>\uff0c\u6240\u4ee5\u4e0b\u9762\u5c31\u76f4\u63a5\u4f7f\u7528\u8fd9\u4e2a\u6587\u4ef6\u4e86\u3002<\/p>\n<p>\u6ce8\u610f\uff0cserv00 \u5e94\u8be5\u9009\u62e9 <code>nezha-agent_freebsd_amd64.zip<\/code> \u8fd9\u4e2a\u5305\uff0c\u5176\u5b83\u5e38\u7528\u7684 64 \u4f4d linux \u7cfb\u7edf\u4e0b\u8f7d <code>nezha-agent_linux_amd64.zip<\/code> \u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>$<span class=\"w\"> <\/span><span class=\"nb\">cd<\/span><span class=\"w\">  <\/span>~\nmkdir<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span>~\/nezha-agent\nwget<span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span>https:\/\/github.com\/nezhahq\/agent\/releases\/download\/v0.18.8\/nezha-agent_linux_amd64.zip\nunzip<span class=\"w\"> <\/span>nezha-agent_linux_amd64.zip\n<\/code><\/pre><\/div>\n\n<h4>8\u3001\u767b\u5f55 dashboard \u65b0\u589e\u670d\u52a1\u5668<\/h4>\n<p>\u767b\u5f55\u54ea\u5412 dashboard \u7ba1\u7406\u754c\u9762\uff0c\u5728 <code>\u670d\u52a1\u5668<\/code> \u83dc\u5355\u4e0b\u9009\u62e9 <code>\u65b0\u589e\u670d\u52a1\u5668<\/code>\uff0c\u7136\u540e\u70b9\u51fb\u4e00\u952e\u5b89\u88c5\u6216\u8005\u53f3\u4fa7\u7684\u7f16\u8f91\u6309\u94ae\uff0c\u53ef\u4ee5\u5f97\u5230\u4e00\u4e2a\u8fd9\u4e2a\u5ba2\u6237\u7aef\u7684\u5bc6\u94a5\u3002<\/p>\n<p><img alt=\"\" src=\"https:\/\/cdn.typecodes.com\/2024\/07\/nezha_server.png\"><\/p>\n<p>\u63a5\u7740\u4f7f\u7528 ssh \u767b\u5f55\u5230 server00\uff0c\u5e76\u521b\u5efa\u542f\u52a8\u811a\u672c <code>start.sh<\/code>\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>$<span class=\"w\"> <\/span><span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>~\/nezha-agent\/\n\n<span class=\"c1\">### \u5ba2\u6237\u7aef\u7684\u542f\u52a8\u811a\u672c\uff0c\u6ce8\u610f\u66ff\u6362\u4e3a\u81ea\u5df1\u7684\u76ee\u5f55\u548c\u57df\u540d\u3001\u5bc6\u94a5\u7b49\u3002<\/span>\ncat<span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span>start.sh<span class=\"w\"> <\/span><span class=\"s\">&lt;&lt; EOF<\/span>\n\n<span class=\"s\">#!\/bin\/sh<\/span>\n\n<span class=\"s\">mkdir -p ~\/tmp<\/span>\n<span class=\"s\">export TMPDIR=~\/tmp<\/span>\n\n<span class=\"s\">\/home\/vfhky\/nezha-agent\/nezha-agent -s status.vfhky.serv00.net:10089 -p \u5ba2\u6237\u7aef\u7684\u5bc6\u94a5 -d<\/span>\n\n<span class=\"s\">EOF<\/span>\n\n<span class=\"c1\">### \u542f\u52a8\u5ba2\u6237\u7aef<\/span>\n$<span class=\"w\"> <\/span>pm2<span class=\"w\"> <\/span>start<span class=\"w\"> <\/span>start.sh\n<\/code><\/pre><\/div>\n\n<h4>9\u3001\u67e5\u770b\u54ea\u5412 dashboard \u548c agent \u5ba2\u6237\u7aef\u542f\u52a8\u60c5\u51b5<\/h4>\n<p>\u5f53\u5b89\u88c5\u5b8c\u540e\uff0c\u53ef\u80fd\u901a\u8fc7 <code>pm2 status<\/code> \u547d\u4ee4\u67e5\u770b\u9762\u677f\u548c agent \u7684\u542f\u52a8\u60c5\u51b5\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7 <code>pm2 logs dashboard<\/code> \u67e5\u770b\u65e5\u5fd7\u3002<\/p>\n<p>\u6b63\u5e38\u6765\u8bf4\u4e24\u8005\u7684 <code>status<\/code> \u72b6\u6001\u90fd\u662f <code>online<\/code>\uff0c\u6b64\u65f6\u8bbf\u95ee\u9762\u677f\u9996\u9875 <a href=\"https:\/\/status.vfhky.serv00.net\/\">https:\/\/status.vfhky.serv00.net\/<\/a> \u5373\u53ef\u770b\u5230 <code>server00<\/code> \u4e3b\u673a\u5ba2\u6237\u7aef\u7684\u60c5\u51b5\u4e86\u3002<\/p>\n<p><img alt=\"\u54ea\u5412\u63a2\u9488pm2\u76d1\u63a7\" src=\"https:\/\/cdn.typecodes.com\/2024\/07\/server00_pm2_status.png\"><\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"serv00"}},{"@attributes":{"term":"ct8"}},{"@attributes":{"term":"\u63a2\u9488"}}]},{"title":"\u4e00\u6b3e\u57fa\u4e8etypecho\u5b98\u7f51\u7684pelican\u4e3b\u9898","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/pelicantypechotheme.html","rel":"alternate"}},"published":"2024-05-08T20:10:00+08:00","updated":"2024-05-08T20:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-05-08:\/mix\/pelicantypechotheme.html","summary":"<h3>\u4e00\u3001\u4e3b\u9898\u8bf4\u660e<\/h3>\n<p>\u4e00\u6b3e\u7528\u4e8e pelcian \u535a\u5ba2\u7684\u4e3b\u9898\uff0c\u79fb\u690d\u81ea <a href=\"https:\/\/typecho.org\/\">Typecho<\/a> \u5b98\u7f51\u7684\u76ae\u80a4\uff0c\u6240\u4ee5\u53d6\u540d\u4e3a <code>pelican-typecho<\/code>\u3002<\/p>\n<p>\u540c\u65f6\u4e5f\u652f\u6301\u8c37\u6b4c\u7ad9\u5185\u641c\u7d22\u3001disqus \u8bc4\u8bba\u7b49\uff0c\u76ee\u524d<a href=\"https:\/\/typecodes.com\">\u6211\u81ea\u5df1\u7684\u535a\u5ba2<\/a>\u4e5f\u5728\u7528\uff0c\u6b22\u8fce\u5927\u5bb6\u4f53\u9a8c\u3002<\/p>\n","content":"<h3>\u4e00\u3001\u4e3b\u9898\u8bf4\u660e<\/h3>\n<p>\u4e00\u6b3e\u7528\u4e8e pelcian \u535a\u5ba2\u7684\u4e3b\u9898\uff0c\u79fb\u690d\u81ea <a href=\"https:\/\/typecho.org\/\">Typecho<\/a> \u5b98\u7f51\u7684\u76ae\u80a4\uff0c\u6240\u4ee5\u53d6\u540d\u4e3a <code>pelican-typecho<\/code>\u3002<\/p>\n<p>\u540c\u65f6\u4e5f\u652f\u6301\u8c37\u6b4c\u7ad9\u5185\u641c\u7d22\u3001disqus \u8bc4\u8bba\u7b49\uff0c\u76ee\u524d<a href=\"https:\/\/typecodes.com\">\u6211\u81ea\u5df1\u7684\u535a\u5ba2<\/a>\u4e5f\u5728\u7528\uff0c\u6b22\u8fce\u5927\u5bb6\u4f53\u9a8c\u3002<\/p>\n\n\n<h3>\u4e8c\u3001\u76ee\u5f55\u7ed3\u6784<\/h3>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">.<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">Makefile<\/span><span class=\"w\">                <\/span><span class=\"c1\"># pelican\u5b98\u65b9\u6587\u4ef6<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">ReadMe<\/span><span class=\"o\">.<\/span><span class=\"n\">md<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">autoGenAndPublish<\/span><span class=\"o\">.<\/span><span class=\"n\">sh<\/span><span class=\"w\">    <\/span><span class=\"c1\"># \u7528\u4e8e\u81ea\u52a8\u6784\u5efa\u7684\u811a\u672c\u3002\u5982\u679c\u4f60\u672a\u4f7f\u7528\u81ea\u5df1\u7684\u6784\u5efa\u5e73\u53f0\uff0c\u8be5\u6587\u4ef6\u53ef\u4ee5\u5ffd\u7565\u3002<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">content<\/span><span class=\"w\">                 <\/span><span class=\"c1\"># \u7528\u4e8e\u5b58\u653efavicon\u7b49\u6587\u4ef6\uff0c\u4ee5\u53ca\u5b58\u653emd\u6587\u6863\u76ee\u5f55\u3002<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">develop_server<\/span><span class=\"o\">.<\/span><span class=\"n\">sh<\/span><span class=\"w\">       <\/span><span class=\"c1\"># pelican\u5b98\u65b9\u6587\u4ef6<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">fabfile<\/span><span class=\"o\">.<\/span><span class=\"n\">py<\/span><span class=\"w\">              <\/span><span class=\"c1\"># pelican\u5b98\u65b9\u6587\u4ef6<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">pelican<\/span><span class=\"o\">-<\/span><span class=\"n\">themes<\/span><span class=\"w\">          <\/span><span class=\"c1\"># pelican\u7684\u4e3b\u9898\u76ee\u5f55\u3002\u4e0b\u9762\u7684 pelican-typecho \u5373\u662f\u5f53\u524d\u535a\u5ba2\u4f7f\u7528\u7684\u4e3b\u9898\u3002<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">pelicanconf<\/span><span class=\"o\">.<\/span><span class=\"n\">py<\/span><span class=\"w\">          <\/span><span class=\"c1\"># pelican\u7684\u914d\u7f6e\u6587\u4ef6\u3002\u6309\u9700\u4fee\u6539<\/span>\n<span class=\"err\">\u251c\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">publishconf<\/span><span class=\"o\">.<\/span><span class=\"n\">py<\/span><span class=\"w\">          <\/span><span class=\"c1\"># pelican\u5b98\u65b9\u53d1\u5e03\u6587\u4ef6<\/span>\n<span class=\"err\">\u2514\u2500\u2500<\/span><span class=\"w\"> <\/span><span class=\"n\">tools<\/span><span class=\"w\">                   <\/span><span class=\"c1\"># \u7528\u4e8epygments\u751f\u4ea7\u4ee3\u7801\u9ad8\u4eae\u7684\u6837\u5f0f<\/span>\n<\/code><\/pre><\/div>\n\n<h3>\u4e09\u3001\u4f7f\u7528\u65b9\u6cd5<\/h3>\n<h4>3.1 \u5b89\u88c5 pelican \u6240\u6709\u7684\u73af\u5883<\/h4>\n<p>\u8fd9\u91cc\u4ee5 ubuntu \u7cfb\u7edf\u4e3a\u4f8b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nx\">apt<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">python3<\/span><span class=\"o\">-<\/span><span class=\"nx\">pip<\/span><span class=\"w\"> <\/span>\\\n<span class=\"w\">    <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">pip3<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">upgrade<\/span><span class=\"w\"> <\/span><span class=\"nx\">pip<\/span><span class=\"w\"> <\/span>\\\n<span class=\"w\">    <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">pip3<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">upgrade<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"k\">default<\/span><span class=\"o\">-<\/span><span class=\"nx\">timeout<\/span><span class=\"p\">=<\/span><span class=\"mi\">100<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">tzdata<\/span><span class=\"w\"> <\/span><span class=\"nx\">pelican<\/span><span class=\"w\"> <\/span>\\\n<span class=\"w\">        <\/span><span class=\"nx\">markdown<\/span><span class=\"w\"> <\/span><span class=\"nx\">pelican<\/span><span class=\"o\">-<\/span><span class=\"nx\">sitemap<\/span><span class=\"w\"> <\/span><span class=\"nx\">Pygments<\/span><span class=\"w\"> <\/span><span class=\"nx\">minchin<\/span><span class=\"p\">.<\/span><span class=\"nx\">pelican<\/span><span class=\"p\">.<\/span><span class=\"nx\">plugins<\/span><span class=\"p\">.<\/span><span class=\"nx\">summary<\/span><span class=\"w\"> <\/span>\\\n<span class=\"w\">        <\/span><span class=\"o\">-<\/span><span class=\"nx\">i<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/mirrors.aliyun.com\/pypi\/simple\/ --trusted-host mirrors.aliyun.com<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3.2 \u7f16\u8bd1\u751f\u6210\u535a\u5ba2<\/h4>\n<p>\u628a\u81ea\u5df1\u7684markdown\u6587\u4ef6\u653e\u5728<code>content\/articles<\/code>\u76ee\u5f55\u4e0b\uff0c\u7136\u540e\u5728\u6839\u76ee\u5f55\u6267\u884c <code>make publish<\/code> \u5373\u53ef\u751f\u6210\u535a\u5ba2html\u6587\u4ef6\u3002<\/p>\n<h3>\u56db\u3001\u4e0b\u8f7d\u5730\u5740<\/h3>\n<p>\u76ee\u524d\u628a\u4e3b\u9898\u653e\u5728 github \u4e0a\u4e86\uff0c\u6b22\u8fce <a href=\"https:\/\/github.com\/vfhky\/pelican-typecho\">\u70b9\u51fb\u4f53\u9a8c<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"typecho"}}]},{"title":"\u7ed9\u535a\u5ba2(pelican)\u589e\u52a0git\u63d0\u4ea4\u548c\u81ea\u52a8\u6784\u5efa\u4fe1\u606f","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/pelicanaddgitcommitcicdinfo.html","rel":"alternate"}},"published":"2024-05-04T15:10:00+08:00","updated":"2024-05-04T15:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2024-05-04:\/mix\/pelicanaddgitcommitcicdinfo.html","summary":"<h3>\u4e00\u3001pelican \u7684\u6784\u5efa\u548c\u751f\u6210\uff1a<\/h3>\n<p>\u535a\u5ba2\u4f7f\u7528\u7684\u662f <code>pelican<\/code> \u5f00\u6e90\u9759\u6001\u535a\u5ba2\u7cfb\u7edf\uff0c\u4e4b\u524d\u6bcf\u6b21\u751f\u6210 html \u4ee3\u7801\u90fd\u9700\u8981\u624b\u52a8\u5728\u670d\u52a1\u5668\u4e0a\u7528\u811a\u672c\u751f\u6210\u7684\u3002\u4e5f\u5c31\u662f\u6bcf\u6b21\u65b0\u589e\u6216\u8005\u4fee\u6539\u4e86\u6587\u7ae0\u90fd\u9700\u8981\u624b\u5de5\u53bb\u6267\u884c\u811a\u672c\uff0c\u7136\u540e\u53d1\u5e03\u5230 nginx \u76ee\u5f55\u3002<\/p>\n<p>\u9274\u4e8e\u6bcf\u6b21\u7684\u751f\u6210\u6d41\u7a0b\u8fc7\u4e8e\u7e41\u7410\uff0c\u6240\u4ee5\u6700\u8fd1\u8003\u8651\u628a\u535a\u5ba2\u7684\u751f\u6210\u8fc7\u7a0b\u6539\u7528\u81ea\u52a8\u6784\u5efa\uff0c\u540c\u65f6\u5728\u535a\u5ba2\u5e95\u90e8\u680f\u589e\u52a0 <code>git commit<\/code> \u548c <code>\u81ea\u52a8\u6784\u5efa<\/code> \u7684\u4fe1\u606f\u3002\u6548\u679c\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"pelican \u535a\u5ba2\u751f\u6210\u65f6\u589e\u52a0 gitcommit \u548c cicd \u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2024\/05\/pelicanaddgitcommitcicdinfo.png\" title=\"pelican \u535a\u5ba2\u751f\u6210\u65f6\u589e\u52a0 gitcommit \u548c cicd \u4fe1\u606f\"><\/p>\n","content":"<h3>\u4e00\u3001pelican \u7684\u6784\u5efa\u548c\u751f\u6210\uff1a<\/h3>\n<p>\u535a\u5ba2\u4f7f\u7528\u7684\u662f <code>pelican<\/code> \u5f00\u6e90\u9759\u6001\u535a\u5ba2\u7cfb\u7edf\uff0c\u4e4b\u524d\u6bcf\u6b21\u751f\u6210 html \u4ee3\u7801\u90fd\u9700\u8981\u624b\u52a8\u5728\u670d\u52a1\u5668\u4e0a\u7528\u811a\u672c\u751f\u6210\u7684\u3002\u4e5f\u5c31\u662f\u6bcf\u6b21\u65b0\u589e\u6216\u8005\u4fee\u6539\u4e86\u6587\u7ae0\u90fd\u9700\u8981\u624b\u5de5\u53bb\u6267\u884c\u811a\u672c\uff0c\u7136\u540e\u53d1\u5e03\u5230 nginx \u76ee\u5f55\u3002<\/p>\n<p>\u9274\u4e8e\u6bcf\u6b21\u7684\u751f\u6210\u6d41\u7a0b\u8fc7\u4e8e\u7e41\u7410\uff0c\u6240\u4ee5\u6700\u8fd1\u8003\u8651\u628a\u535a\u5ba2\u7684\u751f\u6210\u8fc7\u7a0b\u6539\u7528\u81ea\u52a8\u6784\u5efa\uff0c\u540c\u65f6\u5728\u535a\u5ba2\u5e95\u90e8\u680f\u589e\u52a0 <code>git commit<\/code> \u548c <code>\u81ea\u52a8\u6784\u5efa<\/code> \u7684\u4fe1\u606f\u3002\u6548\u679c\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"pelican \u535a\u5ba2\u751f\u6210\u65f6\u589e\u52a0 gitcommit \u548c cicd \u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2024\/05\/pelicanaddgitcommitcicdinfo.png\" title=\"pelican \u535a\u5ba2\u751f\u6210\u65f6\u589e\u52a0 gitcommit \u548c cicd \u4fe1\u606f\"><\/p>\n\n\n<h3>\u4e8c\u3001\u5927\u4f53\u7684\u5f00\u53d1\u6d41\u7a0b<\/h3>\n<p>\u7531\u4e8e\u535a\u5ba2\u7684 pelican \u4ee3\u7801\u548c pelican \u7684\u6587\u7ae0\u662f\u5206\u5f00\u6765\u6258\u7ba1\u7684\uff0c\u6240\u4ee5\u5728\u81ea\u52a8\u6784\u5efa\u7684\u65f6\u5019\u9700\u8981\u5206\u522b\u62c9\u53d6\u8fd9\u4e24\u4e2a git \u9879\u76ee\uff0c\u7136\u540e\u518d\u628a\u6587\u7ae0\u6309\u7167 pelican \u7684\u751f\u6210\u8981\u6c42\u653e\u5728 <code>content\/articles<\/code> \u76ee\u5f55\u4e0b\u9762\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>###<span class=\"w\"> <\/span>1\u3001\u4fee\u6539pelican\u7684\u914d\u7f6e\u548c\u6a21\u677f\u6587\u4ef6\n\u4fee\u6539pelican\u7684\u914d\u7f6e\u6587\u4ef6\uff1apelican.conf<span class=\"w\"> <\/span>\u548c<span class=\"w\"> <\/span>\u6a21\u677f\u6587\u4ef6\uff1afooter.html\uff0c\u4ee5\u4fbf\u652f\u6301git<span class=\"w\"> <\/span>commit<span class=\"w\"> <\/span>\u548c<span class=\"w\"> <\/span>\u81ea\u52a8\u6784\u5efa\u7684\u4fe1\u606f\u6570\u636e\u3002\n\n###<span class=\"w\"> <\/span>2\u3001\u535a\u5ba2\u6587\u7ae0\u53d8\u52a8\n\u5f53\u535a\u5ba2\u65b0\u589e\u6216\u8005\u4fee\u6539\u6587\u7ae0\u540e\uff0c\u4f1a\u63d0\u4ea4\u5230github\u7684\u4ed3\u5e93\u3002\u7531\u4e8e\u8bbe\u7f6e\u4e86webHook\uff0c\u6240\u4ee5\u4f1a\u901a\u77e5\u81ea\u5df1\u7684cicd\u670d\u52a1\u540e\u53f0\u8fdb\u884c\u6784\u5efa\n\n###<span class=\"w\"> <\/span>3\u3001\u81ea\u52a8\u6784\u5efa\u540e\u53f0\n\u81ea\u52a8\u6784\u5efa\u540e\u53f0\u6536\u5230github\u7684commit\u901a\u77e5\u540e\uff0c\u89e6\u53d1\u81ea\u52a8\u6784\u5efa\uff1a\u5148\u62c9\u53d6pelican\u7684\u4ee3\u7801\uff08\u5305\u62ec\u4e86\u535a\u5ba2\u5f53\u524d\u7684pelican\u4e3b\u9898\uff09\uff0c\u7136\u540e\u51c6\u5907pelican\u6784\u5efa\u7684\u73af\u5883\u3002\n\napt<span class=\"w\"> <\/span>install<span class=\"w\"> <\/span>-y<span class=\"w\"> <\/span>make<span class=\"w\"> <\/span>python3-pip<span class=\"w\"> <\/span><span class=\"err\">&amp;&amp;<\/span><span class=\"w\"> <\/span>pip3<span class=\"w\"> <\/span>install<span class=\"w\"> <\/span>--upgrade<span class=\"w\"> <\/span>pip<span class=\"w\"> <\/span><span class=\"err\">&amp;&amp;<\/span><span class=\"w\"> <\/span>pip3<span class=\"w\"> <\/span>install<span class=\"w\"> <\/span>--upgrade<span class=\"w\"> <\/span>--default-timeout=100<span class=\"w\"> <\/span>install<span class=\"w\"> <\/span>tzdata<span class=\"w\"> <\/span>pelican<span class=\"w\"> <\/span>markdown<span class=\"w\"> <\/span>pelican-sitemap<span class=\"w\"> <\/span>Pygments<span class=\"w\"> <\/span>minchin.pelican.plugins.summary<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>http:\/\/mirrors.aliyun.com\/pypi\/simple\/<span class=\"w\"> <\/span>--trusted-host<span class=\"w\"> <\/span>mirrors.aliyun.com<span class=\"w\"> <\/span><span class=\"err\">&amp;&amp;<\/span><span class=\"w\"> <\/span>sh<span class=\"w\"> <\/span>autoGenAndPublish.sh<span class=\"w\"> <\/span>&quot;<span class=\"cp\">${<\/span><span class=\"n\">CICD_WORKING_DIR<\/span><span class=\"cp\">}<\/span>&quot;<span class=\"w\"> <\/span>&quot;<span class=\"cp\">${<\/span><span class=\"n\">GITHUB_TOKEN<\/span><span class=\"cp\">}<\/span>&quot;<span class=\"w\"> <\/span>&quot;<span class=\"cp\">${<\/span><span class=\"n\">CICD_BUILD_ID<\/span><span class=\"cp\">}<\/span>&quot;\n\n###<span class=\"w\"> <\/span>4\u3001\u6784\u5efa\u811a\u672c<span class=\"w\"> <\/span>autoGenAndPublish.sh\n\u5728pelican\u6839\u76ee\u5f55\u521b\u5efa\u4e00\u4e2ashell\u6784\u5efa\u811a\u672c\uff0c\u4f20\u5165\u4e86\u5f53\u524d\u81ea\u52a8\u6784\u5efa\u7684\u6839\u76ee\u5f55(\u4e5f\u5c31\u662fpelican\u4ee3\u7801\u6240\u5728\u7684\u6839\u76ee\u5f55)\u3001github\u7684token\u7528\u4e8e\u62c9\u53d6\u6587\u7ae0\u4ed3\u5e93\u548c\u672c\u6b21\u6784\u5efa\u7684id\u3002\n\n\u4ee3\u7801\u7684\u5927\u4f53\u903b\u8f91\uff1a\u5148\u62c9\u53d6\u535a\u5ba2\u6587\u7ae0\u5230pelican\u7684`.\/content\/articles`\u76ee\u5f55\uff0c\u7136\u540e\u83b7\u53d6git<span class=\"w\"> <\/span>commit\u7684id\u548c\u65f6\u95f4\u4fe1\u606f\uff0c\u63a5\u7740\u83b7\u53d6\u672c\u6b21\u81ea\u52a8\u6784\u5efa\u7684id\u548c\u65e5\u671f\uff0c\u6700\u540e\u66f4\u6539pelican.conf\u914d\u7f6e\u4ee3\u7801\u4e2d\u7684\u53d8\u91cf\uff0c\u6700\u540e\u901a\u8fc7pelican\u547d\u4ee4\u751f\u6210html\u4ee3\u7801\u5e76\u6253\u5305\u6210blog.tar.gz\u3002\n\n###<span class=\"w\"> <\/span>5\u3001\u7531\u6784\u5efa\u7cfb\u7edf\u5206\u53d1\u5230\u4e1a\u52a1\u673a\u5668\n\u6784\u5efa\u7cfb\u7edf\u5206\u53d1\u5230\u4e1a\u52a1\u673a\u5668\u540e\uff0c\u4f1a\u6267\u884c\u4e00\u4e2ashell\u811a\u672c\uff0c\u7528\u4e8e\u628a\u6253\u5305\u7684blog.tar.gz\u535a\u5ba2\u4ee3\u7801\u89e3\u5305\u5e76\u53d1\u5e03\u5230nginx\u76ee\u5f55\u4e0a\u9762\u5373\u53ef\u3002\n<\/code><\/pre><\/div>\n\n<h3>\u4e09\u3001\u5177\u4f53\u7684\u4ee3\u7801<\/h3>\n<p>\u4e0a\u9762\u7684\u6d41\u7a0b\u4f1a\u6d89\u53ca\u5230\u4e0b\u9762\u51e0\u4e2a\u4e3b\u8981\u7684\u4ee3\u7801\u903b\u8f91\uff1a<\/p>\n<h4>3.1 \u4fee\u6539\u4e3b\u9898\u4ee3\u7801<\/h4>\n<p>\u5728 pelican \u4e3b\u9898\u4e0b\u9762\u7684 <code>footer.html<\/code> \u4ee3\u7801\u4e2d\u589e\u52a0 git commit \u548c\u81ea\u52a8\u6784\u5efa\u4fe1\u606f\u7684\u6570\u636e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>#<span class=\"w\"> <\/span>\u914d\u7f6e\u662f\u5426\u5b9a\u4e49\u4e86COMMIT_ID\uff0c\u4e14\u4e0d\u4e3a\u7a7a\u503c\n<span class=\"cp\">{%<\/span>- <span class=\"k\">if<\/span> <span class=\"nv\">COMMIT_ID<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"w\">    <\/span>#<span class=\"w\"> <\/span>\u914d\u7f6e\u662f\u5426\u5b9a\u4e49\u4e86COMMIT\u7684\u56fe\u6807\uff0c\u4e14\u4e0d\u4e3a\u7a7a\u503c\n<span class=\"w\">    <\/span><span class=\"cp\">{%<\/span>- <span class=\"k\">if<\/span> <span class=\"nv\">COMMIT_ICON<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"w\">        <\/span><span class=\"nt\">&lt;img<\/span><span class=\"w\"> <\/span><span class=\"na\">class=<\/span><span class=\"s\">&quot;image&quot;<\/span><span class=\"w\"> <\/span><span class=\"na\">src=<\/span><span class=\"s\">&quot;<\/span><span class=\"cp\">{{<\/span> <span class=\"nv\">COMMIT_ICON<\/span> <span class=\"cp\">}}<\/span><span class=\"s\">&quot;<\/span><span class=\"nt\">&gt;<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">    <\/span><span class=\"cp\">{%<\/span>- <span class=\"k\">endif<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"w\">    <\/span>#<span class=\"w\"> <\/span>\u5c55\u793acommitId<span class=\"w\"> <\/span>\u548c<span class=\"w\"> <\/span>commit<span class=\"w\"> <\/span>date\n<span class=\"w\">    <\/span><span class=\"nt\">&lt;b&gt;<\/span><span class=\"w\"> <\/span>commit:<span class=\"nt\">&lt;\/b&gt;<\/span><span class=\"w\"> <\/span><span class=\"nt\">&lt;em&gt;<\/span><span class=\"w\">  <\/span><span class=\"cp\">{{<\/span> <span class=\"nv\">COMMIT_ID<\/span><span class=\"o\">[<\/span><span class=\"m\">0<\/span><span class=\"o\">:<\/span><span class=\"m\">7<\/span><span class=\"o\">]<\/span> <span class=\"cp\">}}<\/span><span class=\"nt\">&lt;\/em&gt;<\/span>\n<span class=\"w\">    <\/span><span class=\"cp\">{%<\/span>- <span class=\"k\">if<\/span> <span class=\"nv\">COMMIT_DATE<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"w\">        <\/span><span class=\"nt\">&lt;em&gt;<\/span>-<span class=\"cp\">{{<\/span> <span class=\"nv\">COMMIT_DATE<\/span> <span class=\"cp\">}}<\/span><span class=\"w\">  <\/span><span class=\"nt\">&lt;\/em&gt;<\/span>\n<span class=\"w\">    <\/span><span class=\"cp\">{%<\/span>- <span class=\"k\">endif<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"w\">     <\/span><span class=\"err\">&amp;<\/span>nbsp<span class=\"w\"> <\/span>\n<span class=\"w\">    <\/span>#<span class=\"w\"> <\/span>\u5c55\u793a\u6784\u5efaid<span class=\"w\"> <\/span>\u548c<span class=\"w\"> <\/span>\u6784\u5efa<span class=\"w\"> <\/span>date\n<span class=\"w\">    <\/span><span class=\"cp\">{%<\/span>- <span class=\"k\">if<\/span> <span class=\"nv\">BUILD_ID<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"w\">        <\/span><span class=\"nt\">&lt;b&gt;<\/span><span class=\"w\"> <\/span>build:<span class=\"nt\">&lt;\/b&gt;<\/span><span class=\"w\"> <\/span><span class=\"nt\">&lt;em&gt;<\/span><span class=\"cp\">{{<\/span> <span class=\"nv\">BUILD_ID<\/span><span class=\"o\">[<\/span><span class=\"m\">0<\/span><span class=\"o\">:<\/span><span class=\"m\">7<\/span><span class=\"o\">]<\/span> <span class=\"cp\">}}<\/span><span class=\"nt\">&lt;\/em&gt;<\/span>\n<span class=\"w\">        <\/span><span class=\"cp\">{%<\/span>- <span class=\"k\">if<\/span> <span class=\"nv\">BUILD_DATE<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"w\">            <\/span><span class=\"nt\">&lt;em&gt;<\/span>-<span class=\"cp\">{{<\/span> <span class=\"nv\">BUILD_DATE<\/span> <span class=\"cp\">}}<\/span><span class=\"nt\">&lt;\/em&gt;<\/span>\n<span class=\"w\">        <\/span><span class=\"cp\">{%<\/span>- <span class=\"k\">endif<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"w\">    <\/span><span class=\"cp\">{%<\/span>- <span class=\"k\">endif<\/span> -<span class=\"cp\">%}<\/span>\n<span class=\"cp\">{%<\/span>- <span class=\"k\">endif<\/span> -<span class=\"cp\">%}<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3.2 \u4fee\u6539 pelican.conf \u914d\u7f6e\u6587\u4ef6<\/h4>\n<p>\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u589e\u52a0\u4ee5\u4e0b\u5b9a\u4e49\u6570\u636e\uff0c\u6700\u540e\u4f1a\u5728\u81ea\u5efa\u6784\u5efa\u7684\u65f6\u5019\u4fee\u6539\u53d8\u91cf\u7684\u503c\uff0c\u6700\u7ec8\u4f1a\u586b\u5145\u5230\u4e0a\u9762\u7684 <code>footer.html<\/code> \u4ee3\u7801\u4e2d\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u5e95\u90e8\u680fgit\u76f8\u5173<\/span>\n<span class=\"nx\">COMMIT_ID<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;&#39;<\/span>\n<span class=\"nx\">COMMIT_ICON<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">https<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/cdn.typecodes.com\/libs\/img\/git.png&#39;<\/span>\n<span class=\"nx\">COMMIT_DATE<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;&#39;<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u5e95\u90e8\u680f\u6784\u5efa\u76f8\u5173<\/span>\n<span class=\"nx\">BUILD_ID<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;&#39;<\/span>\n<span class=\"nx\">BUILD_DATE<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;&#39;<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3.3 \u6784\u5efa\u811a\u672c autoGenAndPublish.sh<\/h4>\n<p>\u5728 pelican \u4e3b\u9898\u4ee3\u7801\u4e2d\u65b0\u589e\u4e00\u4e2a <code>autoGenAndPublish.sh<\/code> \u7684 shell \u811a\u672c\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># pelican\u7f16\u8bd1\u5e76\u6253\u5305<\/span>\n<span class=\"c1\"># (c) 2024.5.4 vfhky https:\/\/typecodes.com\/mix\/pelicanaddgitcommitcicdinfo.html<\/span>\n<span class=\"c1\"># Simple Usage:  sh autoGenAndPublish.sh \/home\/typcodes\/github\/tp_code github_token &quot;#abcded&quot;<\/span>\n\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">3<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;pelican\u7f16\u8bd1\u811a\u672c\u5fc5\u987b\u8f93\u5165\u6784\u5efa\u8def\u5f84\u53c2\u6570&quot;<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"k\">fi<\/span>\n\n\n<span class=\"c1\"># \u6839\u8def\u5f84<\/span>\n<span class=\"nv\">WORKING_DIR<\/span><span class=\"o\">=<\/span><span class=\"nv\">$1<\/span>\n<span class=\"nv\">GITHUB_TOKEN<\/span><span class=\"o\">=<\/span><span class=\"nv\">$2<\/span>\n<span class=\"c1\"># \u6784\u5efaid<\/span>\n<span class=\"nv\">BUILD_ID<\/span><span class=\"o\">=<\/span><span class=\"nv\">$3<\/span>\n<span class=\"nv\">BUILD_DATE<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%Y.%m.%d<span class=\"k\">)<\/span>\n\n<span class=\"c1\"># github commitId<\/span>\n<span class=\"nv\">COMMIT_ID<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;&#39;<\/span>\n<span class=\"nv\">COMMIT_DATE<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;&#39;<\/span>\n\n<span class=\"c1\"># target<\/span>\n<span class=\"nv\">TARGET<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;blog.tar.gz&#39;<\/span>\n<span class=\"nv\">PELICAN_CONF<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;pelicanconf.py&#39;<\/span>\n\n<span class=\"c1\"># \u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/span>\nreplaceGitAndBuildInfo<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_CONF<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\u914d\u7f6e\u6587\u4ef6<\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_CONF<\/span><span class=\"si\">}<\/span><span class=\"s2\">\u4e0d\u5b58\u5728&quot;<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s2\">&quot;s\/COMMIT_ID = &#39;&#39;\/COMMIT_ID = &#39;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">&#39;\/&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_CONF<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s2\">&quot;s\/COMMIT_DATE = &#39;&#39;\/COMMIT_DATE = &#39;<\/span><span class=\"nv\">$2<\/span><span class=\"s2\">&#39;\/&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_CONF<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s2\">&quot;s\/BUILD_ID = &#39;&#39;\/BUILD_ID = &#39;<\/span><span class=\"nv\">$3<\/span><span class=\"s2\">&#39;\/&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_CONF<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s2\">&quot;s\/BUILD_DATE = &#39;&#39;\/BUILD_DATE = &#39;<\/span><span class=\"nv\">$4<\/span><span class=\"s2\">&#39;\/&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_CONF<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"o\">}<\/span>\n\n\n<span class=\"nb\">cd<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">WORKING_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>rm<span class=\"w\"> <\/span>-rf<span class=\"w\"> <\/span>.\/content\/articles<span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>mkdir<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span>.\/content\/articles<span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>.\/content\/articles<span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>clone<span class=\"w\"> <\/span>-b<span class=\"w\"> <\/span>master<span class=\"w\"> <\/span><span class=\"s2\">&quot;https:\/\/<\/span><span class=\"si\">${<\/span><span class=\"nv\">GITHUB_TOKEN<\/span><span class=\"si\">}<\/span><span class=\"s2\">:x-oauth-basic@github.com\/vfhky\/article.git&quot;<\/span><span class=\"w\"> <\/span>.<span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nv\">COMMIT_ID<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>git<span class=\"w\"> <\/span>rev-parse<span class=\"w\"> <\/span>--short<span class=\"w\"> <\/span>HEAD<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nv\">COMMIT_DATE<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>git<span class=\"w\"> <\/span>log<span class=\"w\"> <\/span>-1<span class=\"w\"> <\/span>--format<span class=\"o\">=<\/span>%cd<span class=\"w\"> <\/span>--date<span class=\"o\">=<\/span>format:<span class=\"s1\">&#39;%Y.%m.%d&#39;<\/span><span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">cd<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">WORKING_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span>\n\n<span class=\"c1\"># \u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/span>\nreplaceGitAndBuildInfo<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">COMMIT_ID<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">COMMIT_DATE<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">BUILD_ID<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">BUILD_DATE<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n\n<span class=\"c1\"># \u7f16\u8bd1\u5e76\u6253\u5305<\/span>\nmake<span class=\"w\"> <\/span>publish<span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>tar<span class=\"w\"> <\/span>-zcf<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">TARGET<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>-C<span class=\"w\"> <\/span>output\/<span class=\"w\"> <\/span>.\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"cicd"}}]},{"title":"\u4f7f\u7528ChatGPT\u5bf9GitHub\u9879\u76ee\u8fdb\u884cCodeReview","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/chatgptcodereview.html","rel":"alternate"}},"published":"2023-09-01T22:47:00+08:00","updated":"2023-09-01T22:47:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2023-09-01:\/python\/chatgptcodereview.html","summary":"<p>\u524d\u6bb5\u65f6\u95f4\u5174\u8d77\u7684 ChatGPT \u70ed\uff0c\u8ddf\u98ce\u7814\u7a76\u4e86\u4e00\u4e9b\u5e94\u7528\u65b9\u5411\u3002\u4e03\u6708\u4efd\u7684\u65f6\u5019\u521a\u597d\u81ea\u5df1\u6253\u7b97\u5199\u4e00\u4e2a\u7b80\u6613\u7684 redis sentinel \u6570\u636e\u89e3\u6790\u7684\u670d\u52a1\u7aef\u9879\u76ee\uff0c\u4e8e\u662f\u60f3\u7528 ChatGPT \u7684\u5bf9\u8bdd\u6a21\u5f0f\u6765\u5bf9\u63d0\u4ea4\u7684 git \u4ee3\u7801\u8fdb\u884c review\u3002\u5c06\u8fd1\u4e24\u4e2a\u6708\u4f7f\u7528\u4e0b\u6765\uff0c\u81ea\u5df1\u89c9\u5f97 review \u6548\u679c\u8fd8\u4e0d\u9519\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528ChatGPT\u8fdb\u884cCodeReview\" src=\"https:\/\/cdn.typecodes.com\/2023\/09\/chatgptcodereview1.png\" title=\"\u4f7f\u7528ChatGPT\u8fdb\u884cCodeReview\"><\/p>\n","content":"<p>\u524d\u6bb5\u65f6\u95f4\u5174\u8d77\u7684 ChatGPT \u70ed\uff0c\u8ddf\u98ce\u7814\u7a76\u4e86\u4e00\u4e9b\u5e94\u7528\u65b9\u5411\u3002\u4e03\u6708\u4efd\u7684\u65f6\u5019\u521a\u597d\u81ea\u5df1\u6253\u7b97\u5199\u4e00\u4e2a\u7b80\u6613\u7684 redis sentinel \u6570\u636e\u89e3\u6790\u7684\u670d\u52a1\u7aef\u9879\u76ee\uff0c\u4e8e\u662f\u60f3\u7528 ChatGPT \u7684\u5bf9\u8bdd\u6a21\u5f0f\u6765\u5bf9\u63d0\u4ea4\u7684 git \u4ee3\u7801\u8fdb\u884c review\u3002\u5c06\u8fd1\u4e24\u4e2a\u6708\u4f7f\u7528\u4e0b\u6765\uff0c\u81ea\u5df1\u89c9\u5f97 review \u6548\u679c\u8fd8\u4e0d\u9519\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528ChatGPT\u8fdb\u884cCodeReview\" src=\"https:\/\/cdn.typecodes.com\/2023\/09\/chatgptcodereview1.png\" title=\"\u4f7f\u7528ChatGPT\u8fdb\u884cCodeReview\"><\/p>\n\n\n<h4>1 \u5b9e\u73b0\u903b\u8f91<\/h4>\n<p>\u5df2\u77e5 GitHub \u81ea\u5e26\u4e86 <code>Webhooks<\/code> \u529f\u80fd\uff0c\u6bcf\u6b21 git push \u63d0\u4ea4\u4ee3\u7801\u7b49\u64cd\u4f5c\u90fd\u4f1a\u89e6\u53d1\u94a9\u5b50\u51fd\u6570\u3002\u8fd9\u5c31\u7ed9\u4e86\u5f88\u591a\u7684\u4e1a\u52a1\u53d1\u6325\u7a7a\u95f4\uff0c\u4f8b\u5982\u81ea\u52a8\u53d1\u5e03\u7b49\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">Webhooks<\/span><span class=\"w\"> <\/span><span class=\"n\">allow<\/span><span class=\"w\"> <\/span><span class=\"n\">external<\/span><span class=\"w\"> <\/span><span class=\"n\">services<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">notified<\/span><span class=\"w\"> <\/span><span class=\"n\">when<\/span><span class=\"w\"> <\/span><span class=\"n\">certain<\/span><span class=\"w\"> <\/span><span class=\"n\">events<\/span><span class=\"w\"> <\/span><span class=\"n\">happen<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">When<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">specified<\/span><span class=\"w\"> <\/span><span class=\"n\">events<\/span><span class=\"w\"> <\/span><span class=\"n\">happen<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">we<\/span><span class=\"err\">\u2019<\/span><span class=\"n\">ll<\/span><span class=\"w\"> <\/span><span class=\"n\">send<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">POST<\/span><span class=\"w\"> <\/span><span class=\"n\">request<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">each<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">URLs<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"w\"> <\/span><span class=\"n\">provide<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">Learn<\/span><span class=\"w\"> <\/span><span class=\"n\">more<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">our<\/span><span class=\"w\">\u00a0<\/span><span class=\"p\">[<\/span><span class=\"n\">Webhooks<\/span><span class=\"w\"> <\/span><span class=\"n\">Guide<\/span><span class=\"p\">](<\/span><span class=\"n\">https<\/span><span class=\"o\">:<\/span><span class=\"c1\">\/\/docs.github.com\/webhooks\/).<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8fd9\u91cc\u6211\u4e3b\u8981\u662f\u5728\u81ea\u5df1\u7684\u670d\u52a1\u5668\u4e0a\u5efa\u7acb\u4e86\u4e00\u4e2a http \u670d\u52a1\uff0c\u63a5\u6536 Webhooks \u89e6\u53d1\u7684 json \u901a\u77e5\uff0c\u7136\u540e\u5f02\u6b65\u62c9\u53d6\u672c\u6b21 push \u7684 commit \u5185\u5bb9\uff0c\u518d\u4f7f\u7528 ChatGPT \u7684 <code>gpt-3.5-turbo<\/code> \u6a21\u578b\u8fdb\u884c review\uff0c\u6700\u540e\u628a\u5bf9\u8bdd\u7ed3\u679c\u5199\u5165\u5230\u8be5 commit \u7684 comment \u4e2d\u3002\n<img alt=\"\u4f7f\u7528 ChatGPT \u8fdb\u884c CodeReview\" src=\"https:\/\/cdn.typecodes.com\/2023\/09\/chatgptcodereview3.png\" title=\"\u4f7f\u7528 ChatGPT \u8fdb\u884c CodeReview\"><\/p>\n<h4>2 CodeReview \u6548\u679c<\/h4>\n<p>\u901a\u8fc7 ChatGPT \u7684 <code>gpt-3.5-turbo<\/code> \u6a21\u578b\u7684 review \u6548\u679c\u8fd8\u53ef\u4ee5\uff0c\u4ee5\u5176\u4e2d\u7684\u4e00\u4e2a commit \u7684 review \u7ed3\u679c\u4e3a\u4f8b\u3002\u672c\u610f\u662f\u5224\u65ad https \u76d1\u542c\u670d\u52a1\u521b\u5efa\u662f\u5426\u6210\u529f\uff0c\u4f46\u662f\u4ee3\u7801\u5199\u6210\u4e86 <code>NULL == http<\/code> \u5224\u65ad\u7684\u662f http \u76d1\u542c\u670d\u52a1\u521b\u5efa\u7684\u7ed3\u679c\u3002\u6240\u4ee5\u901a\u8fc7 review \u53ef\u4ee5\u5f88\u5feb\u7684\u8fdb\u884c\u4fee\u6b63\uff0c\u5373\u5199\u6210 <code>NULL == https<\/code>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">\/\/ create https server<\/span>\n<span class=\"nb\">struct<\/span><span class=\"w\"> <\/span><span class=\"n\">evhttp<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">https<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">EventHttpsServer<\/span><span class=\"p\">::<\/span><span class=\"n\">instance<\/span><span class=\"p\">().<\/span><span class=\"n\">createHttpsServer<\/span><span class=\"p\">(<\/span><span class=\"n\">base<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">NULL<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">http<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"mi\">4<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"\u4f7f\u7528 ChatGPT \u8fdb\u884c CodeReview\" src=\"https:\/\/cdn.typecodes.com\/2023\/09\/chatgptcodereview4.png\" title=\"\u4f7f\u7528 ChatGPT \u8fdb\u884c CodeReview\">\n\u5728 github \u9879\u76ee\u7684 commit \u8bb0\u5f55\u91cc\u9762\u53ef\u4ee5\u770b\u5230\u8fd9\u91cc\u7684\u8bc4\u8bba\u5c31\u662f review \u7684\u6570\u91cf\u3002\n<img alt=\"\u4f7f\u7528 ChatGPT \u8fdb\u884c CodeReview\" src=\"https:\/\/cdn.typecodes.com\/2023\/09\/chatgptcodereview2.png\" title=\"\u4f7f\u7528 ChatGPT \u8fdb\u884c CodeReview\"><\/p>\n<h4>3 \u5176\u5b83<\/h4>\n<p>\u8fd9\u4e2a github \u9879\u76ee\u5730\u5740\u662f <a href=\"https:\/\/github.com\/vfhky\/socketRedisSentinel\">GitHub - vfhky\/socketRedisSentinel: tcp\u539f\u751f\u901a\u4fe1\u4eceredis\u7684sentinel\u57df\u540d\u89e3\u6790\u6570\u636e<\/a>\uff0c\u5927\u5bb6\u53ef\u4ee5\u8bbf\u95ee\u770b\u770b\u6548\u679c\u3002\u53e6\u5916\u8fd9\u4e2a C++\u9879\u76ee\u529f\u80fd\u662f\u521b\u5efa\u4e86\u4e00\u4e2a Linux \u670d\u52a1\u7aef\u6765\u89e3\u6790 redis sentinel \u670d\u52a1\u8fd4\u56de\u7684\u4e3b\u4ece\u5206\u7247 redis \u5206\u7247\u4fe1\u606f\uff0c\u4f8b\u5982 <code>master<\/code> \u6216\u8005 <code>slave<\/code> \u7684 redis \u7684 ip \u548c\u7aef\u53e3\uff0c\u7136\u540e\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef\u3002\u4e3b\u8981\u662f\u901a\u8fc7 <code>Libvent + OpenSSL<\/code> \u5e93\u5b9e\u73b0\u7684\uff0c\u652f\u6301 <code>tcp<\/code> \u3001<code>http<\/code> \u548c <code>https<\/code> \u8fd9\u4e09\u79cd\u5ba2\u6237\u7aef\u8bf7\u6c42\u65b9\u5f0f\u3002<\/p>\n<p>\u611f\u5174\u8da3\u7684\u53ef\u4ee5\u4e00\u8d77\u8ba8\u8bba\u4e0b\u3002<\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"ChatGPT"}},{"@attributes":{"term":"github"}}]},{"title":"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210 ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528 Makefile\uff08\u4e8c\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile2.html","rel":"alternate"}},"published":"2023-06-04T10:27:00+08:00","updated":"2023-06-04T10:27:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2023-06-04:\/cseries\/cppgeneralmakefile2.html","summary":"<p>\u4eca\u5929\u5bf9\u4e4b\u524d\u5199\u7684 <a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\">Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile - TypeCodes<\/a> \u6587\u7ae0\u91cc\u9762\u7684 Makefile \u8fdb\u884c\u4e86\u4f18\u5316\uff0c\u589e\u52a0\u4e86\u5728\u5f53\u524d\u76ee\u5f55\u751f\u6210\u5355\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\u7684\u529f\u80fd\u3002<\/p>\n<p><img alt=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210 ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528 Makefile\uff08\u4e8c\uff09\" src=\"https:\/\/cdn.typecodes.com\/2023\/06\/infoflow_2023-6-4_14-32-13.png\" title=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210 ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528 Makefile\uff08\u4e8c\uff09\"><\/p>\n","content":"<p>\u4eca\u5929\u5bf9\u4e4b\u524d\u5199\u7684 <a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\">Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile - TypeCodes<\/a> \u6587\u7ae0\u91cc\u9762\u7684 Makefile \u8fdb\u884c\u4e86\u4f18\u5316\uff0c\u589e\u52a0\u4e86\u5728\u5f53\u524d\u76ee\u5f55\u751f\u6210\u5355\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\u7684\u529f\u80fd\u3002<\/p>\n<p><img alt=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210 ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528 Makefile\uff08\u4e8c\uff09\" src=\"https:\/\/cdn.typecodes.com\/2023\/06\/infoflow_2023-6-4_14-32-13.png\" title=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210 ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528 Makefile\uff08\u4e8c\uff09\"><\/p>\n\n\n<h4>1 \u529f\u80fd\u8bf4\u660e<\/h4>\n<p>\u4e4b\u524d\u5df2\u6709\u7684\u529f\u80fd\u4e0d\u518d\u8d58\u8ff0\uff0c\u8fd9\u6b21\u4e3b\u8981\u662f\u5728\u5305\u542b\u591a\u4e2a cpp \u6587\u4ef6\u7684\u9879\u76ee\u4e2d\u751f\u6210\u4e00\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\uff08\u4e4b\u524d\u53ea\u80fd\u4e00\u4e2a cpp \u6216\u8005 c \u6587\u4ef6\u751f\u6210\u5bf9\u5e94\u7684\u4e00\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\uff09\u3002<\/p>\n<p>\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u6211\u7684\u4e00\u4e2a myRedisSentinel \u76ee\u5f55\u4e2d\u5305\u542b\u4e86\u591a\u4e2a cpp \u6587\u4ef6\uff0c\u7136\u540e\u53ea\u8981\u5728 <code>SINGLE_BIN<\/code> \u91cc\u9762\u914d\u7f6e\u60f3\u8981\u8f93\u51fa\u7684\u53ef\u6267\u884c\u6587\u4ef6\u540d\u79f0\uff0c\u6700\u540e\u6267\u884c <code>make -j4<\/code> \u547d\u4ee4\u5373\u53ef\u751f\u6210\u3002\n<img alt=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210 ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528 Makefile\uff08\u4e8c\uff09\" src=\"https:\/\/cdn.typecodes.com\/2023\/06\/infoflow_2023-6-4_14-53-56.png\" title=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210 ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528 Makefile\uff08\u4e8c\uff09\"><\/p>\n<h4>2 \u9644\u5f55\uff1aMakefile \u6587\u4ef6\u6e90\u7801<\/h4>\n<p>\u5df2\u5c06\u4e0b\u9762\u7684 Makefile \u6e90\u6587\u4ef6\u6258\u7ba1\u5230 github\u4ed3\u5e93\u4e2d\uff1a<\/p>\n<p>1\u3001GitHub\uff1a <a href=\"https:\/\/github.com\/vfhky\/General_Makefile\" title=\"\u70b9\u51fb\u67e5\u770b\"> https:\/\/github.com\/vfhky\/General_Makefile <\/a>\uff1b<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c\">##################################################################<\/span>\n<span class=\"c\">#<\/span>\n<span class=\"c\"># FILENAME   :  Makefile<\/span>\n<span class=\"c\"># DESCRIPT   :  A general makefile to generate an ELF or a<\/span>\n<span class=\"c\">#                   dynamic or a static library for C\/C++ project.<\/span>\n<span class=\"c\"># AUTHOR     :  vfhky  2015.08.07<\/span>\n<span class=\"c\"># URI        :  https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html<\/span>\n<span class=\"c\">#<\/span>\n<span class=\"c\">##################################################################<\/span>\n\n<span class=\"nf\">.PHONY<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">all<\/span> <span class=\"n\">clean<\/span> <span class=\"n\">help<\/span>\n<span class=\"nf\">all<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span>\n\n<span class=\"c\"># Some important on-off settings. You can not be too careful about them.<\/span>\n<span class=\"nv\">DEBUG<\/span><span class=\"w\">           <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>y\n<span class=\"c\"># Flag of generate a dynamic lib or a static lib: y means yes. If the target is a excutable file, it should be blank!<\/span>\n<span class=\"nv\">GEN_LIBS<\/span><span class=\"w\">        <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>y\n<span class=\"c\"># Flag of generate a dynamic lib: y means yes. It should be blank unless you want to generate a dynamic lib!<\/span>\n<span class=\"nv\">GEN_DYN_LIB<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>y\n<span class=\"c\"># generate a single target bin file.Please let it be blank unless the target is a excutable file.<\/span>\n<span class=\"nv\">SINGLE_BIN<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span>\n<span class=\"c\"># generate mutil target bin files.Please let it be blank unless the target is a excutable file.<\/span>\n<span class=\"nv\">MUTIL_BIN<\/span><span class=\"w\">       <\/span><span class=\"o\">:=<\/span>\n<span class=\"c\"># Name of the static lib. It should be blank unless the target is a static lib, then the GEN_LIBS is y and GEN_DYN_LIB is blank.<\/span>\n<span class=\"c\"># STATIC_LIBS       := libsrcpbl.a<\/span>\n<span class=\"c\"># Name of the dynamic lib. It should be blank unless the target is a dynamic lib, then the GEN_LIBS is y and GEN_DYN_LIB is y.<\/span>\n<span class=\"nv\">DYNAMIC_LIBS<\/span><span class=\"w\">    <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>libsrcpbl.so\n\n<span class=\"c\"># Environment settings. The value of PROJECT_DIR shoule be set in the *nix system as the the absolute dir path of your project.<\/span>\n<span class=\"c\"># PROJECT_DIR   := \/home\/test_usr<\/span>\n<span class=\"c\">#CURDIR         := $(PROJECT_DIR)\/src\/pbl<\/span>\n<span class=\"nv\">CURDIR<\/span><span class=\"w\">          <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>shell<span class=\"w\"> <\/span><span class=\"nb\">pwd<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">PRG_BIN_DIR<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PROJECT_DIR<span class=\"k\">)<\/span>\/bin\n<span class=\"nv\">PRG_LIB_DIR<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PROJECT_DIR<span class=\"k\">)<\/span>\/lib\n<span class=\"nv\">PRG_INC_DIR<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PROJECT_DIR<span class=\"k\">)<\/span>\/include\n\n<span class=\"c\"># Cross compile tools defined. You needn&#39;t modify these vars below generally.<\/span>\n<span class=\"nv\">AS<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>as\n<span class=\"nv\">LD<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>ld\n<span class=\"nv\">CC<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>gcc\n<span class=\"nv\">CXX<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>g++\n<span class=\"nv\">CPP<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CC<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-E\n<span class=\"nv\">AR<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>ar<span class=\"w\"> <\/span>rcs\n<span class=\"nv\">NM<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>nm\n<span class=\"nv\">STRIP<\/span><span class=\"w\">   <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>strip\n<span class=\"nv\">RANLIB<\/span><span class=\"w\">  <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>ranlib\n<span class=\"nv\">STD_OPT<\/span><span class=\"w\"> <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>-D_GNU_SOURCE\n<span class=\"nv\">CC<\/span><span class=\"w\">      <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span>-std<span class=\"o\">=<\/span>c99<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>STD_OPT<span class=\"k\">)<\/span>\n<span class=\"nv\">CXX<\/span><span class=\"w\">     <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>STD_OPT<span class=\"k\">)<\/span>\n\n<span class=\"c\"># *nix system tools defined. You needn&#39;t modify these vars below generally.<\/span>\n<span class=\"nv\">BLACK<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\\e[33;0m&quot;<\/span>\n<span class=\"nv\">RED<\/span><span class=\"w\">  <\/span><span class=\"o\">=<\/span><span class=\"w\">  <\/span><span class=\"s2\">&quot;\\e[31;1m&quot;<\/span>\n<span class=\"nv\">GREEN<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\\e[32;1m&quot;<\/span>\n<span class=\"nv\">YELLOW<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\\e[33;3m&quot;<\/span>\n<span class=\"nv\">BLUE<\/span><span class=\"w\">  <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\\e[34;1m&quot;<\/span>\n<span class=\"nv\">PURPLE<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\\e[35;1m&quot;<\/span>\n<span class=\"nv\">CYAN<\/span><span class=\"w\">  <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\\e[36;1m&quot;<\/span>\n<span class=\"nv\">WHITE<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\\e[37;1m&quot;<\/span>\n<span class=\"nv\">CP<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>cp\n<span class=\"nv\">SED<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>sed\n<span class=\"nv\">FIND<\/span><span class=\"w\">    <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>find\n<span class=\"nv\">MKDIR<\/span><span class=\"w\">   <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>mkdir<span class=\"w\"> <\/span>-p\n<span class=\"nv\">XARGS<\/span><span class=\"w\">   <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>xargs\n<span class=\"nv\">MV<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>mv\n<span class=\"nv\">RM<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>rm<span class=\"w\"> <\/span>-rf\n\n\n<span class=\"c\"># Get .c, .cpp source files by searching from current directory.<\/span>\n<span class=\"nv\">CUR_SRC_DIR<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>shell<span class=\"w\"> <\/span>ls<span class=\"w\"> <\/span>-AxR<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CURDIR<span class=\"k\">)<\/span><span class=\"p\">|<\/span>grep<span class=\"w\"> <\/span><span class=\"s2\">&quot;:&quot;<\/span><span class=\"p\">|<\/span>tr<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"s1\">&#39;:&#39;<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">CUR_SRC<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>foreach<span class=\"w\"> <\/span>subdir,<span class=\"k\">$(<\/span>CUR_SRC_DIR<span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span>wildcard<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>subdir<span class=\"k\">)<\/span>\/*.c<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>subdir<span class=\"k\">)<\/span>\/*.cpp<span class=\"k\">))<\/span>\n<span class=\"c\">#CUR_SRC    := $(shell find . -name &quot;*.c&quot; -o -name &quot;*.cpp&quot;|sed -e &#39;s,.\/,,&#39;)<\/span>\n<span class=\"nv\">CUR_C<\/span><span class=\"w\">       <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>filter<span class=\"w\"> <\/span>%.c,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_SRC<span class=\"k\">))<\/span>\n<span class=\"nv\">CUR_CPP<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>filter<span class=\"w\"> <\/span>%.cpp,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_SRC<span class=\"k\">))<\/span>\n\n<span class=\"c\"># Get the include files, object files, dependent files by searching from PRG_INC_DIR.<\/span>\n<span class=\"nv\">CUR_INC_DIR<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>shell<span class=\"w\"> <\/span>ls<span class=\"w\"> <\/span>-AxR<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PRG_INC_DIR<span class=\"k\">)<\/span><span class=\"p\">|<\/span>grep<span class=\"w\"> <\/span><span class=\"s2\">&quot;:&quot;<\/span><span class=\"p\">|<\/span>tr<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"s1\">&#39;:&#39;<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">CUR_INC<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>foreach<span class=\"w\"> <\/span>subdir,<span class=\"k\">$(<\/span>CUR_INC_DIR<span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span>subdir<span class=\"k\">)<\/span>\/*.h<span class=\"k\">)<\/span>\n<span class=\"nv\">SRC_H<\/span><span class=\"w\">       <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>filter<span class=\"w\"> <\/span>%.h,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_INC<span class=\"k\">))<\/span>\n<span class=\"c\">#CUR_OBJ    := $(addprefix $(PRG_BIN_DIR)\/,$(strip $(CUR_CPP:.cpp=.o) $(CUR_C:.c=.o)))<\/span>\n<span class=\"c\">#CUR_OBJ    := $(addprefix $(PRG_BIN_DIR)\/,$(notdir $(CUR_CPP:.cpp=.o) $(CUR_C:.c=.o)))<\/span>\n<span class=\"nv\">CUR_OBJ<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>strip<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_CPP:.cpp<span class=\"o\">=<\/span>.o<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_C:.c<span class=\"o\">=<\/span>.o<span class=\"k\">))<\/span>\n<span class=\"c\">#CUR_DEP    := $(addprefix $(PRG_BIN_DIR)\/,$(notdir $(CUR_CPP:.cpp=.d) $(CUR_C:.c=.d)))<\/span>\n<span class=\"nv\">CUR_DEP<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>strip<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_CPP:.cpp<span class=\"o\">=<\/span>.d<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_C:.c<span class=\"o\">=<\/span>.d<span class=\"k\">))<\/span>\n\n<span class=\"c\"># Create directory in the header files, bin and library directory.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">dirname<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">sort<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">PRG_INC_DIR<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">PRG_BIN_DIR<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">PRG_LIB_DIR<\/span><span class=\"k\">))<\/span>,\\\n  <span class=\"k\">$(<\/span><span class=\"nv\">shell<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">MKDIR<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">dirname<\/span><span class=\"k\">)))<\/span>\n\n<span class=\"c\"># Complie and link variables. LD_LIBS means the dynamic or static library needed for the object file.<\/span>\n<span class=\"nv\">CFLAGS<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(if<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>DEBUG<span class=\"k\">)<\/span>,-g<span class=\"w\"> <\/span>-Wall,<span class=\"w\"> <\/span>-O2<span class=\"w\"> <\/span>-Wall<span class=\"k\">)<\/span>\n<span class=\"nv\">CFLAGS<\/span><span class=\"w\">      <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(if<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>GEN_DYN_LIB<span class=\"k\">)<\/span>,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>addprefix<span class=\"w\"> <\/span>-fPIC<span class=\"w\"> <\/span>-I<span class=\"w\"> <\/span>,<span class=\"k\">$(<\/span>sort<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>dir<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>SRC_H<span class=\"k\">))))<\/span>,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>addprefix<span class=\"w\"> <\/span>-I<span class=\"w\"> <\/span>,<span class=\"k\">$(<\/span>sort<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>dir<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>SRC_H<span class=\"k\">)))))<\/span>\n<span class=\"nv\">CXXFLAGS<\/span><span class=\"w\">    <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CFLAGS<span class=\"k\">)<\/span>\n<span class=\"nv\">LDFLAGS<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>\n<span class=\"nv\">LD_LIB_DIR<\/span><span class=\"w\">  <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"c1\">#-L $(PRG_LIB_DIR)<\/span>\n<span class=\"nv\">LD_LIBS<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"c1\">#-lsrcpbl -lmysqlclient<\/span>\n<span class=\"nv\">XLD_FLG<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>-Xlinker<span class=\"w\"> <\/span><span class=\"s2\">&quot;-(&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LDFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-Xlinker<span class=\"w\"> <\/span><span class=\"s2\">&quot;-)&quot;<\/span>\n\n<span class=\"c\"># Add vpath.<\/span>\n<span class=\"cp\">vpath %.h $(sort $(dir $(SRC_H)))<\/span>\n<span class=\"cp\">vpath %.c $(sort $(dir $(CUR_C)))<\/span>\n<span class=\"cp\">vpath %.cpp $(sort $(dir $(CUR_CPP)))<\/span>\n\n<span class=\"c\"># Generate depend files.<\/span>\n<span class=\"cp\">ifneq &quot;$(MAKECMDGOALS)&quot; &quot;clean&quot;<\/span>\n<span class=\"err\">sinclude<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span><span class=\"nv\">CUR_DEP<\/span><span class=\"k\">)<\/span>\n<span class=\"cp\">endif<\/span>\n\n<span class=\"c\"># Gen_depend(depend-file,source-file,object-file,cc). This command-package is used to generate a depend file with a postfix of .d.<\/span>\n<span class=\"cp\">define gen_depend<\/span>\n<span class=\"w\">  <\/span><span class=\"err\">@set<\/span><span class=\"w\"> <\/span><span class=\"err\">-e;<\/span><span class=\"w\">                                      <\/span><span class=\"err\">\\<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span><span class=\"nv\">RM<\/span><span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"err\">$1;<\/span><span class=\"w\">                                     <\/span><span class=\"err\">\\<\/span>\n<span class=\"w\">  <\/span><span class=\"err\">$4<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span><span class=\"nv\">CFLAGS<\/span><span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"err\">-MM<\/span><span class=\"w\"> <\/span><span class=\"err\">$2<\/span><span class=\"w\"> <\/span><span class=\"err\">|<\/span><span class=\"w\">                         <\/span><span class=\"err\">\\<\/span>\n<span class=\"w\">  <\/span><span class=\"nf\">$(SED) &#39;s,\\($(notdir $3)\\)<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">,<\/span>$3: <span class=\"p\">,<\/span>&#39; &gt; $1.<span class=\"n\">tmp<\/span>; \\\n  <span class=\"k\">$(<\/span><span class=\"nv\">SED<\/span><span class=\"k\">)<\/span> -<span class=\"n\">e<\/span> &#39;<span class=\"n\">s<\/span>\/<span class=\"c\">#.*\/\/&#39;                           \\<\/span>\n<span class=\"w\">         <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/^[^:]*: *\/\/&#39;<\/span><span class=\"w\">                     <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">         <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/ *\\\\$$\/\/&#39;<\/span><span class=\"w\">                        <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">         <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;\/^$$\/ d&#39;<\/span><span class=\"w\">                           <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">         <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/$$\/ :\/&#39;<\/span><span class=\"w\"> <\/span>&lt;<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span>.tmp<span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span>.tmp<span class=\"p\">;<\/span><span class=\"w\">      <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span>MV<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"nv\">$1<\/span>.tmp<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span><span class=\"p\">;<\/span>\n<span class=\"cp\">endef<\/span>\n\n<span class=\"c\"># Rules to generate objects file(.o) from .c or .cpp files.<\/span>\n<span class=\"nf\">$(CURDIR)\/%.o<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span><span class=\"nv\">CURDIR<\/span><span class=\"k\">)<\/span>\/%.<span class=\"n\">c<\/span>\n<span class=\"w\">    <\/span>@<span class=\"k\">$(<\/span>call<span class=\"w\"> <\/span>gen_depend,<span class=\"k\">$(<\/span>patsubst<span class=\"w\"> <\/span>%.o,%.d,<span class=\"nv\">$@<\/span><span class=\"k\">)<\/span>,$&lt;,<span class=\"nv\">$@<\/span>,<span class=\"k\">$(<\/span>CC<span class=\"k\">))<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">$(<\/span>CC<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$@<\/span><span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span>$&lt;\n\n<span class=\"nf\">$(CURDIR)\/%.o<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span><span class=\"nv\">CURDIR<\/span><span class=\"k\">)<\/span>\/%.<span class=\"n\">cpp<\/span>\n<span class=\"w\">    <\/span>@<span class=\"k\">$(<\/span>call<span class=\"w\"> <\/span>gen_depend,<span class=\"k\">$(<\/span>patsubst<span class=\"w\"> <\/span>%.o,%.d,<span class=\"nv\">$@<\/span><span class=\"k\">)<\/span>,$&lt;,<span class=\"nv\">$@<\/span>,<span class=\"k\">$(<\/span>CXX<span class=\"k\">))<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">$(<\/span>CXX<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CXXFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$@<\/span><span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span>$&lt;\n\n<span class=\"c\"># Gen_excbin(target,CUR_OBJ,cc). This command-package is used to generate a excutable file.<\/span>\n<span class=\"cp\">define gen_single_excbin<\/span>\n<span class=\"w\">  <\/span><span class=\"nv\">ULT_SINGLE_BIN<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PRG_BIN_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span>PRG_BIN_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>:<span class=\"w\"> <\/span><span class=\"nv\">$2<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">$3<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LDFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>^<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIB_DIR<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIBS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>XLD_FLG<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>@\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>YELLOW<span class=\"k\">)<\/span><span class=\"s2\">&quot;========================Success========================&quot;<\/span><span class=\"k\">$(<\/span>BLACK<span class=\"k\">)<\/span>\n<span class=\"cp\">endef<\/span>\n\n<span class=\"c\"># Gen_excbin(target,CUR_OBJ,cc). This command-package is used to generate a excutable file.<\/span>\n<span class=\"cp\">define gen_mutil_bin<\/span>\n<span class=\"w\">  <\/span><span class=\"nv\">ULT_MUTIL_BIN<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PRG_BIN_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span>PRG_BIN_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>:<span class=\"w\"> <\/span><span class=\"nv\">$2<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">$3<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LDFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>^<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIB_DIR<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIBS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>XLD_FLG<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>@\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>YELLOW<span class=\"k\">)<\/span><span class=\"s2\">&quot;========================Success========================&quot;<\/span><span class=\"k\">$(<\/span>BLACK<span class=\"k\">)<\/span>\n<span class=\"cp\">endef<\/span>\n\n<span class=\"c\"># Gen_libs(libs,CUR_OBJ,cc). This command-package is used to generate a dynamic lib or a static lib.<\/span>\n<span class=\"cp\">define gen_libs<\/span>\n<span class=\"w\">  <\/span><span class=\"nv\">ULT_LIBS<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PRG_LIB_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span>PRG_LIB_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>:<span class=\"w\"> <\/span><span class=\"nv\">$2<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">$3<\/span><span class=\"w\"> <\/span><span class=\"k\">$(if<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>GEN_DYN_LIB<span class=\"k\">)<\/span>,-shared<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>^<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CXXFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIB_DIR<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIBS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>XLD_FLG<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>@,<span class=\"nv\">$$<\/span>@<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>^<span class=\"k\">)<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>YELLOW<span class=\"k\">)<\/span><span class=\"s2\">&quot;========================Success========================&quot;<\/span><span class=\"k\">$(<\/span>BLACK<span class=\"k\">)<\/span>\n<span class=\"cp\">endef<\/span>\n\n<span class=\"c\"># Call gen_single_excbin to generate an excutale file.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">bin<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">SINGLE_BIN<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">eval<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">call<\/span> <span class=\"nv\">gen_single_excbin<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">bin<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CUR_OBJ<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CXX<\/span><span class=\"k\">))))<\/span>\n\n<span class=\"c\"># Call gen_mutil_bin to generate mutil excutale files.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">bin<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">MUTIL_BIN<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">eval<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">call<\/span> <span class=\"nv\">gen_mutil_bin<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">bin<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CURDIR<\/span><span class=\"k\">)<\/span>\/<span class=\"k\">$(<\/span><span class=\"nv\">bin<\/span><span class=\"k\">)<\/span><span class=\"nv\">.o<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CXX<\/span><span class=\"k\">))))<\/span>\n\n<span class=\"c\"># Call gen_libs to generate a dynamic lib.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">lib<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">DYNAMIC_LIBS<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">eval<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">call<\/span> <span class=\"nv\">gen_libs<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">lib<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CUR_OBJ<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CXX<\/span><span class=\"k\">))))<\/span>\n\n<span class=\"c\"># Call gen_libs to generate a static lib.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">lib<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">STATIC_LIBS<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">eval<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">call<\/span> <span class=\"nv\">gen_libs<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">lib<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CUR_OBJ<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">AR<\/span><span class=\"k\">))))<\/span>\n\n\n<span class=\"nf\">all<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span><span class=\"nv\">ULT_SINGLE_BIN<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">ULT_MUTIL_BIN<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">ULT_LIBS<\/span><span class=\"k\">)<\/span>\n\n\n<span class=\"nf\">clean<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span>-<span class=\"k\">$(<\/span>FIND<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CURDIR<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;*.o&quot;<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;*.d&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>XARGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>RM<span class=\"k\">)<\/span>\n<span class=\"w\">    <\/span>-<span class=\"k\">$(<\/span>RM<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>ULT_SINGLE_BIN<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>ULT_MUTIL_BIN<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>ULT_LIBS<span class=\"k\">)<\/span>\n\n\n<span class=\"nf\">help<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CC<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CC<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CXX<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CXX<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CFLAGS<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CFLAGS<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CXXFLAGS<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CXXFLAGS<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">PROJECT_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>PROJECT_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CURDIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CURDIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">PRG_BIN_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>PRG_BIN_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">PRG_LIB_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>PRG_LIB_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">PRG_INC_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>PRG_INC_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_SRC_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_SRC_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_SRC<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_SRC<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_C<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_C<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_CPP<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_CPP<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_OBJ<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_OBJ<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_DEP<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_DEP<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">STATIC_LIBS<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>STATIC_LIBS<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">DYNAMIC_LIBS<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>DYNAMIC_LIBS<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"makefile"}}]},{"title":"utuntu22.04\u5b89\u88c5\u542bbrotli\u6a21\u5757\u7684Ningx","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/ubuntu2204installbrotlinginx.html","rel":"alternate"}},"published":"2023-05-29T22:10:00+08:00","updated":"2023-05-29T22:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2023-05-29:\/linux\/ubuntu2204installbrotlinginx.html","summary":"<h4>\u4e00\u3001\u66f4\u65b0\u6e90\uff1a<\/h4>\n\/etc\/apt\/sources.list.bak\n\n<span class=\"c1\">### \u66ff\u6362\u6210\u963f\u91cc\u4e91\u7684\u6e90<\/span>\nsudo<span class=\"w\"> <\/span>bash<span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span><span class=\"s2\">&quot;cat &lt;&lt; EOF &gt; \/etc\/apt\/sources.list &amp;&amp; apt update <\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy main restricted universe multiverse<\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-security main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-security main restricted universe multiverse<\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-updates main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-updates main restricted universe multiverse<\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-proposed main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-proposed main restricted universe multiverse<\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-backports main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-backports main restricted universe multiverse<\/span>\n<span class=\"s2\">EOF&quot;<\/span>\n\n<span class=\"c1\">### \u91cd\u542f<\/span>\nreboot\n\n<span class=\"c1\">### \u66f4\u65b0<\/span>\napt<span class=\"w\"> <\/span>update<span class=\"w\"> <\/span>-y<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>apt<span class=\"w\"> <\/span>upgrade<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>apt<span class=\"w\"> <\/span>install<span class=\"w\"> <\/span>dpkg-dev\n<\/code><\/pre>\n\n","content":"<h4>\u4e00\u3001\u66f4\u65b0\u6e90\uff1a<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code>cp<span class=\"w\"> <\/span>\/etc\/apt\/sources.list<span class=\"w\"> <\/span>\/etc\/apt\/sources.list.bak\n\n<span class=\"c1\">### \u66ff\u6362\u6210\u963f\u91cc\u4e91\u7684\u6e90<\/span>\nsudo<span class=\"w\"> <\/span>bash<span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span><span class=\"s2\">&quot;cat &lt;&lt; EOF &gt; \/etc\/apt\/sources.list &amp;&amp; apt update <\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy main restricted universe multiverse<\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-security main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-security main restricted universe multiverse<\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-updates main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-updates main restricted universe multiverse<\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-proposed main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-proposed main restricted universe multiverse<\/span>\n<span class=\"s2\">deb http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-backports main restricted universe multiverse<\/span>\n<span class=\"s2\">deb-src http:\/\/mirrors.aliyun.com\/ubuntu\/ jammy-backports main restricted universe multiverse<\/span>\n<span class=\"s2\">EOF&quot;<\/span>\n\n<span class=\"c1\">### \u91cd\u542f<\/span>\nreboot\n\n<span class=\"c1\">### \u66f4\u65b0<\/span>\napt<span class=\"w\"> <\/span>update<span class=\"w\"> <\/span>-y<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>apt<span class=\"w\"> <\/span>upgrade<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>apt<span class=\"w\"> <\/span>install<span class=\"w\"> <\/span>dpkg-dev\n<\/code><\/pre><\/div>\n\n\n\n<h4>\u4e8c\u3001\u5f00\u59cb\u5b89\u88c5 nginx \u548c brotli<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">### \u5b89\u88c5nginx<\/span>\n<span class=\"n\">apt<\/span><span class=\"w\"> <\/span><span class=\"n\">install<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span>\n<span class=\"n\">systemctl<\/span><span class=\"w\"> <\/span><span class=\"n\">enable<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">.<\/span><span class=\"n\">service<\/span>\n\n<span class=\"c1\">### \u7f16\u8bd1brotli<\/span>\n<span class=\"n\">apt<\/span><span class=\"w\"> <\/span><span class=\"n\">source<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">apt<\/span><span class=\"w\"> <\/span><span class=\"n\">build<\/span><span class=\"o\">-<\/span><span class=\"n\">dep<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span>\n<span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">clone<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">recursive<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">github<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">google<\/span><span class=\"o\">\/<\/span><span class=\"n\">ngx_brotli<\/span><span class=\"o\">.<\/span><span class=\"n\">git<\/span>\n<span class=\"n\">cd<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.18<\/span><span class=\"o\">.<\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">.\/<\/span><span class=\"n\">configure<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">compat<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">add<\/span><span class=\"o\">-<\/span><span class=\"n\">dynamic<\/span><span class=\"o\">-<\/span><span class=\"n\">module<\/span><span class=\"o\">=..\/<\/span><span class=\"n\">ngx_brotli<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">make<\/span><span class=\"w\"> <\/span><span class=\"n\">modules<\/span>\n\n<span class=\"c1\">### \u5e93\u6587\u4ef6<\/span>\n<span class=\"n\">cp<\/span><span class=\"w\"> <\/span><span class=\"o\">.\/<\/span><span class=\"n\">objs<\/span><span class=\"o\">\/*.<\/span><span class=\"n\">so<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">share<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">modules<\/span>\n<span class=\"n\">vim<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">share<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">modules<\/span><span class=\"o\">-<\/span><span class=\"n\">available<\/span><span class=\"o\">\/<\/span><span class=\"n\">mod<\/span><span class=\"o\">-<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">brotli<\/span><span class=\"o\">.<\/span><span class=\"n\">conf<\/span>\n<span class=\"n\">load_module<\/span><span class=\"w\"> <\/span><span class=\"n\">modules<\/span><span class=\"o\">\/<\/span><span class=\"n\">ngx_http_brotli_filter_module<\/span><span class=\"o\">.<\/span><span class=\"n\">so<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">load_module<\/span><span class=\"w\"> <\/span><span class=\"n\">modules<\/span><span class=\"o\">\/<\/span><span class=\"n\">ngx_http_brotli_static_module<\/span><span class=\"o\">.<\/span><span class=\"n\">so<\/span><span class=\"p\">;<\/span>\n\n<span class=\"n\">cd<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">modules<\/span><span class=\"o\">-<\/span><span class=\"n\">enabled<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">ln<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">s<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">share<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">modules<\/span><span class=\"o\">-<\/span><span class=\"n\">available<\/span><span class=\"o\">\/<\/span><span class=\"n\">mod<\/span><span class=\"o\">-<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">brotli<\/span><span class=\"o\">.<\/span><span class=\"n\">conf<\/span><span class=\"w\"> <\/span><span class=\"mi\">50<\/span><span class=\"o\">-<\/span><span class=\"n\">mod<\/span><span class=\"o\">-<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">brotli<\/span><span class=\"o\">.<\/span><span class=\"n\">conf<\/span>\n\n<span class=\"c1\">### brolit \u914d\u7f6e\u6587\u4ef6<\/span>\n<span class=\"n\">vim<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">conf<\/span><span class=\"o\">.<\/span><span class=\"n\">d<\/span><span class=\"o\">\/<\/span><span class=\"n\">brotli<\/span><span class=\"o\">.<\/span><span class=\"n\">conf<\/span>\n<span class=\"c1\"># Enable Brotli<\/span>\n<span class=\"n\">brotli<\/span><span class=\"w\">            <\/span><span class=\"n\">on<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">brotli_static<\/span><span class=\"w\">     <\/span><span class=\"n\">on<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">brotli_comp_level<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\"># File types to compress<\/span>\n<span class=\"n\">brotli_types<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">atom<\/span><span class=\"o\">+<\/span><span class=\"n\">xml<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">javascript<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">json<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">rss<\/span><span class=\"o\">+<\/span><span class=\"n\">xml<\/span>\n<span class=\"w\">             <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">vnd<\/span><span class=\"o\">.<\/span><span class=\"n\">ms<\/span><span class=\"o\">-<\/span><span class=\"n\">fontobject<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">x<\/span><span class=\"o\">-<\/span><span class=\"n\">font<\/span><span class=\"o\">-<\/span><span class=\"n\">opentype<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">x<\/span><span class=\"o\">-<\/span><span class=\"n\">font<\/span><span class=\"o\">-<\/span><span class=\"n\">truetype<\/span>\n<span class=\"w\">             <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">x<\/span><span class=\"o\">-<\/span><span class=\"n\">font<\/span><span class=\"o\">-<\/span><span class=\"n\">ttf<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">x<\/span><span class=\"o\">-<\/span><span class=\"n\">javascript<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">xhtml<\/span><span class=\"o\">+<\/span><span class=\"n\">xml<\/span><span class=\"w\"> <\/span><span class=\"n\">application<\/span><span class=\"o\">\/<\/span><span class=\"n\">xml<\/span>\n<span class=\"w\">             <\/span><span class=\"n\">font<\/span><span class=\"o\">\/<\/span><span class=\"n\">eot<\/span><span class=\"w\"> <\/span><span class=\"n\">font<\/span><span class=\"o\">\/<\/span><span class=\"n\">opentype<\/span><span class=\"w\"> <\/span><span class=\"n\">font<\/span><span class=\"o\">\/<\/span><span class=\"n\">otf<\/span><span class=\"w\"> <\/span><span class=\"n\">font<\/span><span class=\"o\">\/<\/span><span class=\"n\">truetype<\/span><span class=\"w\"> <\/span><span class=\"n\">image<\/span><span class=\"o\">\/<\/span><span class=\"n\">svg<\/span><span class=\"o\">+<\/span><span class=\"n\">xml<\/span><span class=\"w\"> <\/span><span class=\"n\">image<\/span><span class=\"o\">\/<\/span><span class=\"n\">vnd<\/span><span class=\"o\">.<\/span><span class=\"n\">microsoft<\/span><span class=\"o\">.<\/span><span class=\"n\">icon<\/span>\n<span class=\"w\">             <\/span><span class=\"n\">image<\/span><span class=\"o\">\/<\/span><span class=\"n\">x<\/span><span class=\"o\">-<\/span><span class=\"n\">icon<\/span><span class=\"w\"> <\/span><span class=\"n\">image<\/span><span class=\"o\">\/<\/span><span class=\"n\">x<\/span><span class=\"o\">-<\/span><span class=\"n\">win<\/span><span class=\"o\">-<\/span><span class=\"n\">bitmap<\/span><span class=\"w\"> <\/span><span class=\"n\">text<\/span><span class=\"o\">\/<\/span><span class=\"n\">css<\/span><span class=\"w\"> <\/span><span class=\"n\">text<\/span><span class=\"o\">\/<\/span><span class=\"n\">javascript<\/span><span class=\"w\"> <\/span><span class=\"n\">text<\/span><span class=\"o\">\/<\/span><span class=\"n\">plain<\/span><span class=\"w\"> <\/span><span class=\"n\">text<\/span><span class=\"o\">\/<\/span><span class=\"n\">xml<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre><\/div>\n\n<h4>\u4e09\u3001\u9a8c\u8bc1<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">### \u91cd\u542fnginx<\/span>\n<span class=\"n\">systemctl<\/span><span class=\"w\"> <\/span><span class=\"n\">restart<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span>\n\n<span class=\"c1\">### \u9a8c\u8bc1\uff0c\u51fa\u73b0 content-encoding: br \u8868\u793a\u751f\u6548<\/span>\n<span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">VM<\/span><span class=\"o\">-<\/span><span class=\"mi\">0<\/span><span class=\"o\">-<\/span><span class=\"mi\">12<\/span><span class=\"o\">-<\/span><span class=\"n\">ubuntu<\/span><span class=\"p\">:<\/span><span class=\"o\">~<\/span><span class=\"c1\"># curl -H &#39;Accept-Encoding: br&#39; -I https:\/\/typecodes.com<\/span>\n<span class=\"n\">HTTP<\/span><span class=\"o\">\/<\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"mi\">200<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">server<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span>\n<span class=\"n\">date<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Wed<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">03<\/span><span class=\"w\"> <\/span><span class=\"n\">May<\/span><span class=\"w\"> <\/span><span class=\"mi\">2023<\/span><span class=\"w\"> <\/span><span class=\"mi\">16<\/span><span class=\"p\">:<\/span><span class=\"mi\">21<\/span><span class=\"p\">:<\/span><span class=\"mi\">44<\/span><span class=\"w\"> <\/span><span class=\"n\">GMT<\/span>\n<span class=\"n\">content<\/span><span class=\"o\">-<\/span><span class=\"n\">type<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">text<\/span><span class=\"o\">\/<\/span><span class=\"n\">html<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">charset<\/span><span class=\"o\">=<\/span><span class=\"n\">utf<\/span><span class=\"o\">-<\/span><span class=\"mi\">8<\/span>\n<span class=\"n\">last<\/span><span class=\"o\">-<\/span><span class=\"n\">modified<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Fri<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">03<\/span><span class=\"w\"> <\/span><span class=\"n\">Mar<\/span><span class=\"w\"> <\/span><span class=\"mi\">2023<\/span><span class=\"w\"> <\/span><span class=\"mi\">09<\/span><span class=\"p\">:<\/span><span class=\"mi\">25<\/span><span class=\"p\">:<\/span><span class=\"mi\">39<\/span><span class=\"w\"> <\/span><span class=\"n\">GMT<\/span>\n<span class=\"n\">vary<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Accept<\/span><span class=\"o\">-<\/span><span class=\"n\">Encoding<\/span>\n<span class=\"n\">etag<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">W<\/span><span class=\"o\">\/<\/span><span class=\"s2\">&quot;6401bd13-412d&quot;<\/span>\n<span class=\"n\">strict<\/span><span class=\"o\">-<\/span><span class=\"n\">transport<\/span><span class=\"o\">-<\/span><span class=\"n\">security<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nb\">max<\/span><span class=\"o\">-<\/span><span class=\"n\">age<\/span><span class=\"o\">=<\/span><span class=\"mi\">31536000<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">includeSubdomains<\/span><span class=\"p\">;<\/span><span class=\"nb\">preload<\/span>\n<span class=\"n\">x<\/span><span class=\"o\">-<\/span><span class=\"n\">frame<\/span><span class=\"o\">-<\/span><span class=\"n\">options<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">DENY<\/span>\n<span class=\"n\">x<\/span><span class=\"o\">-<\/span><span class=\"n\">content<\/span><span class=\"o\">-<\/span><span class=\"n\">type<\/span><span class=\"o\">-<\/span><span class=\"n\">options<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">nosniff<\/span>\n<span class=\"n\">public<\/span><span class=\"o\">-<\/span><span class=\"n\">key<\/span><span class=\"o\">-<\/span><span class=\"n\">pins<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">pin<\/span><span class=\"o\">-<\/span><span class=\"n\">sha256<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;YLh1dUR9y6Kja30RrAn7JKnbQG\/uEtLMkBgFF2Fuihg=&quot;<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">pin<\/span><span class=\"o\">-<\/span><span class=\"n\">sha256<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;aef6IF2UF6jNEwA2pNmP7kpgT6NFSdt7Tqf5HzaIGWI=&quot;<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"nb\">max<\/span><span class=\"o\">-<\/span><span class=\"n\">age<\/span><span class=\"o\">=<\/span><span class=\"mi\">2592000<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">includeSubDomains<\/span>\n<span class=\"n\">cache<\/span><span class=\"o\">-<\/span><span class=\"n\">control<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">no<\/span><span class=\"o\">-<\/span><span class=\"n\">cache<\/span>\n<span class=\"n\">content<\/span><span class=\"o\">-<\/span><span class=\"n\">security<\/span><span class=\"o\">-<\/span><span class=\"n\">policy<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">default<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"w\"> <\/span><span class=\"n\">disqus<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"w\"> <\/span><span class=\"n\">disquscdn<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">script<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;unsafe-inline&#39;<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;unsafe-eval&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">blob<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:;<\/span><span class=\"w\"> <\/span><span class=\"n\">img<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;self&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">hm<\/span><span class=\"o\">.<\/span><span class=\"n\">baidu<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"w\"> <\/span><span class=\"n\">disqus<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">style<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;unsafe-inline&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:;<\/span><span class=\"w\"> <\/span><span class=\"n\">child<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:;<\/span><span class=\"w\"> <\/span><span class=\"n\">connect<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;self&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">hm<\/span><span class=\"o\">.<\/span><span class=\"n\">baidu<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"w\"> <\/span><span class=\"n\">disqus<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">frame<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"w\"> <\/span><span class=\"n\">https<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">disqus<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span>\n<span class=\"n\">content<\/span><span class=\"o\">-<\/span><span class=\"n\">encoding<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">br<\/span>\n\n<span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">VM<\/span><span class=\"o\">-<\/span><span class=\"mi\">0<\/span><span class=\"o\">-<\/span><span class=\"mi\">12<\/span><span class=\"o\">-<\/span><span class=\"n\">ubuntu<\/span><span class=\"p\">:<\/span><span class=\"o\">~<\/span><span class=\"c1\"># <\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"response \u51fa\u73b0 br \u5219\u8868\u793a\u5df2\u7ecf\u542f\u7528 br \u538b\u7f29\" src=\"https:\/\/cdn.typecodes.com\/2023\/05\/2023-05-29_224302.png\"><\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"nginx"}},{"@attributes":{"term":"brotli"}}]},{"title":"\u4f7f\u7528shell\u811a\u672c\u5bfc\u51faMySql\u67e5\u8be2\u7684\u6708\u8868\u6570\u636e\u5230EXCEL\u4e2d","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/exportmysqlshell1.html","rel":"alternate"}},"published":"2020-08-02T22:10:00+08:00","updated":"2020-08-02T22:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2020-08-02:\/linux\/exportmysqlshell1.html","summary":"<p>\u7ecf\u5e38\u4f1a\u8e2b\u5230\u8fd9\u6837\u7684\u573a\u666f\u9700\u6c42\uff1a\u81ea\u5b9a\u4e49\u65f6\u95f4\u4eceMySql\u6d41\u6c34\u6708\u8868\u4e2d<code>SELECT<\/code>\u51fa\u6765\u6570\u636e\u5230excel\u62a5\u8868\u6587\u4ef6\u4e2d\uff0c\u6240\u4ee5\u81ea\u5df1\u5199\u4e86\u8fd9\u4e2ashell\u811a\u672c\u6765\u5904\u7406\u3002<\/p>\n","content":"<p>\u7ecf\u5e38\u4f1a\u8e2b\u5230\u8fd9\u6837\u7684\u573a\u666f\u9700\u6c42\uff1a\u81ea\u5b9a\u4e49\u65f6\u95f4\u4eceMySql\u6d41\u6c34\u6708\u8868\u4e2d<code>SELECT<\/code>\u51fa\u6765\u6570\u636e\u5230excel\u62a5\u8868\u6587\u4ef6\u4e2d\uff0c\u6240\u4ee5\u81ea\u5df1\u5199\u4e86\u8fd9\u4e2ashell\u811a\u672c\u6765\u5904\u7406\u3002<\/p>\n\n\n<h4>1 \u5b9e\u73b0\u601d\u8def<\/h4>\n<p>\u4ee3\u7801\u6bd4\u8f83\u7b80\u5355\uff0c\u4e3b\u8981\u4f7f\u7528\u4e86<code>mysql -e<\/code>\u6267\u884cSQL\u8bed\u53e5\uff0c\u7136\u540e\u91cd\u5b9a\u5411\u5230txt\u6587\u4ef6\u4e2d\u3002\u7531\u4e8elinux\u9ed8\u8ba4\u662f<code>uft-8<\/code>\u7684\u683c\u5f0f\uff0c\u6240\u4ee5\u5728\u4f7f\u7528<code>awk<\/code>\u547d\u4ee4\u5904\u7406\u5b8ctxt\u6587\u4ef6\u540e\uff0c\u901a\u8fc7<code>iconv<\/code>\u547d\u4ee4\u628autf8\u7684\u6587\u4ef6\u8f6c\u6362\u6210\u6700\u7ec8\u7684<code>gbk<\/code>\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528shell\u811a\u672c\u5bfc\u51faMySql\u67e5\u8be2\u7684\u6708\u8868\u6570\u636e\u5230EXCEL\u4e2d\" src=\"https:\/\/cdn.typecodes.com\/2020\/08\/exportmysqlshell1.png\" title=\"\u4f7f\u7528shell\u811a\u672c\u5bfc\u51faMySql\u67e5\u8be2\u7684\u6708\u8868\u6570\u636e\u5230EXCEL\u4e2d\"><\/p>\n<h4>2 \u811a\u672c\u4ee3\u7801<\/h4>\n<p>\u9274\u4e8e\u6570\u636e\u91cf\u6bd4\u8f83\u5927\uff0c\u6211\u4eec\u7684shell\u811a\u672c\u9700\u8981\u8003\u8651MySQL\u6267\u884c<code>INSERT<\/code>\u7684\u6548\u7387\uff0c\u6240\u4ee5\u91c7\u7528\u4e86\u5bf9\u6b21\u6570<code>\u53d6\u6a21<\/code>\u62fc\u63a5\u591a\u4e2a<code>VALUES<\/code>\u7684\u503c\u6765\u5b9e\u73b0\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      exportmysqlshell1.sh<\/span>\n<span class=\"c1\"># Description:   \u4f7f\u7528shell\u811a\u672c\u5bfc\u51faMySql\u6708\u8868\u6570\u636e\u5230EXCEL\u4e2d<\/span>\n<span class=\"c1\"># Simple Usage:  sh exportmysqlshell1.sh<\/span>\n<span class=\"c1\"># (c) 2020.08.01 vfhky https:\/\/typecodes.com\/linux\/exportmysqlshell1.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/mysql\/exportmysqlshell1.sh<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">2<\/span><span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;usage: sudo <\/span><span class=\"nv\">$0<\/span><span class=\"s2\"> startTimeStamp endTimeStamp&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"nv\">startTimeStamp<\/span><span class=\"o\">=<\/span><span class=\"nv\">$1<\/span>\n<span class=\"nv\">endTimeStamp<\/span><span class=\"o\">=<\/span><span class=\"nv\">$2<\/span>\n\n<span class=\"c1\"># \u7b80\u5355\u6821\u9a8c\u5408\u6cd5\u6027<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">startTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>-ge<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">endTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">startTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &gt;= <\/span><span class=\"si\">${<\/span><span class=\"nv\">endTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">.&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># \u83b7\u5f97\u6708\u8868\u540e\u7f00<\/span>\n<span class=\"nv\">startYearMonth<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span>@<span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">startTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\">  <\/span><span class=\"s2\">&quot;+%Y%m&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">endYearMonth<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span>@<span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">endTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\">  <\/span><span class=\"s2\">&quot;+%Y%m&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">startYearMonth<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">endYearMonth<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">startYearMonth<\/span><span class=\"si\">}<\/span><span class=\"s2\"> is not equalt to <\/span><span class=\"si\">${<\/span><span class=\"nv\">endYearMonth<\/span><span class=\"si\">}<\/span><span class=\"s2\">.&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">2<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"nv\">curDateTime<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span><span class=\"s2\">&quot;+%Y-%m-%d %H:%M:%S&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">timeStamp<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$current<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>+%s<span class=\"k\">)<\/span>\n\n<span class=\"nv\">dstFilePrefix<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;gather_rcd_&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">startTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;_&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">endTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;_&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">timeStamp<\/span><span class=\"si\">}<\/span>\n<span class=\"nv\">dstFile<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFilePrefix<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;_gbk.csv&quot;<\/span>\n<span class=\"nv\">dstFileUtf8Txt<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFilePrefix<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;_utf8.txt&quot;<\/span>\n<span class=\"nv\">dstFileUtf8Csv<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFilePrefix<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;_utf8.csv&quot;<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">curDateTime<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;,&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">timeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;,&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFile<\/span><span class=\"si\">}<\/span>\n\n<span class=\"c1\"># mysql\u547d\u4ee4\u5bfc\u51fa\u67e5\u8be2\u7ed3\u679c\u5230txt\u6587\u4ef6\u4e2d<\/span>\nmysql<span class=\"w\"> <\/span>-h113.16.111.17<span class=\"w\"> <\/span>-P3301<span class=\"w\"> <\/span>-utest_user<span class=\"w\"> <\/span>-p12345678<span class=\"w\"> <\/span>activity<span class=\"w\"> <\/span>--default-character-set<span class=\"o\">=<\/span>utf8<span class=\"w\"> <\/span>-A<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;SELECT uid, FROM_UNIXTIME(createtime,&#39;%Y-%m-%d %H:%i:%s&#39;) as createTime, ispush from test_log_<\/span><span class=\"si\">${<\/span><span class=\"nv\">startYearMonth<\/span><span class=\"si\">}<\/span><span class=\"s2\"> WHERE createtime&gt;=<\/span><span class=\"si\">${<\/span><span class=\"nv\">startTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\"> AND createtime&lt;=<\/span><span class=\"si\">${<\/span><span class=\"nv\">endTimeStamp<\/span><span class=\"si\">}<\/span><span class=\"s2\">;&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFileUtf8Txt<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$?<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;== mysql query failed ==&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">3<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># \u6ce8\u610f\u662f3\u4e2a\u5b57\u6bb5\uff0c\u4f46\u662fcreateTime\u503c\u81ea\u5e26\u4e861\u4e2a\u7a7a\u683c<\/span>\nawk<span class=\"w\"> <\/span>-F<span class=\"w\"> <\/span><span class=\"s2\">&quot; &quot;<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;{if(NR==1){print $1&quot;,&quot;,$2&quot;,&quot;, $3}else{print $1&quot;,&quot;,$2&quot; &quot;$3&quot;,&quot;, $4}}&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFileUtf8Txt<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFileUtf8Csv<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$?<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;== handle file failed ==&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">4<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># utf-8\u8f6c\u6362\u6210gbk\u683c\u5f0f<\/span>\niconv<span class=\"w\"> <\/span>-f<span class=\"w\"> <\/span>utf8<span class=\"w\"> <\/span>-t<span class=\"w\"> <\/span>gb2312<span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFile<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dstFileUtf8Csv<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$?<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;== iconv failed ==&quot;<\/span>\n<span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;== iconv success. ==&quot;<\/span>\n<span class=\"k\">fi<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"mysql"}}]},{"title":"\u4f7f\u7528shell\u811a\u672c\u6279\u91cf\u63d2\u5165\u6570\u636e\u5230MySQL\u4e2d","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/batchinsertmysqlshell1.html","rel":"alternate"}},"published":"2020-04-15T22:10:00+08:00","updated":"2020-04-15T22:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2020-04-15:\/linux\/batchinsertmysqlshell1.html","summary":"<p>\u7ecf\u5e38\u4f1a\u8e2b\u5230\u8fd9\u6837\u7684\u573a\u666f\u9700\u6c42\uff1a\u6279\u91cf\u5411MySQL\u6570\u636e\u5e93\u63d2\u5165\u6570\u636e\uff0c\u663e\u7136\u624b\u5de5<code>INSERT<\/code>\u6210\u5343\u4e0a\u4e07\u6761\u6570\u636e\u662f\u4e0d\u73b0\u5b9e\u7684\uff0c\u6240\u4ee5\u81ea\u5df1\u5199\u4e86\u8fd9\u4e2ashell\u811a\u672c\u6765\u5904\u7406\u3002<\/p>\n","content":"<p>\u7ecf\u5e38\u4f1a\u8e2b\u5230\u8fd9\u6837\u7684\u573a\u666f\u9700\u6c42\uff1a\u6279\u91cf\u5411MySQL\u6570\u636e\u5e93\u63d2\u5165\u6570\u636e\uff0c\u663e\u7136\u624b\u5de5<code>INSERT<\/code>\u6210\u5343\u4e0a\u4e07\u6761\u6570\u636e\u662f\u4e0d\u73b0\u5b9e\u7684\uff0c\u6240\u4ee5\u81ea\u5df1\u5199\u4e86\u8fd9\u4e2ashell\u811a\u672c\u6765\u5904\u7406\u3002<\/p>\n\n\n<h4>1 \u5177\u4f53\u9700\u6c42<\/h4>\n<p>shell\u811a\u672c\u6279\u91cf\u63d2\u516510\u4e07\u6761\u6570\u636e\u5230MySQL\u4e2d\uff0c\u5176\u4e2d\u5bf9\u5e94\u8868\u552f\u4e00\u7d22\u5f15\u662f\u7528\u6237<code>uid<\/code>\u3002\u56e0\u6b64\u5728\u7a0b\u5e8f\u5faa\u73af1\u4e07\u6b21\u6570\u65f6\uff0c\u6bcf\u6b21\u90fd\u4f7f<code>uid<\/code>\u81ea\u589e1\u5c31\u884c\u4e86\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528shell\u811a\u672c\u6279\u91cf\u63d2\u5165\u6570\u636e\u5230MySQL\u4e2d\" src=\"https:\/\/cdn.typecodes.com\/2020\/04\/batchinsertmysqlshell1.png\" title=\"\u4f7f\u7528shell\u811a\u672c\u6279\u91cf\u63d2\u5165\u6570\u636e\u5230MySQL\u4e2d\"><\/p>\n<h4>2 \u811a\u672c\u4ee3\u7801<\/h4>\n<p>\u9274\u4e8e\u6570\u636e\u91cf\u6bd4\u8f83\u5927\uff0c\u6211\u4eec\u7684shell\u811a\u672c\u9700\u8981\u8003\u8651MySQL\u6267\u884c<code>INSERT<\/code>\u7684\u6548\u7387\uff0c\u6240\u4ee5\u91c7\u7528\u4e86\u5bf9\u6b21\u6570<code>\u53d6\u6a21<\/code>\u62fc\u63a5\u591a\u4e2a<code>VALUES<\/code>\u7684\u503c\u6765\u5b9e\u73b0\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      batchinsertmysqlshell1.sh<\/span>\n<span class=\"c1\"># Description:   \u4f7f\u7528shell\u811a\u672c\u6279\u91cf\u63d2\u5165\u6570\u636e\u5230MySQL\u4e2d<\/span>\n<span class=\"c1\"># Simple Usage:  sh batchinsertmysqlshell1.sh<\/span>\n<span class=\"c1\"># (c) 2020.04.15 vfhky https:\/\/typecodes.com\/linux\/batchinsertmysqlshell1.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/mysql\/batchinsertmysqlshell1.sh<\/span>\n\n<span class=\"c1\"># mysql db name.<\/span>\n<span class=\"nv\">db_name<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;gamedata&quot;<\/span>\n<span class=\"c1\"># mysql table name.<\/span>\n<span class=\"nv\">table_name<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;test_user_skin&quot;<\/span>\n\n\n<span class=\"nv\">beginTime<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span><span class=\"s2\">&quot;+%Y-%m-%d %H:%M:%S&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;==== <\/span><span class=\"si\">${<\/span><span class=\"nv\">beginTime<\/span><span class=\"si\">}<\/span><span class=\"s2\"> ====&quot;<\/span>\n\n<span class=\"c1\"># logic begin.<\/span>\n<span class=\"nv\">index<\/span><span class=\"o\">=<\/span><span class=\"m\">0<\/span>\n<span class=\"c1\"># uid in [3000000,4999999].<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>uid<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span><span class=\"m\">3000000<\/span>..4999999<span class=\"o\">}<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"sb\">`<\/span>expr<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">index<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>%<span class=\"w\"> <\/span><span class=\"m\">1000<\/span><span class=\"sb\">`<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">insertValues<\/span><span class=\"o\">+=<\/span><span class=\"s2\">&quot;,(&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">uid<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;,&#39;2020-04-09 08:08:08&#39;)&quot;<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">index<\/span><span class=\"o\">=<\/span><span class=\"k\">$((<\/span><span class=\"w\"> <\/span><span class=\"nv\">$index<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"k\">))<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">index<\/span><span class=\"o\">=<\/span><span class=\"m\">1<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$insertValues<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">            <\/span><span class=\"c1\">#echo &quot;${insertValues}&quot;<\/span>\n<span class=\"w\">            <\/span><span class=\"c1\"># INSERT INTO `gamedata`.`test_user_skin`(`id`, `uid`, `due_time`, `create_time`, `update_time`, `extend`) VALUES (1156, 1007200, &#39;2020-04-09 10:11:11&#39;, &#39;2020-04-07 10:11:11&#39;, &#39;2020-04-07 10:11:11&#39;, &#39;&#39;);<\/span>\n<span class=\"w\">            <\/span>mysql<span class=\"w\"> <\/span>-h11.36.122.55<span class=\"w\"> <\/span>-P6302<span class=\"w\"> <\/span>-utestuser<span class=\"w\"> <\/span>-p123qwe<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;INSERT INTO <\/span><span class=\"si\">${<\/span><span class=\"nv\">db_name<\/span><span class=\"si\">}<\/span><span class=\"s2\">.<\/span><span class=\"si\">${<\/span><span class=\"nv\">table_name<\/span><span class=\"si\">}<\/span><span class=\"s2\">(uid,due_time) values <\/span><span class=\"si\">${<\/span><span class=\"nv\">insertValues<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">fi<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">insertValues<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;(&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">uid<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;,&#39;2020-04-09 08:08:08&#39;)&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>-z<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">insertValues<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;empty.&quot;<\/span>\n<span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span>mysql<span class=\"w\"> <\/span>-h11.36.122.55<span class=\"w\"> <\/span>-P6302<span class=\"w\"> <\/span>-utestuser<span class=\"w\"> <\/span>-p123qwe<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;INSERT INTO <\/span><span class=\"si\">${<\/span><span class=\"nv\">db_name<\/span><span class=\"si\">}<\/span><span class=\"s2\">.<\/span><span class=\"si\">${<\/span><span class=\"nv\">table_name<\/span><span class=\"si\">}<\/span><span class=\"s2\">(uid,due_time) values <\/span><span class=\"si\">${<\/span><span class=\"nv\">insertValues<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"nv\">endTime<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span><span class=\"s2\">&quot;+%Y-%m-%d %H:%M:%S&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;==== <\/span><span class=\"si\">${<\/span><span class=\"nv\">endTime<\/span><span class=\"si\">}<\/span><span class=\"s2\"> ====&quot;<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"mysql"}}]},{"title":"Python\u811a\u672c\u4e0a\u4f20\u535a\u5ba2\u81ea\u5b9a\u4e49\u7684SSL\u8bc1\u4e66\u5230\u4e03\u725b\u4e91","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/qiniuletssl1.html","rel":"alternate"}},"published":"2019-06-23T23:55:00+08:00","updated":"2019-06-23T23:55:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2019-06-23:\/python\/qiniuletssl1.html","summary":"<p>\u535a\u5ba2\u56fe\u7247\u57df\u540d(<code>cnd.typecodes.com<\/code>)\u7684SSL\u8bc1\u4e66\u662f\u901a\u8fc7Let's Encrypt\u7533\u8bf7\u7684\uff0c\u56e0\u4e3a\u8bc1\u4e66\u6709\u6548\u671f\u4e3a3\u4e2a\u6708\uff0c\u6240\u4ee5\u9700\u8981\u7528\u811a\u672c\u5b9a\u65f6\u53bb\u91cd\u65b0\u7533\u8bf7\u3002<\/p>\n<p>\u91cd\u65b0\u7533\u8bf7\u8bc1\u4e66\u4e3b\u8981\u6b65\u9aa4\u4e3a\uff1a<\/p>\n\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5148\u628a\u56fe\u7247\u57df\u540dDNS\u89e3\u6790\u5230\u6e90\u4e3b\u673a\u4e0a<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u91cd\u65b0\u7533\u8bf7Let<\/span><span class=\"err\">&#39;<\/span><span class=\"n\">s<\/span><span class=\"w\"> <\/span><span class=\"n\">Encrypt\u8bc1\u4e66<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u628a\u7533\u8bf7\u5230\u7684SSL\u8bc1\u4e66\u4e0a\u4f20\u5230\u4e03\u725b\u4e91\u7684\u8bc1\u4e66\u7ba1\u7406\u5e73\u53f0\u5e76\u542f\u7528<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">4<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u628a\u56fe\u7247\u57df\u540dDNS\u91cd\u65b0\u89e3\u6790\u5230\u4e03\u725b\u4e91\u4e0a<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">5<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6700\u540e\u91cd\u542f\u6e90\u4e3b\u673a\u7684Nginx\u670d\u52a1<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre>\n\n<p>\u5728<a href=\"https:\/\/typecodes.com\/python\/aliyundnsanalysis1.html\" title=\"\u300a\u811a\u672c\u81ea\u52a8\u5207\u6362\u535a\u5ba2\u56fe\u7247\u57df\u540d\u5728\u963f\u91cc\u4e91\u7684DNS\u89e3\u6790\u300b\">\u4e0a\u7bc7\u6587\u7ae0<\/a>\u4e2d\u4f7f\u7528Python\u811a\u672c\u6765\u5207\u6362DNS\u7684\u89e3\u6790\uff0c\u4e5f\u5c31\u662f\u5b9e\u73b0\u4e86\u4e0a\u9762\u76842\u30014\u6b65\u9aa4\uff1b\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u7528Python\u811a\u672c\u6765\u4e0a\u4f20SSL\u8bc1\u4e66\u5230\u4e03\u725b\u4e91\u4e0a\uff0c\u4e5f\u5c31\u662f\u5b9e\u73b0\u4e0a\u9762\u7684\u6b65\u9aa43\u3002<\/p>\n","content":"<p>\u535a\u5ba2\u56fe\u7247\u57df\u540d(<code>cnd.typecodes.com<\/code>)\u7684SSL\u8bc1\u4e66\u662f\u901a\u8fc7Let's Encrypt\u7533\u8bf7\u7684\uff0c\u56e0\u4e3a\u8bc1\u4e66\u6709\u6548\u671f\u4e3a3\u4e2a\u6708\uff0c\u6240\u4ee5\u9700\u8981\u7528\u811a\u672c\u5b9a\u65f6\u53bb\u91cd\u65b0\u7533\u8bf7\u3002<\/p>\n<p>\u91cd\u65b0\u7533\u8bf7\u8bc1\u4e66\u4e3b\u8981\u6b65\u9aa4\u4e3a\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6e90\u4e3b\u673a\u4e0a\u521b\u5efacrontab\u5b9a\u65f6\u4efb\u52a1<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5148\u628a\u56fe\u7247\u57df\u540dDNS\u89e3\u6790\u5230\u6e90\u4e3b\u673a\u4e0a<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u91cd\u65b0\u7533\u8bf7Let<\/span><span class=\"err\">&#39;<\/span><span class=\"n\">s<\/span><span class=\"w\"> <\/span><span class=\"n\">Encrypt\u8bc1\u4e66<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u628a\u7533\u8bf7\u5230\u7684SSL\u8bc1\u4e66\u4e0a\u4f20\u5230\u4e03\u725b\u4e91\u7684\u8bc1\u4e66\u7ba1\u7406\u5e73\u53f0\u5e76\u542f\u7528<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">4<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u628a\u56fe\u7247\u57df\u540dDNS\u91cd\u65b0\u89e3\u6790\u5230\u4e03\u725b\u4e91\u4e0a<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">5<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6700\u540e\u91cd\u542f\u6e90\u4e3b\u673a\u7684Nginx\u670d\u52a1<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5728<a href=\"https:\/\/typecodes.com\/python\/aliyundnsanalysis1.html\" title=\"\u300a\u811a\u672c\u81ea\u52a8\u5207\u6362\u535a\u5ba2\u56fe\u7247\u57df\u540d\u5728\u963f\u91cc\u4e91\u7684DNS\u89e3\u6790\u300b\">\u4e0a\u7bc7\u6587\u7ae0<\/a>\u4e2d\u4f7f\u7528Python\u811a\u672c\u6765\u5207\u6362DNS\u7684\u89e3\u6790\uff0c\u4e5f\u5c31\u662f\u5b9e\u73b0\u4e86\u4e0a\u9762\u76842\u30014\u6b65\u9aa4\uff1b\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u7528Python\u811a\u672c\u6765\u4e0a\u4f20SSL\u8bc1\u4e66\u5230\u4e03\u725b\u4e91\u4e0a\uff0c\u4e5f\u5c31\u662f\u5b9e\u73b0\u4e0a\u9762\u7684\u6b65\u9aa43\u3002<\/p>\n\n\n<h4>1 \u4e03\u725b\u4e91\u5b58\u50a8\u76f8\u5173<\/h4>\n<p>\u548c\u524d\u6587\u4e2d\u64cd\u4f5c\u963f\u91cc\u4e91DNS\u7684Python\u811a\u672c\u4e00\u6837\uff0c\u6211\u4eec\u4e5f\u9700\u8981\u5728<a href=\"https:\/\/portal.qiniu.com\/user\/key\" title=\"\u70b9\u51fb\u521b\u5efa\">\u4e03\u725b<\/a>\u521b\u5efa\u4e00\u4e2aAPI\u76f8\u5173\u7684<code>AccessKey\u548cSecretKey<\/code>\u3002<\/p>\n<p>\u4e03\u725b\u4e91\u5f00\u653e\u7684API\u63a5\u53e3\u5bf9\u5e94\u7684SDK\u5e93\u5df2\u7ecf\u5728GitHub\u4e86\uff0c\u5bf9\u5e94python\u7248\u672c\u7684\u5730\u5740\u662f\uff1a <a href=\"https:\/\/github.com\/qiniu\/python-sdk\/releases\" title=\"\u70b9\u51fb\u8bbf\u95ee\">https:\/\/github.com\/qiniu\/python-sdk\/releases<\/a>\u3002<\/p>\n<h4>2 \u8981\u5b9e\u73b0\u7684\u529f\u80fd<\/h4>\n<p>\u8981\u5b9e\u73b0\u7684\u529f\u80fd\u4e5f\u5c31\u662f\u4e0a\u9762\u8bf4\u7684\u6b65\u9aa43\uff1a\u4e0a\u4f20SSL\u8bc1\u4e66\u5230\u4e03\u725b\u4e91\u5b58\u50a8\u5e76\u542f\u7528\u3002<\/p>\n<p>\u6240\u6709\u5df2\u4e0a\u4f20\u7684\u81ea\u5b9a\u4e49SSL\u8bc1\u4e66\u90fd\u4f1a\u5728\u4e03\u725b\u4e91\u5b58\u50a8<a href=\"https:\/\/portal.qiniu.com\/certificate\/ssl#cert\" title=\"\u70b9\u51fb\u67e5\u770b\">SSL\u8bc1\u4e66\u670d\u52a1<\/a>\u4e0a\u5c55\u793a\u51fa\u6765\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u4e03\u725b\u4e91\u5b58\u50a8\u81ea\u5b9a\u4e49\u7684SSL\u8bc1\u4e66\" src=\"https:\/\/cdn.typecodes.com\/2019\/06\/qiniu_letssl_my_certs_1.png\" title=\"\u4e03\u725b\u4e91\u5b58\u50a8\u81ea\u5b9a\u4e49\u7684SSL\u8bc1\u4e66\"><\/p>\n<h4>3 \u5b9e\u73b0\u7a0b\u5e8f<\/h4>\n<p>\u6839\u636e\u4e03\u725b\u4e91\u5b58\u50a8\u7684SDK python\u7248\u672c\u7684\u8bf4\u660e\uff0c\u7528\u4e0b\u9762\u8fd9\u4e2aPython\u811a\u672c\u5b9e\u73b0\u4e0a\u9762\u7684\u9700\u6c42\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/usr\/bin\/python<\/span>\n<span class=\"c1\"># -*- coding: UTF-8 -*-<\/span>\n\n<span class=\"c1\"># FileName:      qiniu_letssl.py<\/span>\n<span class=\"c1\"># (c) 2019.6.23 vfhky https:\/\/typecodes.com\/python\/qiniuletssl1.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/filehandle\/qiniu_letssl.py<\/span>\n<span class=\"c1\"># \u811a\u672c\u529f\u80fd\uff1a\u4e0a\u4f20\u4eceLet&#39;s Encrypt\u7533\u8bf7\u7684 cdn.typecodes.com \u7684SSL\u8bc1\u4e66\u5230\u4e03\u725b\u4e91\u5b58\u50a8\u5e76\u542f\u7528\u3002<\/span>\n<span class=\"c1\"># \u4f7f\u7528\u65b9\u6cd5: python qiniu_letssl.py<\/span>\n<span class=\"c1\">#<\/span>\n<span class=\"c1\"># \u5fc5\u987b\u5b89\u88c5\u7684\u6838\u5fc3\u5305\uff1a             pip install qiniu<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">qiniu<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">qiniu<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">DomainManager<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">os<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">time<\/span>\n\n<span class=\"c1\"># \u4e03\u725b\u4e91API\u76f8\u5173\u7684AccessKey\u548cSecretKey.<\/span>\n<span class=\"c1\"># access_key = os.getenv(&#39;ACCESS_KEY&#39;, &#39;&#39;)<\/span>\n<span class=\"n\">access_key<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;ac_key&quot;<\/span>\n<span class=\"n\">secret_key<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;se_key&quot;<\/span>\n<span class=\"c1\"># \u64cd\u4f5c\u7684\u57df\u540d<\/span>\n<span class=\"n\">domain_name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;cdn.typecodes.com&quot;<\/span>\n\n<span class=\"n\">auth<\/span> <span class=\"o\">=<\/span> <span class=\"n\">qiniu<\/span><span class=\"o\">.<\/span><span class=\"n\">Auth<\/span><span class=\"p\">(<\/span><span class=\"n\">access_key<\/span><span class=\"o\">=<\/span><span class=\"n\">access_key<\/span><span class=\"p\">,<\/span> <span class=\"n\">secret_key<\/span><span class=\"o\">=<\/span><span class=\"n\">secret_key<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">domain_manager<\/span> <span class=\"o\">=<\/span> <span class=\"n\">DomainManager<\/span><span class=\"p\">(<\/span><span class=\"n\">auth<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Let&#39;s Encrypt\u7533\u8bf7\u7684\u8bc1\u4e66\u516c\u94a5\u548c\u79c1\u94a5\u6587\u4ef6\u6240\u5728\u7684\u76ee\u5f55.<\/span>\n<span class=\"n\">privatekey<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;\/etc\/letsencrypt\/live\/<\/span><span class=\"si\">{}<\/span><span class=\"s2\">\/privkey.pem&quot;<\/span><span class=\"o\">.<\/span><span class=\"n\">format<\/span><span class=\"p\">(<\/span><span class=\"n\">domain_name<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">ca<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;\/etc\/letsencrypt\/live\/<\/span><span class=\"si\">{}<\/span><span class=\"s2\">\/fullchain.pem&quot;<\/span><span class=\"o\">.<\/span><span class=\"n\">format<\/span><span class=\"p\">(<\/span><span class=\"n\">domain_name<\/span><span class=\"p\">)<\/span>\n\n<span class=\"k\">with<\/span> <span class=\"nb\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">privatekey<\/span><span class=\"p\">,<\/span> <span class=\"s1\">&#39;r&#39;<\/span><span class=\"p\">)<\/span> <span class=\"k\">as<\/span> <span class=\"n\">f<\/span><span class=\"p\">:<\/span>\n    <span class=\"n\">privatekey_str<\/span> <span class=\"o\">=<\/span> <span class=\"n\">f<\/span><span class=\"o\">.<\/span><span class=\"n\">read<\/span><span class=\"p\">()<\/span>\n\n<span class=\"k\">with<\/span> <span class=\"nb\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">ca<\/span><span class=\"p\">,<\/span> <span class=\"s1\">&#39;r&#39;<\/span><span class=\"p\">)<\/span> <span class=\"k\">as<\/span> <span class=\"n\">f<\/span><span class=\"p\">:<\/span>\n    <span class=\"n\">ca_str<\/span> <span class=\"o\">=<\/span> <span class=\"n\">f<\/span><span class=\"o\">.<\/span><span class=\"n\">read<\/span><span class=\"p\">()<\/span>\n\n<span class=\"n\">ret<\/span><span class=\"p\">,<\/span> <span class=\"n\">info<\/span> <span class=\"o\">=<\/span> <span class=\"n\">domain_manager<\/span><span class=\"o\">.<\/span><span class=\"n\">create_sslcert<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">{}<\/span><span class=\"s2\">\/<\/span><span class=\"si\">{}<\/span><span class=\"s2\">&quot;<\/span><span class=\"o\">.<\/span><span class=\"n\">format<\/span><span class=\"p\">(<\/span><span class=\"n\">domain_name<\/span><span class=\"p\">,<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">strftime<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;%Y%m<\/span><span class=\"si\">%d<\/span><span class=\"s2\">_%M%S&quot;<\/span><span class=\"p\">,<\/span> <span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"n\">localtime<\/span><span class=\"p\">())),<\/span>\n                                        <span class=\"n\">domain_name<\/span><span class=\"p\">,<\/span> <span class=\"n\">privatekey_str<\/span><span class=\"p\">,<\/span> <span class=\"n\">ca_str<\/span><span class=\"p\">)<\/span>\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">ret<\/span><span class=\"p\">[<\/span><span class=\"s1\">&#39;certID&#39;<\/span><span class=\"p\">])<\/span>\n\n<span class=\"k\">if<\/span> <span class=\"n\">domain_name<\/span><span class=\"o\">.<\/span><span class=\"n\">startswith<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;*&quot;<\/span><span class=\"p\">):<\/span>\n    <span class=\"n\">domain_name<\/span> <span class=\"o\">=<\/span> <span class=\"n\">domain_name<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">:]<\/span>\n<span class=\"n\">ret<\/span><span class=\"p\">,<\/span> <span class=\"n\">info<\/span> <span class=\"o\">=<\/span> <span class=\"n\">domain_manager<\/span><span class=\"o\">.<\/span><span class=\"n\">put_httpsconf<\/span><span class=\"p\">(<\/span><span class=\"n\">domain_name<\/span><span class=\"p\">,<\/span> <span class=\"n\">ret<\/span><span class=\"p\">[<\/span><span class=\"s1\">&#39;certID&#39;<\/span><span class=\"p\">],<\/span> <span class=\"kc\">False<\/span><span class=\"p\">)<\/span>\n<span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"n\">info<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>4 \u6267\u884c\u6548\u679c<\/h4>\n<p>\u6267\u884c<code>python qiniu_letssl.py<\/code>\u5c31\u4f1a\u628aLet's Encrypt\u7533\u8bf7\u7684SSL\u8bc1\u4e66\u516c\u79c1\u94a5\u6587\u4ef6\u4e0a\u4f20\u5230\u4e03\u725b\u4e91\u5b58\u50a8\u3002\u4ece\u4e0b\u9762\u7684\u6548\u679c\u53ef\u4ee5\u770b\u51fa\u76ee\u524d\u535a\u5ba2\u7528\u7684\u8bc1\u4e66\u6587\u4ef6\u547d\u4ee4\u5c31\u662f<code>cdn.typecodes.com\/20190530_2840<\/code>\u3002<\/p>\n<p><img alt=\"\u542f\u7528\u81ea\u5b9a\u4e49\u7684SSL\u8bc1\u4e66\" src=\"https:\/\/cdn.typecodes.com\/2019\/06\/qiniu_letssl_1.png\" title=\"\u542f\u7528\u81ea\u5b9a\u4e49\u7684SSL\u8bc1\u4e66\"><\/p>\n<h4>5 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"\u4e03\u725b"}},{"@attributes":{"term":"letssl"}}]},{"title":"\u811a\u672c\u81ea\u52a8\u5207\u6362\u535a\u5ba2\u56fe\u7247\u57df\u540d\u5728\u963f\u91cc\u4e91\u7684DNS\u89e3\u6790","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/aliyundnsanalysis1.html","rel":"alternate"}},"published":"2019-06-01T15:28:00+08:00","updated":"2019-06-01T15:28:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2019-06-01:\/python\/aliyundnsanalysis1.html","summary":"<p>\u81ea\u4ece<a href=\"https:\/\/portal.qiniu.com\/qvm\/active?code=1380335858lRVi\" title=\"\u67e5\u770b\u4f18\u60e0\u7801\">\u4e03\u725b<\/a>\u5f00\u653e\u4e86\u81ea\u5b9a\u4e49SSL\u8bc1\u4e66\u670d\u52a1\u540e\uff0c\u535a\u4e3b\u5c31\u901a\u8fc7<code>CNAME<\/code>\u65b9\u5f0f\u628a\u535a\u5ba2\u56fe\u7247\u5bf9\u5e94\u7684\u57df\u540d<code>cdn.typecodes.com<\/code>\u89e3\u6790\u5230\u4e86\u4e03\u725b\uff0c\u7136\u540e\u628aLet's Encrypt\u7533\u8bf7\u7684SSL\u8bc1\u4e66\u4e0a\u4f20\u5230\u4e03\u725b\u670d\u52a1\u5668\u3002<\/p>\n<p>\u4f46\u662fLet's Encrypt\u7684\u8bc1\u4e66\u6709\u6548\u671f\u53ea\u67093\u4e2a\u6708\uff0c\u6240\u4ee5\u5230\u671f\u540e\u9700\u8981\u5148\u628a\u57df\u540d\u91cd\u65b0\u89e3\u6790\u5230\u539f\u6765\u7684\u4e3b\u673a\u670d\u52a1\u5668\uff0c\u7136\u540e\u91cd\u65b0\u7533\u8bf7\u8bc1\u4e66\u3002\u7533\u8bf7\u901a\u8fc7\u540e\u518d\u628a\u57df\u540d\u89e3\u6790\u5230\u4e03\u725b\uff0c\u540c\u65f6\u4e0a\u4f20\u5e76\u542f\u7528\u65b0SSL\u8bc1\u4e66\u3002<\/p>\n","content":"<p>\u81ea\u4ece<a href=\"https:\/\/portal.qiniu.com\/qvm\/active?code=1380335858lRVi\" title=\"\u67e5\u770b\u4f18\u60e0\u7801\">\u4e03\u725b<\/a>\u5f00\u653e\u4e86\u81ea\u5b9a\u4e49SSL\u8bc1\u4e66\u670d\u52a1\u540e\uff0c\u535a\u4e3b\u5c31\u901a\u8fc7<code>CNAME<\/code>\u65b9\u5f0f\u628a\u535a\u5ba2\u56fe\u7247\u5bf9\u5e94\u7684\u57df\u540d<code>cdn.typecodes.com<\/code>\u89e3\u6790\u5230\u4e86\u4e03\u725b\uff0c\u7136\u540e\u628aLet's Encrypt\u7533\u8bf7\u7684SSL\u8bc1\u4e66\u4e0a\u4f20\u5230\u4e03\u725b\u670d\u52a1\u5668\u3002<\/p>\n<p>\u4f46\u662fLet's Encrypt\u7684\u8bc1\u4e66\u6709\u6548\u671f\u53ea\u67093\u4e2a\u6708\uff0c\u6240\u4ee5\u5230\u671f\u540e\u9700\u8981\u5148\u628a\u57df\u540d\u91cd\u65b0\u89e3\u6790\u5230\u539f\u6765\u7684\u4e3b\u673a\u670d\u52a1\u5668\uff0c\u7136\u540e\u91cd\u65b0\u7533\u8bf7\u8bc1\u4e66\u3002\u7533\u8bf7\u901a\u8fc7\u540e\u518d\u628a\u57df\u540d\u89e3\u6790\u5230\u4e03\u725b\uff0c\u540c\u65f6\u4e0a\u4f20\u5e76\u542f\u7528\u65b0SSL\u8bc1\u4e66\u3002<\/p>\n\n\n<h4>1 \u963f\u91cc\u4e91DNS\u76f8\u5173<\/h4>\n<p>\u535a\u5ba2\u6839\u57df\u540d\u662f\u5728\u963f\u91cc\u4e91\u8d2d\u4e70\u7684\uff0c\u6240\u4ee5\u7528\u7684DNS\u89e3\u6790\u670d\u52a1\u4e5f\u662f\u963f\u91cc\u4e91\u7684\u3002\u76ee\u524d\u6574\u4e2a\u963f\u91cc\u4e91\u63a7\u5236\u53f0\u7684\u76f8\u5173\u529f\u80fd\u90fd\u53ef\u4ee5\u901a\u8fc7\u5728<a href=\"https:\/\/ram.console.aliyun.com\/overview\" title=\"\u70b9\u51fb\u8bbf\u95ee\">RAM\u8bbf\u95ee\u63a7\u5236<\/a>\u7533\u8bf7\u7528\u6237AccessKey\u548cAccessKeySecret\u540e\u8c03\u7528\u76f8\u5173\u7684API\u5b9e\u73b0\u3002<\/p>\n<p>\u963f\u91cc\u4e91\u5f00\u653e\u7684API\u63a5\u53e3\u5bf9\u5e94\u7684SDK\u5e93\u5df2\u7ecf\u5728GitHub\u4e86\uff0c\u5bf9\u5e94\u7684python\u7248\u672c\u5730\u5740\u662f\uff1a <a href=\"https:\/\/github.com\/aliyun\/aliyun-openapi-python-sdk\" title=\"\u70b9\u51fb\u8bbf\u95ee\">https:\/\/github.com\/aliyun\/aliyun-openapi-python-sdk<\/a>\u3002<\/p>\n<h4>2 \u8981\u5b9e\u73b0\u7684\u529f\u80fd<\/h4>\n<p>\u6839\u636e\u4e1a\u52a1\u9700\u6c42\uff0c\u535a\u5ba2\u5728\u7533\u8bf7Let's Encrypt\u8bc1\u4e66\u65f6\uff0c\u9700\u8981\u4f7f\u7528<code>A<\/code>\u65b9\u5f0f\u628a<code>cdn.typecodes.com<\/code>\u89e3\u6790\u5230\u4e3b\u673a\u670d\u52a1\u5668\uff08111.231.246.29\uff09\u3002<\/p>\n<p>\u5f53\u8bc1\u4e66\u7533\u8bf7\u901a\u8fc7\u540e\uff0c\u9700\u8981\u4f7f\u7528<code>CNAME<\/code>\u65b9\u5f0f\u628a<code>cdn.typecodes.com<\/code>\u89e3\u6790\u5230\u4e03\u725b\u4e91\u5b58\u50a8\u670d\u52a1\u5668\uff08cdn.typecodes.com.qiniudns.com\uff09\u3002<\/p>\n<h4>3 \u5b9e\u73b0\u7a0b\u5e8f<\/h4>\n<p>\u6839\u636e\u963f\u91cc\u4e91\u7684SDK python\u7248\u672c\u7684\u8bf4\u660e\uff0c\u4e0b\u9762\u662f\u5177\u4f53\u7684\u5b9e\u73b0\u7a0b\u5e8f\u3002\u6700\u540e\u4f20\u5165\u7684\u53c2\u6570<code>1<\/code>\u8868\u793a\u628a\u57df\u540d\u89e3\u6790\u5230\u4e03\u725b\uff0c\u5176\u5b83\u503c\u5219\u8868\u793a\u628a\u57df\u540d\u89e3\u6790\u5230\u539f\u4e3b\u673a\u670d\u52a1\u5668\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span>\n<span class=\"normal\">73<\/span>\n<span class=\"normal\">74<\/span>\n<span class=\"normal\">75<\/span>\n<span class=\"normal\">76<\/span>\n<span class=\"normal\">77<\/span>\n<span class=\"normal\">78<\/span>\n<span class=\"normal\">79<\/span>\n<span class=\"normal\">80<\/span>\n<span class=\"normal\">81<\/span>\n<span class=\"normal\">82<\/span>\n<span class=\"normal\">83<\/span>\n<span class=\"normal\">84<\/span>\n<span class=\"normal\">85<\/span>\n<span class=\"normal\">86<\/span>\n<span class=\"normal\">87<\/span>\n<span class=\"normal\">88<\/span>\n<span class=\"normal\">89<\/span>\n<span class=\"normal\">90<\/span>\n<span class=\"normal\">91<\/span>\n<span class=\"normal\">92<\/span>\n<span class=\"normal\">93<\/span>\n<span class=\"normal\">94<\/span>\n<span class=\"normal\">95<\/span>\n<span class=\"normal\">96<\/span>\n<span class=\"normal\">97<\/span>\n<span class=\"normal\">98<\/span>\n<span class=\"normal\">99<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/usr\/bin\/python<\/span>\n<span class=\"c1\"># -*- coding: UTF-8 -*-<\/span>\n\n<span class=\"c1\"># FileName:      aliyun_dns_modify.py<\/span>\n<span class=\"c1\"># (c) 2019.6.1 vfhky https:\/\/typecodes.com\/python\/aliyundnsanalysis1.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/dns\/aliyun_dns_modify.py<\/span>\n<span class=\"c1\"># \u811a\u672c\u529f\u80fd\uff1a\u4fee\u6539 cdn.typecodes.com \u5728\u963f\u91cc\u4e91DNS\u7684\u89e3\u6790\uff08\u4e03\u725b\u548c\u6e90\u4e3b\u673a\u4e4b\u95f4\u7684\u5207\u6362\uff09\u3002<\/span>\n<span class=\"c1\"># \u4f7f\u7528\u65b9\u6cd5: python aliyun_dns_modify.py cdn 1\/2<\/span>\n<span class=\"c1\">#<\/span>\n<span class=\"c1\"># \u5fc5\u987b\u5b89\u88c5\u7684\u6838\u5fc3\u5305\uff1a             pip install aliyun-python-sdk-core<\/span>\n<span class=\"c1\"># \u6839\u636e\u529f\u80fd\u9009\u88c5dns\u76f8\u5173\u7684\u5305\uff1a       pip install aliyun-python-sdk-alidns<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">sys<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">json<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">aliyunsdkcore.client<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">AcsClient<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">aliyunsdkcore.acs_exception.exceptions<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ClientException<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">aliyunsdkcore.acs_exception.exceptions<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">ServerException<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">DescribeDomainRecordsRequest<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">UpdateDomainRecordRequest<\/span>\n\n\n<span class=\"c1\"># constant statics.<\/span>\n<span class=\"n\">aliyun_accesskey<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;key&quot;<\/span>\n<span class=\"n\">aliyun_accesskeysecret<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;secret&quot;<\/span>\n<span class=\"n\">domain_pre<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;cdn&quot;<\/span>\n<span class=\"c1\"># must be the root domain other than the second or third level domain.<\/span>\n<span class=\"n\">domain<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;typecodes.com&quot;<\/span>\n<span class=\"c1\"># the dns record type which is defined 1 meaning qiniu defaultly.<\/span>\n<span class=\"n\">record_type<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span>\n<span class=\"c1\"># qiniu.<\/span>\n<span class=\"n\">qiniu_cname<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"s2\">&quot;CNAME&quot;<\/span><span class=\"p\">,<\/span> <span class=\"s2\">&quot;cdn.typecodes.com.qiniudns.com&quot;<\/span><span class=\"p\">)<\/span>\n<span class=\"c1\"># host ip.<\/span>\n<span class=\"n\">original_host<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"s2\">&quot;A&quot;<\/span><span class=\"p\">,<\/span> <span class=\"s2\">&quot;111.231.246.29&quot;<\/span><span class=\"p\">)<\/span>\n\n\n<span class=\"c1\"># create aliyun api object.<\/span>\n<span class=\"n\">client<\/span> <span class=\"o\">=<\/span> <span class=\"n\">AcsClient<\/span><span class=\"p\">(<\/span>\n  <span class=\"n\">aliyun_accesskey<\/span><span class=\"p\">,<\/span>\n  <span class=\"n\">aliyun_accesskeysecret<\/span>\n<span class=\"p\">);<\/span>\n\n\n<span class=\"k\">if<\/span> <span class=\"vm\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s1\">&#39;__main__&#39;<\/span><span class=\"p\">:<\/span>\n    <span class=\"k\">if<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">argv<\/span><span class=\"p\">)<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">3<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">domain_pre<\/span> <span class=\"o\">=<\/span> <span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\n        <span class=\"n\">record_type<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">])<\/span>\n    <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n        <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;==== usage: python <\/span><span class=\"si\">%s<\/span><span class=\"s2\"> <\/span><span class=\"si\">%s<\/span><span class=\"s2\"> <\/span><span class=\"si\">%d<\/span><span class=\"s2\"> ====&quot;<\/span> <span class=\"o\">%<\/span> <span class=\"p\">(<\/span><span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span> <span class=\"n\">domain_pre<\/span><span class=\"p\">,<\/span> <span class=\"n\">record_type<\/span><span class=\"p\">)<\/span> <span class=\"p\">)<\/span>\n        <span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># first step: call aliyun api to get dns record lists.<\/span>\n    <span class=\"k\">try<\/span><span class=\"p\">:<\/span>\n        <span class=\"c1\"># domain act.<\/span>\n        <span class=\"n\">request<\/span> <span class=\"o\">=<\/span> <span class=\"n\">DescribeDomainRecordsRequest<\/span><span class=\"p\">()<\/span>\n        <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_accept_format<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;json&#39;<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_DomainName<\/span><span class=\"p\">(<\/span> <span class=\"n\">domain<\/span> <span class=\"p\">)<\/span>\n        <span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"n\">client<\/span><span class=\"o\">.<\/span><span class=\"n\">do_action_with_exception<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">except<\/span> <span class=\"n\">ServerException<\/span> <span class=\"k\">as<\/span> <span class=\"n\">srv_ex<\/span><span class=\"p\">:<\/span>\n    <span class=\"c1\"># if response.has_key(&#39;Code&#39;) or response.has_key(&#39;Message&#39;):<\/span>\n        <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;Error: Code=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] Message=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">], exit.&quot;<\/span> <span class=\"o\">%<\/span> <span class=\"p\">(<\/span><span class=\"n\">srv_ex<\/span><span class=\"o\">.<\/span><span class=\"n\">error_code<\/span><span class=\"p\">,<\/span> <span class=\"n\">srv_ex<\/span><span class=\"o\">.<\/span><span class=\"n\">message<\/span><span class=\"p\">)<\/span> <span class=\"p\">)<\/span>\n        <span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">except<\/span><span class=\"p\">:<\/span>\n        <span class=\"nb\">print<\/span><span class=\"p\">(<\/span> <span class=\"s2\">&quot;unexcepted error, exit.&quot;<\/span> <span class=\"p\">)<\/span>\n        <span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># parse response:<\/span>\n    <span class=\"n\">data<\/span> <span class=\"o\">=<\/span> <span class=\"n\">json<\/span><span class=\"o\">.<\/span><span class=\"n\">loads<\/span><span class=\"p\">(<\/span><span class=\"n\">response<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">record<\/span> <span class=\"o\">=<\/span> <span class=\"n\">data<\/span><span class=\"p\">[<\/span><span class=\"s2\">&quot;DomainRecords&quot;<\/span><span class=\"p\">][<\/span><span class=\"s2\">&quot;Record&quot;<\/span><span class=\"p\">];<\/span>\n\n    <span class=\"c1\"># recrucive all dns record and find the RecordId of target pre-domain.<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">single_record<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">record<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span> <span class=\"n\">single_record<\/span><span class=\"p\">[<\/span><span class=\"s2\">&quot;RR&quot;<\/span><span class=\"p\">]<\/span> <span class=\"o\">==<\/span> <span class=\"n\">domain_pre<\/span> <span class=\"p\">):<\/span>\n            <span class=\"nb\">print<\/span><span class=\"p\">(<\/span> <span class=\"s2\">&quot;==== get domain=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] RR=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] RecordId=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] Type=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] Value=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">].&quot;<\/span> <span class=\"o\">%<\/span> <span class=\"p\">(<\/span><span class=\"n\">domain<\/span><span class=\"p\">,<\/span> <span class=\"n\">single_record<\/span><span class=\"p\">[<\/span><span class=\"s2\">&quot;RR&quot;<\/span><span class=\"p\">],<\/span> <span class=\"n\">single_record<\/span><span class=\"p\">[<\/span><span class=\"s2\">&quot;RecordId&quot;<\/span><span class=\"p\">],<\/span> <span class=\"n\">single_record<\/span><span class=\"p\">[<\/span><span class=\"s2\">&quot;Type&quot;<\/span><span class=\"p\">],<\/span> <span class=\"n\">single_record<\/span><span class=\"p\">[<\/span><span class=\"s2\">&quot;Value&quot;<\/span><span class=\"p\">]<\/span> <span class=\"p\">)<\/span> <span class=\"p\">)<\/span>\n            <span class=\"c1\"># second step: call aliyun api to update the target record.<\/span>\n            <span class=\"n\">request<\/span> <span class=\"o\">=<\/span> <span class=\"n\">UpdateDomainRecordRequest<\/span><span class=\"p\">()<\/span>\n            <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_accept_format<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;json&#39;<\/span><span class=\"p\">)<\/span>\n            <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_RR<\/span><span class=\"p\">(<\/span> <span class=\"n\">domain_pre<\/span> <span class=\"p\">)<\/span>\n            <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_RecordId<\/span><span class=\"p\">(<\/span> <span class=\"n\">single_record<\/span><span class=\"p\">[<\/span><span class=\"s2\">&quot;RecordId&quot;<\/span><span class=\"p\">]<\/span> <span class=\"p\">)<\/span>\n\n            <span class=\"k\">if<\/span> <span class=\"n\">record_type<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">1<\/span><span class=\"p\">:<\/span>\n                <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_Type<\/span><span class=\"p\">(<\/span> <span class=\"n\">qiniu_cname<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"p\">)<\/span>\n                <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_Value<\/span><span class=\"p\">(<\/span> <span class=\"n\">qiniu_cname<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span> <span class=\"p\">)<\/span>\n            <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n                <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_Type<\/span><span class=\"p\">(<\/span> <span class=\"n\">original_host<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"p\">)<\/span>\n                <span class=\"n\">request<\/span><span class=\"o\">.<\/span><span class=\"n\">set_Value<\/span><span class=\"p\">(<\/span> <span class=\"n\">original_host<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span> <span class=\"p\">)<\/span>\n\n            <span class=\"k\">try<\/span><span class=\"p\">:<\/span>\n                <span class=\"n\">response<\/span> <span class=\"o\">=<\/span> <span class=\"n\">client<\/span><span class=\"o\">.<\/span><span class=\"n\">do_action_with_exception<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">except<\/span> <span class=\"n\">ServerException<\/span> <span class=\"k\">as<\/span> <span class=\"n\">srv_ex<\/span><span class=\"p\">:<\/span>\n            <span class=\"c1\"># if response.has_key(&#39;Code&#39;) or response.has_key(&#39;Message&#39;):<\/span>\n                <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;Error: Code=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] Message=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">], exit.&quot;<\/span> <span class=\"o\">%<\/span> <span class=\"p\">(<\/span><span class=\"n\">srv_ex<\/span><span class=\"o\">.<\/span><span class=\"n\">error_code<\/span><span class=\"p\">,<\/span> <span class=\"n\">srv_ex<\/span><span class=\"o\">.<\/span><span class=\"n\">message<\/span><span class=\"p\">)<\/span> <span class=\"p\">)<\/span>\n                <span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n            <span class=\"k\">except<\/span><span class=\"p\">:<\/span>\n                <span class=\"nb\">print<\/span><span class=\"p\">(<\/span> <span class=\"s2\">&quot;unexcepted error, exit.&quot;<\/span> <span class=\"p\">)<\/span>\n                <span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n\n            <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;==== success.&quot;<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n            <span class=\"k\">continue<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>4 \u6267\u884c\u6548\u679c<\/h4>\n<p>\u6267\u884c<code>python aliyun_dns_modify.py cdn 2<\/code>\u5c06\u57df\u540dDNS\u89e3\u6790\u5230\u539f\u4e3b\u673a\u3002<\/p>\n<p>\u6267\u884c<code>python aliyun_dns_modify.py cdn 1<\/code>\u5c06\u57df\u540dDNS\u89e3\u6790\u5230\u4e03\u725b\u3002<\/p>\n<p>\u5728\u963f\u91cc\u4e91\u7684\u57df\u540d\u89e3\u6790\u65e5\u5fd7\u4e0a\u53ef\u4ee5\u770b\u5230\u6548\u679c\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u963f\u91cc\u4e91DNS\u7684\u89e3\u6790\u8bb0\u5f55\" src=\"https:\/\/cdn.typecodes.com\/2019\/06\/aliyun_dns_analysis_1.png\" title=\"\u963f\u91cc\u4e91DNS\u7684\u89e3\u6790\u8bb0\u5f55\"><\/p>\n<h4>5 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>\n<h4>6 \u5176\u5b83\u8bf4\u660e<\/h4>\n<p>\u963f\u91cc\u4e91\u76f8\u5173\u7684API\u662f\u53ef\u4ee5\u5728\u7ebf\u8c03\u8bd5\u7684\uff0c\u975e\u5e38\u65b9\u4fbf\uff01\u4f8b\u5982\uff0c\u67e5\u770b\u6240\u6709\u7684DNS\u89e3\u6790\u8bb0\u5f55\u53ef\u4ee5<a href=\"https:\/\/api.aliyun.com\/?spm=a2c4g.11186623.2.13.647051c1ixqCXy#\/?product=Alidns&amp;api=DescribeDomainRecords&amp;params={}&amp;tab=DEMO&amp;lang=PYTHON\" title=\"\u70b9\u51fb\u8fdb\u5165\">\u70b9\u8fd9\u91cc<\/a>\u8fdb\u5165\u8c03\u8bd5\u3002<\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"\u963f\u91cc\u4e91"}},{"@attributes":{"term":"dns"}},{"@attributes":{"term":"\u4e03\u725b"}}]},{"title":"\u4f7f\u7528 fastjson \u89e3\u6790json\u4e2d\u7684\u952e\u503c\uff1a\u4e71\u5e8f\u548c\u539f\u6837\u8f93\u51fa","link":{"@attributes":{"href":"https:\/\/typecodes.com\/java\/fastjsonorder1.html","rel":"alternate"}},"published":"2019-01-22T17:21:00+08:00","updated":"2019-01-22T17:21:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2019-01-22:\/java\/fastjsonorder1.html","summary":"<p>\u6700\u8fd1\u9879\u76ee\u9700\u8981\u505a\u4e00\u4e2ajava\u7248\u672c\u7684demo\uff0c\u7b80\u5355\u6765\u505a\u5c31\u662f\u6309\u7167api\u6587\u6863\u62fc\u88c5\u8bf7\u6c42\u62a5\u6587\u8bf7\u6c42\u81ea\u5df1\u7684\u670d\u52a1\u7aef\uff0c\u6536\u5230\u5e94\u7b54\u62a5\u6587\u540e\u505aMD5\u7b7e\u540d\u9a8c\u8bc1\u7b49\u540e\u7eed\u5904\u7406\u3002\u7531\u4e8e\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u4e4b\u524d\u901a\u8baf\u62a5\u6587\u662fjson\u683c\u5f0f\u7684\uff0c\u90a3\u4e48\u5c31\u4f1a\u6d89\u53ca\u5230json\u62a5\u6587\u7684\u751f\u6210\u548c\u89e3\u6790\u3002\u7f51\u4e0a\u627e\u4e86\u4e0b\uff0c\u8c8c\u4f3c\u963f\u91cc\u5df4\u5df4\u7684<code>fastjson<\/code>\u5e93\u8bc4\u4ef7\u4e0d\u9519\uff0c\u6240\u4ee5\u5c31\u76f4\u63a5\u62ff\u8fc7\u6765\u7528\u4e86\u3002<\/p>\n","content":"<p>\u6700\u8fd1\u9879\u76ee\u9700\u8981\u505a\u4e00\u4e2ajava\u7248\u672c\u7684demo\uff0c\u7b80\u5355\u6765\u505a\u5c31\u662f\u6309\u7167api\u6587\u6863\u62fc\u88c5\u8bf7\u6c42\u62a5\u6587\u8bf7\u6c42\u81ea\u5df1\u7684\u670d\u52a1\u7aef\uff0c\u6536\u5230\u5e94\u7b54\u62a5\u6587\u540e\u505aMD5\u7b7e\u540d\u9a8c\u8bc1\u7b49\u540e\u7eed\u5904\u7406\u3002\u7531\u4e8e\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u4e4b\u524d\u901a\u8baf\u62a5\u6587\u662fjson\u683c\u5f0f\u7684\uff0c\u90a3\u4e48\u5c31\u4f1a\u6d89\u53ca\u5230json\u62a5\u6587\u7684\u751f\u6210\u548c\u89e3\u6790\u3002\u7f51\u4e0a\u627e\u4e86\u4e0b\uff0c\u8c8c\u4f3c\u963f\u91cc\u5df4\u5df4\u7684<code>fastjson<\/code>\u5e93\u8bc4\u4ef7\u4e0d\u9519\uff0c\u6240\u4ee5\u5c31\u76f4\u63a5\u62ff\u8fc7\u6765\u7528\u4e86\u3002<\/p>\n\n\n<h4>1 \u4e0e\u5b9e\u9645\u7684\u504f\u5dee<\/h4>\n<p><code>fastjson<\/code>\u5c01\u88c5\u7684api\u51fd\u6570\u5012\u662f\u86ee\u7b80\u5355\u7684\uff0c\u76f4\u63a5\u62ff\u8fc7\u6765\u5c31\u53ef\u4ee5\u4e0a\u624b\u7528\u4e86\u3002\u4f46\u662fdemo\u7a0b\u5e8f\u5728\u5bf9\u670d\u52a1\u7aef\u8fd4\u56de\u7684\u62a5\u6587\u505a\u9a8c\u7b7e\u7684\u65f6\u5019\u603b\u662f\u901a\u4e0d\u8fc7\uff0c\u540e\u9762\u628a\u539f\u59cb\u7684\u5f85\u7b7e\u62a5\u6587\u548c\u670d\u52a1\u5668\u7684\u5f85\u7b7e\u62a5\u6587\u4e00\u5bf9\u6bd4\u53d1\u73b0\u4e24\u8005\u4e0d\u4e00\u81f4\uff0c\u8fd9\u6837\u9a8c\u7b7e\u80af\u5b9a\u662f\u5931\u8d25\u7684\u3002<\/p>\n<p>\u90a3\u95ee\u9898\u5c31\u51fa\u5728\u8fd9\u4e2a\u539f\u59cb\u7684\u5f85\u7b7e\u62a5\u6587\u4e3a\u4ec0\u4e48\u4f1a\u88ab\u6539\u53d8\u7684\u73af\u8282\u4e86\uff1a\u7528<code>fastjson<\/code>\u4ecejson\u683c\u5f0f\u7684\u5e94\u7b54\u62a5\u6587\u4e2d\u83b7\u53d6\u7684\u8fd9\u4e2a\u5f85\u7b7e\u62a5\u6587\u88ab\u91cd\u65b0\u6392\u5e8f\u4e86\uff08\u89c1\u5c0f\u82822\u4e2d\u7684<code>json_order_is_changed<\/code>\u51fd\u6570\uff09\u3002<\/p>\n<p>\u5728\u67e5\u8fc7\u8d44\u6599\u540e\uff0c\u539f\u6765\u662f<code>fastjson<\/code>\u5305\u4e2d\u7684<code>JSONObject<\/code>\u5bf9\u8c61\u4e2d\uff0c\u5982\u679c\u76f4\u63a5\u4f7f\u7528<code>parseObject<\/code>\u65b9\u6cd5\uff0c\u53ef\u80fd\u4f1a\u5bfc\u81f4json\u6570\u636e\u91cd\u65b0\u6392\u5e8f\u3002\u8fd9\u4e2a\u95ee\u9898\u53ef\u4ee5\u901a\u8fc7\u4f7f\u7528<code>com.alibaba.fastjson.parser.Feature<\/code>\u5305\u89e3\u51b3\uff0c\u4f46\u662f\u9700\u8981\u4f7f\u7528\u6700\u65b0\u7684<code>fastjson<\/code>\u5305\u3002<\/p>\n<h4>2 \u793a\u4f8b\u7a0b\u5e8f<\/h4>\n<p>\u7531\u4e8edemo\u4e2d\u7684\u4e1a\u52a1\u4ee3\u7801\u8fc7\u957f\uff0c\u8fd9\u91cc\u628a\u5173\u952e\u7684json\u62a5\u6587\u89e3\u6790\u7684\u8fd9\u4e00\u90e8\u5206\u62bd\u51fa\u6765\u505a\u4e86\u4e2a\u6f14\u793a\u7a0b\u5e8f\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"kn\">import<\/span><span class=\"w\"> <\/span><span class=\"nn\">com.alibaba.fastjson.JSON<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">import<\/span><span class=\"w\"> <\/span><span class=\"nn\">com.alibaba.fastjson.JSONObject<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">import<\/span><span class=\"w\"> <\/span><span class=\"nn\">com.alibaba.fastjson.parser.Feature<\/span><span class=\"p\">;<\/span>\n<span class=\"kn\">import<\/span><span class=\"w\"> <\/span><span class=\"nn\">java.util.LinkedHashMap<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\">* File:   fastjsonParseMain.java<\/span>\n<span class=\"cm\">* Description:   \u4f7f\u7528 fastjson \u89e3\u6790json\u4e2d\u7684\u952e\u503c\uff1a\u4e71\u5e8f\u548c\u539f\u6837\u8f93\u51fa<\/span>\n<span class=\"cm\">* Refer:         \u6700\u65b0\u7684fastjson\u5305\u53ef\u4ee5\u5230\u5b98\u7f51 https:\/\/github.com\/alibaba\/fastjson\/releases \u53bb\u4e0b\u8f7d\u3002<\/span>\n<span class=\"cm\">* (c) 2019.01.22 vfhky https:\/\/typecodes.com\/java\/fastjsonorder1.html<\/span>\n<span class=\"cm\">*\/<\/span>\n<span class=\"kd\">public<\/span><span class=\"w\"> <\/span><span class=\"kd\">class<\/span> <span class=\"nc\">fastjsonParseMain<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">public<\/span><span class=\"w\"> <\/span><span class=\"nf\">fastjsonParseMain<\/span><span class=\"p\">(){<\/span>\n\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">    * \u4f7f\u7528 fastjson \u6839\u636e\u8f93\u5165\u7684key\u539f\u6837\u83b7\u53d6json\u4e2d\u5bf9\u5e94\u7684\u503c\u3002<\/span>\n<span class=\"cm\">    *<\/span>\n<span class=\"cm\">    * @param    s_json_data     json\u5b57\u7b26\u4e32<\/span>\n<span class=\"cm\">    * @param    s_key           json\u5b57\u7b26\u4e32\u4e2d\u7684key<\/span>\n<span class=\"cm\">    * @return   value           key\u5bf9\u5e94\u7684value<\/span>\n<span class=\"cm\">    *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">public<\/span><span class=\"w\"> <\/span><span class=\"kd\">static<\/span><span class=\"w\"> <\/span><span class=\"n\">String<\/span><span class=\"w\"> <\/span><span class=\"nf\">json_order_not_change<\/span><span class=\"p\">(<\/span><span class=\"n\">String<\/span><span class=\"w\"> <\/span><span class=\"n\">s_json_data<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">String<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/ 1.2.54\u7248\u672c\u7684fastjson\u5305\u6d4b\u8bd5\u901a\u8fc7<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">LinkedHashMap<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">String<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">Object<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">json<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">JSON<\/span><span class=\"p\">.<\/span><span class=\"na\">parseObject<\/span><span class=\"p\">(<\/span><span class=\"n\">s_json_data<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">LinkedHashMap<\/span><span class=\"p\">.<\/span><span class=\"na\">class<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">Feature<\/span><span class=\"p\">.<\/span><span class=\"na\">OrderedField<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">JSONObject<\/span><span class=\"w\"> <\/span><span class=\"n\">jsonObject<\/span><span class=\"o\">=<\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">JSONObject<\/span><span class=\"p\">(<\/span><span class=\"kc\">true<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">jsonObject<\/span><span class=\"p\">.<\/span><span class=\"na\">putAll<\/span><span class=\"p\">(<\/span><span class=\"n\">json<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kc\">null<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">json<\/span><span class=\"p\">.<\/span><span class=\"na\">get<\/span><span class=\"p\">(<\/span><span class=\"n\">s_key<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span><span class=\"w\"> <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">json<\/span><span class=\"p\">.<\/span><span class=\"na\">get<\/span><span class=\"p\">(<\/span><span class=\"n\">s_key<\/span><span class=\"p\">).<\/span><span class=\"na\">toString<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">    * \u4f7f\u7528 fastjson \u6839\u636e\u8f93\u5165\u7684key\u83b7\u53d6json\u4e2d\u5bf9\u5e94\u7684\u503c\uff08\u53ef\u80fd\u4f1a\u88ab\u6392\u5e8f\uff09\u3002<\/span>\n<span class=\"cm\">    *<\/span>\n<span class=\"cm\">    * @param    s_json_data     json\u5b57\u7b26\u4e32<\/span>\n<span class=\"cm\">    * @param    s_key           json\u5b57\u7b26\u4e32\u4e2d\u7684key<\/span>\n<span class=\"cm\">    * @return   value           key\u5bf9\u5e94\u7684value<\/span>\n<span class=\"cm\">    *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"kd\">public<\/span><span class=\"w\"> <\/span><span class=\"kd\">static<\/span><span class=\"w\"> <\/span><span class=\"n\">String<\/span><span class=\"w\"> <\/span><span class=\"nf\">json_order_is_changed<\/span><span class=\"p\">(<\/span><span class=\"n\">String<\/span><span class=\"w\"> <\/span><span class=\"n\">s_json_data<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">String<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key<\/span><span class=\"p\">){<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">JSONObject<\/span><span class=\"w\"> <\/span><span class=\"n\">object<\/span><span class=\"o\">=<\/span><span class=\"n\">JSONObject<\/span><span class=\"p\">.<\/span><span class=\"na\">parseObject<\/span><span class=\"p\">(<\/span><span class=\"n\">s_json_data<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kc\">null<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">object<\/span><span class=\"p\">.<\/span><span class=\"na\">getString<\/span><span class=\"p\">(<\/span><span class=\"n\">s_key<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span><span class=\"w\"> <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">object<\/span><span class=\"p\">.<\/span><span class=\"na\">getString<\/span><span class=\"p\">(<\/span><span class=\"n\">s_key<\/span><span class=\"p\">).<\/span><span class=\"na\">toString<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"kd\">public<\/span><span class=\"w\"> <\/span><span class=\"kd\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"n\">String<\/span><span class=\"o\">[]<\/span><span class=\"w\"> <\/span><span class=\"n\">args<\/span><span class=\"p\">){<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">String<\/span><span class=\"w\"> <\/span><span class=\"n\">s_org_buff<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;{\\&quot;cmd_1\\&quot;:1, \\&quot;cmd_2\\&quot;:2, \\&quot;biz_content\\&quot;:{\\&quot;aa\\&quot;:\\&quot;11\\&quot;,\\&quot;cb\\&quot;:\\&quot;55\\&quot;,\\&quot;11\\&quot;:\\&quot;66\\&quot;}}&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">String<\/span><span class=\"w\"> <\/span><span class=\"n\">s_dst_buff<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&quot;<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">System<\/span><span class=\"p\">.<\/span><span class=\"na\">out<\/span><span class=\"p\">.<\/span><span class=\"na\">println<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;==================== \u539f\u59cbjson\u5b57\u7b26\u4e32 ===================&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">System<\/span><span class=\"p\">.<\/span><span class=\"na\">out<\/span><span class=\"p\">.<\/span><span class=\"na\">println<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;s_org_buff=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_org_buff<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;].\\n&quot;<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">System<\/span><span class=\"p\">.<\/span><span class=\"na\">out<\/span><span class=\"p\">.<\/span><span class=\"na\">println<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;==================== \u83b7\u53d6\u7684value\u53ef\u80fd\u662f\u4e71\u5e8f\u7684 ===================&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">s_dst_buff<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">fastjsonParseMain<\/span><span class=\"p\">.<\/span><span class=\"na\">json_order_is_changed<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_org_buff<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;biz_content&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">System<\/span><span class=\"p\">.<\/span><span class=\"na\">out<\/span><span class=\"p\">.<\/span><span class=\"na\">println<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;s_dst_buff=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_dst_buff<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;].\\n&quot;<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">System<\/span><span class=\"p\">.<\/span><span class=\"na\">out<\/span><span class=\"p\">.<\/span><span class=\"na\">println<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;==================== \u539f\u6837\u8f93\u51fa\u5bf9\u5e94\u7684 value \u503c ====================&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">s_dst_buff<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">fastjsonParseMain<\/span><span class=\"p\">.<\/span><span class=\"na\">json_order_not_change<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_org_buff<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;biz_content&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">System<\/span><span class=\"p\">.<\/span><span class=\"na\">out<\/span><span class=\"p\">.<\/span><span class=\"na\">println<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;s_dst_buff=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_dst_buff<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;].\\n&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u4f7f\u7528eclipse\u7f16\u8bd1\u6267\u884c<\/h4>\n<p>\u4e0a\u9762\u4ee3\u7801<code>json_order_not_change<\/code>\u51fd\u6570\u901a\u8fc7<code>Feature<\/code>\u53c2\u6570\u4f7f\u5f97\u89e3\u6790json\u6570\u636e\u7684\u65f6\u5019\u80fd\u591f\u4fdd\u6301\u539f\u6837\uff0c\u800c<code>json_order_is_changed<\/code>\u51fd\u6570\u4e2d\u83b7\u53d6\u7684value\u503c\u53ef\u80fd\u4f1a\u662f\u6392\u5e8f\u540e\u7684\u6570\u636e\u3002<\/p>\n<p>\u4e24\u8005\u7684\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u4f7f\u7528 fastjson \u89e3\u6790json\u4e2d\u7684\u952e\u503c\uff1a\u4e71\u5e8f\u548c\u539f\u6837\u8f93\u51fa\" src=\"https:\/\/cdn.typecodes.com\/2019\/01\/alibaba_fastjson_parse.png\" title=\"\u4f7f\u7528 fastjson \u89e3\u6790json\u4e2d\u7684\u952e\u503c\uff1a\u4e71\u5e8f\u548c\u539f\u6837\u8f93\u51fa\"><\/p>","category":[{"@attributes":{"term":"java"}},{"@attributes":{"term":"fastjson"}}]},{"title":"Python\u81ea\u52a8\u6790\u6784\u65f6\u51fa\u73b0Exception AttributeError: 'NoneType' object has no attribute\u7684\u95ee\u9898","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/destrutionattributeerrornonetype1.html","rel":"alternate"}},"published":"2018-12-19T11:45:00+08:00","updated":"2018-12-19T11:45:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2018-12-19:\/python\/destrutionattributeerrornonetype1.html","summary":"<p>\u6628\u665a\u5728\u6574\u7406\u81ea\u5df1\u7684python\u811a\u672c\u7684\u65f6\u5019\uff0c\u60f3\u628a\u5176\u4e2d\u4e00\u4e2a\u811a\u672c\u4e2d\u7684<code>print<\/code>\u51fd\u6570\u5168\u90fd\u6539\u6210<code>logging<\/code>\u5305\u4e2d\u7684\u76f8\u5173\u51fd\u6570\u3002\u6539\u5b8c\u540e\u4e00\u8fd0\u884c\u5374\u51fa\u73b0\u4e86<code>Exception AttributeError: 'NoneType' object has no attribute<\/code>\u7684\u9519\u8bef\uff0c\u7f51\u4e0a\u641c\u4e86\u4e00\u4e0b\u6ca1\u627e\u5230\u76f8\u5173\u7b54\u6848\u3002\u4e0a\u5348\u518d\u60f3\u4e86\u60f3\uff0c\u539f\u56e0\u5e94\u8be5\u662f\u8ddfpython\u5bf9\u8c61\u7684\u6790\u6784\u6709\u5173\uff0c\u5177\u4f53\u5206\u6790\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n","content":"<p>\u6628\u665a\u5728\u6574\u7406\u81ea\u5df1\u7684python\u811a\u672c\u7684\u65f6\u5019\uff0c\u60f3\u628a\u5176\u4e2d\u4e00\u4e2a\u811a\u672c\u4e2d\u7684<code>print<\/code>\u51fd\u6570\u5168\u90fd\u6539\u6210<code>logging<\/code>\u5305\u4e2d\u7684\u76f8\u5173\u51fd\u6570\u3002\u6539\u5b8c\u540e\u4e00\u8fd0\u884c\u5374\u51fa\u73b0\u4e86<code>Exception AttributeError: 'NoneType' object has no attribute<\/code>\u7684\u9519\u8bef\uff0c\u7f51\u4e0a\u641c\u4e86\u4e00\u4e0b\u6ca1\u627e\u5230\u76f8\u5173\u7b54\u6848\u3002\u4e0a\u5348\u518d\u60f3\u4e86\u60f3\uff0c\u539f\u56e0\u5e94\u8be5\u662f\u8ddfpython\u5bf9\u8c61\u7684\u6790\u6784\u6709\u5173\uff0c\u5177\u4f53\u5206\u6790\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n\n\n<h4>1 \u793a\u4f8b\u7a0b\u5e8f<\/h4>\n<p>\u7531\u4e8e\u539f\u811a\u672c\u4e1a\u52a1\u90e8\u5206\u8fc7\u957f\uff0c\u8fd9\u91cc\u628a\u5173\u952e\u7684\u51e0\u4e2a\u90e8\u4f4d\u62bd\u51fa\u6765\u505a\u4e86\u4e2a\u6f14\u793a\u7a0b\u5e8f\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"c1\"># -*- coding: UTF-8 -*-<\/span>\n<span class=\"c1\"># File:   destrution_attribute_error_nonetype1.py<\/span>\n<span class=\"c1\"># Description:   python\u81ea\u52a8\u6790\u6784\u65f6\u51fa\u73b0Exception AttributeError: &#39;NoneType&#39; object has no attribute\u95ee\u9898\u7684\u793a\u4f8b\u7a0b\u5e8f<\/span>\n<span class=\"c1\"># (c) 2018.12.19 vfhky https:\/\/typecodes.com\/python\/destrution_attribute_error_nonetype1.html<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">threading<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">logging<\/span>\n\n\n<span class=\"c1\"># MYSQL \u7684\u7b80\u5355\u5c01\u88c5<\/span>\n<span class=\"k\">class<\/span> <span class=\"nc\">CMySQL<\/span><span class=\"p\">:<\/span>\n    <span class=\"c1\"># \u7ebf\u7a0b\u9501<\/span>\n    <span class=\"n\">_instance_lock<\/span> <span class=\"o\">=<\/span> <span class=\"n\">threading<\/span><span class=\"o\">.<\/span><span class=\"n\">Lock<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"c1\"># \u6570\u636e\u5e93\u8fde\u63a5\u5bf9\u8c61<\/span>\n    <span class=\"n\">__db<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">None<\/span>\n    <span class=\"c1\"># \u6e38\u6807\u5bf9\u8c61<\/span>\n    <span class=\"n\">__cursor<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">None<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"fm\">__init__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"o\">*<\/span><span class=\"n\">args<\/span><span class=\"p\">,<\/span> <span class=\"o\">**<\/span><span class=\"n\">kwargs<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">pass<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"fm\">__new__<\/span><span class=\"p\">(<\/span><span class=\"bp\">cls<\/span><span class=\"p\">,<\/span> <span class=\"o\">*<\/span><span class=\"n\">args<\/span><span class=\"p\">,<\/span> <span class=\"o\">**<\/span><span class=\"n\">kwargs<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">pass<\/span>\n\n    <span class=\"c1\"># \u6790\u6784\u51fd\u6570\uff0c\u91ca\u653e\u5bf9\u8c61\u65f6\u4f7f\u7528<\/span>\n    <span class=\"k\">def<\/span> <span class=\"fm\">__del__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"c1\"># \u5173\u95ed\u6570\u636e\u5e93\u8fde\u63a5<\/span>\n        <span class=\"k\">if<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__db<\/span><span class=\"p\">:<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__db<\/span><span class=\"o\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">()<\/span>\n            <span class=\"c1\"># \u81ea\u52a8\u6790\u6784\u65f6\u8fd9\u91cc\u4f1a\u51fa\u95ee\u9898\uff1a&#39;NoneType&#39; object<\/span>\n            <span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;-------&gt; close db.&quot;<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n            <span class=\"c1\"># \u81ea\u52a8\u6790\u6784\u65f6\u8fd9\u91cc\u4e5f\u4f1a\u51fa\u95ee\u9898\uff1a&#39;NoneType&#39; object<\/span>\n            <span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">warning<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;-------&gt; db unconnected or had been closed.&quot;<\/span><span class=\"p\">)<\/span>\n\n\n<span class=\"k\">if<\/span> <span class=\"vm\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s2\">&quot;__main__&quot;<\/span><span class=\"p\">:<\/span>\n    <span class=\"c1\"># \u521b\u5efa\u5b9e\u4f8b<\/span>\n    <span class=\"n\">db_obj<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CMySQL<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"c1\"># \u8f93\u51fa\u5230\u63a7\u5236\u53f0<\/span>\n    <span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">basicConfig<\/span><span class=\"p\">(<\/span><span class=\"n\">level<\/span><span class=\"o\">=<\/span><span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">INFO<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nb\">format<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;[<\/span><span class=\"si\">%(asctime)s<\/span><span class=\"s1\">][L:<\/span><span class=\"si\">%(lineno)d<\/span><span class=\"s1\">][<\/span><span class=\"si\">%(levelname)s<\/span><span class=\"s1\">][<\/span><span class=\"si\">%(process)d<\/span><span class=\"s1\">] <\/span><span class=\"si\">%(message)s<\/span><span class=\"s1\">&#39;<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">datefmt<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;<\/span><span class=\"si\">%d<\/span><span class=\"s1\"> %b %Y %H:%M:%S&#39;<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;================================== END ==================================&quot;<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u6267\u884c\u540e\u51fa\u73b0\u9519\u8bef<\/h4>\n<p>\u6267\u884c\u4e0a\u9762\u7684\u7a0b\u5e8f\uff0c\u5728Linux\u7ec8\u7aef\u4e0a\u5c31\u4f1a\u51fa\u73b0<code>Exception AttributeError: 'NoneType' object has no attribute 'warning'\" in &lt;bound method CMySQL.__del__ of &lt;__main__.CMySQL instance at 0x7f4b3f9b7128&gt;&gt;<\/code>\u7684\u9519\u8bef\u3002<\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"Exception AttributeError NoneType object has no attribute\" src=\"https:\/\/cdn.typecodes.com\/2018\/12\/destrution_attribute_error_nonetype1.png\" title=\"Exception AttributeError NoneType object has no attribute\"><\/p>\n<h4>3 \u5206\u6790\u95ee\u9898<\/h4>\n<p>\u5176\u5b9e\u662f\u4e0d\u4e86\u89e3python\u7684\u6790\u6784\u8fc7\u7a0b\u5bfc\u81f4\u7684\uff1a\u5f53main\u51fd\u6570\u7ed3\u675f\u540e\uff08\u8f93\u51fa\u56fe\u4e2d\u7684<code>END<\/code>\u5b57\u6837\uff09\uff0c\u610f\u5473\u7740\u8fdb\u7a0b\u5373\u5c06\u9000\u51fa\uff0c\u90a3\u4e48\u4f1a\u81ea\u52a8\u8c03\u7528\u5bf9\u8c61\u7684\u6790\u6784\u51fd\u6570\u8fdb\u884c\u6790\u6784\uff0c\u8fd9\u70b9Python\u548cC++\u662f\u4e00\u6837\u7684\u3002<\/p>\n<p>\u7531\u4e8e<code>logging<\/code>\u6a21\u5757\u4e2d\u7684\u7c7b\u5bf9\u8c61\uff08\u5305\u62ec\u6210\u5458\u53d8\u91cf\u3001\u6210\u5458\u51fd\u6570\u7b49\uff09\u5df2\u7ecf\u88ab\u6790\u6784\u4e86\uff0c\u6240\u4ee5\u5f53\u6267\u884c<code>CMySQL<\/code>\u5bf9\u8c61\u7684\u6790\u6784\u51fd\u6570<code>__del__<\/code>\u4e2d\u7684<code>logging.warning<\/code>\u51fd\u6570\u65f6\u4f1a\u51fa\u73b0<code>\"'NoneType' object has no attribute 'warning'<\/code>\u7684\u9519\u8bef\u3002<\/p>\n<h4>4 \u89e3\u51b3\u95ee\u9898<\/h4>\n<p>\u89e3\u51b3\u65b9\u6cd5\u5f88\u7b80\u5355\uff0c\u53ea\u8981\u589e\u52a0\u4e00\u4e2a\u5c01\u88c5MySQL\u94fe\u63a5\u5173\u95ed\u7684\u51fd\u6570<code>close<\/code>\u5c31\u884c\u4e86\uff0c\u5f53main\u51fd\u6570\u7ed3\u679c\u8c03\u7528\u5373\u53ef\u3002\u4e0b\u9762\u7684\u4ee3\u7801\u662f\u9488\u5bf9\u8fd9\u4e2a\u95ee\u9898\u7684\u6539\u8fdb\u7248\u672c\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"c1\"># -*- coding: UTF-8 -*-<\/span>\n<span class=\"c1\"># File:   destrution_attribute_error_nonetype1_1.py<\/span>\n<span class=\"c1\"># Description:   \u4fee\u6b63Exception AttributeError: &#39;NoneType&#39; object has no attribute\u95ee\u9898\u7684\u793a\u4f8b\u7a0b\u5e8f<\/span>\n<span class=\"c1\"># (c) 2018.12.19 vfhky https:\/\/typecodes.com\/python\/destrution_attribute_error_nonetype1.html<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">threading<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">logging<\/span>\n\n\n<span class=\"c1\"># MYSQL \u7684\u7b80\u5355\u5c01\u88c5<\/span>\n<span class=\"k\">class<\/span> <span class=\"nc\">CMySQL<\/span><span class=\"p\">:<\/span>\n    <span class=\"c1\"># \u7ebf\u7a0b\u9501<\/span>\n    <span class=\"n\">_instance_lock<\/span> <span class=\"o\">=<\/span> <span class=\"n\">threading<\/span><span class=\"o\">.<\/span><span class=\"n\">Lock<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"c1\"># \u6570\u636e\u5e93\u8fde\u63a5\u5bf9\u8c61<\/span>\n    <span class=\"n\">__db<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">None<\/span>\n    <span class=\"c1\"># \u6e38\u6807\u5bf9\u8c61<\/span>\n    <span class=\"n\">__cursor<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">None<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"fm\">__init__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"o\">*<\/span><span class=\"n\">args<\/span><span class=\"p\">,<\/span> <span class=\"o\">**<\/span><span class=\"n\">kwargs<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">pass<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"fm\">__new__<\/span><span class=\"p\">(<\/span><span class=\"bp\">cls<\/span><span class=\"p\">,<\/span> <span class=\"o\">*<\/span><span class=\"n\">args<\/span><span class=\"p\">,<\/span> <span class=\"o\">**<\/span><span class=\"n\">kwargs<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">pass<\/span>\n\n    <span class=\"c1\"># \u5173\u95ed\u6570\u636e\u5e93\u8fde\u63a5<\/span>\n    <span class=\"k\">def<\/span> <span class=\"nf\">close<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"k\">if<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__db<\/span><span class=\"p\">:<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__db<\/span><span class=\"o\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">()<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__db<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">None<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__cursor<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">None<\/span>\n            <span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;-------&gt; close db.&quot;<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">warning<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;-------&gt; db unconnected or had been closed.&quot;<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># \u6790\u6784\u51fd\u6570\uff0c\u91ca\u653e\u5bf9\u8c61\u65f6\u4f7f\u7528<\/span>\n    <span class=\"k\">def<\/span> <span class=\"fm\">__del__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        <span class=\"c1\"># \u5173\u95ed\u6570\u636e\u5e93\u8fde\u63a5<\/span>\n        <span class=\"k\">if<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__db<\/span><span class=\"p\">:<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__db<\/span><span class=\"o\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">()<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__db<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">None<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">__cursor<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">None<\/span>\n            <span class=\"c1\"># logging.info(&quot;-------&gt; close db.&quot;)<\/span>\n        <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n            <span class=\"k\">pass<\/span>\n            <span class=\"c1\">#logging.warning(&quot;-------&gt; db unconnected or had been closed.&quot;)<\/span>\n\n\n<span class=\"k\">if<\/span> <span class=\"vm\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s2\">&quot;__main__&quot;<\/span><span class=\"p\">:<\/span>\n    <span class=\"c1\">#<\/span>\n    <span class=\"n\">db_obj<\/span> <span class=\"o\">=<\/span> <span class=\"n\">CMySQL<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"c1\"># \u8f93\u51fa\u5230\u63a7\u5236\u53f0<\/span>\n    <span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">basicConfig<\/span><span class=\"p\">(<\/span><span class=\"n\">level<\/span><span class=\"o\">=<\/span><span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">INFO<\/span><span class=\"p\">,<\/span>\n                    <span class=\"nb\">format<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;[<\/span><span class=\"si\">%(asctime)s<\/span><span class=\"s1\">][L:<\/span><span class=\"si\">%(lineno)d<\/span><span class=\"s1\">][<\/span><span class=\"si\">%(levelname)s<\/span><span class=\"s1\">][<\/span><span class=\"si\">%(process)d<\/span><span class=\"s1\">] <\/span><span class=\"si\">%(message)s<\/span><span class=\"s1\">&#39;<\/span><span class=\"p\">,<\/span>\n                    <span class=\"n\">datefmt<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;<\/span><span class=\"si\">%d<\/span><span class=\"s1\"> %b %Y %H:%M:%S&#39;<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">logging<\/span><span class=\"o\">.<\/span><span class=\"n\">info<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;================================== END ==================================&quot;<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># \u5173\u95ed\u6570\u636e\u5e93\u8fde\u63a5<\/span>\n    <span class=\"n\">db_obj<\/span><span class=\"o\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">()<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u8fd0\u884c\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"Exception AttributeError NoneType object has no attribute\" src=\"https:\/\/cdn.typecodes.com\/2018\/12\/destrution_attribute_error_nonetype1_1.png\" title=\"Exception AttributeError NoneType object has no attribute\"><\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"AttributeError"}},{"@attributes":{"term":"NoneType"}}]},{"title":"awk\u4e2d\u7b26\u70b9\u578b\u5c0f\u6570\u53bb\u6389\u5c0f\u6570\u70b9\u8f6c\u6362\u6210\u6574\u6570\u7684\u65b9\u6cd5","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/awkdecimaltoint1.html","rel":"alternate"}},"published":"2018-03-28T23:12:00+08:00","updated":"2018-03-28T23:12:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2018-03-28:\/linux\/awkdecimaltoint1.html","summary":"<p>\u5728\u5199shell\u811a\u672c\u65f6\uff0c\u4f1a\u9047\u5230\u8981\u628a\u4e00\u4e2a\u7b26\u70b9\u6570\u8f6c\u6362\u6210\u6574\u6570\u7684\u60c5\u51b5\u3002\u4e4b\u524d\u7ebf\u4e0a\u4e00\u4e2ashell\u811a\u672c\u5728\u7528awk\u4ece\u6587\u672c\u4e2d\u8bfb\u53d6\u51fa\u4e00\u4e2a\u5e26\u4e24\u4f4d\u5c0f\u6570\u7684\u7b26\u70b9\u6570\u540e\uff0c\u662f\u76f4\u63a5\u628a\u5b83\u4e58\u4ee5100\u8f6c\u6362\u6210\u6574\u6570\u7684\u3002\u811a\u672c\u4e00\u76f4\u8fd0\u884c\u6b63\u5e38\uff0c\u76f4\u5230\u540e\u9762\u9047\u5230\u4e86\u4e00\u4e2a\u7b26\u70b9\u6570<code>19004.44<\/code>\uff0c\u5b83\u5728\u4e58\u4ee5100\u540e\u5f97\u5230\u7684\u4e0d\u662f<code>1900444<\/code>\u800c\u662f\u79d1\u5b66\u8bb0\u6570<code>1.90044e+06<\/code>\uff0c\u5bfc\u81f4\u5bfc\u5165\u6570\u636e\u5e93\u5931\u8d25\u3002\u540e\u9762\u6d4b\u8bd5\u53d1\u73b0\u7b26\u70b9\u6570<code>19004.42<\/code>\u4e5f\u5b58\u5728\u540c\u6837\u7684\u95ee\u9898\uff0c\u5982\u679c\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"awk\u4e2d\u7b26\u70b9\u578b\u5c0f\u6570\u53bb\u6389\u5c0f\u6570\u70b9\u8f6c\u6362\u6210\u6574\u6570\u7684\u65b9\u6cd5\" src=\"https:\/\/cdn.typecodes.com\/2018\/03\/awkdecimaltoint1_1.png\" title=\"awk\u4e2d\u7b26\u70b9\u578b\u5c0f\u6570\u53bb\u6389\u5c0f\u6570\u70b9\u8f6c\u6362\u6210\u6574\u6570\u7684\u65b9\u6cd5\"><\/p>\n","content":"<p>\u5728\u5199shell\u811a\u672c\u65f6\uff0c\u4f1a\u9047\u5230\u8981\u628a\u4e00\u4e2a\u7b26\u70b9\u6570\u8f6c\u6362\u6210\u6574\u6570\u7684\u60c5\u51b5\u3002\u4e4b\u524d\u7ebf\u4e0a\u4e00\u4e2ashell\u811a\u672c\u5728\u7528awk\u4ece\u6587\u672c\u4e2d\u8bfb\u53d6\u51fa\u4e00\u4e2a\u5e26\u4e24\u4f4d\u5c0f\u6570\u7684\u7b26\u70b9\u6570\u540e\uff0c\u662f\u76f4\u63a5\u628a\u5b83\u4e58\u4ee5100\u8f6c\u6362\u6210\u6574\u6570\u7684\u3002\u811a\u672c\u4e00\u76f4\u8fd0\u884c\u6b63\u5e38\uff0c\u76f4\u5230\u540e\u9762\u9047\u5230\u4e86\u4e00\u4e2a\u7b26\u70b9\u6570<code>19004.44<\/code>\uff0c\u5b83\u5728\u4e58\u4ee5100\u540e\u5f97\u5230\u7684\u4e0d\u662f<code>1900444<\/code>\u800c\u662f\u79d1\u5b66\u8bb0\u6570<code>1.90044e+06<\/code>\uff0c\u5bfc\u81f4\u5bfc\u5165\u6570\u636e\u5e93\u5931\u8d25\u3002\u540e\u9762\u6d4b\u8bd5\u53d1\u73b0\u7b26\u70b9\u6570<code>19004.42<\/code>\u4e5f\u5b58\u5728\u540c\u6837\u7684\u95ee\u9898\uff0c\u5982\u679c\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"awk\u4e2d\u7b26\u70b9\u578b\u5c0f\u6570\u53bb\u6389\u5c0f\u6570\u70b9\u8f6c\u6362\u6210\u6574\u6570\u7684\u65b9\u6cd5\" src=\"https:\/\/cdn.typecodes.com\/2018\/03\/awkdecimaltoint1_1.png\" title=\"awk\u4e2d\u7b26\u70b9\u578b\u5c0f\u6570\u53bb\u6389\u5c0f\u6570\u70b9\u8f6c\u6362\u6210\u6574\u6570\u7684\u65b9\u6cd5\"><\/p>\n\n\n<h4>1 \u89e3\u51b3\u65b9\u6cd5<\/h4>\n<p>\u6709\u4e24\u79cd\u65b9\u6cd5\u53ef\u4ee5\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff1a1\u901a\u8fc7<code>sub<\/code>\u6216\u8005<code>gsub<\/code>\u51fd\u6570\u628a\u7b26\u70b9\u6570\u7684\u5c0f\u6570\u70b9\u53bb\u6389\uff1b2\u548cC\/C++\u90a3\u6837\u901a\u8fc7<code>printf<\/code>\u5360\u4f4d\u7b26\u683c\u5f0f\u5316\u3002<\/p>\n<p>\u6d4b\u8bd5\u7ed3\u679c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"c1\"># Description:   awk\u4e2d\u7b26\u70b9\u578b\u5c0f\u6570\u53bb\u6389\u5c0f\u6570\u70b9\u8f6c\u6362\u6210\u6574\u6570\u7684\u65b9\u6cd5<\/span>\n<span class=\"c1\"># (c) 2018.03.28 vfhky https:\/\/typecodes.com\/linux\/awkdecimaltoint1.html<\/span>\n\n\n<span class=\"c1\">#### \u65b9\u6cd5\u4e00\uff1a\u4f7f\u7528sub\u51fd\u6570\u8fdb\u884c\u66ff\u6362\uff08\u628a\u5c0f\u6570\u70b9\u53bb\u6389\uff09<\/span>\n<span class=\"o\">[<\/span>vfhky@typecodes<span class=\"w\"> <\/span>shell<span class=\"o\">]<\/span>$<span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"m\">19004<\/span>.44<span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>awk<span class=\"w\"> <\/span><span class=\"s1\">&#39;{sub(\/\\.\/,&quot;&quot;,$1); print $1}&#39;<\/span>\n<span class=\"m\">1900444<\/span>\n<span class=\"o\">[<\/span>vfhky@typecodes<span class=\"w\"> <\/span>shell<span class=\"o\">]<\/span>$<span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>.44<span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>awk<span class=\"w\"> <\/span><span class=\"s1\">&#39;{sub(\/\\.\/,&quot;&quot;,$1); print $1}&#39;<\/span>\n<span class=\"m\">044<\/span>\n<span class=\"c1\">#### \u5c0f\u6570\u70b9\u524d\u9762\u76840\u53ef\u4ee5\u901a\u8fc7int\u51fd\u6570\u5f3a\u5236\u8f6c\u6362\u53bb\u6389<\/span>\n<span class=\"o\">[<\/span>vfhky@typecodes<span class=\"w\"> <\/span>shell<span class=\"o\">]<\/span>$<span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>.44<span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>awk<span class=\"w\"> <\/span><span class=\"s1\">&#39;{sub(\/\\.\/,&quot;&quot;,$1); print int($1)}&#39;<\/span>\n<span class=\"m\">44<\/span>\n<span class=\"o\">[<\/span>vfhky@typecodes<span class=\"w\"> <\/span>shell<span class=\"o\">]<\/span>$\n\n<span class=\"c1\">#### \u65b9\u6cd5\u4e8c\uff1a\u4f7f\u7528printf\u51fd\u6570\u683c\u5f0f\u5316<\/span>\n<span class=\"o\">[<\/span>vfhky@typecodes<span class=\"w\"> <\/span>shell<span class=\"o\">]<\/span>$<span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"m\">19004<\/span>.44<span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>awk<span class=\"w\"> <\/span><span class=\"s1\">&#39;{printf(&quot;%.0f\\n&quot;, 100*$1)}&#39;<\/span>\n<span class=\"m\">1900444<\/span>\n<span class=\"o\">[<\/span>vfhky@typecodes<span class=\"w\"> <\/span>shell<span class=\"o\">]<\/span>$<span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>.44<span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>awk<span class=\"w\"> <\/span><span class=\"s1\">&#39;{printf(&quot;%.0f\\n&quot;, 100*$1)}&#39;<\/span>\n<span class=\"m\">44<\/span>\n<span class=\"o\">[<\/span>vfhky@typecodes<span class=\"w\"> <\/span>shell<span class=\"o\">]<\/span>$\n\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"shell"}},{"@attributes":{"term":"awk"}}]},{"title":"MySQL5.7\u4e2d\u4f7f\u7528GROUP_CONCAT\u6570\u636e\u88ab\u622a\u65ad\u7684\u95ee\u9898","link":{"@attributes":{"href":"https:\/\/typecodes.com\/database\/mysql57groupconcattruncated.html","rel":"alternate"}},"published":"2018-03-14T23:10:00+08:00","updated":"2018-03-14T23:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2018-03-14:\/database\/mysql57groupconcattruncated.html","summary":"<p>\u524d\u5929\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u9047\u5230\u4e00\u4e2a\u95ee\u9898\uff1a\u4f7f\u7528<code>GROUP_CONCAT<\/code>\u51fd\u6570select\u51fa\u6765\u7684\u6570\u636e\u88ab\u622a\u65ad\u4e86\uff0c\u6700\u957f\u957f\u5ea6\u4e0d\u8d85\u8fc71024\u5b57\u8282\uff0c\u5f00\u59cb\u8fd8\u4ee5\u4e3a\u662fnavicat\u5ba2\u6237\u7aef\u81ea\u8eab\u5bf9\u5b57\u6bb5\u957f\u5ea6\u505a\u4e86\u9650\u5236\u7684\u95ee\u9898\u3002\u540e\u9762\u6545\u610f\u91cd\u65b0INSERT\u4e86\u4e00\u4e2a\u5b57\u6bb5\u957f\u5ea6\u8d851024\u5b57\u8282\u7684\u6570\u636e\uff0c\u4f46\u662fnavicat\u80fd\u5b8c\u6574\u5c55\u793a\u51fa\u6765\uff0c\u6240\u4ee5\u5c31\u6392\u9664\u4e86navicat\u7684\u95ee\u9898\u3002<\/p>\n<p>\u7136\u540e\u60f3\u52301024\u8fd9\u4e2a\u719f\u6089\u7684\u6570\u5b57\uff0c\u4f1a\u4e0d\u4f1a\u662fC++\u6846\u67b6\u5728\u63a5\u6536MySQL\u901a\u8fc7socket\u4f20\u8f93\u8fc7\u6765\u7684\u6570\u636e\u65f6\u88ab\u5904\u7406\u4e86\u5462\uff1f\u4e8e\u662f\u624b\u5de5\u5728\u65e5\u5fd7\u4e2d\u6253\u5370\u8fd9\u4e2a\u5b57\u6bb5\uff0c\u53d1\u73b0\u5373\u4f7f\u6570\u636e\u957f\u5ea6\u8d85\u8fc71024\u5b57\u8282\u4ecd\u7136\u662f\u53ef\u4ee5\u5b8c\u6574\u663e\u793a\u7684\u3002<\/p>\n","content":"<p>\u524d\u5929\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u9047\u5230\u4e00\u4e2a\u95ee\u9898\uff1a\u4f7f\u7528<code>GROUP_CONCAT<\/code>\u51fd\u6570select\u51fa\u6765\u7684\u6570\u636e\u88ab\u622a\u65ad\u4e86\uff0c\u6700\u957f\u957f\u5ea6\u4e0d\u8d85\u8fc71024\u5b57\u8282\uff0c\u5f00\u59cb\u8fd8\u4ee5\u4e3a\u662fnavicat\u5ba2\u6237\u7aef\u81ea\u8eab\u5bf9\u5b57\u6bb5\u957f\u5ea6\u505a\u4e86\u9650\u5236\u7684\u95ee\u9898\u3002\u540e\u9762\u6545\u610f\u91cd\u65b0INSERT\u4e86\u4e00\u4e2a\u5b57\u6bb5\u957f\u5ea6\u8d851024\u5b57\u8282\u7684\u6570\u636e\uff0c\u4f46\u662fnavicat\u80fd\u5b8c\u6574\u5c55\u793a\u51fa\u6765\uff0c\u6240\u4ee5\u5c31\u6392\u9664\u4e86navicat\u7684\u95ee\u9898\u3002<\/p>\n<p>\u7136\u540e\u60f3\u52301024\u8fd9\u4e2a\u719f\u6089\u7684\u6570\u5b57\uff0c\u4f1a\u4e0d\u4f1a\u662fC++\u6846\u67b6\u5728\u63a5\u6536MySQL\u901a\u8fc7socket\u4f20\u8f93\u8fc7\u6765\u7684\u6570\u636e\u65f6\u88ab\u5904\u7406\u4e86\u5462\uff1f\u4e8e\u662f\u624b\u5de5\u5728\u65e5\u5fd7\u4e2d\u6253\u5370\u8fd9\u4e2a\u5b57\u6bb5\uff0c\u53d1\u73b0\u5373\u4f7f\u6570\u636e\u957f\u5ea6\u8d85\u8fc71024\u5b57\u8282\u4ecd\u7136\u662f\u53ef\u4ee5\u5b8c\u6574\u663e\u793a\u7684\u3002<\/p>\n\n\n<h4>1 \u67e5\u627e\u539f\u56e0<\/h4>\n<p>\u81f3\u6b64\uff0c\u53ea\u80fd\u4eceSQL\u8bed\u53e5\u51fa\u53d1\u4e86\u3002\u7f51\u4e0a\u641c\u4e86\u4e0b<code>GROUP_CONCAT<\/code>\u6570\u636e\u622a\u65ad\u7684\u95ee\u9898\uff0c\u7b54\u6848\u90fd\u6307\u5411\u4e86<code>group_concat_max_len<\/code>\u8fd9\u4e2a\u53c2\u6570\uff0c\u5b83\u7684\u9ed8\u8ba4\u503c\u6b63\u597d\u662f1024\u3002\u53ef\u4ee5\u76f4\u63a5\u5728\u6570\u636e\u5e93\u4e2d\u901a\u8fc7\u4e0b\u9762\u7684\u547d\u4ee4\u67e5\u770b\u8fd9\u4e2a\u9ed8\u8ba4\u503c\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c\">mysql<\/span><span class=\"nv\">&gt;<\/span><span class=\"c\"> show variables like &#39;group_concat_max_len&#39;;<\/span>\n<span class=\"nb\">+----------------------+-------+<\/span>\n<span class=\"c\">| Variable_name        | Value |<\/span>\n<span class=\"nb\">+----------------------+-------+<\/span>\n<span class=\"c\">| group_concat_max_len | 1024  |<\/span>\n<span class=\"nb\">+----------------------+-------+<\/span>\n<span class=\"c\">1 row in set (0<\/span><span class=\"nt\">.<\/span><span class=\"c\">00 sec)<\/span>\n\n<span class=\"c\">mysql<\/span><span class=\"nv\">&gt;<\/span>\n<\/code><\/pre><\/div>\n\n<p><a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/server-system-variables.html#sysvar_group_concat_max_len\" title=\"\u70b9\u51fb\u67e5\u770b\">MySQL\u5b98\u65b9\u624b\u518c<\/a>\u5bf9\u5b83\u7684\u5b9a\u4e49\u662f<code>The maximum permitted result length in bytes for the GROUP_CONCAT() function.<\/code>\uff0c\u4e5f\u5c31\u662f\u5b83\u9650\u5236\u4e86<code>GROUP_CONCAT<\/code>\u6570\u636e\u7684\u957f\u5ea6\u3002<\/p>\n<h4>2 \u89e3\u51b3\u95ee\u9898<\/h4>\n<p>\u53ea\u8981\u8c03\u6574<code>group_concat_max_len<\/code>\u5230\u6700\u5927\u503c\u5c31\u884c\u4e86\uff0c\u5b98\u65b9\u5728MySQL5.7\u7684<a href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/server-system-variables.html#sysvar_group_concat_max_len\" title=\"\u70b9\u51fb\u67e5\u770b\">\u624b\u518c<\/a>\u4e2d\u7ed9\u51fa\u4e86\u5982\u4e0b\u5b9a\u4e49\uff1a<\/p>\n<p><img alt=\"MySQL5.7\u624b\u518c\u5173\u4e8egroup_concat_max_len\u7684\u8bf4\u660e\" src=\"https:\/\/cdn.typecodes.com\/2018\/03\/group_concat_max_len_2.png\" title=\"MySQL5.7\u624b\u518c\u5173\u4e8egroup_concat_max_len\u7684\u8bf4\u660e\"><\/p>\n<p>\u7531\u4e8eBZ\u7684\u6d4b\u8bd5\u865a\u62df\u673aMySQL5.7.19\u662f64\u4f4d\u7684\uff0c\u6240\u4ee5\u53ef\u4ee5\u901a\u8fc7\u4e0b\u9762\u8fd9\u4e24\u79cd\u65b9\u6cd5\u914d\u7f6e\u597d<code>group_concat_max_len<\/code>\u4e3a\u6700\u5927\u503c<code>18446744073709551615<\/code>\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">####<\/span><span class=\"w\"> <\/span><span class=\"n\">\u65b9\u6cd5\u4e00<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">\u4fee\u6539MySQL\u914d\u7f6e\u6587\u4ef6my<\/span><span class=\"p\">.<\/span><span class=\"n\">cnf<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u5728<\/span><span class=\"o\">[<\/span><span class=\"n\">mysqld<\/span><span class=\"o\">]<\/span><span class=\"n\">\u8282\u70b9\u4e2d\u6dfb\u52a0<\/span>\n<span class=\"n\">group_concat_max_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">18446744073709551615<\/span>\n\n<span class=\"err\">####<\/span><span class=\"w\"> <\/span><span class=\"n\">\u65b9\u6cd5\u4e8c<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">\u76f4\u63a5\u63a7\u5236\u53f0\u4e0a\u8bbe\u7f6e\u7acb\u5373\u751f\u6548<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"err\">\u3010<\/span><span class=\"n\">\u5fc5\u987b\u64cd\u4f5c<\/span><span class=\"err\">\u3011<\/span><span class=\"n\">\u66f4\u6539\u5168\u5c40\u914d\u7f6e<\/span><span class=\"o\">----<\/span>\n<span class=\"k\">SET<\/span><span class=\"w\"> <\/span><span class=\"k\">GLOBAL<\/span><span class=\"w\"> <\/span><span class=\"n\">group_concat_max_len<\/span><span class=\"o\">=<\/span><span class=\"mi\">18446744073709551615<\/span><span class=\"p\">;<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"err\">\u3010<\/span><span class=\"n\">\u53ef\u9009\u64cd\u4f5c<\/span><span class=\"err\">\u3011<\/span><span class=\"n\">\u4f7f\u914d\u7f6e\u5728\u5f53\u524d\u4f1a\u8bdd\u4e2d\u4e5f\u7acb\u5373\u751f\u6548<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u5176\u5b83\u5df2\u7ecf\u767b\u5f55\u7684\u4f1a\u8bdd\u7ec8\u7aef\u9700\u8981\u91cd\u542f\u751f\u6548<\/span><span class=\"o\">----<\/span>\n<span class=\"k\">SET<\/span><span class=\"w\"> <\/span><span class=\"k\">SESSION<\/span><span class=\"w\"> <\/span><span class=\"n\">group_concat_max_len<\/span><span class=\"o\">=<\/span><span class=\"mi\">18446744073709551615<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3 \u6d4b\u8bd5\u6548\u679c<\/h4>\n<p>\u8fd9\u91cc\u91c7\u7528\u7684\u662f\u7b2c\u4e8c\u79cd\u65b9\u6cd5\uff0c\u901a\u8fc7\u6267\u884c<code>SELECT LENGTH(GROUP_CONCAT(Fremark)) FROM account;<\/code>\u7ed3\u679c\u7684\u5bf9\u6bd4\uff0c\u53ef\u4ee5\u53d1\u73b0\u5df2\u7ecf\u6210\u529f\u89e3\u51b3\u4e86MySQL5.7\u4e2d\u4f7f\u7528GROUP_CONCAT\u6570\u636e\u88ab\u622a\u65ad\u7684\u95ee\u9898\u3002<\/p>\n<p><img alt=\"MySQL5.7\u4e2d\u4f7f\u7528GROUP_CONCAT\u6570\u636e\u88ab\u622a\u65ad\u7684\u95ee\u9898\" src=\"https:\/\/cdn.typecodes.com\/2018\/03\/group_concat_max_len_1.png\" title=\"MySQL5.7\u4e2d\u4f7f\u7528GROUP_CONCAT\u6570\u636e\u88ab\u622a\u65ad\u7684\u95ee\u9898\"><\/p>","category":[{"@attributes":{"term":"database"}},{"@attributes":{"term":"mysql"}}]},{"title":"\u5206\u5e03\u5f0f\u7cfb\u7edf\uff1a\u4e00\u81f4\u6027hash\u7b97\u6cd5\u7684\u5e94\u7528","link":{"@attributes":{"href":"https:\/\/typecodes.com\/python\/consistenthashdistributed1.html","rel":"alternate"}},"published":"2018-02-17T00:13:00+08:00","updated":"2018-02-17T00:13:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2018-02-17:\/python\/consistenthashdistributed1.html","summary":"<p>\u524d\u6bb5\u65f6\u95f4\u5728\u4e86\u89e3\u5206\u5e03\u5f0f\uff0c\u53d1\u73b0firefoxbug\u5728\u535a\u5ba2\u4e2d\u5199\u7684\u8fd9\u7bc7<a href=\"http:\/\/www.firefoxbug.com\/index.php\/archives\/2791\/\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u4e00\u81f4\u6027hash\u5728\u5206\u5e03\u5f0f\u7cfb\u7edf\u4e2d\u7684\u5e94\u7528\u300b<\/a>\u5bf9\u8fd9\u4e2a\u95ee\u9898\u8bf4\u660e\u5f97\u6bd4\u8f83\u6e05\u6670\u6613\u61c2\uff0c\u672c\u6587\u4e3b\u8981\u662f\u81ea\u5df1\u7684\u7406\u89e3\u548c\u5b9e\u8df5\u3002<\/p>\n<p>\u5728\u540e\u7aef\u4e00\u822c\u4f1a\u9047\u5230\u8fd9\u6837\u7684\u573a\u666f\uff1a\u968f\u7740\u5e94\u7528\u7cfb\u7edf\u7684\u8bbf\u95ee\u91cf\u6216\u8005DB\/\u6587\u4ef6\u5b58\u50a8\u7cfb\u7edf\u7684\u6570\u636e\u91cf\u589e\u5927\uff0c\u7cfb\u7edf\u7531\u4e8e\u8d1f\u8f7d\u589e\u5927\u800c\u51fa\u73b0\u54cd\u5e94\u5ef6\u8fdf\u751a\u81f3down\u6389\u7684\u60c5\u51b5\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u5f80\u5f80\u4f1a\u5bf9\u7cfb\u7edf\u91c7\u7528\u5782\u76f4\u6269\u5c55\u548c\u6c34\u5e73\u6269\u5c55\u7684\u67b6\u6784\u8bbe\u8ba1\uff0c\u800c\u5206\u5e03\u5f0f\u7cfb\u7edf\u6b63\u662f\u6c34\u5e73\u6269\u5c55\u67b6\u6784\u7684\u4e00\u79cd\u5e94\u7528\u5b9e\u8df5\u3002<\/p>\n","content":"<p>\u524d\u6bb5\u65f6\u95f4\u5728\u4e86\u89e3\u5206\u5e03\u5f0f\uff0c\u53d1\u73b0firefoxbug\u5728\u535a\u5ba2\u4e2d\u5199\u7684\u8fd9\u7bc7<a href=\"http:\/\/www.firefoxbug.com\/index.php\/archives\/2791\/\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u4e00\u81f4\u6027hash\u5728\u5206\u5e03\u5f0f\u7cfb\u7edf\u4e2d\u7684\u5e94\u7528\u300b<\/a>\u5bf9\u8fd9\u4e2a\u95ee\u9898\u8bf4\u660e\u5f97\u6bd4\u8f83\u6e05\u6670\u6613\u61c2\uff0c\u672c\u6587\u4e3b\u8981\u662f\u81ea\u5df1\u7684\u7406\u89e3\u548c\u5b9e\u8df5\u3002<\/p>\n<p>\u5728\u540e\u7aef\u4e00\u822c\u4f1a\u9047\u5230\u8fd9\u6837\u7684\u573a\u666f\uff1a\u968f\u7740\u5e94\u7528\u7cfb\u7edf\u7684\u8bbf\u95ee\u91cf\u6216\u8005DB\/\u6587\u4ef6\u5b58\u50a8\u7cfb\u7edf\u7684\u6570\u636e\u91cf\u589e\u5927\uff0c\u7cfb\u7edf\u7531\u4e8e\u8d1f\u8f7d\u589e\u5927\u800c\u51fa\u73b0\u54cd\u5e94\u5ef6\u8fdf\u751a\u81f3down\u6389\u7684\u60c5\u51b5\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u5f80\u5f80\u4f1a\u5bf9\u7cfb\u7edf\u91c7\u7528\u5782\u76f4\u6269\u5c55\u548c\u6c34\u5e73\u6269\u5c55\u7684\u67b6\u6784\u8bbe\u8ba1\uff0c\u800c\u5206\u5e03\u5f0f\u7cfb\u7edf\u6b63\u662f\u6c34\u5e73\u6269\u5c55\u67b6\u6784\u7684\u4e00\u79cd\u5e94\u7528\u5b9e\u8df5\u3002<\/p>\n\n\n<h4>1 \u5206\u5e03\u5f0f\u7cfb\u7edf\u8981\u6c42<\/h4>\n<p>\u5206\u5e03\u5f0f\u8bbe\u8ba1\u7684\u521d\u8877\u5c31\u662f\u4e3a\u4e86\u89e3\u51b3\u5355\u4e00\u670d\u52a1\u7aef\u8d1f\u8f7d\u8fc7\u5927\u7684\u95ee\u9898\uff0c\u6240\u4ee5\u5728\u5bf9\u7cfb\u7edf\u505a\u6c34\u5e73\u6269\u5c55\u540e\uff0c\u6570\u636e\u8981\u5c3d\u91cf\u5747\u5300\u5730\u5206\u5e03\u5728\u6bcf\u53f0\u670d\u52a1\u5668\u8282\u70b9\u7684\u4e0a\uff08\u5373\u4e0d\u4f1a\u51fa\u73b0\u70ed\u70b9\u6570\u636e\u8282\u70b9\uff09\u3002\u5176\u6b21\uff0c\u5982\u679c\u540e\u671f\u9700\u8981\u6269\u5bb9\u6216\u8005\u67d0\u4e00\u8282\u70b9\u53d1\u751f\u6545\u969c\u9700\u8981\u4ece\u96c6\u7fa4\u4e2d\u5254\u9664\uff0c\u90a3\u4e48\u5904\u7406\u540e\u7684\u5206\u5e03\u5f0f\u7cfb\u7edf\u5e94\u8be5\u505a\u5230\u5bf9\u5df2\u5b58\u50a8\u7684\u6570\u636e\u5f71\u54cd\u6700\u5c0f\uff0c\u964d\u4f4e\u6570\u636e\u8fc1\u79fb\u7684<code>\u6210\u672c<\/code>\u548c<code>\u98ce\u9669<\/code>\u3002<\/p>\n<h4>2 \u89e3\u51b3\u65b9\u6cd5<\/h4>\n<p>\u7531\u4e8e\u673a\u5668\u7684\u6570\u91cf\u4e0d\u53ef\u80fd\u662f\u65e0\u9650\u7684\uff0c\u6240\u4ee5\u6c34\u5e73\u6269\u5c55\u7684\u65f6\u5019\uff0c\u8981\u8003\u8651\u628a\u65e0\u9650\u7684\u6570\u636e\u901a\u8fc7\u4e00\u5b9a\u7684\u7b97\u6cd5<code>\u5e73\u8861\u3001\u6709\u5e8f\u3001\u6613\u6269\u5c55<\/code>\u5730\u5206\u5e03\u5728\u8fd9\u4e9b\u673a\u5668\u4e0a\u3002<\/p>\n<p>\u5e38\u89c1\u7684\u505a\u6cd5\u662f\u5229\u7528\u628a\u8981\u5904\u7406\u7684\u6570\u636e\u8fdb\u884c\u7f16\u53f7\uff0c\u7136\u540e\u5bf9\u673a\u5668\u7684\u6570\u636e\u8fdb\u884c<code>\u53d6\u6a21\u8fd0\u7b97<\/code>\u3002\u4f8b\u5982\uff0c\u5047\u8bbe\u670910\u4e2a\u6570\u636e\uff08\u7f16\u53f7\u4e3a0~9\uff09\uff0c\u673a\u5668\u6570\u91cf\u4e3a3\uff08\u7f16\u53f7\u4e3a0~2\uff09\uff0c\u90a3\u4e48\u6bcf\u4e2a\u6570\u636e\u7f16\u53f7\u5bf9\u673a\u5668\u65703\u53d6\u6a21\u540e\uff0c0\u53f7\u673a\u5668\u5b58\u653e\u4e86\u7f16\u53f7\u4e3a0,3,6,9\u7684\u6570\u636e\uff1b1\u53f7\u673a\u5668\u5b58\u4e86\u7f16\u53f7\u4e3a1,4,7\u7684\u6570\u636e\uff1b2\u53f7\u673a\u5668\u5b58\u653e\u4e86\u7f16\u53f7\u4e3a2,5,8\u7684\u6570\u636e\u3002<\/p>\n<p>\u53d6\u6a21\u7b97\u6cd5\u6bd4\u8f83\u7b80\u5355\uff0c\u4f46\u662f\u5f53\u67d0\u4e2a\u670d\u52a1\u5668\u8282\u70b9\u51fa\u73b0\u6545\u969c\u6216\u8005\u65b0\u589e\u8282\u70b9\u540e\uff0c\u9700\u8981\u5bf9\u5df2\u6709\u6570\u636e\u4f5c\u5927\u91cf\u7684\u8fc1\u79fb\u3002\u5728memcached\u5206\u5e03\u5f0f\u539f\u7406\u4e2d\u4ecb\u7ecd\u4e86<code>Consistent Hashing<\/code>\u7b97\u6cd5\uff0c\u5b83\u80fd\u8f83\u597d\u5730\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002<\/p>\n<p><img alt=\"\u5206\u5e03\u5f0f\u7cfb\u7edf\uff1a\u4e00\u81f4\u6027hash\u7b97\u6cd5\u7684\u5e94\u7528\" src=\"https:\/\/cdn.typecodes.com\/2018\/02\/consistenthashdistributed1_1.png\" title=\"\u5206\u5e03\u5f0f\u7cfb\u7edf\uff1a\u4e00\u81f4\u6027hash\u7b97\u6cd5\u7684\u5e94\u7528\"><\/p>\n<h4>3 \u4e00\u81f4\u6027\u54c8\u5e0c\u7b97\u6cd5\u539f\u7406<\/h4>\n<p>\u5982\u4e0a\u56fe\u6240\u793a\uff0cmemcached\u5206\u5e03\u5f0f\u63d0\u4f9b\u7684\u54c8\u5e0c\u7b97\u6cd5\u7684\u4e3b\u8981\u5904\u7406\u6d41\u7a0b\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4f7f\u7528\u7b97\u6cd5\u6c42\u51fa\u6bcf\u4e2amemcached\u670d\u52a1\u5668\u8282\u70b9<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">ip\u5730\u5740<\/span><span class=\"err\">\uff09<\/span><span class=\"n\">\u7684\u54c8\u5e0c\u503cx<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u5e76\u5c06\u5176\u5206\u914d\u52300<\/span><span class=\"err\">~<\/span><span class=\"mf\">2<\/span><span class=\"o\">^<\/span><span class=\"mf\">32<\/span><span class=\"n\">\u7684\u5706\u4e0a<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u503c\u57df<\/span><span class=\"err\">\uff09\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u7528\u540c\u6837\u7684\u65b9\u6cd5\u6c42\u51fa\u5b58\u50a8\u6570\u636e\u952e\u7684\u54c8\u5e0c\u503cy<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u5e76\u6620\u5c04\u5230\u5706\u4e0a<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6309\u987a\u65f6\u9488\u65b9\u5411\u67e5\u627e\u7b2c1\u4e2a\u6bd4y\u5927\u7684x<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u90a3\u4e48y\u5c31\u5206\u5e03\u5728x\u524d\u9762\u90a3\u4e2a\u8282\u70b9\u4e0a<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h4>4 \u793a\u4f8b\u7a0b\u5e8f<\/h4>\n<p>\u5728firefoxbug\u7684\u539f\u6587\u4e2d\u63d0\u4f9b\u4e86python2\u7684\u793a\u4f8b\u7a0b\u5e8f\uff0c\u8fd9\u91cc\u6539\u6210\u4e86python3\u3002\u6ce8\u610f\uff0c\u7a0b\u5e8f\u4e2d\u5bf9\u8fd94\u53f0\u673a\u5668\u90fd\u4f7f\u7528\u4e86\u865a\u62df\u8282\u70b9(<code>replicas<\/code>)\uff0c\u5b83\u53ef\u4ee5\u589e\u52a0\u6570\u636e\u5206\u5e03\u7684\u5747\u5300\u6027\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"c1\"># -*- coding: UTF-8 -*-<\/span>\n\n<span class=\"sd\">&#39;&#39;&#39;<\/span>\n<span class=\"sd\">FileName:      consistenthashdistributed1.sh<\/span>\n<span class=\"sd\">Description:   \u5206\u5e03\u5f0f\u7cfb\u7edf\uff1a\u4e00\u81f4\u6027hash\u7b97\u6cd5\u7684\u5e94\u7528<\/span>\n<span class=\"sd\">Simple Usage:  python consistenthashdistributed1.py [numbers of replicate]<\/span>\n<span class=\"sd\">Reference:     http:\/\/www.firefoxbug.com\/index.php\/archives\/2791\/<\/span>\n<span class=\"sd\">(c) 2018.02.17 vfhky https:\/\/typecodes.com\/python\/consistenthashdistributed1.html<\/span>\n<span class=\"sd\">&#39;&#39;&#39;<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">sys<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">hashlib<\/span>\n\n<span class=\"n\">CONTENT<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">&quot;&quot;&quot;Consistent hashing is a special kind of hashing such that when a hash table is resized and consistent hashing is used, only K\/n keys need to be remapped on average, where K is the number of keys, and n is the number of slots. In contrast, in most traditional hash tables, a change in the number of array slots causes nearly all keys to be remapped.&quot;&quot;&quot;<\/span>\n\n<span class=\"c1\"># \u6240\u6709\u673a\u5668\u5217\u8868<\/span>\n<span class=\"n\">SERVERS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n    <span class=\"s2\">&quot;192.168.1.1&quot;<\/span><span class=\"p\">,<\/span>\n    <span class=\"s2\">&quot;192.168.2.2&quot;<\/span><span class=\"p\">,<\/span>\n    <span class=\"s2\">&quot;192.168.3.3&quot;<\/span><span class=\"p\">,<\/span>\n    <span class=\"s2\">&quot;192.168.4.4&quot;<\/span>\n<span class=\"p\">]<\/span>\n\n\n<span class=\"k\">class<\/span> <span class=\"nc\">HashRing<\/span><span class=\"p\">(<\/span><span class=\"nb\">object<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">    <\/span><span class=\"sd\">&quot;&quot;&quot;Constructs.<\/span>\n<span class=\"sd\">    &quot;&quot;&quot;<\/span>\n    <span class=\"k\">def<\/span> <span class=\"fm\">__init__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">nodes<\/span><span class=\"o\">=<\/span><span class=\"kc\">None<\/span><span class=\"p\">,<\/span> <span class=\"n\">replicas<\/span><span class=\"o\">=<\/span><span class=\"mi\">3<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">        <\/span><span class=\"sd\">&quot;&quot;&quot;Manages a hash ring.<\/span>\n\n<span class=\"sd\">        `nodes` is a list of objects that have a proper __str__ representation.<\/span>\n<span class=\"sd\">        `replicas` indicates how many virtual points should be used pr. node,<\/span>\n<span class=\"sd\">        replicas are required to improve the distribution.<\/span>\n<span class=\"sd\">        &quot;&quot;&quot;<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">replicas<\/span> <span class=\"o\">=<\/span> <span class=\"n\">replicas<\/span>\n\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">ring<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">dict<\/span><span class=\"p\">()<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">_sorted_keys<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"n\">nodes<\/span><span class=\"p\">:<\/span>\n            <span class=\"k\">for<\/span> <span class=\"n\">node<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">nodes<\/span><span class=\"p\">:<\/span>\n                <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">add_node<\/span><span class=\"p\">(<\/span><span class=\"n\">node<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">add_node<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">node<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">        <\/span><span class=\"sd\">&quot;&quot;&quot;Adds a `node` to the hash ring (including a number of replicas).<\/span>\n<span class=\"sd\">        &quot;&quot;&quot;<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">replicas<\/span><span class=\"p\">):<\/span>\n            <span class=\"n\">key<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">gen_key<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;<\/span><span class=\"si\">%s<\/span><span class=\"s1\">:<\/span><span class=\"si\">%s<\/span><span class=\"s1\">&#39;<\/span> <span class=\"o\">%<\/span> <span class=\"p\">(<\/span><span class=\"n\">node<\/span><span class=\"p\">,<\/span> <span class=\"n\">i<\/span><span class=\"p\">))<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">ring<\/span><span class=\"p\">[<\/span><span class=\"n\">key<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">node<\/span>\n            <span class=\"c1\"># print(&quot;key=[%s]=[%s].&quot; %(key, node))<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">_sorted_keys<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">key<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">_sorted_keys<\/span><span class=\"o\">.<\/span><span class=\"n\">sort<\/span><span class=\"p\">()<\/span>\n        <span class=\"c1\">#print(&quot;%s&quot; %(self._sorted_keys))<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">remove_node<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">node<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">        <\/span><span class=\"sd\">&quot;&quot;&quot;Removes `node` from the hash ring and its replicas.<\/span>\n<span class=\"sd\">        &quot;&quot;&quot;<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">replicas<\/span><span class=\"p\">):<\/span>\n            <span class=\"n\">key<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">gen_key<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;<\/span><span class=\"si\">%s<\/span><span class=\"s1\">:<\/span><span class=\"si\">%s<\/span><span class=\"s1\">&#39;<\/span> <span class=\"o\">%<\/span> <span class=\"p\">(<\/span><span class=\"n\">node<\/span><span class=\"p\">,<\/span> <span class=\"n\">i<\/span><span class=\"p\">))<\/span>\n            <span class=\"k\">del<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">ring<\/span><span class=\"p\">[<\/span><span class=\"n\">key<\/span><span class=\"p\">]<\/span>\n            <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">_sorted_keys<\/span><span class=\"o\">.<\/span><span class=\"n\">remove<\/span><span class=\"p\">(<\/span><span class=\"n\">key<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">get_node<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">string_key<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">        <\/span><span class=\"sd\">&quot;&quot;&quot;Given a string key a corresponding node in the hash ring is returned.<\/span>\n\n<span class=\"sd\">        If the hash ring is empty, `None` is returned.<\/span>\n<span class=\"sd\">        &quot;&quot;&quot;<\/span>\n        <span class=\"k\">return<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">get_node_pos<\/span><span class=\"p\">(<\/span><span class=\"n\">string_key<\/span><span class=\"p\">)[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">get_node_pos<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">string_key<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">        <\/span><span class=\"sd\">&quot;&quot;&quot;Given a string key a corresponding node in the hash ring is returned<\/span>\n<span class=\"sd\">        along with it&#39;s position in the ring.<\/span>\n\n<span class=\"sd\">        If the hash ring is empty, (`None`, `None`) is returned.<\/span>\n<span class=\"sd\">        &quot;&quot;&quot;<\/span>\n        <span class=\"k\">if<\/span> <span class=\"ow\">not<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">ring<\/span><span class=\"p\">:<\/span>\n            <span class=\"k\">return<\/span> <span class=\"kc\">None<\/span><span class=\"p\">,<\/span> <span class=\"kc\">None<\/span>\n\n        <span class=\"n\">key<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">gen_key<\/span><span class=\"p\">(<\/span><span class=\"n\">string_key<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"n\">nodes<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">_sorted_keys<\/span>\n        <span class=\"n\">nodes_num<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">nodes<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"n\">nodes_num<\/span><span class=\"p\">):<\/span>\n            <span class=\"n\">node<\/span> <span class=\"o\">=<\/span> <span class=\"n\">nodes<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span>\n            <span class=\"k\">if<\/span> <span class=\"n\">key<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"n\">node<\/span><span class=\"p\">:<\/span>\n                <span class=\"k\">return<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">ring<\/span><span class=\"p\">[<\/span><span class=\"n\">node<\/span><span class=\"p\">],<\/span> <span class=\"n\">i<\/span>\n\n        <span class=\"c1\"># \u5bf9\u4e8ekey&gt;node\u8282\u70b9key\u7684\uff0c\u5168\u90e8\u843d\u5728\u7b2c1\u4e2akey\u5bf9\u5e94\u7684\u8282\u70b9(192.168.1.4)\u4e0a\uff0c\u8fd9\u6837\u5c31\u5f62\u6210\u4e861\u4e2a\u95ed\u73af\u3002<\/span>\n        <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">:<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] string_key=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] key=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] node=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">] self.ring[nodes[0]]=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">].<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">&quot;<\/span> <span class=\"o\">%<\/span><span class=\"p\">(<\/span><span class=\"vm\">__file__<\/span><span class=\"p\">,<\/span> <span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">_getframe<\/span><span class=\"p\">()<\/span><span class=\"o\">.<\/span><span class=\"n\">f_lineno<\/span><span class=\"p\">,<\/span> <span class=\"n\">string_key<\/span><span class=\"p\">,<\/span> <span class=\"n\">key<\/span><span class=\"p\">,<\/span> <span class=\"n\">node<\/span><span class=\"p\">,<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">ring<\/span><span class=\"p\">[<\/span><span class=\"n\">nodes<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]]))<\/span>\n        <span class=\"k\">return<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">ring<\/span><span class=\"p\">[<\/span><span class=\"n\">nodes<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]],<\/span> <span class=\"mi\">0<\/span>\n\n    <span class=\"k\">def<\/span> <span class=\"nf\">gen_key<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">key<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">        <\/span><span class=\"sd\">&quot;&quot;&quot;Given a string key it returns a long value,<\/span>\n<span class=\"sd\">        this long value represents a place on the hash ring.<\/span>\n\n<span class=\"sd\">        md5 is currently used because it mixes well.<\/span>\n<span class=\"sd\">        &quot;&quot;&quot;<\/span>\n        <span class=\"n\">m<\/span> <span class=\"o\">=<\/span> <span class=\"n\">hashlib<\/span><span class=\"o\">.<\/span><span class=\"n\">md5<\/span><span class=\"p\">()<\/span>\n        <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">update<\/span><span class=\"p\">(<\/span><span class=\"n\">key<\/span><span class=\"o\">.<\/span><span class=\"n\">encode<\/span><span class=\"p\">(<\/span><span class=\"s1\">&#39;utf-8&#39;<\/span><span class=\"p\">))<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">m<\/span><span class=\"o\">.<\/span><span class=\"n\">hexdigest<\/span><span class=\"p\">()<\/span>\n\n\n<span class=\"k\">def<\/span> <span class=\"nf\">consistent_hash<\/span><span class=\"p\">(<\/span><span class=\"n\">replicas<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">    <\/span><span class=\"sd\">&#39;&#39;&#39;docstring&#39;&#39;&#39;<\/span>\n    <span class=\"c1\"># \u6a21\u62df\u521d\u59cb\u5316\u6bcf\u5929\u673a\u5668\u7684db<\/span>\n    <span class=\"n\">database<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{}<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">s<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">SERVERS<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">database<\/span><span class=\"p\">[<\/span><span class=\"n\">s<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n\n    <span class=\"n\">hr<\/span> <span class=\"o\">=<\/span> <span class=\"n\">HashRing<\/span><span class=\"p\">(<\/span><span class=\"n\">SERVERS<\/span><span class=\"p\">,<\/span><span class=\"n\">replicas<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"k\">for<\/span> <span class=\"n\">w<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">CONTENT<\/span><span class=\"o\">.<\/span><span class=\"n\">split<\/span><span class=\"p\">():<\/span>\n        <span class=\"n\">database<\/span><span class=\"p\">[<\/span><span class=\"n\">hr<\/span><span class=\"o\">.<\/span><span class=\"n\">get_node<\/span><span class=\"p\">(<\/span><span class=\"n\">w<\/span><span class=\"p\">)]<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">w<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\"># \u6253\u5370\u6240\u6709\u7684\u8282\u70b9\u4e0b\u9762\u7684\u6570\u636e<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">node<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">database<\/span><span class=\"p\">:<\/span>\n        <span class=\"nb\">print<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">]=[<\/span><span class=\"si\">%s<\/span><span class=\"s2\">].<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">&quot;<\/span> <span class=\"o\">%<\/span><span class=\"p\">(<\/span><span class=\"n\">node<\/span><span class=\"p\">,<\/span> <span class=\"n\">database<\/span><span class=\"p\">[<\/span><span class=\"n\">node<\/span><span class=\"p\">]))<\/span>\n\n\n<span class=\"k\">if<\/span> <span class=\"vm\">__name__<\/span> <span class=\"o\">==<\/span> <span class=\"s1\">&#39;__main__&#39;<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"sd\">&#39;&#39;&#39;docstring&#39;&#39;&#39;<\/span>\n    <span class=\"n\">replicas<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">3<\/span>\n\n    <span class=\"k\">if<\/span> <span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">argv<\/span><span class=\"p\">)<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">1<\/span><span class=\"p\">:<\/span>\n        <span class=\"n\">replicas<\/span> <span class=\"o\">=<\/span> <span class=\"n\">long<\/span><span class=\"p\">(<\/span><span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">])<\/span>\n\n    <span class=\"k\">if<\/span><span class=\"p\">(<\/span> <span class=\"n\">replicas<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">3<\/span> <span class=\"ow\">or<\/span> <span class=\"n\">replicas<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">100000<\/span> <span class=\"p\">):<\/span>\n        <span class=\"nb\">print<\/span><span class=\"p\">(<\/span> <span class=\"s2\">&quot;Rreplicas should lower than 100000.&quot;<\/span> <span class=\"p\">)<\/span>\n        <span class=\"n\">sys<\/span><span class=\"o\">.<\/span><span class=\"n\">exit<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"n\">consistent_hash<\/span><span class=\"p\">(<\/span><span class=\"n\">replicas<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>5 \u6d4b\u8bd5<\/h4>\n<p>\u4e0a\u9762\u7a0b\u5e8f\u5728\u67e5\u627e\u843d\u5730\u8282\u70b9\u65f6\uff0c\u91c7\u7528\u7684\u662f<code>\u904d\u5386<\/code>\u6574\u4e2ahash\u5708\u4e0a\u7684\u503c\uff0c\u6240\u4ee5\u865a\u62df\u8282\u70b9\u4e0d\u5b9c\u8fc7\u5927\uff0c\u5426\u5219\u4f1a\u51fa\u73b0\u67e5\u627e\u65f6\u95f4\u8fc7\u957f\u7684\u95ee\u9898\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff0cBZ\u5728\u81ea\u5df1\u7684\u5355\u68381G\u5185\u5b58\u7684\u865a\u62df\u673a\u4e2d\u6d4b\u8bd5\uff0c\u53d1\u73b04\u4e2a\u8282\u70b9\u5982\u679c\u90fd\u670910000\u4e2a\u865a\u62df\u8282\u70b9\u65f6\u5728\u901f\u5ea6\u548c\u5747\u8861\u6027\u65b9\u9762\u90fd\u662f\u4e0d\u9519\u7684\u3002<\/p>\n<p><img alt=\"\u5206\u5e03\u5f0f\u7cfb\u7edf\uff1a\u4e00\u81f4\u6027hash\u7b97\u6cd5\u7684\u5e94\u7528\" src=\"https:\/\/cdn.typecodes.com\/2018\/02\/consistent_hash_python.png\" title=\"\u5206\u5e03\u5f0f\u7cfb\u7edf\uff1a\u4e00\u81f4\u6027hash\u7b97\u6cd5\u7684\u5e94\u7528\"><\/p>\n<h4>6 \u53c2\u8003\u6587\u7ae0<\/h4>\n<p><a href=\"https:\/\/www.cnblogs.com\/weixing\/p\/5522903.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aMemcached \u5206\u5e03\u5f0f\u7f13\u5b58\u5b9e\u73b0\u539f\u7406\u300b<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"python"}},{"@attributes":{"term":"hash"}},{"@attributes":{"term":"\u5206\u5e03\u5f0f"}}]},{"title":"\u4f7f\u7528shell\u811a\u672c\u89e3\u51b3Navicat\u5bfc\u51faexcel\u6570\u636e\u4e0d\u5168\u7684\u95ee\u9898","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/navicatxportoverflow1.html","rel":"alternate"}},"published":"2018-02-07T20:10:00+08:00","updated":"2018-02-07T20:10:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2018-02-07:\/linux\/navicatxportoverflow1.html","summary":"<p>\u6708\u672b\u9700\u8981\u5bf9\u7cfb\u7edf\u6ce8\u518c\u7528\u6237\u8fdb\u884c\u62a5\u8868\u7edf\u8ba1\uff0c\u5728\u4f7f\u7528Navicat\u4eceMySQL\u6570\u636e\u5e93\u4e2d\u5bfc\u51fa\u6570\u636e\u5230excel\u6587\u4ef6\u65f6\uff0c\u53d1\u73b0\u6700\u5927\u53ea\u80fd\u5bfc\u51fa\u4e3a65536\uff08\u7f8e\u597d\u7684\u6570\u5b57\uff09\u884c\u7684\u6570\u636e\u3002\u6309\u7406\u8bf4 Navicat\u5e94\u8be5\u662f\u4ece\u6570\u636e\u5e93\u4e2d\u8bfb\u53d6\u4e00\u6761\u8bb0\u5f55\u4f1a\u7acb\u5373\u5199\u5230excel\u6587\u4ef6\u4e2d\uff0c\u4e0d\u5e94\u8be5\u53ea\u8bfb\u53d665536\u8303\u56f4\u5185\u7684\u6570\u636e\u7136\u540e\u4e00\u6b21\u6027\u5199\u5230\u6587\u4ef6\u91cc\u9762\u3002<\/p>\n","content":"<p>\u6708\u672b\u9700\u8981\u5bf9\u7cfb\u7edf\u6ce8\u518c\u7528\u6237\u8fdb\u884c\u62a5\u8868\u7edf\u8ba1\uff0c\u5728\u4f7f\u7528Navicat\u4eceMySQL\u6570\u636e\u5e93\u4e2d\u5bfc\u51fa\u6570\u636e\u5230excel\u6587\u4ef6\u65f6\uff0c\u53d1\u73b0\u6700\u5927\u53ea\u80fd\u5bfc\u51fa\u4e3a65536\uff08\u7f8e\u597d\u7684\u6570\u5b57\uff09\u884c\u7684\u6570\u636e\u3002\u6309\u7406\u8bf4 Navicat\u5e94\u8be5\u662f\u4ece\u6570\u636e\u5e93\u4e2d\u8bfb\u53d6\u4e00\u6761\u8bb0\u5f55\u4f1a\u7acb\u5373\u5199\u5230excel\u6587\u4ef6\u4e2d\uff0c\u4e0d\u5e94\u8be5\u53ea\u8bfb\u53d665536\u8303\u56f4\u5185\u7684\u6570\u636e\u7136\u540e\u4e00\u6b21\u6027\u5199\u5230\u6587\u4ef6\u91cc\u9762\u3002<\/p>\n\n\n<h4>1 \u95ee\u9898\u8f6c\u6362<\/h4>\n<p>\u9274\u4e8eNavicat\u7684\u9650\u5236\uff0c\u53ea\u80fd\u60f3\u60f3\u5176\u5b83\u529e\u6cd5\u4e86\uff0c\u8fd9\u91cc\u9009\u62e9\u4f7f\u7528shell\u811a\u672c\u6765\u5904\u7406\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5728Navicat\u4e2d\u5bf9select\u51fa\u6765\u7684\u6570\u636e\u53f3\u952e\uff0c\u7136\u540e\u9009\u62e9<code>\u590d\u5236\u4e3a<\/code>-<code>\u5236\u8868\u7b26\u5206\u9694\u503c\uff08\u5b57\u6bb5\u540d\u548c\u6570\u636e\uff09<\/code>\u628aselect\u51fa\u6765\u7684\u6570\u636e\u7c98\u8d34\u5230\u4efb\u610f\u6587\u672c\u6587\u6863\u4e2d\u3002\u5982\u6b64\u5c31\u53ef\u4ee5\u901a\u8fc7shell\u811a\u672c\u5bf9\u8fd9\u4e2a\u6587\u672c\u6587\u6863\u8fdb\u884c\u5904\u7406\uff0c\u6700\u540e\u8f93\u51fa\u4e3aexcel\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528shell\u811a\u672c\u89e3\u51b3Navicat\u5bfc\u51faexcel\u6570\u636e\u4e0d\u5168\u7684\u95ee\u9898\" src=\"https:\/\/cdn.typecodes.com\/2018\/02\/linux_navicat_export_overflow1.png\" title=\"\u4f7f\u7528shell\u811a\u672c\u89e3\u51b3Navicat\u5bfc\u51faexcel\u6570\u636e\u4e0d\u5168\u7684\u95ee\u9898\"><\/p>\n<h4>2 \u811a\u672c\u4ee3\u7801<\/h4>\n<p>\u7a0b\u5e8f\u6bd4\u8f83\u7b80\u5355\uff0c\u5904\u7406\u65f6\u6709\u4e24\u4e2a\u9700\u8981\u6ce8\u610f\u7684\u5730\u65b9\u3002\u7b2c\u4e00\uff0cexcel\u4f1a\u628a\u8f83\u5927\u7684\u6570\u5b57\u91c7\u7528\u79d1\u5b66\u8bb0\u6570\u6cd5\u663e\u793a\uff0c\u53ef\u4ee5\u91c7\u7528\u5728\u6570\u5b57\u524d\u9762\u6dfb\u52a0<code>`<\/code>\u53cd\u5f15\u53f7\u89e3\u51b3\uff1b\u7b2c\u4e8c\uff0c\u4e00\u822cWindows\u4e0b\u7684\u7f16\u7801\u4e3agbk\uff0c\u5982\u679cLinux\u73af\u5883\u9ed8\u8ba4\u7684\u662futf-8\u7684\u683c\u5f0f\uff0c\u90a3\u4e48shell\u6700\u540e\u751f\u6210\u7684excel\u6587\u4ef6\u4e2d\u7684\u6c49\u5b57\u662f\u4e71\u7801\u7684\uff0c\u6240\u4ee5\u6700\u597d\u901a\u8fc7<code>iconv<\/code>\u5de5\u5177\u63d0\u524d\u628a\u6587\u4ef6\u8f6c\u6362\u6210gbk\u683c\u5f0f\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      navicatxportoverflow1.sh<\/span>\n<span class=\"c1\"># Description:   \u4f7f\u7528shell\u811a\u672c\u89e3\u51b3Navicat\u5bfc\u51faexcel\u6570\u636e\u4e0d\u5168\u7684\u95ee\u9898<\/span>\n<span class=\"c1\"># Simple Usage:  sh navicatxportoverflow1.sh file_name.txt<\/span>\n<span class=\"c1\"># (c) 2018.02.07 vfhky https:\/\/typecodes.com\/linux\/navicatxportoverflow1.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/filehandle\/navicatxportoverflow1.sh<\/span>\n\n\n<span class=\"nv\">dst_file<\/span><span class=\"o\">=<\/span><span class=\"nv\">$1<\/span>\n<span class=\"nv\">dst_ile_name<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>basename<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_file<\/span><span class=\"si\">}<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name<\/span><span class=\"p\">%.*<\/span><span class=\"si\">}<\/span>\n\n\ncp<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_file<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"si\">}<\/span>.tmp\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/\\t\/,\/g&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"si\">}<\/span>.tmp\nawk<span class=\"w\"> <\/span>-F<span class=\"s1\">&#39;,&#39;<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;{print $1&quot;,`&quot;$2&quot;,&quot;$3}&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"si\">}<\/span>.tmp<span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"si\">}<\/span>.tmp1\niconv<span class=\"w\"> <\/span>-f<span class=\"w\"> <\/span><span class=\"s2\">&quot;utf-8&quot;<\/span><span class=\"w\"> <\/span>-t<span class=\"w\"> <\/span><span class=\"s2\">&quot;gbk&quot;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"si\">}<\/span>.tmp1<span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"si\">}<\/span>.csv\nrm<span class=\"w\"> <\/span>-rf<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"si\">}<\/span>.tmp<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">dst_ile_name_prefix<\/span><span class=\"si\">}<\/span>.tmp1\n\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"navicat"}},{"@attributes":{"term":"mysql"}}]},{"title":"\u4fee\u590dCentOS7\u5347\u7ea7Python\u52303.6\u7248\u672c\u540eyum\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898\uff08\u7eed\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/python3caseyumbug2.html","rel":"alternate"}},"published":"2018-01-28T18:35:00+08:00","updated":"2018-01-28T18:35:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2018-01-28:\/linux\/python3caseyumbug2.html","summary":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/python3caseyumbug.html\" title=\"\u300a\u4fee\u590dCentOS7\u5347\u7ea7Python\u52303.6\u7248\u672c\u540eyum\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898\u300b\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u4e2d\u901a\u8fc7\u91cd\u88c5yum\u89e3\u51b3\u4e86\u65e0\u6cd5\u4f7f\u7528Python3\u89e3\u91ca\u6267\u884c\u7684\u95ee\u9898\uff0c\u4f46\u662f<code>yum -y update<\/code>\u540e\u53c8\u4f1a\u4f7f\u5f97\u4e4b\u524d\u8bbe\u7f6e\u7684\u8f6f\u94fe\u63a5\uff08<code>ln -s \/usr\/local\/bin\/python3.6 \/usr\/bin\/python<\/code>\uff09\u88ab\u66ff\u6362\u6210python2.7\u3002\u4e3a\u4e86\u628aPython3\u8bbe\u7f6e\u4e3a\u9ed8\u8ba4py\u89e3\u91ca\u5668\u7684\u540c\u65f6\u4fdd\u8bc1yum\u80fd\u6b63\u5e38\u4f7f\u7528\uff0c\u8fd8\u5f97\u4eceyum\u76f8\u5173\u811a\u672c\u4e0b\u624b\u3002<\/p>\n<p>\u4e0d\u96be\u731c\u6d4b\u8fd9\u4e9b\u811a\u672c\u90fd\u662f\u4f7f\u7528py2\u8bed\u6cd5\uff0c\u5982\u679c\u80fd\u628a\u5b83\u4eec\u58f0\u660e\u7684\u89e3\u91ca\u5668\u6539\u6210python2\uff0c\u90a3\u4e48\u95ee\u9898\u5c31\u8fce\u5203\u800c\u89e3\u4e86\u3002\u641c\u7d22\u4e86\u4e00\u4e0b\uff0c\u53d1\u73b0\u5728<code>\/usr\/bin\/<\/code>\u76ee\u5f55\u67097\u4e2ayum\u76f8\u5173\u7684\u811a\u672c\uff0c\u518d\u52a0\u4e0a\u524d\u6587\u63d0\u5230\u7684<code>\/usr\/libexec\/urlgrabber-ext-down<\/code>\u51718\u4e2a\u3002<\/p>\n<p><img alt=\"yum\u76f8\u5173\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/python3caseyumbug2_1.png\" title=\"yum\u76f8\u5173\u811a\u672c\"><\/p>\n","content":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/python3caseyumbug.html\" title=\"\u300a\u4fee\u590dCentOS7\u5347\u7ea7Python\u52303.6\u7248\u672c\u540eyum\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898\u300b\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u4e2d\u901a\u8fc7\u91cd\u88c5yum\u89e3\u51b3\u4e86\u65e0\u6cd5\u4f7f\u7528Python3\u89e3\u91ca\u6267\u884c\u7684\u95ee\u9898\uff0c\u4f46\u662f<code>yum -y update<\/code>\u540e\u53c8\u4f1a\u4f7f\u5f97\u4e4b\u524d\u8bbe\u7f6e\u7684\u8f6f\u94fe\u63a5\uff08<code>ln -s \/usr\/local\/bin\/python3.6 \/usr\/bin\/python<\/code>\uff09\u88ab\u66ff\u6362\u6210python2.7\u3002\u4e3a\u4e86\u628aPython3\u8bbe\u7f6e\u4e3a\u9ed8\u8ba4py\u89e3\u91ca\u5668\u7684\u540c\u65f6\u4fdd\u8bc1yum\u80fd\u6b63\u5e38\u4f7f\u7528\uff0c\u8fd8\u5f97\u4eceyum\u76f8\u5173\u811a\u672c\u4e0b\u624b\u3002<\/p>\n<p>\u4e0d\u96be\u731c\u6d4b\u8fd9\u4e9b\u811a\u672c\u90fd\u662f\u4f7f\u7528py2\u8bed\u6cd5\uff0c\u5982\u679c\u80fd\u628a\u5b83\u4eec\u58f0\u660e\u7684\u89e3\u91ca\u5668\u6539\u6210python2\uff0c\u90a3\u4e48\u95ee\u9898\u5c31\u8fce\u5203\u800c\u89e3\u4e86\u3002\u641c\u7d22\u4e86\u4e00\u4e0b\uff0c\u53d1\u73b0\u5728<code>\/usr\/bin\/<\/code>\u76ee\u5f55\u67097\u4e2ayum\u76f8\u5173\u7684\u811a\u672c\uff0c\u518d\u52a0\u4e0a\u524d\u6587\u63d0\u5230\u7684<code>\/usr\/libexec\/urlgrabber-ext-down<\/code>\u51718\u4e2a\u3002<\/p>\n<p><img alt=\"yum\u76f8\u5173\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/python3caseyumbug2_1.png\" title=\"yum\u76f8\u5173\u811a\u672c\"><\/p>\n\n\n<h4>1 \u89e3\u51b3\u65b9\u6cd5<\/h4>\n<p>\u8fd9\u91cc\u76f4\u63a5\u4f7f\u7528shell\u811a\u672c\u6765\u628a\u8fd98\u4e2a\u811a\u672c\u6587\u4ef6\u4e2d\u7684<code>\/usr\/bin\/python<\/code>\u66ff\u6362\u6210<code>\/usr\/bin\/python2<\/code>\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      python3caseyumbug2.sh<\/span>\n<span class=\"c1\"># Description:   \u4fee\u590dCentOS7\u5347\u7ea7Python\u52303.6\u7248\u672c\u540eyum\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898\uff08\u7eed\uff09<\/span>\n<span class=\"c1\"># Simple Usage:  sh python3caseyumbug2.sh<\/span>\n<span class=\"c1\"># (c) 2018.01.28 vfhky https:\/\/typecodes.com\/linux\/python3caseyumbug2.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/filehandle\/python3caseyumbug2.sh<\/span>\n\n\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;begin handle \/usr\/bin\/yum*.&quot;<\/span>\n<span class=\"nv\">ALL_YUM_FILES<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>find<span class=\"w\"> <\/span>\/usr\/bin\/<span class=\"w\"> <\/span>-type<span class=\"w\"> <\/span>f<span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;yum*&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>SINGLE_FILE<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">ALL_YUM_FILES<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/#!\\\/usr\\\/bin\\\/python$\/#!\\\/usr\\\/bin\\\/python2\/&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">SINGLE_FILE<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">done<\/span>\n\n\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;begin handle \/usr\/libexec\/urlgrabber-ext-down.&quot;<\/span>\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/\\\/usr\\\/bin\\\/python$\/\\\/usr\\\/bin\\\/python2\/&#39;<\/span><span class=\"w\"> <\/span>\/usr\/libexec\/urlgrabber-ext-down\n\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;done.&quot;<\/span>\n\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u540e\u8bb0<\/h4>\n<p>\u901a\u8fc7\u4e0a\u9762\u7684\u811a\u672c\u5904\u7406\u540e\uff0c\u5373\u4f7fCentOS7\u88ab\u8bbe\u7f6e\u6210\u9ed8\u8ba4\u4f7f\u7528Python3.6\u6765\u6267\u884cpy\u811a\u672c\uff0cyum\u5de5\u5177\u4e5f\u4e0d\u4f1a\u53d7\u5230\u5f71\u54cd\u4e86\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"yum"}},{"@attributes":{"term":"python"}}]},{"title":"\u4fee\u590dCentOS7\u5347\u7ea7Python\u52303.6\u7248\u672c\u540eyum\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/python3caseyumbug.html","rel":"alternate"}},"published":"2018-01-25T23:01:00+08:00","updated":"2018-01-25T23:01:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2018-01-25:\/linux\/python3caseyumbug.html","summary":"<p>\u4e4b\u524d\u628a\u73b0\u6709\u8fd9\u53f0\u963f\u91ccCentOS7.2\u7cfb\u7edf\u7684Python2.7.5\u5347\u7ea7\u6210Python3.6\u540e\uff0cyum\u5de5\u5177\u5c31\u4e0d\u80fd\u4f7f\u7528\u4e86\u3002\u5f53\u65f6\u7f51\u4e0a\u67e5\u4e86\u4e0b\u539f\u56e0\uff0c\u90fd\u8bf4\u662fPython3\u5bfc\u81f4\u7684\uff0c\u4f46\u662f\u8bd5\u4e86\u5f88\u591a\u79cd\u65b9\u6cd5\u8fd8\u662f\u6ca1\u89e3\u51b3\uff0c\u540e\u9762\u4e5f\u5c31\u4e00\u76f4\u6ca1\u7ba1\u4e86\u3002\u56e0\u4e3a\u6700\u8fd1\u8981\u5f04\u4e00\u4e2aNodejs\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\uff0c\u9700\u8981\u7528yum\u5b89\u88c5\u4e00\u4e9b\u5f00\u53d1\u5de5\u5177\uff0c\u5c31\u4e0d\u5f97\u4e0d\u4fee\u590d\u8fd9\u4e2a\u95ee\u9898\u4e86\u3002<\/p>\n<p><img alt=\"CentOS7.2\u4e2dPython3\u7248\u672c\u5bfc\u81f4yum\u4e0d\u80fd\u4f7f\u7528\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/centos7.2_yum_python3.6_python2.7.png\" title=\"CentOS7.2\u4e2dPython3\u7248\u672c\u5bfc\u81f4yum\u4e0d\u80fd\u4f7f\u7528\"><\/p>\n","content":"<p>\u4e4b\u524d\u628a\u73b0\u6709\u8fd9\u53f0\u963f\u91ccCentOS7.2\u7cfb\u7edf\u7684Python2.7.5\u5347\u7ea7\u6210Python3.6\u540e\uff0cyum\u5de5\u5177\u5c31\u4e0d\u80fd\u4f7f\u7528\u4e86\u3002\u5f53\u65f6\u7f51\u4e0a\u67e5\u4e86\u4e0b\u539f\u56e0\uff0c\u90fd\u8bf4\u662fPython3\u5bfc\u81f4\u7684\uff0c\u4f46\u662f\u8bd5\u4e86\u5f88\u591a\u79cd\u65b9\u6cd5\u8fd8\u662f\u6ca1\u89e3\u51b3\uff0c\u540e\u9762\u4e5f\u5c31\u4e00\u76f4\u6ca1\u7ba1\u4e86\u3002\u56e0\u4e3a\u6700\u8fd1\u8981\u5f04\u4e00\u4e2aNodejs\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\uff0c\u9700\u8981\u7528yum\u5b89\u88c5\u4e00\u4e9b\u5f00\u53d1\u5de5\u5177\uff0c\u5c31\u4e0d\u5f97\u4e0d\u4fee\u590d\u8fd9\u4e2a\u95ee\u9898\u4e86\u3002<\/p>\n<p><img alt=\"CentOS7.2\u4e2dPython3\u7248\u672c\u5bfc\u81f4yum\u4e0d\u80fd\u4f7f\u7528\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/centos7.2_yum_python3.6_python2.7.png\" title=\"CentOS7.2\u4e2dPython3\u7248\u672c\u5bfc\u81f4yum\u4e0d\u80fd\u4f7f\u7528\"><\/p>\n\n\n<h4>1 yum\u5de5\u5177\u62a5\u9519\u60c5\u51b5<\/h4>\n<p>\u76f4\u63a5\u6267\u884c<code>yum<\/code>\u547d\u4ee4\u5c31\u4f1a\u63d0\u793a<code>\/usr\/bin\/yum<\/code>\u6587\u4ef6\u7b2c34\u884c\u6709\u9519\u8bef\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span>\n<span class=\"nx\">File<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\/usr\/bin\/yum&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">line<\/span><span class=\"w\"> <\/span><span class=\"mi\">34<\/span>\n\n<span class=\"w\">    <\/span><span class=\"o\">^<\/span>\n<span class=\"nx\">SyntaxError<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">EOF<\/span><span class=\"w\"> <\/span><span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"nx\">scanning<\/span><span class=\"w\"> <\/span><span class=\"nx\">triple<\/span><span class=\"o\">-<\/span><span class=\"nx\">quoted<\/span><span class=\"w\"> <\/span><span class=\"kt\">string<\/span><span class=\"w\"> <\/span><span class=\"nx\">literal<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u4f46\u662fvim\u67e5\u770b\u8fd9\u4e2a\u6587\u4ef6\u6839\u672c\u6ca1\u6709\u8fd9\u4e00\u884c\uff1a<\/p>\n<p><img alt=\"\/usr\/bin\/yum\u9519\u8bef\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/centos7.2_yum_error_3.png\" title=\"\/usr\/bin\/yum\u9519\u8bef\"><\/p>\n<h4>2 \u89e3\u51b3\u65b9\u6cd5<\/h4>\n<p>\u7531\u4e8e\u627e\u4e0d\u5230\u62a5\u9519\u7684\u4f4d\u7f6e\uff0c\u53ea\u80fd\u8003\u8651\u91cd\u65b0\u5b89\u88c5yum\u4e86\u3002<\/p>\n<p>2.1\u3001\u4e0b\u8f7dyum\u5b89\u88c5\u5305<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/yum.baseurl.org\/download\/3.4\/yum-3.4.3.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># tar -zxf yum-3.4.3.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cd yum-3.4.3\/<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u63a5\u7740\u4f7f\u7528<code>python2 yummain.py install yum<\/code>\u547d\u4ee4\uff08\u8fd8\u662f\u4e0d\u80fd\u4f7f\u7528python3\u6765\u6267\u884c\uff09\u91cd\u65b0\u5b89\u88c5yum\u5de5\u5177\uff1a<\/p>\n<p><img alt=\"\u91cd\u65b0\u5b89\u88c5yummain.py\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/python2_yummain_install_yum_1.png\" title=\"\u91cd\u65b0\u5b89\u88c5yummain.py\"><\/p>\n<p>2.2\u3001\u6267\u884c<code>yum<\/code>\u547d\u4ee4<\/p>\n<p>\u5c1d\u8bd5\u6267\u884c<code>yum<\/code>\u547d\u4ee4\uff0c\u5728<code>\/usr\/bin\/yum<\/code>\u6587\u4ef6\u7684\u7b2c30\u884c\u62a5\u9519\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.4.3<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span>\n<span class=\"nx\">File<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\/usr\/bin\/yum&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">line<\/span><span class=\"w\"> <\/span><span class=\"mi\">30<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">except<\/span><span class=\"w\"> <\/span><span class=\"nx\">KeyboardInterrupt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">e<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">                            <\/span><span class=\"o\">^<\/span>\n<span class=\"nx\">SyntaxError<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">invalid<\/span><span class=\"w\"> <\/span><span class=\"nx\">syntax<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.4.3<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u663e\u7136\u4e0a\u9762\u7684<code>except<\/code>\u8bed\u53e5\u662fpython2\u7684\u5199\u6cd5\uff0c\u5f53\u7136\u4e0d\u80fd\u4f7f\u7528\u9ed8\u8ba4\u7684Python3\u547d\u4ee4\u6765\u6267\u884c\u4e86\u3002\u4e8e\u662f\u628a\u8fd9\u4e2a\u6587\u4ef6\u7b2c1\u884c\u7684<code>#!\/usr\/bin\/python<\/code>\u66ff\u6362\u6210<code>#!\/usr\/bin\/python2<\/code>\u3002<\/p>\n<p><img alt=\"\u4fee\u6539\/usr\/bin\/yum\u9519\u8bef\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/centos7.2_yum_error_1.png\" title=\"\u4fee\u6539\/usr\/bin\/yum\u9519\u8bef\"><\/p>\n<p>2.2\u3001\u7ee7\u7eed\u6267\u884c<code>yum<\/code>\u547d\u4ee4<\/p>\n<p>\u5c1d\u8bd5\u6267\u884c<code>yum -y update<\/code>\u547d\u4ee4\u66f4\u65b0CentOS\u7cfb\u7edf\uff0c\u7ed3\u679c\u5728\u6587\u4ef6<code>\/usr\/libexec\/urlgrabber-ext-down<\/code>\u7b2c28\u884c\u5904\u8fd8\u662f\u62a5<code>SyntaxError: invalid syntax<\/code>\u7684\u9519\u8bef\u3002<\/p>\n<p><img alt=\"\u4fee\u6539urlgrabber-ext-down\u9519\u8bef\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/centos7.2_yum_error_2.png\" title=\"\u4fee\u6539urlgrabber-ext-down\u9519\u8bef\"><\/p>\n<p>\u539f\u56e0\u662f\u4e00\u6837\u7684\uff0c\u6240\u4ee5\u8981\u4e48\u628a<code>\/usr\/libexec\/urlgrabber-ext-down<\/code>\u6587\u4ef6\u4e2d\u6240\u6709\u7684except\u5199\u6cd5\u6539\u6210Python3\uff0c\u8981\u4e48\u4fee\u6539\u7b2c1\u884c\u7684\u89e3\u91ca\u5668\u58f0\u660e\uff0c\u663e\u7136\u7b2c2\u79cd\u65b9\u6cd5\u66f4\u65b0\u7b80\u5355\u6709\u6548\u3002<\/p>\n<h4>3 \u89e3\u51b3\u5b8c\u6bd5<\/h4>\n<p>\u5230\u6b64\uff0c\u53ef\u4ee5\u6109\u5feb\u5730\u4f7f\u7528<code>yum -y update<\/code>\u547d\u4ee4\u66f4\u65b0CentOS\u7cfb\u7edf\uff0c\u7136\u540e\u505a\u5f00\u53d1\u4e86\uff01<\/p>\n<p><img alt=\"\u4fee\u590dCentOS7\u5347\u7ea7Python\u52303.6\u7248\u672c\u540eyum\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898\" src=\"https:\/\/cdn.typecodes.com\/2018\/01\/yum_y_update_sucess.png\" title=\"\u4fee\u590dCentOS7\u5347\u7ea7Python\u52303.6\u7248\u672c\u540eyum\u4e0d\u80fd\u4f7f\u7528\u7684\u95ee\u9898\"><\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"yum"}},{"@attributes":{"term":"python"}}]},{"title":"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff08\u4e09\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite3.html","rel":"alternate"}},"published":"2017-10-29T22:23:00+08:00","updated":"2017-10-29T22:23:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-10-29:\/cseries\/linuxmutilprocesswrite3.html","summary":"<p>\u672c\u6587\u662f\u8fd9\u300aLinux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u300b\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e09\u7bc7\uff0c<a href=\"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite2.html\" title=\"\u67e5\u770b\u539f\u6587\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u6f14\u793a\u4e86\u4e24\u4e2a\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\uff08\u7236\u5b50\u8fdb\u7a0b\uff09\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u60c5\u5f62\uff0c\u5e76\u5f97\u51fa\u4e86<code>\u6570\u636e\u53ea\u4f1a\u9519\u4e71\u4f46\u4e0d\u4f1a\u8986\u76d6<\/code>\u7684\u7ed3\u8bba\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u5728<a href=\"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite1.html\" title=\"\u67e5\u770b\u539f\u6587\">\u7b2c\u4e00\u7bc7\u6587\u7ae0<\/a>\u7684\u57fa\u7840\u4e0a\uff0c\u52a0\u4e0a\u4e0a\u7bc7\u6587\u7ae0\u7684\u5206\u6790\uff0c\u66f4\u6df1\u4e0b\u4e00\u6b65\u5730\u63a2\u7d22\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u95ee\u9898\u3002<\/p>\n","content":"<p>\u672c\u6587\u662f\u8fd9\u300aLinux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u300b\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e09\u7bc7\uff0c<a href=\"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite2.html\" title=\"\u67e5\u770b\u539f\u6587\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u6f14\u793a\u4e86\u4e24\u4e2a\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\uff08\u7236\u5b50\u8fdb\u7a0b\uff09\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u60c5\u5f62\uff0c\u5e76\u5f97\u51fa\u4e86<code>\u6570\u636e\u53ea\u4f1a\u9519\u4e71\u4f46\u4e0d\u4f1a\u8986\u76d6<\/code>\u7684\u7ed3\u8bba\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u5728<a href=\"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite1.html\" title=\"\u67e5\u770b\u539f\u6587\">\u7b2c\u4e00\u7bc7\u6587\u7ae0<\/a>\u7684\u57fa\u7840\u4e0a\uff0c\u52a0\u4e0a\u4e0a\u7bc7\u6587\u7ae0\u7684\u5206\u6790\uff0c\u66f4\u6df1\u4e0b\u4e00\u6b65\u5730\u63a2\u7d22\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u95ee\u9898\u3002<\/p>\n\n\n<h4>1 \u67e5\u770b\u8981\u5199\u5165\u7684\u6587\u4ef6\u7684inode\u4fe1\u606f<\/h4>\n<p>\u4f7f\u7528<code>stat LINUX_MUTIL_PROCESS_WRITE_2<\/code>\u547d\u4ee4\u67e5\u770b\u8981\u5199\u5165\u7684\u6587\u4ef6inode\u4fe1\u606f\uff0c\u53ef\u4ee5\u770b\u5230\u5b83\u7684\u503c\u4e3a<code>67728087<\/code>\u3002<\/p>\n<p><img alt=\"\u6267\u884c\u4e24\u4e2a\u6d4b\u8bd5\u7a0b\u5e8f\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linuxmutilprocesswrite1_stat.png\" title=\"\u6267\u884c\u4e24\u4e2a\u6d4b\u8bd5\u7a0b\u5e8f\"><\/p>\n<h4>2 \u793a\u4f8b\u7a0b\u5e8f<\/h4>\n<p>\u4e0b\u9762\u8fd9\u4e2a<code>linux_process_fork1_7.c<\/code>\u7a0b\u5e8f\u5f88\u7b80\u5355\uff0c\u4e3b\u8981\u662f\u628ap_buf\u6307\u5411\u7684\u9759\u6001\u533a\u6570\u636e\u5199\u5165\u5230\u6587\u4ef6<code>LINUX_MUTIL_PROCESS_WRITE<\/code>\u4e2d\u3002<\/p>\n<p>\u4e3a\u4e86\u6d4b\u8bd5\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u6587\u4ef6\u7684\u60c5\u666f\uff0c\u9700\u8981\u590d\u5236linux_process_fork1_7.c\u7a0b\u5e8f\u4e3alinux_process_fork1_8.c\uff0c\u540c\u65f6\u628ap_buf\u6307\u5411\u6539\u6210<code>abcdefghi<\/code>\uff0c\u7136\u540e\u5206\u522b\u7f16\u8bd1\u6210\u4e24\u4e2a\u4e0d\u540c\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff1alinux_process_fork1_7 \u548c linux_process_fork1_8\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    linux_process_fork1_7.c<\/span>\n<span class=\"cm\"> * @Describe    Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff08\u4e09\uff09<\/span>\n<span class=\"cm\"> * @Author      vfhky 2017-10-29 22:23 https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite3.html<\/span>\n<span class=\"cm\"> * @Compile     gcc linux_process_fork1_7.c -o linux_process_fork1_7<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/types.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/stat.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;fcntl.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;errno.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&quot;printnolog.h&quot;<\/span>\n\n\n<span class=\"cp\">#define FILE_NAME &quot;LINUX_MUTIL_PROCESS_WRITE_2&quot;<\/span>\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p_buf<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;123456789&quot;<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"w\">  <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_fd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">FILE_NAME<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">O_RDWR<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">O_CREAT<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">i_fd<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">PRINTNOLOG<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Open file=[%s] failed, errno=[%d] errmsg=[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">FILE_NAME<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"mi\">10000<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u6bcf\u6b21\u90fd\u504f\u79fb\u5230\u6587\u4ef6\u6700\u672b\u5c3e<\/span>\n<span class=\"c1\">\/\/        if( 0 &gt; lseek( i_fd, 0L, SEEK_END ) )<\/span>\n<span class=\"c1\">\/\/        {<\/span>\n<span class=\"c1\">\/\/          PRINTNOLOG( &quot;lseek error.\\n&quot; );<\/span>\n<span class=\"c1\">\/\/          return 0;<\/span>\n<span class=\"c1\">\/\/        }<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">usleep<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"n\">write<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_fd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">p_buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p_buf<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_fd<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINTNOLOG<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;i_write_len=[%ld].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u5f00\u59cb\u6d4b\u8bd5<\/h4>\n<p>\u5177\u4f53\u7684\u6d4b\u8bd5\u8fc7\u7a0b\u548c<a href=\"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite1.html\" title=\"\u67e5\u770b\u539f\u6587\">\u7b2c\u4e00\u7bc7\u6587\u7ae0<\/a>\u4e00\u6837\u7684\uff1a<\/p>\n<p><img alt=\"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linuxmutilprocesswrite1_7.png\" title=\"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\"><\/p>\n<p><img alt=\"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linuxmutilprocesswrite1_8.png\" title=\"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\"><\/p>\n<p>\u8fd9\u91cc\u53ea\u5217\u51fa\u6700\u540e\u7684\u6d4b\u8bd5\u7ed3\u679c\uff1a\u4e24\u4e2a\u975e\u4eb2\u7f18\u8fdb\u7a0b\u5206\u522b\u5199\u5165\u4e8690000\u5b57\u8282\uff0c\u4f46\u662f\u6587\u4ef6\u603b\u5171\u5927\u5c0f\u8fd8\u662f90000\u5b57\u8282\u3002<\/p>\n<p><img alt=\"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linuxmutilprocesswrite1_9.png\" title=\"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\"><\/p>\n<h4>4 \u7ed3\u8bba<\/h4>\n<p>\u4ece\u6d4b\u8bd5\u7ed3\u679c\u53ef\u4ee5\u5f97\u51fa\uff1a\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u65f6\uff0c\u5982\u679c\u6ca1\u6709\u8bbe\u7f6eappend\u540c\u6b65\u6587\u4ef6\u504f\u79fb\u91cf\uff0c\u90a3\u4e48\u4e24\u4e2a\u8fdb\u7a0b\u5199\u5165\u7684\u6570\u636e\u4f1a\u51fa\u73b0\u8986\u76d6\u7684\u60c5\u51b5\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"\u591a\u8fdb\u7a0b"}},{"@attributes":{"term":"\u6587\u4ef6\u8bfb\u5199"}}]},{"title":"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff08\u4e8c\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite2.html","rel":"alternate"}},"published":"2017-10-29T21:23:00+08:00","updated":"2017-10-29T21:23:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-10-29:\/cseries\/linuxmutilprocesswrite2.html","summary":"<p>\u672c\u6587\u662f\u8fd9\u300aLinux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u300b\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e8c\u7bc7\uff0c<a href=\"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite1.html\" title=\"\u67e5\u770b\u539f\u6587\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u6f14\u793a\u4e86\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u60c5\u5f62\uff0c\u5e76\u5f97\u51fa\u4e86<code>\u6570\u636e\u53ea\u4f1a\u9519\u4e71\u4f46\u4e0d\u4f1a\u8986\u76d6<\/code>\u7684\u7ed3\u8bba\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u8ba8\u8bba\u4e24\u4e2a\u4eb2\u7f18\u8fdb\u7a0b\uff08fork\uff09\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u60c5\u51b5\u3002<\/p>\n","content":"<p>\u672c\u6587\u662f\u8fd9\u300aLinux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u300b\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e8c\u7bc7\uff0c<a href=\"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite1.html\" title=\"\u67e5\u770b\u539f\u6587\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u6f14\u793a\u4e86\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u60c5\u5f62\uff0c\u5e76\u5f97\u51fa\u4e86<code>\u6570\u636e\u53ea\u4f1a\u9519\u4e71\u4f46\u4e0d\u4f1a\u8986\u76d6<\/code>\u7684\u7ed3\u8bba\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u8ba8\u8bba\u4e24\u4e2a\u4eb2\u7f18\u8fdb\u7a0b\uff08fork\uff09\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u60c5\u51b5\u3002<\/p>\n\n\n<h4>1 \u67e5\u770b\u8981\u5199\u5165\u7684\u6587\u4ef6\u7684inode\u4fe1\u606f<\/h4>\n<p>\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u53ef\u4ee5\u67e5\u770b\u8981\u5199\u5165\u7684\u6587\u4ef6<code>LINUX_MUTIL_PROCESS_WRITE<\/code>\u5bf9\u5e94\u7684inode\u60c5\u51b5\uff0c\u53ef\u4ee5\u770b\u5230\u5b83\u7684\u503c\u4e3a<code>67530179<\/code>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">fork2<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">stat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">src<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nx\">process<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fork2<\/span><span class=\"o\">\/<\/span><span class=\"nx\">LINUX_MUTIL_PROCESS_WRITE_1<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">File<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"err\">\u2018<\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">src<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nx\">process<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fork2<\/span><span class=\"o\">\/<\/span><span class=\"nx\">LINUX_MUTIL_PROCESS_WRITE_1<\/span><span class=\"err\">\u2019<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">Size<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">671744<\/span><span class=\"w\">          <\/span><span class=\"nx\">Blocks<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1312<\/span><span class=\"w\">       <\/span><span class=\"nx\">IO<\/span><span class=\"w\"> <\/span><span class=\"nx\">Block<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">4096<\/span><span class=\"w\">   <\/span><span class=\"nx\">regular<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span>\n<span class=\"nx\">Device<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">803<\/span><span class=\"nx\">h<\/span><span class=\"o\">\/<\/span><span class=\"mi\">2051<\/span><span class=\"nx\">d<\/span><span class=\"w\">      <\/span><span class=\"nx\">Inode<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">67530179<\/span><span class=\"w\">    <\/span><span class=\"nx\">Links<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"nx\">Access<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">0664<\/span><span class=\"o\">\/-<\/span><span class=\"nx\">rw<\/span><span class=\"o\">-<\/span><span class=\"nx\">rw<\/span><span class=\"o\">-<\/span><span class=\"nx\">r<\/span><span class=\"o\">--<\/span><span class=\"p\">)<\/span><span class=\"w\">  <\/span><span class=\"nx\">Uid<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span><span class=\"o\">\/<\/span><span class=\"w\">   <\/span><span class=\"nx\">vfhky<\/span><span class=\"p\">)<\/span><span class=\"w\">   <\/span><span class=\"nx\">Gid<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span><span class=\"o\">\/<\/span><span class=\"w\">   <\/span><span class=\"nx\">vfhky<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Access<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"o\">-<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mi\">29<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"p\">:<\/span><span class=\"mi\">48<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">33.404406925<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"nx\">Modify<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"o\">-<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mi\">28<\/span><span class=\"w\"> <\/span><span class=\"mi\">20<\/span><span class=\"p\">:<\/span><span class=\"mi\">36<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">34.185587055<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"nx\">Change<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"o\">-<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mi\">28<\/span><span class=\"w\"> <\/span><span class=\"mi\">20<\/span><span class=\"p\">:<\/span><span class=\"mi\">36<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">34.185587055<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"w\"> <\/span><span class=\"nx\">Birth<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">fork2<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u793a\u4f8b\u7a0b\u5e8f<\/h4>\n<p>\u4e0b\u9762\u8fd9\u4e2a<code>linux_process_fork2_1.c<\/code>\u7a0b\u5e8f\u5f88\u7b80\u5355\uff0c\u4e3b\u8981\u662ffork\u540e\u7684\u7236\u5b50\u8fdb\u7a0b\u628a\u5bf9\u5e94p_buf\u6307\u5411\u7684\u9759\u6001\u533a\u6570\u636e\u5199\u5165\u5230\u6587\u4ef6<code>LINUX_MUTIL_PROCESS_WRITE_1<\/code>\u4e2d\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    linux_process_fork2_1.c<\/span>\n<span class=\"cm\"> * @Describe    Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff08\u4e8c\uff09<\/span>\n<span class=\"cm\"> * @Author      vfhky 2017-10-29 21:23 https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite2.html<\/span>\n<span class=\"cm\"> * @Compile     gcc linux_process_fork2_1.c -o linux_process_fork2_1<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;unistd.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;errno.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&quot;printnolog.h&quot;<\/span>\n\n\n<span class=\"cp\">#define FILE_NAME &quot;LINUX_MUTIL_PROCESS_WRITE_1&quot;<\/span>\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p_buf_1<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;123456789&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p_buf_2<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;abcdefghi&quot;<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">        \u4e0a\u65b9\u4e2dfopen\u51fd\u6570\u7684\u7b2c2\u4e2a\u53c2\u6570\u4f7f\u7528ab\uff0c\u5176\u4e2da\u8868\u793a\u8ffd\u52a0\uff0c\u5b83\u80fd\u539f\u5b50\u6027\u5730\u4fdd\u8bc1\u8fdb\u7a0b\u5bf9\u5e94\u7684\u6587\u4ef6\u8868\u9879\u4e2d\u7684\u5f53\u524d\u6587\u4ef6\u504f\u79fb\u91cf\u6bcf\u4e00\u6b21\u90fd\u7b49\u4e8ev\u8282\u70b9\u8868\u4e2d\u5f53\u524d\u6587\u4ef6\u957f\u5ea6\u3002<\/span>\n<span class=\"cm\">        \u4f46\u662f\u8fd9\u91cc\u7531\u4e8e\u7236\u5b50\u8fdb\u7a0b\u5171\u4eab\u4e00\u4e2a\u6587\u4ef6\u8868\u9879\uff0c\u4e5f\u5c31\u662f\u6587\u4ef6\u504f\u79fb\u91cf\u662f\u76f8\u540c\u7684\uff0c\u6240\u4ee5\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528w+\uff08\u82e5\u6587\u4ef6\u5b58\u5728\u5219\u6587\u4ef6\u957f\u5ea6\u6e05\u4e3a\u96f6\uff0c\u5373\u8be5\u6587\u4ef6\u5185\u5bb9\u4f1a\u6d88\u5931\uff1b\u82e5\u6587\u4ef6\u4e0d\u5b58\u5728\u5219\u5efa\u7acb\u8be5\u6587\u4ef6\uff09\u3002<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">FILE<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">fp<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">fopen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">FILE_NAME<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;w+&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">fp<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Can not open [%s], errno=[%d] errmsg=[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">FILE_NAME<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"n\">errno<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">PRINTNOLOG<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Begin to fork.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">fork<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">PRINTNOLOG<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Child pid=[%d] ppid=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">getpid<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">getppid<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">size_t<\/span><span class=\"w\"> <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"mi\">10000<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">usleep<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"n\">fwrite<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p_buf_1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">p_buf_1<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">fp<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">PRINTNOLOG<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;i_write_len=[%ld].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">PRINTNOLOG<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Parent pid=[%d], child pid=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">getpid<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">size_t<\/span><span class=\"w\"> <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"mi\">10000<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">usleep<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"n\">fwrite<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p_buf_2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">p_buf_2<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">fp<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">PRINTNOLOG<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;i_write_len=[%ld].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_write_len<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">PRINTNOLOG<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Fork errno=[%d], errmsg=[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"n\">errno<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u5f00\u59cb\u6d4b\u8bd5<\/h4>\n<p>\u6253\u5f00\u4e00\u4e2alinux ssh\u7ec8\u7aef\uff0c\u4f7f\u7528<code>ps ux<\/code>\u547d\u4ee4\u53ef\u4ee5\u770b\u5230\u7236\u8fdb\u7a0b\uff08pid\u4e3a6524\uff09\u548c\u5b50\u8fdb\u7a0b\uff08pid\u4e3a6525\uff09\u3002<\/p>\n<p><img alt=\"\u6267\u884c\u4e24\u4e2a\u6d4b\u8bd5\u7a0b\u5e8f\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write2_ps_ux.png\" title=\"\u6267\u884c\u4e24\u4e2a\u6d4b\u8bd5\u7a0b\u5e8f\"><\/p>\n<p>\u518d\u6253\u5f00\u4e00\u4e2assh\u7ec8\u7aef\uff0c\u4f7f\u7528<code>lsof -p 6524<\/code>\u547d\u4ee4\u67e5\u770b\u4e24\u4e2a\u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6\u60c5\u51b5\uff0c\u4ece\u4e0b\u56fe\u4e2d\u53ef\u4ee5\u770b\u51fa\u8fd9\u4e24\u4e2a\u8fdb\u7a0b\u5f00\u6253\u7684\u90fd\u662f\u540c\u4e00\u4e2a\u6587\u4ef6\uff08\u5bf9\u5e94\u7684inode\u503c\u4e3a67530179\uff09\u3002<\/p>\n<p><img alt=\"lsof\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write2_lsof_p.png\" title=\"lsof\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6\"><\/p>\n<p>\u4f7f\u7528<code>ll \/proc\/6524\/fd<\/code>\u547d\u4ee4\u67e5\u770b\u4e24\u4e2a\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6240\u6709\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u90fd\u662f\u6807\u51c6\u8f93\u5165<code>0<\/code>\u3001\u6807\u51c6\u8f93\u51fa<code>1<\/code>\u3001\u6807\u51c6\u9519\u8bef\u8f93\u51fa<code>2<\/code>\u548c\u6253\u5f00\u7684\u6587\u4ef6\u5bf9\u5e94\u7684\u63cf\u8ff0\u7b26<code>3<\/code>\u3002\u4e5f\u5c31\u662f\u8bf4\u5bf9\u4e8e\u6587\u4ef6\u63cf\u8ff0\u7b26<code>3<\/code>\u6765\u8bf4\uff0c\u8fd9\u4e24\u4e2a\u8fdb\u7a0b\u8868\u9879\u6307\u5411\u7684\u6587\u4ef6\u8868\u9879\u4e2d\u7684v\u8282\u70b9\u6307\u9488\u6307\u5411\u7684\u662f\u540c\u4e00\u4e2av\u8282\u70b9\uff08\u5305\u542bi\u8282\u70b9\u3001\u6587\u4ef6\u957f\u5ea6\u7b49\u4fe1\u606f\uff0c\u4e14\u552f\u4e00\uff09\u3002<\/p>\n<p><img alt=\"ll \/proc\/6524\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write2_ll_proc.png\" title=\"ll \/proc\/6524\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\"><\/p>\n<p>\u4f7f\u7528<code>strace -p 6524<\/code>\u547d\u4ee4\u67e5\u770b\u4e24\u4e2a\u8fdb\u7a0b\u7684\u5185\u6838\u8c03\u7528\u60c5\u51b5\uff0c\u53ef\u4ee5\u770b\u5230\u8fd9\u4e24\u4e2a\u8fdb\u7a0b\u7531\u4e8efor\u5faa\u73af\u7684\u7f18\u6545\uff0c\u4e00\u76f4\u5728\u8c03\u7528<code>usleep<\/code>\u548c<code>fwrite<\/code>\u51fd\u6570\uff0c\u800c\u8fd9\u4e24\u4e2a\u51fd\u6570\u6700\u7ec8\u4f1a\u8c03\u7528\u5185\u6838\u7684<code>nanosleep<\/code>\u548c<code>write<\/code>\u51fd\u6570\u3002<\/p>\n<p>\u9700\u8981\u601d\u8003\u4e00\u70b9\uff0c\u4e3a\u4ec0\u4e48\u4f1a\u51fd\u6570<code>write(3, \"34567891234567891234567891234567\"..., 4096) = 4096<\/code>\u7b2c2\u4e2a\u53c2\u6570\u4e0d\u662f\u7a0b\u5e8f\u4e2d\u6307\u5b9a\u7684<code>abcdefghi<\/code>\u800c\u662f4096\u4e2a\u5b57\u8282\u7684\u5b57\u7b26\u3002\u4ece\u8fd9\u91cc\u53ef\u4ee5\u5ef6\u4f38\u5230<code>write<\/code>\u548c<code>fwrite<\/code>\u7684\u533a\u522b\uff0c\u5c31\u4e0d\u591a\u8bf4\u4e86\u3002<\/p>\n<p><img alt=\"ll \/proc\/6524\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write2_strace_p_2.png\" title=\"ll \/proc\/6524\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\"><\/p>\n<p><img alt=\"ll \/proc\/6525\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write2_strace_p_1.png\" title=\"ll \/proc\/6524\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\"><\/p>\n<p>\u6700\u540e\u901a\u8fc7<code>tail -f LINUX_MUTIL_PROCESS_WRITE<\/code>\u547d\u4ee4\u67e5\u770b\u6587\u4ef6\u5199\u5165\u60c5\u51b5\uff0c\u4ece\u4e0b\u56fe\u4e24\u4e2a\u7ea2\u8272\u6807\u6ce8\u53ef\u4ee5\u770b\u51fa\u7236\u8fdb\u7a0b\u5199\u51654096\u5b57\u8282\uff08<code>123456789<\/code>\uff09\u540e\u5728\u5b57\u7b26<code>3<\/code>\u540e\u5b50\u8fdb\u7a0b\u5f00\u59cb4096\u5b57\u8282\uff08<code>abcdefghi<\/code>\uff09\u3002<\/p>\n<p><img alt=\"tail -f\u547d\u4ee4\u67e5\u770b\u6587\u4ef6\u5199\u5165\u60c5\u51b5\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write2_file.png\" title=\"tail -f\u547d\u4ee4\u67e5\u770b\u6587\u4ef6\u5199\u5165\u60c5\u51b5\"><\/p>\n<h4>4 \u7ed3\u8bba<\/h4>\n<p>\u4ece\u4e0a\u9762\u5c0f\u8282\u7684\u6d4b\u8bd5\u8fc7\u7a0b\u53ef\u4ee5\u53d1\u73b0\uff0c\u548c\u4e0a\u6587\u4e2d\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u4e00\u6837\uff0c\u4e24\u4e2a\u4eb2\u7f18\u5173\u7cfb\u7684\u7236\u5b50\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u65f6\u4f1a\u51fa\u73b0\u6570\u636e\u6df7\u4e71\u7684\u60c5\u51b5\uff0c\u4f46\u662f\u4e24\u4e2a\u8fdb\u7a0b\u5199\u5165\u7684\u6570\u636e\u6ca1\u6709\u8986\u76d6\u3002<\/p>\n<p>\u7531\u4e8e\u7236\u5b50\u8fdb\u7a0b\u8868\u9879\u4e2dfd=3\u6307\u5411\u540c\u4e00\u4e2a\u6587\u4ef6\u8868\u9879\uff0c\u56e0\u6b64\u4e24\u4e2a\u8fdb\u7a0b\u5bf9\u5e94\u6587\u4ef6\u8868\u9879\u4e2d\u5f53\u524d\u6587\u4ef6\u504f\u79fb\u91cf\u662f\u552f\u4e00\u7684\uff0c\u6240\u4ee5\u5c3d\u7ba1\u5728\u7a0b\u5e8f\u6ca1\u6709fopen\u51fd\u6570\u6ca1\u6709\u4f7f\u7528<code>append<\/code>\u6a21\u5f0f\u4fdd\u8bc1\u6bcf\u6b21\u5199\u5165\u65f6\u7684\u6587\u4ef6\u504f\u79fb\u91cf\u662f\u6b63\u786e\u7684\uff0c\u4f46\u662f\u4f9d\u7136\u80fd\u505a\u5230\u6570\u636e\u65e0\u8986\u76d6\u3002<\/p>\n<p>\u8fd9\u70b9\u4ece\u7a0b\u5e8f\u8f93\u51fa\u7ed3\u679c\u53ef\u4ee5\u9a8c\u8bc1\uff0c\u7236\u5b50\u8fdb\u7a0b\u5206\u522b\u5199\u5165\u4e8690000\u5b57\u8282\uff0c\u6240\u4ee5\u6587\u4ef6\u603b\u5171\u5927\u5c0f\u4e3a180000\u5b57\u8282\u3002<\/p>\n<p><img alt=\"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write2_file_fork.png\" title=\"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"\u591a\u8fdb\u7a0b"}},{"@attributes":{"term":"\u6587\u4ef6\u8bfb\u5199"}}]},{"title":"Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff08\u4e00\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite1.html","rel":"alternate"}},"published":"2017-10-28T13:23:00+08:00","updated":"2017-10-28T13:23:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-10-28:\/cseries\/linuxmutilprocesswrite1.html","summary":"<p>\u8fd1\u671f\u4f1a\u5199\u5173\u4e8e\u300aLinux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u300b\u7684\u7cfb\u5217\u6587\u7ae0\uff0c\u4e3b\u8981\u662f\u63a2\u7d22\u5728Linux\u4e0b\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u591a\u8fdb\u7a0b\u548c\u5177\u6709\u4eb2\u7f18\u5173\u7cfb\u7684\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u95ee\u9898\u3002\u4f8b\u5982\uff0c\u5f53\u4e24\u4e2a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff0c\u90a3\u4e48\u5199\u5165\u7ed3\u679c\u662f\u600e\u6837\u7684\u5462\uff1f\u662f\u5426\u4f1a\u51fa\u73b0\u6570\u636e\u4e22\u5931\u7684\u60c5\u51b5\uff1f\u662f\u5426\u4f1a\u51fa\u73b0\u8986\u76d6\uff1f\u662f\u5426\u4f1a\u51fa\u73b0\u9519\u4e71\uff1f<\/p>\n<p>\u672c\u6587\u662f\u8fd9\u4e00\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e00\u7bc7\uff0c\u901a\u8fc7\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u6f14\u793a\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u60c5\u5f62\uff0c\u6700\u7ec8\u5f97\u51fa\u7ed3\u8bba\u3001\u56de\u7b54\u4e0a\u9762\u7684\u95ee\u9898\u3002<\/p>\n","content":"<p>\u8fd1\u671f\u4f1a\u5199\u5173\u4e8e\u300aLinux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u300b\u7684\u7cfb\u5217\u6587\u7ae0\uff0c\u4e3b\u8981\u662f\u63a2\u7d22\u5728Linux\u4e0b\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u591a\u8fdb\u7a0b\u548c\u5177\u6709\u4eb2\u7f18\u5173\u7cfb\u7684\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u95ee\u9898\u3002\u4f8b\u5982\uff0c\u5f53\u4e24\u4e2a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff0c\u90a3\u4e48\u5199\u5165\u7ed3\u679c\u662f\u600e\u6837\u7684\u5462\uff1f\u662f\u5426\u4f1a\u51fa\u73b0\u6570\u636e\u4e22\u5931\u7684\u60c5\u51b5\uff1f\u662f\u5426\u4f1a\u51fa\u73b0\u8986\u76d6\uff1f\u662f\u5426\u4f1a\u51fa\u73b0\u9519\u4e71\uff1f<\/p>\n<p>\u672c\u6587\u662f\u8fd9\u4e00\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e00\u7bc7\uff0c\u901a\u8fc7\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u6f14\u793a\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u7684\u60c5\u5f62\uff0c\u6700\u7ec8\u5f97\u51fa\u7ed3\u8bba\u3001\u56de\u7b54\u4e0a\u9762\u7684\u95ee\u9898\u3002<\/p>\n\n\n<h4>1 \u67e5\u770b\u8981\u5199\u5165\u7684\u6587\u4ef6\u7684inode\u4fe1\u606f<\/h4>\n<p>\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u53ef\u4ee5\u67e5\u770b\u8981\u5199\u5165\u7684\u6587\u4ef6<code>LINUX_MUTIL_PROCESS_WRITE<\/code>\u5bf9\u5e94\u7684inode\u60c5\u51b5\uff0c\u53ef\u4ee5\u770b\u5230\u5b83\u7684\u503c\u4e3a<code>67530247<\/code>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">stat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">src<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nx\">process<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fork1<\/span><span class=\"o\">\/<\/span><span class=\"nx\">LINUX_MUTIL_PROCESS_WRITE<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">File<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"err\">\u2018<\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">src<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nx\">process<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fork1<\/span><span class=\"o\">\/<\/span><span class=\"nx\">LINUX_MUTIL_PROCESS_WRITE<\/span><span class=\"err\">\u2019<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">Size<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1220608<\/span><span class=\"w\">         <\/span><span class=\"nx\">Blocks<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2384<\/span><span class=\"w\">       <\/span><span class=\"nx\">IO<\/span><span class=\"w\"> <\/span><span class=\"nx\">Block<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">4096<\/span><span class=\"w\">   <\/span><span class=\"nx\">regular<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span>\n<span class=\"nx\">Device<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">803<\/span><span class=\"nx\">h<\/span><span class=\"o\">\/<\/span><span class=\"mi\">2051<\/span><span class=\"nx\">d<\/span><span class=\"w\">      <\/span><span class=\"nx\">Inode<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">67530247<\/span><span class=\"w\">    <\/span><span class=\"nx\">Links<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"nx\">Access<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">0664<\/span><span class=\"o\">\/-<\/span><span class=\"nx\">rw<\/span><span class=\"o\">-<\/span><span class=\"nx\">rw<\/span><span class=\"o\">-<\/span><span class=\"nx\">r<\/span><span class=\"o\">--<\/span><span class=\"p\">)<\/span><span class=\"w\">  <\/span><span class=\"nx\">Uid<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span><span class=\"o\">\/<\/span><span class=\"w\">   <\/span><span class=\"nx\">vfhky<\/span><span class=\"p\">)<\/span><span class=\"w\">   <\/span><span class=\"nx\">Gid<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span><span class=\"o\">\/<\/span><span class=\"w\">   <\/span><span class=\"nx\">vfhky<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Access<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"o\">-<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mi\">28<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">32.935269018<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"nx\">Modify<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"o\">-<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mi\">28<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">:<\/span><span class=\"mi\">02<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">32.228412041<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"nx\">Change<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"o\">-<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mi\">28<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">:<\/span><span class=\"mi\">02<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">32.228412041<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"w\"> <\/span><span class=\"nx\">Birth<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u793a\u4f8b\u7a0b\u5e8f<\/h4>\n<p>\u4e0b\u9762\u8fd9\u4e2a<code>linux_process_fork1_5.c<\/code>\u7a0b\u5e8f\u5f88\u7b80\u5355\uff0c\u4e3b\u8981\u662f\u628ap_buf\u6307\u5411\u7684\u9759\u6001\u533a\u6570\u636e\u5199\u5165\u5230\u6587\u4ef6<code>LINUX_MUTIL_PROCESS_WRITE<\/code>\u4e2d\u3002<\/p>\n<p>\u4e3a\u4e86\u6d4b\u8bd5\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u6587\u4ef6\u7684\u60c5\u666f\uff0c\u9700\u8981\u590d\u5236linux_process_fork1_5.c\u7a0b\u5e8f\u4e3alinux_process_fork1_6.c\uff0c\u540c\u65f6\u628ap_buf\u6307\u5411\u6539\u6210<code>abcdefghi<\/code>\uff0c\u7136\u540e\u5206\u522b\u7f16\u8bd1\u6210\u4e24\u4e2a\u4e0d\u540c\u7684\u53ef\u6267\u884c\u6587\u4ef6\uff1alinux_process_fork1_5 \u548c linux_process_fork1_6\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    linux_process_fork1_5.c<\/span>\n<span class=\"cm\"> * @Describe    Linux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff08\u4e00\uff09<\/span>\n<span class=\"cm\"> * @Author      vfhky 2017-10-28 13:23 https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite1.html<\/span>\n<span class=\"cm\"> * @Compile     gcc linux_process_fork1_5.c -o linux_process_fork1_5<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;unistd.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n\n\n<span class=\"cp\">#define FILE_NAME &quot;LINUX_MUTIL_PROCESS_WRITE&quot;<\/span>\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p_buf<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;123456789&quot;<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8fd9\u91cc\u4f7f\u7528ab\uff0c\u5176\u4e2da\u8868\u793a\u8ffd\u52a0\uff0c\u5b83\u80fd\u539f\u5b50\u6027\u5730\u4fdd\u8bc1\u8fdb\u7a0b\u5bf9\u5e94\u7684\u6587\u4ef6\u8868\u9879\u4e2d\u7684\u5f53\u524d\u6587\u4ef6\u504f\u79fb\u91cf\u6bcf\u4e00\u6b21\u90fd\u7b49\u4e8ev\u8282\u70b9\u8868\u4e2d\u5f53\u524d\u6587\u4ef6\u957f\u5ea6\u3002<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">FILE<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">fp<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">fopen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">FILE_NAME<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;ab&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">fp<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Can not opent [%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">FILE_NAME<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"mi\">10000000000<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">usleep<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">fwrite<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p_buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p_buf<\/span><span class=\"w\"> <\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fp<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fclose<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">fp<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Write end.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u5f00\u59cb\u6d4b\u8bd5<\/h4>\n<p>\u6253\u5f00\u4e24\u4e2alinux ssh\u7ec8\u7aef\uff0c\u7136\u540e\u5206\u522b\u6267\u884c<code>linux_process_fork1_5<\/code>\uff08\u5bf9\u5e94\u8fdb\u7a0bpid\u4e3a2910\uff09\u3001<code>linux_process_fork1_6<\/code>\uff08\u5bf9\u5e94\u8fdb\u7a0bpid\u4e3a2910\uff09\u3002<\/p>\n<p><img alt=\"\u6267\u884c\u4e24\u4e2a\u6d4b\u8bd5\u7a0b\u5e8f\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write1_1.png\" title=\"\u6267\u884c\u4e24\u4e2a\u6d4b\u8bd5\u7a0b\u5e8f\"><\/p>\n<p>\u518d\u6253\u5f00\u4e00\u4e2assh\u7ec8\u7aef\uff0c\u4f7f\u7528<code>lsof -p 2910<\/code>\u547d\u4ee4\u67e5\u770b\u4e24\u4e2a\u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6\u60c5\u51b5\uff0c\u4ece\u4e0b\u56fe\u4e2d\u53ef\u4ee5\u770b\u51fa\u8fd9\u4e24\u4e2a\u8fdb\u7a0b\u5f00\u6253\u7684\u90fd\u662f\u540c\u4e00\u4e2a\u6587\u4ef6\uff08\u5bf9\u5e94\u7684inode\u503c\u4e3a67530247\uff09\u3002<\/p>\n<p><img alt=\"lsof\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write1_5.png\" title=\"lsof\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6\"><\/p>\n<p>\u4f7f\u7528<code>ll \/proc\/2910\/fd<\/code>\u547d\u4ee4\u67e5\u770b\u4e24\u4e2a\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6240\u6709\u6587\u4ef6\u63cf\u8ff0\u7b26\uff0c\u90fd\u662f\u6807\u51c6\u8f93\u5165<code>0<\/code>\u3001\u6807\u51c6\u8f93\u51fa<code>1<\/code>\u3001\u6807\u51c6\u9519\u8bef\u8f93\u51fa<code>2<\/code>\u548c\u6253\u5f00\u7684\u6587\u4ef6\u5bf9\u5e94\u7684\u63cf\u8ff0\u7b26<code>3<\/code>\u3002\u4e5f\u5c31\u662f\u8bf4\u5bf9\u4e8e\u6587\u4ef6\u63cf\u8ff0\u7b26<code>3<\/code>\u6765\u8bf4\uff0c\u8fd9\u4e24\u4e2a\u8fdb\u7a0b\u8868\u9879\u6307\u5411\u7684\u6587\u4ef6\u8868\u9879\u4e2d\u7684v\u8282\u70b9\u6307\u9488\u6307\u5411\u7684\u662f\u540c\u4e00\u4e2av\u8282\u70b9\uff08\u5305\u542bi\u8282\u70b9\u3001\u6587\u4ef6\u957f\u5ea6\u7b49\u4fe1\u606f\uff0c\u4e14\u552f\u4e00\uff09\u3002<\/p>\n<p><img alt=\"ll \/proc\/2910\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write1_3.png\" title=\"ll \/proc\/2910\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\"><\/p>\n<p>\u4f7f\u7528<code>strace -p 2910<\/code>\u547d\u4ee4\u67e5\u770b\u4e24\u4e2a\u8fdb\u7a0b\u7684\u5185\u6838\u8c03\u7528\u60c5\u51b5\uff0c\u53ef\u4ee5\u770b\u5230\u8fd9\u4e24\u4e2a\u8fdb\u7a0b\u7531\u4e8efor\u5faa\u73af\u7684\u7f18\u6545\uff0c\u4e00\u76f4\u5728\u8c03\u7528<code>usleep<\/code>\u548c<code>fwrite<\/code>\u51fd\u6570\uff0c\u800c\u8fd9\u4e24\u4e2a\u51fd\u6570\u6700\u7ec8\u4f1a\u8c03\u7528\u5185\u6838\u7684<code>nanosleep<\/code>\u548c<code>write<\/code>\u51fd\u6570\u3002<\/p>\n<p>\u9700\u8981\u601d\u8003\u4e00\u70b9\uff0c\u4e3a\u4ec0\u4e48\u4f1a\u51fd\u6570<code>write(3, \"fghiabcdefghiabcdefghiabcdefghia\"..., 4096) = 4096<\/code>\u7b2c2\u4e2a\u53c2\u6570\u4e0d\u662f\u7a0b\u5e8f\u4e2d\u6307\u5b9a\u7684<code>abcdefghi<\/code>\u800c\u662f4096\u4e2a\u5b57\u8282\u7684\u5b57\u7b26\u3002\u4ece\u8fd9\u91cc\u53ef\u4ee5\u5ef6\u4f38\u5230<code>write<\/code>\u548c<code>fwrite<\/code>\u7684\u533a\u522b\uff0c\u5c31\u4e0d\u591a\u8bf4\u4e86\u3002<\/p>\n<p><img alt=\"ll \/proc\/2910\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write1_2.png\" title=\"ll \/proc\/2910\/fd\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u8868\u9879\u4e2d\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\"><\/p>\n<p>\u6700\u540e\u901a\u8fc7<code>tail -f LINUX_MUTIL_PROCESS_WRITE<\/code>\u547d\u4ee4\u67e5\u770b\u6587\u4ef6\u5199\u5165\u60c5\u51b5\uff0c\u4ece\u4e0b\u56fe\u4e24\u4e2a\u7ea2\u8272\u6807\u6ce8\u53ef\u4ee5\u770b\u51falinux_process_fork1_5\u8fdb\u7a0b\u5199\u5165\u7684<code>123456789<\/code>\u5728\u5b57\u7b264\u540e\u63d2\u5165\u4e86linux_process_fork1_6\u8fdb\u7a0b\u5199\u5165\u7684<code>defg<\/code>\u7b49\u6570\u636e\u3002<\/p>\n<p><img alt=\"tail -f\u547d\u4ee4\u67e5\u770b\u6587\u4ef6\u5199\u5165\u60c5\u51b5\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/linux_mutil_process_write1_4.png\" title=\"tail -f\u547d\u4ee4\u67e5\u770b\u6587\u4ef6\u5199\u5165\u60c5\u51b5\"><\/p>\n<h4>4 \u7ed3\u8bba<\/h4>\n<p>\u4ece\u4e0a\u9762\u5c0f\u8282\u7684\u6d4b\u8bd5\u8fc7\u7a0b\u53ef\u4ee5\u53d1\u73b0\uff0c\u4e24\u4e2a\u975e\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\u65f6\uff0c\u4f1a\u51fa\u73b0\u6570\u636e\u6df7\u4e71\u7684\u60c5\u51b5\uff0c\u4f46\u662f\u4e24\u4e2a\u8fdb\u7a0b\u5199\u5165\u7684\u6570\u636e\u6ca1\u6709\u8986\u76d6\u3002<\/p>\n<p>\u8fd9\u662f\u56e0\u4e3a\u8fd9\u4e24\u4e2a\u8fdb\u7a0b\u8868\u9879\u4e2d\u6307\u5411\u7684\u5bf9\u5e94\u7684\u4e24\u4e2a\u6587\u4ef6\u8868\u9879\u5bf9\u5e94\u7684\u5f53\u524d\u6587\u4ef6\u504f\u79fb\u91cf\u662f\u4e0d\u4e00\u81f4\u7684\uff0c\u4f46\u662f\u7531\u4e8e\u6253\u5f00\u6587\u4ef6\u65f6\u662f\u4f7f\u7528append\u8ffd\u52a0\u7684\u65b9\u5f0f\uff0c\u4f7f\u5f97\u8fdb\u7a0b\u6307\u5411\u7684\u6587\u4ef6\u8868\u9879\u4e2d\u7684\u5f53\u524d\u6587\u4ef6\u504f\u79fb\u91cf\u90fd\u7b49\u4e8e\u5f53\u524d\u6587\u4ef6\u4e2d\u6240\u6709\u6570\u636e\u7684\u603b\u957f\u5ea6\u3002\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u5199\u5165\u7684\u6570\u636e\u4f1a\u51fa\u73b0\u9519\u4e71\uff0c\u4f46\u662f\u4e0d\u4f1a\u51fa\u73b0\u8986\u76d6\uff08\u504f\u79fb\u91cf\u4e0d\u4e00\u81f4\uff09\u7684\u539f\u56e0\u3002<\/p>\n<p>\u6ce8\u610f\uff1a\u5185\u6838write\u51fd\u6570\u5728\u5199\u5165\u65f6\u662f<code>\u539f\u5b50<\/code>\u64cd\u4f5c\uff0c\u6240\u4ee5\u4e24\u4e2a\u8fdb\u7a0b\u4f1a\u6709\u4e00\u4e2a\u7ade\u4e89\u5173\u7cfb\uff0c\u6700\u7ec8\u53ea\u4f1a\u7531\u67d0\u4e2a\u8fdb\u7a0b\u5199\u5165\u6570\u636e\u3002<\/p>\n<h4>5 \u9644\u5f55<\/h4>\n<p>\u5173\u4e8eLinux C\/C++\u591a\u4e2a\u4eb2\u7f18\u5173\u7cfb\u7684\u8fdb\u7a0b\u540c\u65f6\u5199\u540c\u4e00\u4e2a\u6587\u4ef6\u7684\u5206\u6790\u8bf7\u53c2\u8003<a href=\"https:\/\/typecodes.com\/cseries\/linuxmutilprocesswrite2.html\" title=\"\u300aLinux C\/C++\u591a\u8fdb\u7a0b\u540c\u65f6\u5199\u4e00\u4e2a\u6587\u4ef6\uff08\u4e8c\uff09\u300b\">\u4e0b\u4e00\u7bc7\u6587\u7ae0<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"\u591a\u8fdb\u7a0b"}},{"@attributes":{"term":"\u6587\u4ef6\u8bfb\u5199"}}]},{"title":"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/genmysqlinsertsql.html","rel":"alternate"}},"published":"2017-10-18T23:29:00+08:00","updated":"2017-10-18T23:29:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-10-18:\/cseries\/genmysqlinsertsql.html","summary":"<p>\u4e4b\u524d\u9879\u76ee\u4e0a\u9694\u4e09\u5dee\u4e94\u5730\u8981\u624b\u5de5\u6279\u91cf\u5bfc\u5165\u4e00\u4e9b\u6570\u636e\uff0c\u4e8e\u662f\u81ea\u5df1\u7528C++\u5199\u4e86\u8fd9\u4e2asql\u811a\u672c\u6587\u4ef6\u7684\u751f\u6210\u5de5\u5177\u3002<\/p>\n<p><img alt=\"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/genmysqlinsertsql_2.png\" title=\"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\"><\/p>\n","content":"<p>\u4e4b\u524d\u9879\u76ee\u4e0a\u9694\u4e09\u5dee\u4e94\u5730\u8981\u624b\u5de5\u6279\u91cf\u5bfc\u5165\u4e00\u4e9b\u6570\u636e\uff0c\u4e8e\u662f\u81ea\u5df1\u7528C++\u5199\u4e86\u8fd9\u4e2asql\u811a\u672c\u6587\u4ef6\u7684\u751f\u6210\u5de5\u5177\u3002<\/p>\n<p><img alt=\"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/genmysqlinsertsql_2.png\" title=\"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\"><\/p>\n\n\n<h4>1 \u9700\u6c42\u8bf4\u660e<\/h4>\n<p>\u6279\u91cf\u63d2\u5165\u591a\u4e2a\u7528\u6237\u6536\u8d39\u4fe1\u606f\uff0c\u4e5f\u5c31\u662f\u7528\u6237id\u4e0d\u540c\uff0c\u4f46\u662f\u5305\u62ec\u6240\u5c5e\u533a\u57df\u4ee3\u53f7\u3001\u6536\u8d39\u6a21\u5f0f\u548c\u8d39\u7387\u503c\u7b49\u6570\u636e\u662f\u76f8\u540c\u7684\u3002\u5982\u679c\u4f7f\u7528\u624b\u5de5\u62fc\u63a5insert\u8bed\u53e5\u5de5\u4f5c\u91cf\u5f88\u5927\uff0c\u800c\u4e14\u53ef\u80fd\u51fa\u73b0\u5dee\u9519\uff0c\u6240\u4ee5\u6539\u7528\u7a0b\u5e8f\u6765\u751f\u6210\u3002<\/p>\n<p>\u53ea\u9700\u8981\u914d\u7f6e\u597d\u76f8\u5173\u53c2\u6570\uff0c\u7136\u540e\u76f4\u63a5\u6267\u884c\u7a0b\u5e8f\u5c31\u53ef\u4ee5\u628a\u751f\u6210\u7684sql\u811a\u672c\u4ea4\u7ed9DBA\u5904\u7406\u4e86\u3002<\/p>\n<h4>2 C++\u7a0b\u5e8f<\/h4>\n<p>\u4ee3\u7801\u6bd4\u8f83\u7b80\u5355\uff0c\u4ecemain\u51fd\u6570\u4e2d\u53ef\u4ee5\u770b\u51fa\u4e3b\u8981\u6d41\u7a0b\u662f\u5148\u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\uff08\u89c1\u5c0f\u82823\uff09\u4e2d\u7684\u6570\u636e\uff0c\u7136\u540e\u628a\u4f7f\u7528<code>|<\/code>\u5206\u9694\u7684\u7528\u6237id\u8fdb\u884c\u5206\u89e3\u3002\u7ecf\u8fc7\u4e00\u7cfb\u5217\u64cd\u4f5c\u540e\uff0c\u4f1a\u62fc\u63a5\u51fa\u6240\u6709\u7684insert\u8bed\u53e5\uff0c\u6700\u7ec8\u628a\u8fd9\u4e9b\u6570\u636e\u5230\u5199\u5165\u5230\u6587\u4ef6\u6d41\u4e2d\u3002<\/p>\n<p>\u8fd9\u91cc\u7528\u5230\u4e86C++\u6587\u4ef6\u6d41\u7684\u8bfb\u5199\u3001string\u4e2d\u5b57\u7b26\u4e32\u7684\u67e5\u627e\u548c\u5220\u9664\u3001string\u6570\u636e\u5207\u5272\u6210vector\u6216\u8005map\u5bf9\u8c61\u7b49\u3002\u5f53\u7136\u4ee3\u7801\u8fd8\u53ef\u4ee5\u505a\u5f88\u591a\u4f18\u5316\uff0c\u4f8b\u5982\u53c2\u6570\u7684\u8fc7\u6ee4\u68c0\u67e5\u3001\u7528\u6237\u6570\u8fc7\u591a\u65f6\u8003\u8651\u5206\u6210\u591a\u4e2ainsert\u8bed\u53e5\u3001\u6570\u636e\u91cf\u5927\u65f6\u4f7f\u7528\u591a\u7ebf\u7a0b\u7b49\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span>\n<span class=\"normal\">138<\/span>\n<span class=\"normal\">139<\/span>\n<span class=\"normal\">140<\/span>\n<span class=\"normal\">141<\/span>\n<span class=\"normal\">142<\/span>\n<span class=\"normal\">143<\/span>\n<span class=\"normal\">144<\/span>\n<span class=\"normal\">145<\/span>\n<span class=\"normal\">146<\/span>\n<span class=\"normal\">147<\/span>\n<span class=\"normal\">148<\/span>\n<span class=\"normal\">149<\/span>\n<span class=\"normal\">150<\/span>\n<span class=\"normal\">151<\/span>\n<span class=\"normal\">152<\/span>\n<span class=\"normal\">153<\/span>\n<span class=\"normal\">154<\/span>\n<span class=\"normal\">155<\/span>\n<span class=\"normal\">156<\/span>\n<span class=\"normal\">157<\/span>\n<span class=\"normal\">158<\/span>\n<span class=\"normal\">159<\/span>\n<span class=\"normal\">160<\/span>\n<span class=\"normal\">161<\/span>\n<span class=\"normal\">162<\/span>\n<span class=\"normal\">163<\/span>\n<span class=\"normal\">164<\/span>\n<span class=\"normal\">165<\/span>\n<span class=\"normal\">166<\/span>\n<span class=\"normal\">167<\/span>\n<span class=\"normal\">168<\/span>\n<span class=\"normal\">169<\/span>\n<span class=\"normal\">170<\/span>\n<span class=\"normal\">171<\/span>\n<span class=\"normal\">172<\/span>\n<span class=\"normal\">173<\/span>\n<span class=\"normal\">174<\/span>\n<span class=\"normal\">175<\/span>\n<span class=\"normal\">176<\/span>\n<span class=\"normal\">177<\/span>\n<span class=\"normal\">178<\/span>\n<span class=\"normal\">179<\/span>\n<span class=\"normal\">180<\/span>\n<span class=\"normal\">181<\/span>\n<span class=\"normal\">182<\/span>\n<span class=\"normal\">183<\/span>\n<span class=\"normal\">184<\/span>\n<span class=\"normal\">185<\/span>\n<span class=\"normal\">186<\/span>\n<span class=\"normal\">187<\/span>\n<span class=\"normal\">188<\/span>\n<span class=\"normal\">189<\/span>\n<span class=\"normal\">190<\/span>\n<span class=\"normal\">191<\/span>\n<span class=\"normal\">192<\/span>\n<span class=\"normal\">193<\/span>\n<span class=\"normal\">194<\/span>\n<span class=\"normal\">195<\/span>\n<span class=\"normal\">196<\/span>\n<span class=\"normal\">197<\/span>\n<span class=\"normal\">198<\/span>\n<span class=\"normal\">199<\/span>\n<span class=\"normal\">200<\/span>\n<span class=\"normal\">201<\/span>\n<span class=\"normal\">202<\/span>\n<span class=\"normal\">203<\/span>\n<span class=\"normal\">204<\/span>\n<span class=\"normal\">205<\/span>\n<span class=\"normal\">206<\/span>\n<span class=\"normal\">207<\/span>\n<span class=\"normal\">208<\/span>\n<span class=\"normal\">209<\/span>\n<span class=\"normal\">210<\/span>\n<span class=\"normal\">211<\/span>\n<span class=\"normal\">212<\/span>\n<span class=\"normal\">213<\/span>\n<span class=\"normal\">214<\/span>\n<span class=\"normal\">215<\/span>\n<span class=\"normal\">216<\/span>\n<span class=\"normal\">217<\/span>\n<span class=\"normal\">218<\/span>\n<span class=\"normal\">219<\/span>\n<span class=\"normal\">220<\/span>\n<span class=\"normal\">221<\/span>\n<span class=\"normal\">222<\/span>\n<span class=\"normal\">223<\/span>\n<span class=\"normal\">224<\/span>\n<span class=\"normal\">225<\/span>\n<span class=\"normal\">226<\/span>\n<span class=\"normal\">227<\/span>\n<span class=\"normal\">228<\/span>\n<span class=\"normal\">229<\/span>\n<span class=\"normal\">230<\/span>\n<span class=\"normal\">231<\/span>\n<span class=\"normal\">232<\/span>\n<span class=\"normal\">233<\/span>\n<span class=\"normal\">234<\/span>\n<span class=\"normal\">235<\/span>\n<span class=\"normal\">236<\/span>\n<span class=\"normal\">237<\/span>\n<span class=\"normal\">238<\/span>\n<span class=\"normal\">239<\/span>\n<span class=\"normal\">240<\/span>\n<span class=\"normal\">241<\/span>\n<span class=\"normal\">242<\/span>\n<span class=\"normal\">243<\/span>\n<span class=\"normal\">244<\/span>\n<span class=\"normal\">245<\/span>\n<span class=\"normal\">246<\/span>\n<span class=\"normal\">247<\/span>\n<span class=\"normal\">248<\/span>\n<span class=\"normal\">249<\/span>\n<span class=\"normal\">250<\/span>\n<span class=\"normal\">251<\/span>\n<span class=\"normal\">252<\/span>\n<span class=\"normal\">253<\/span>\n<span class=\"normal\">254<\/span>\n<span class=\"normal\">255<\/span>\n<span class=\"normal\">256<\/span>\n<span class=\"normal\">257<\/span>\n<span class=\"normal\">258<\/span>\n<span class=\"normal\">259<\/span>\n<span class=\"normal\">260<\/span>\n<span class=\"normal\">261<\/span>\n<span class=\"normal\">262<\/span>\n<span class=\"normal\">263<\/span>\n<span class=\"normal\">264<\/span>\n<span class=\"normal\">265<\/span>\n<span class=\"normal\">266<\/span>\n<span class=\"normal\">267<\/span>\n<span class=\"normal\">268<\/span>\n<span class=\"normal\">269<\/span>\n<span class=\"normal\">270<\/span>\n<span class=\"normal\">271<\/span>\n<span class=\"normal\">272<\/span>\n<span class=\"normal\">273<\/span>\n<span class=\"normal\">274<\/span>\n<span class=\"normal\">275<\/span>\n<span class=\"normal\">276<\/span>\n<span class=\"normal\">277<\/span>\n<span class=\"normal\">278<\/span>\n<span class=\"normal\">279<\/span>\n<span class=\"normal\">280<\/span>\n<span class=\"normal\">281<\/span>\n<span class=\"normal\">282<\/span>\n<span class=\"normal\">283<\/span>\n<span class=\"normal\">284<\/span>\n<span class=\"normal\">285<\/span>\n<span class=\"normal\">286<\/span>\n<span class=\"normal\">287<\/span>\n<span class=\"normal\">288<\/span>\n<span class=\"normal\">289<\/span>\n<span class=\"normal\">290<\/span>\n<span class=\"normal\">291<\/span>\n<span class=\"normal\">292<\/span>\n<span class=\"normal\">293<\/span>\n<span class=\"normal\">294<\/span>\n<span class=\"normal\">295<\/span>\n<span class=\"normal\">296<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    linux_file_basic1_2.cpp<\/span>\n<span class=\"cm\"> * @Describe    Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2017-10-18 23:29 https:\/\/typecodes.com\/cseries\/genmysqlinsertsql.html<\/span>\n<span class=\"cm\"> * @Compile     g++ linux_file_basic1_2.cpp -o linux_file_basic1_2 -std=c++11<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;iostream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;fstream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;vector&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;map&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sstream&gt;<\/span>\n\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;time.h&gt;<\/span>\n\n\n<span class=\"k\">typedef<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"c1\">\/\/\u53bb\u9664string\u4e2d\u6240\u6709\u7684\u7a7a\u683c<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">TrimAllSpace<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_str<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">size_t<\/span><span class=\"w\"> <\/span><span class=\"n\">index<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">s_str<\/span><span class=\"p\">.<\/span><span class=\"n\">empty<\/span><span class=\"p\">())<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">index<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_str<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"sc\">&#39; &#39;<\/span><span class=\"p\">,<\/span><span class=\"n\">index<\/span><span class=\"p\">))<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"o\">::<\/span><span class=\"n\">npos<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">s_str<\/span><span class=\"p\">.<\/span><span class=\"n\">erase<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">index<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/\u5207\u5272\u5b57\u7b26\u4e32<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">splitToMap<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_orginal<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_split_pattern<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_orginal<\/span><span class=\"p\">.<\/span><span class=\"n\">empty<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">throw<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;s_Faccount_id is empty.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u65b9\u4fbf\u622a\u53d6\u6700\u540e\u4e00\u6bb5\u6570\u636e<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_strs<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_orginal<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_split_pattern<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kt\">size_t<\/span><span class=\"w\"> <\/span><span class=\"n\">i_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_strs<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"n\">s_split_pattern<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">size_t<\/span><span class=\"w\"> <\/span><span class=\"n\">i_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_strs<\/span><span class=\"p\">.<\/span><span class=\"n\">size<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"o\">::<\/span><span class=\"n\">npos<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key_val<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_strs<\/span><span class=\"p\">.<\/span><span class=\"n\">substr<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_pos<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"kt\">size_t<\/span><span class=\"w\"> <\/span><span class=\"n\">i_key_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key_val<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;=&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_key_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"o\">::<\/span><span class=\"n\">npos<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key_val<\/span><span class=\"p\">.<\/span><span class=\"n\">substr<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_key_pos<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_val<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key_val<\/span><span class=\"p\">.<\/span><span class=\"n\">substr<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_key_pos<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key_val<\/span><span class=\"p\">.<\/span><span class=\"n\">size<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">            <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">.<\/span><span class=\"n\">insert<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">make_pair<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_key<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">s_val<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">throw<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;config file is illegal.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">s_strs<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_strs<\/span><span class=\"p\">.<\/span><span class=\"n\">substr<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_pos<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_size<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">i_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_strs<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_split_pattern<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/\u5207\u5272\u5b57\u7b26\u4e32<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">splitToVector<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_orginal<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_split_pattern<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">vector<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">vect_str<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">vect_str<\/span><span class=\"p\">.<\/span><span class=\"n\">clear<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_orginal<\/span><span class=\"p\">.<\/span><span class=\"n\">empty<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">throw<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;s_Faccount_id is empty.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u65b9\u4fbf\u622a\u53d6\u6700\u540e\u4e00\u6bb5\u6570\u636e<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">strs<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_orginal<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_split_pattern<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kt\">size_t<\/span><span class=\"w\"> <\/span><span class=\"n\">pos<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">strs<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"n\">s_split_pattern<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">size_t<\/span><span class=\"w\"> <\/span><span class=\"n\">size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">strs<\/span><span class=\"p\">.<\/span><span class=\"n\">size<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pos<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"o\">::<\/span><span class=\"n\">npos<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_str<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">strs<\/span><span class=\"p\">.<\/span><span class=\"n\">substr<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"n\">pos<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">TrimAllSpace<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_str<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">vect_str<\/span><span class=\"p\">.<\/span><span class=\"n\">push_back<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_str<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">strs<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">strs<\/span><span class=\"p\">.<\/span><span class=\"n\">substr<\/span><span class=\"p\">(<\/span><span class=\"n\">pos<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"n\">size<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">pos<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">strs<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"n\">s_split_pattern<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">GetTime<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_date<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">time_t<\/span><span class=\"w\"> <\/span><span class=\"n\">t<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">time<\/span><span class=\"p\">(<\/span><span class=\"nb\">NULL<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">p_date<\/span><span class=\"p\">[<\/span><span class=\"mi\">20<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"mh\">0x00<\/span><span class=\"p\">};<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">strftime<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p_date<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">p_date<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;%Y%m%d %H:%M:%S&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">localtime<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">t<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">s_date<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">p_date<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n\n\n<span class=\"k\">class<\/span><span class=\"w\"> <\/span><span class=\"nc\">CGenSqlFile<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"k\">public<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">CGenSqlFile<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_config_file<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_file<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_file<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">ReadFile<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">virtual<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"n\">CGenSqlFile<\/span><span class=\"p\">(){}<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8bfb\u53d6\u6bcf\u884c\u7684\u6570\u636e\uff0c\u7136\u540e\u8fdb\u884c\u5904\u7406<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">ReadFile<\/span><span class=\"p\">()<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ifstream<\/span><span class=\"w\"> <\/span><span class=\"n\">inFile<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u4ee5\u4e8c\u8fdb\u5236\u53ef\u8bfb\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\uff1a inFile.open( s_config_file.data() );<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_file<\/span><span class=\"p\">.<\/span><span class=\"n\">c_str<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ios<\/span><span class=\"o\">::<\/span><span class=\"n\">in<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ios<\/span><span class=\"o\">::<\/span><span class=\"n\">binary<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/Checks if the file stream has an associated file.<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">is_open<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">throw<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Cannot open the config file.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u6bcf\u4e00\u884c\u7684\u6570\u636e<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u8bfb\u53d6\u4e00\u884c\u5185\u5bb9    getline( inFile, s_line_buf )<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">getline<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">inFile<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">widen<\/span><span class=\"p\">(<\/span><span class=\"sc\">&#39;\\n&#39;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">empty<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;#&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"k\">continue<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/\u5f00\u59cb\u6570\u636e\u5904\u7406<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">splitToMap<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&amp;&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u5173\u95ed\u6587\u4ef6\u6d41<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6253\u5370\u6240\u6709\u7684\u914d\u7f6e\u6570\u636e<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">ShowAllConf<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;=================== Config data begin. ===================&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">auto<\/span><span class=\"w\"> <\/span><span class=\"n\">iter<\/span><span class=\"w\"> <\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">iter<\/span><span class=\"p\">.<\/span><span class=\"n\">first<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">iter<\/span><span class=\"p\">.<\/span><span class=\"n\">second<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;=================== Config data end. ===================&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">GenSql<\/span><span class=\"p\">()<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_genonesql_comm<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">GenOneSqlComm<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u6240\u6709\u7684\u5546\u6237\/\u6e20\u9053id<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">vector<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">vect_Faccount_id<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">splitToVector<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;Faccount_id&quot;<\/span><span class=\"p\">],<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;|&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">vect_Faccount_id<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u62fc\u88c5sql<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_content<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">auto<\/span><span class=\"w\"> <\/span><span class=\"n\">iter<\/span><span class=\"w\"> <\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">vect_Faccount_id<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">s_sql_content<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"n\">GenOneSql<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iter<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">s_genonesql_comm<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u628a\u672b\u5c3e\u7684\u9017\u53f7\u53bb\u6389<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_contents<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_content<\/span><span class=\"p\">.<\/span><span class=\"n\">erase<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_content<\/span><span class=\"p\">.<\/span><span class=\"n\">length<\/span><span class=\"p\">()<\/span><span class=\"mi\">-2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u5f53\u524d\u65e5\u671f<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_date<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">GetTime<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_date<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_illustartion<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;-- --------------------------------------------------------------------<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span>\n<span class=\"w\">                                         <\/span><span class=\"s\">&quot;-- Auto Generated on &quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_date<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot; --------------------------------<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span>\n<span class=\"w\">                                         <\/span><span class=\"s\">&quot;-- --------------------------------------------------------------------<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_illustartion<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;INSERT_HEADER&quot;<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_contents<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;<\/span><span class=\"se\">\\n<\/span><span class=\"s\">;<\/span><span class=\"se\">\\n\\n\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u751f\u6210SQL\u6570\u636e<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">GenOneSql<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_Faccount_id<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_genonesql_comm<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;( &#39;&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_Faccount_id<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_genonesql_comm<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">GenOneSqlComm<\/span><span class=\"p\">()<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&#39;, &#39;&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;Fpay_channel_id&quot;<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&#39;, &#39;&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;Fpay_method&quot;<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&#39;, &#39;&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;Frate_mode&quot;<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&#39;, &#39;&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;Frate_value&quot;<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&#39;, &#39;&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;Frate_value_base&quot;<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&#39;, &#39;1&#39;),<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">OpenFile<\/span><span class=\"p\">()<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u8ffd\u52a0<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;1&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;Ffile_mode&quot;<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;sql_file&quot;<\/span><span class=\"p\">].<\/span><span class=\"n\">c_str<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ofstream<\/span><span class=\"o\">::<\/span><span class=\"n\">out<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ofstream<\/span><span class=\"o\">::<\/span><span class=\"n\">binary<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ofstream<\/span><span class=\"o\">::<\/span><span class=\"n\">app<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u8986\u76d6<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;2&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;Ffile_mode&quot;<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">[<\/span><span class=\"s\">&quot;sql_file&quot;<\/span><span class=\"p\">].<\/span><span class=\"n\">c_str<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ofstream<\/span><span class=\"o\">::<\/span><span class=\"n\">out<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ofstream<\/span><span class=\"o\">::<\/span><span class=\"n\">binary<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">throw<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Ffile_mode is illegal.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">is_open<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">throw<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Cannot open the file.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">CloseFile<\/span><span class=\"p\">()<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u83b7\u53d6\u914d\u7f6e\u6570\u636e<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">GetConfByKey<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_config_key<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">StringMap<\/span><span class=\"o\">::<\/span><span class=\"n\">const_iterator<\/span><span class=\"w\"> <\/span><span class=\"n\">iter<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_key<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iter<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">iter<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u628a\u6570\u636e\u5199\u5165\u5230\u6587\u4ef6\u6d41\u4e2d<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">WriteToFile<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_file_contents<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">ostream<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">s_file_contents<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"k\">protected<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">StringMap<\/span><span class=\"w\"> <\/span><span class=\"n\">StringMap_Obj<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"k\">private<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_file<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">ofstream<\/span><span class=\"w\"> <\/span><span class=\"n\">ostream<\/span><span class=\"p\">;<\/span>\n\n<span class=\"p\">};<\/span>\n\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_file<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;.\/LINUX_FILE_BASIC1_2.txt&quot;<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"k\">try<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">CGenSqlFile<\/span><span class=\"w\"> <\/span><span class=\"n\">t<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_file<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u663e\u793a\u6240\u6709\u7684\u914d\u7f6e<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">ShowAllConf<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u6253\u5f00\u6587\u4ef6<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">OpenFile<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u751f\u6210SQL\u6570\u636e<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_contents<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">GenSql<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u5199\u5165\u5230\u6587\u4ef6<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">WriteToFile<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_sql_contents<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u5173\u95ed\u6587\u4ef6<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">CloseFile<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_key<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;sql_file&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;<\/span><span class=\"se\">\\n<\/span><span class=\"s\">Generate sql file=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">t<\/span><span class=\"p\">.<\/span><span class=\"n\">GetConfByKey<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_config_key<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;] success.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">catch<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p_errstr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">p_errstr<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">std<\/span><span class=\"o\">::<\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u914d\u7f6e\u6587\u4ef6<\/h4>\n<p>\u4e0a\u9762\u7684C++\u7a0b\u5e8f\u4f1a\u8bfb\u53d6\u8fd9\u4e2a<code>linux_file_basic1_2.txt<\/code>\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u53ef\u4ee5\u4f7f\u7528<code>#<\/code>\u7b26\u53f7\u7ed9\u4e00\u4e9b\u5fc5\u8981\u7684\u6570\u636e\u914d\u5907\u6ce8\u91ca\u6587\u5b57\u3002<\/p>\n<p>\u9700\u8981\u8bf4\u660e\u7684\u662f<code>Ffile_mode<\/code>\u53c2\u6570\u8868\u793asql\u6587\u4ef6\u7684\u5199\u5165\u65b9\u5f0f\uff0c\u5f53\u503c\u4e3a2\u65f6\u8868\u793a\u6bcf\u6b21\u90fd\u628a\u751f\u6210\u7684\u6570\u636e\u8986\u76d6\u539f\u6587\u4ef6\u4e2d\u7684\u6570\u636e\uff1b\u4e3a1\u65f6\u8868\u793a\u652f\u6301\u628a\u591a\u6b21\u751f\u6210\u7684SQL\u6570\u636e\u5199\u5165\u5230\u540c\u4e00\u4e2aSQL\u811a\u672c\u6587\u4ef6\u4e2d\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>#  \n# @FileName    linux_file_basic1_2.txt\n# @Describe    Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\u7684\u914d\u7f6e\u6587\u4ef6.\n# @Author      vfhky 2017-10-18 23:29 https:\/\/typecodes.com\/cseries\/genmysqlinsertsql.html\n\n\n\n# \u7528\u6237\u8d26\u53f7id\uff0c\u591a\u4e2a\u8d26\u53f7\u4f7f\u7528 | \u7b26\u53f7\u5206\u9694\nFaccount_id=10001342|  10001447\n\n# \u6240\u5c5e\u533a\u57df\u4ee3\u53f7\nFpay_channel_id=GDSZ01\n\n# \u652f\u4ed8\u65b9\u5f0f\uff1a\n# \u652f\u4ed8\u5b9d\u670d\u52a1\u7a97\u652f\u4ed8      ALIPAY.JSAPI\n# \u652f\u4ed8\u5b9d\u5237\u5361         ALIPAY.MICROPAY\n# \u652f\u4ed8\u5b9d\u626b\u7801\u652f\u4ed8       ALIPAY.NATIVE\n# \n# \u5fae\u4fe1\u516c\u4f17\u53f7         WXPAY.JSAPI\n# \u5fae\u4fe1\u5237\u5361\u652f\u4ed8            WXPAY.MICROPAY\n# \u5fae\u4fe1\u626b\u7801\u652f\u4ed8            WXPAY.NATIVE\nFpay_method=WXPAY.NATIVE\n\n# \u6536\u8d39\u6a21\u5f0f\uff0c1\u56fa\u5b9a\u6bd4\u4f8b\uff0c2\u5355\u7b14\u8ba1\u8d39\nFrate_mode=1\n\n# \u8d39\u7387\u503c\uff0c\u5355\u4f4d\uff1a1\/10000\nFrate_value=50\n\n# \u57fa\u672c\u8d39\u7528\uff0c\u5355\u4f4d\uff1a\u5206\nFrate_value_base=0\n\n\n# \u751f\u6210\u7684sql\u6587\u4ef6\u540d\nsql_file=user_account.sql\n\n# \u751f\u6210\u7684sql\u6587\u4ef6\u6a21\u5f0f\uff0c1\u8ffd\u52a0\uff0c2\u8986\u76d6\nFfile_mode=2\n\n# insert\u8bed\u53e5\u7684\u5934\u90e8\nINSERT_HEADER=INSERT INTO `USER_ACCOUNT_DB`.`t_mch_rate` ( `Faccount_id`, `Fpay_channel_id`, `Fpay_method`, `Frate_mode`, `Frate_value`, `Frate_value_base`, `Fstatus`) VALUES\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>4 \u7f16\u8bd1\u6267\u884c<\/h4>\n<p>\u4f7f\u7528<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b<\/a>\u6587\u4e2d\u7684Makefile\u7f16\u8bd1\uff1a<\/p>\n<p><img alt=\"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/genmysqlinsertsql_1.png\" title=\"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\"><\/p>\n<p>\u7136\u540e\u6267\u884c\u751f\u6210MySql\u811a\u672c\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/genmysqlinsertsql_3.png\" title=\"Linux C++\u7b80\u5355\u5b9e\u73b0\u4e00\u4e2a\u6279\u91cf\u63d2\u5165\u7684sql\u811a\u672c\u751f\u6210\u5de5\u5177\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"mysql"}},{"@attributes":{"term":"c++11"}}]},{"title":"CentOS7.3\u4f7f\u7528CMake\u7f16\u8bd1\u5b89\u88c5\u6700\u65b0\u7684LLVM\u548cClang4.0.1","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/cmakellvmclang4.html","rel":"alternate"}},"published":"2017-10-07T21:59:00+08:00","updated":"2017-10-07T21:59:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-10-07:\/linux\/cmakellvmclang4.html","summary":"<p>\u524d\u6bb5\u65f6\u95f4\u8bd5\u4e86\u628a\u865a\u62df\u673aCentOS\u4e0b\u9762\u7684C\/C++\u5de5\u7a0b\u4e2d\u7684Makefile\u6587\u4ef6\u6539\u7528clang\/clang++\u6765\u7f16\u8bd1\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4ecb\u7ecd\u5982\u4f55\u5728CentOS7.3\u7cfb\u7edf\u7f16\u8bd1\u5b89\u88c5\u6700\u65b0\u7684LLVM\u548cClang4.0.1\u3002<\/p>\n<p>\u5173\u4e8eGCC\u3001LLVM\u548cClang\u5173\u7cfb\u53ef\u4ee5\u53c2\u8003<a href=\"http:\/\/www.cnblogs.com\/qoakzmxncb\/archive\/2013\/04\/18\/3029105.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u8fd9\u7bc7\u6587\u7ae0\u300b<\/a>\uff0c\u4e2a\u4eba\u7684\u7406\u89e3\u5982\u4e0b\uff1a<\/p>\nLLVM \u662f Low Level Virtual Machine \u7684\u7b80\u79f0\uff0c\u8fd9\u4e2a\u5e93\u63d0\u4f9b\u4e86\u4e0e\u7f16\u8bd1\u5668\u76f8\u5173\u7684\u652f\u6301\uff0c\u80fd\u591f\u8fdb\u884c\u7a0b\u5e8f\u8bed\u8a00\u7684\u7f16\u8bd1\u671f\u4f18\u5316\u3001\u94fe\u63a5\u4f18\u5316\u3001\u5728\u7ebf\u7f16\u8bd1\u4f18\u5316\u3001\u4ee3\u7801\u751f\u6210\u3002\n<\/code><\/pre>\n\n<p>\u800c\u4ece<a href=\"http:\/\/clang.llvm.org\/\" title=\"\u70b9\u51fb\u67e5\u770b\">clang\u5b98\u7f51<\/a>\u7684\u4ecb\u7ecd\u53ef\u4ee5\u770b\u51fa\uff0cclang\u7684\u76ee\u6807\u662f\u521b\u5efa\u4e00\u79cd\u65b0\u7684\u57fa\u4e8eC\u8bed\u8a00\u7684LLVM\u7f16\u8bd1\u5668\u7684\u524d\u7aef\uff08\u5e94\u8be5\u662f\u63d0\u4f9b\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u68c0\u6d4b\u7b49\u529f\u80fd\uff09\u3002<\/p>\n.\n<\/code><\/pre>\n\n","content":"<p>\u524d\u6bb5\u65f6\u95f4\u8bd5\u4e86\u628a\u865a\u62df\u673aCentOS\u4e0b\u9762\u7684C\/C++\u5de5\u7a0b\u4e2d\u7684Makefile\u6587\u4ef6\u6539\u7528clang\/clang++\u6765\u7f16\u8bd1\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u4ecb\u7ecd\u5982\u4f55\u5728CentOS7.3\u7cfb\u7edf\u7f16\u8bd1\u5b89\u88c5\u6700\u65b0\u7684LLVM\u548cClang4.0.1\u3002<\/p>\n<p>\u5173\u4e8eGCC\u3001LLVM\u548cClang\u5173\u7cfb\u53ef\u4ee5\u53c2\u8003<a href=\"http:\/\/www.cnblogs.com\/qoakzmxncb\/archive\/2013\/04\/18\/3029105.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u8fd9\u7bc7\u6587\u7ae0\u300b<\/a>\uff0c\u4e2a\u4eba\u7684\u7406\u89e3\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>LLVM \u662f Low Level Virtual Machine \u7684\u7b80\u79f0\uff0c\u8fd9\u4e2a\u5e93\u63d0\u4f9b\u4e86\u4e0e\u7f16\u8bd1\u5668\u76f8\u5173\u7684\u652f\u6301\uff0c\u80fd\u591f\u8fdb\u884c\u7a0b\u5e8f\u8bed\u8a00\u7684\u7f16\u8bd1\u671f\u4f18\u5316\u3001\u94fe\u63a5\u4f18\u5316\u3001\u5728\u7ebf\u7f16\u8bd1\u4f18\u5316\u3001\u4ee3\u7801\u751f\u6210\u3002\n<\/code><\/pre><\/div>\n\n<p>\u800c\u4ece<a href=\"http:\/\/clang.llvm.org\/\" title=\"\u70b9\u51fb\u67e5\u770b\">clang\u5b98\u7f51<\/a>\u7684\u4ecb\u7ecd\u53ef\u4ee5\u770b\u51fa\uff0cclang\u7684\u76ee\u6807\u662f\u521b\u5efa\u4e00\u79cd\u65b0\u7684\u57fa\u4e8eC\u8bed\u8a00\u7684LLVM\u7f16\u8bd1\u5668\u7684\u524d\u7aef\uff08\u5e94\u8be5\u662f\u63d0\u4f9b\u8bcd\u6cd5\u5206\u6790\u3001\u8bed\u6cd5\u68c0\u6d4b\u7b49\u529f\u80fd\uff09\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nv\">The<\/span><span class=\"w\"> <\/span><span class=\"nv\">goal<\/span><span class=\"w\"> <\/span><span class=\"nv\">of<\/span><span class=\"w\"> <\/span><span class=\"nv\">the<\/span><span class=\"w\"> <\/span><span class=\"nv\">Clang<\/span><span class=\"w\"> <\/span><span class=\"nv\">project<\/span><span class=\"w\"> <\/span><span class=\"nv\">is<\/span><span class=\"w\"> <\/span><span class=\"nv\">to<\/span><span class=\"w\"> <\/span><span class=\"nv\">create<\/span><span class=\"w\"> <\/span><span class=\"nv\">a<\/span><span class=\"w\"> <\/span><span class=\"nv\">new<\/span><span class=\"w\"> <\/span><span class=\"nv\">C<\/span><span class=\"w\"> <\/span><span class=\"nv\">based<\/span><span class=\"w\"> <\/span><span class=\"nv\">language<\/span><span class=\"w\"> <\/span><span class=\"nv\">front<\/span><span class=\"o\">-<\/span><span class=\"k\">end<\/span>:<span class=\"w\"> <\/span><span class=\"nv\">C<\/span>,<span class=\"w\"> <\/span><span class=\"nv\">C<\/span><span class=\"o\">++<\/span>,<span class=\"w\"> <\/span><span class=\"nv\">Objective<\/span><span class=\"w\"> <\/span><span class=\"nv\">C<\/span><span class=\"o\">\/<\/span><span class=\"nv\">C<\/span><span class=\"o\">++<\/span>,<span class=\"w\"> <\/span><span class=\"nv\">OpenCL<\/span><span class=\"w\"> <\/span><span class=\"nv\">C<\/span><span class=\"w\"> <\/span><span class=\"nv\">and<\/span><span class=\"w\"> <\/span><span class=\"nv\">others<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nv\">the<\/span><span class=\"w\"> <\/span><span class=\"nv\">LLVM<\/span><span class=\"w\"> <\/span><span class=\"nv\">compiler<\/span>.\n<\/code><\/pre><\/div>\n\n\n\n<h4>1 \u4e0b\u8f7d\u7f16\u8bd1\u6240\u9700\u7684\u6587\u4ef6<\/h4>\n<p>\u4ececlang\u5b98\u7f51\u4e0a\u4e0b\u8f7d\u5305\u542bllvm\u3001clang\u548clibcxx\u7b497\u4e2a\u6587\u4ef6\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/releases.llvm.org\/4.0.1\/llvm-4.0.1.src.tar.xz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/releases.llvm.org\/4.0.1\/cfe-4.0.1.src.tar.xz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/releases.llvm.org\/4.0.1\/clang-tools-extra-4.0.1.src.tar.xz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/releases.llvm.org\/4.0.1\/compiler-rt-4.0.1.src.tar.xz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/releases.llvm.org\/4.0.1\/libcxx-4.0.1.src.tar.xz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/releases.llvm.org\/4.0.1\/libcxxabi-4.0.1.src.tar.xz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/releases.llvm.org\/4.0.1\/libunwind-4.0.1.src.tar.xz<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u89e3\u538b\u6240\u6709\u6587\u4ef6\u5230\u76ee\u5f55\uff1allvm<\/h4>\n<p>2.1\u3001\u89e3\u538b llvm-4.0.1.src.tar.xz<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">xf<\/span><span class=\"w\"> <\/span><span class=\"nx\">llvm<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">llvm<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"w\"> <\/span><span class=\"nx\">llvm<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">llvm<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span>\n<\/code><\/pre><\/div>\n\n<p>2.2\u3001\u89e3\u538b cfe-4.0.1.src.tar.xz<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cd llvm\/tools\/ &amp;&amp; mv ~\/cfe-4.0.1.src.tar.xz .<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">tools<\/span><span class=\"p\">]<\/span><span class=\"c1\"># tar -xf cfe-4.0.1.src.tar.xz &amp;&amp; mv -f cfe-4.0.1.src clang &amp;&amp; rm -rf cfe-4.0.1.src.tar.xz<\/span>\n<\/code><\/pre><\/div>\n\n<p>2.3\u3001\u89e3\u538b clang-tools-extra-4.0.1.src.tar.xz<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">tools<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cd clang\/tools\/ &amp;&amp; mv ~\/clang-tools-extra-4.0.1.src.tar.xz .<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">tools<\/span><span class=\"p\">]<\/span><span class=\"c1\"># tar -xf clang-tools-extra-4.0.1.src.tar.xz &amp;&amp; mv -f clang-tools-extra-4.0.1.src extra &amp;&amp; rm -rf clang-tools-extra-4.0.1.src.tar.xz<\/span>\n<\/code><\/pre><\/div>\n\n<p>2.4\u3001\u8fdb\u5165projescts\u76ee\u5f55<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">tools<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cd ..\/..\/..\/projects\/ &amp;&amp; pwd<\/span>\n<span class=\"o\">\/<\/span><span class=\"n\">root<\/span><span class=\"o\">\/<\/span><span class=\"n\">llvm<\/span><span class=\"o\">\/<\/span><span class=\"n\">projects<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">projects<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\n<\/code><\/pre><\/div>\n\n<p>2.5\u3001\u89e3\u538b compiler-rt-4.0.1.src.tar.xz<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">compiler<\/span><span class=\"o\">-<\/span><span class=\"nx\">rt<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">xf<\/span><span class=\"w\"> <\/span><span class=\"nx\">compiler<\/span><span class=\"o\">-<\/span><span class=\"nx\">rt<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">compiler<\/span><span class=\"o\">-<\/span><span class=\"nx\">rt<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"w\"> <\/span><span class=\"nx\">compiler<\/span><span class=\"o\">-<\/span><span class=\"nx\">rt<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">compiler<\/span><span class=\"o\">-<\/span><span class=\"nx\">rt<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span>\n<\/code><\/pre><\/div>\n\n<p>2.6\u3001\u89e3\u538b libcxx-4.0.1.src.tar.xz<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">libcxx<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">xf<\/span><span class=\"w\"> <\/span><span class=\"nx\">libcxx<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">libcxx<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"w\"> <\/span><span class=\"nx\">libcxx<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">libcxx<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span>\n<\/code><\/pre><\/div>\n\n<p>2.7\u3001\u89e3\u538b libcxxabi-4.0.1.src.tar.xz<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">libcxxabi<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">xf<\/span><span class=\"w\"> <\/span><span class=\"nx\">libcxxabi<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">libcxxabi<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"w\"> <\/span><span class=\"nx\">libcxxabi<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">libcxxabi<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span>\n<\/code><\/pre><\/div>\n\n<p>2.8\u3001\u89e3\u538b libunwind-4.0.1.src.tar.xz<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">libunwind<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">xf<\/span><span class=\"w\"> <\/span><span class=\"nx\">libunwind<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">libunwind<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"w\"> <\/span><span class=\"nx\">libunwind<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">libunwind<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">xz<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3 \u521b\u5efaCMake\u7684\u7f16\u8bd1\u76ee\u5f55\uff1abuild<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\">\u00a0<\/span><span class=\"nx\">projects<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">mkdir<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\">\u00a0<\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"o\">\/<\/span>\n<\/code><\/pre><\/div>\n\n<h4>4 \u4f7f\u7528Cmake\u7f16\u8bd1\u751f\u6210makefile\u6587\u4ef6<\/h4>\n<p>\u5982\u679c\u60f3clang\/clang++\u81ea\u52a8\u4f7f\u7528<code>libc++<\/code>\u5e93\uff0c\u90a3\u4e48\u5728\u7f16\u8bd1clang\u65f6\u5c31\u9700\u8981\u6307\u5b9a<code>DCLANG_DEFAULT_CXX_STDLIB<\/code>\u53c2\u6570\u503c\u4e3a<code>libc++<\/code>\uff0c\u5426\u5219\u5728\u94fe\u63a5\u7684\u65f6\u5019\u81ea\u52a8\u4f7f\u7528gcc\/g++\u7684libstdc++\u5e93\u3002\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u6bcf\u6b21\u5728\u7528clang\/clang++\u7f16\u8bd1\u7a0b\u5e8f\u7684\u65f6\u5019\u6307\u5b9a<code>--stdlib=libc++<\/code>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\">\u00a0<\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\">\u00a0<\/span><span class=\"nx\">cmake<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">G<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Unix Makefiles&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">DCMAKE_C_COMPILER<\/span><span class=\"p\">=<\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">DCMAKE_CXX_COMPILER<\/span><span class=\"p\">=<\/span><span class=\"nx\">g<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">DCLANG_DEFAULT_CXX_STDLIB<\/span><span class=\"p\">=<\/span><span class=\"nx\">libc<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">DCMAKE_BUILD_TYPE<\/span><span class=\"p\">=<\/span><span class=\"s\">&quot;Release&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">..<\/span><span class=\"o\">\/<\/span><span class=\"nx\">llvm<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5173\u4e8eglibc\u3001libstdc++\u548clibc+++\u8fd9\u4e09\u4e2a\u5e93\u7684\u5173\u7cfb\uff0c\u53ef\u4ee5\u53c2\u8003\u6587\u7ae0<a href=\"http:\/\/blog.csdn.net\/haibosdu\/article\/details\/77094833\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u7406\u6e05gcc\u3001libc\u3001libstdc++\u7684\u5173\u7cfb\u300b<\/a>\u3002\u524d\u4e24\u8005\u662fgcc\/g++\u7f16\u8bd1C\/C++\u9ed8\u8ba4\u94fe\u63a5\u7684\u5e93\u6587\u4ef6\uff0clibc+++\u662fclang\u9700\u8981\u94fe\u63a5\u7684\u5e93\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528Cmake\u7f16\u8bd1\u751f\u6210makefile\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/clang_cmake_build.png\" title=\"\u4f7f\u7528Cmake\u7f16\u8bd1\u751f\u6210makefile\u6587\u4ef6\"><\/p>\n<h4>5 \u5f00\u59cb\u901a\u8fc7make\u547d\u4ee4\u7f16\u8bd1<\/h4>\n<p>\u4f7f\u7528<code>make -j2<\/code>\u547d\u4ee4\u8fdb\u884c\u7f16\u8bd1\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528make -j2\u7f16\u8bd1\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/clang_make_j2.png\" title=\"\u4f7f\u7528make -j2\u7f16\u8bd1\"><\/p>\n<h4>6 \u5b89\u88c5 clang \u548c llvm<\/h4>\n<p>\u4f7f\u7528\u547d\u4ee4<code>make install<\/code>\u8fdb\u884c\u5b89\u88c5\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528make install\u8fdb\u884c\u5b89\u88c5\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/clang_make_install_1.png\" title=\"\u4f7f\u7528make install\u8fdb\u884c\u5b89\u88c5\"><\/p>\n<p><img alt=\"\u4f7f\u7528make install\u8fdb\u884c\u5b89\u88c5\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/clang_make_install_2.png\" title=\"\u4f7f\u7528make install\u8fdb\u884c\u5b89\u88c5\"><\/p>\n<h4>7 \u5b89\u88c5 libcxx \u548c libcxxabi<\/h4>\n<p>\u4f7f\u7528\u547d\u4ee4<code>make install-cxx install-cxxabi<\/code>\u5b89\u88c5clang\/clang++\u6240\u9700\u8981\u7684<code>libc++<\/code>\u5e93\u3002<\/p>\n<p><img alt=\"\u5b89\u88c5 libcxx \u548c libcxxabi\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/make_install_cxx_cxxabi.png\" title=\"\u5b89\u88c5 libcxx \u548c libcxxabi\"><\/p>\n<h4>8 \u67e5\u770bclang\/clang++\u7248\u672c<\/h4>\n<p>\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u67e5\u770bclang\/clang++\u7248\u672c\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">clang<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">version<\/span>\n<span class=\"nx\">clang<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">tags<\/span><span class=\"o\">\/<\/span><span class=\"nx\">RELEASE_401<\/span><span class=\"o\">\/<\/span><span class=\"k\">final<\/span><span class=\"p\">)<\/span><span class=\"nx\">Target<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">x86_64<\/span><span class=\"o\">-<\/span><span class=\"nx\">unknown<\/span><span class=\"o\">-<\/span><span class=\"nx\">linux<\/span><span class=\"o\">-<\/span><span class=\"nx\">gnuThread<\/span><span class=\"w\"> <\/span><span class=\"nx\">model<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">posixInstalledDir<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">clang<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">version<\/span>\n<span class=\"nx\">clang<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">4.0.1<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">tags<\/span><span class=\"o\">\/<\/span><span class=\"nx\">RELEASE_401<\/span><span class=\"o\">\/<\/span><span class=\"k\">final<\/span><span class=\"p\">)<\/span><span class=\"nx\">Target<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">x86_64<\/span><span class=\"o\">-<\/span><span class=\"nx\">unknown<\/span><span class=\"o\">-<\/span><span class=\"nx\">linux<\/span><span class=\"o\">-<\/span><span class=\"nx\">gnuThread<\/span><span class=\"w\"> <\/span><span class=\"nx\">model<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">posixInstalledDir<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>\n\n<h4>9 \u67e5\u770b\u5b89\u88c5\u4f4d\u7f6e<\/h4>\n<p>\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u67e5\u770bclang\/clang++\u5b89\u88c5\u7684\u4f4d\u7f6e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">clang<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">clang<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">clang<\/span><span class=\"o\">++<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">clang<\/span><span class=\"o\">++<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>\n\n<h4>10 \u67e5\u770bLLVM\u7684\u914d\u7f6e<\/h4>\n<p>\u4f7f\u7528<code>llvm-config --bindir --includedir --libdir --cmakedir<\/code>\u547d\u4ee4\u67e5\u770bllvm\u7684\u914d\u7f6e\u4fe1\u606f\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528llvm-config\u67e5\u770bLLVM\u7684\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2017\/10\/llvm_config_bin_include_lib_dir.png\" title=\"\u4f7f\u7528llvm-config\u67e5\u770bLLVM\u7684\u914d\u7f6e\"><\/p>\n<h4>11 \u4f7f\u7528clang++\u7f16\u8bd1c++\u7a0b\u5e8f<\/h4>\n<p>clang\/clang++\u76ee\u524d\u662f\u517c\u5bb9gcc\/g++\u7684\uff0c\u6240\u4ee5\u4e8c\u8005\u7684\u7f16\u8bd1\u547d\u4ee4\u57fa\u672c\u4e00\u81f4\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">clang<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">cpp<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">Wall<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">g<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5982\u679c\u5728\u5c0f\u82824\u4e2d\u6ca1\u6709\u6307\u5b9a<code>DCLANG_DEFAULT_CXX_STDLIB<\/code>\u53c2\u6570\u7684\u503c\uff0c\u90a3\u4e48\u5728\u7f16\u8bd1\u7684\u65f6\u5019\u9700\u8981\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">clang<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">cpp<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">Wall<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">g<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">stdlib<\/span><span class=\"p\">=<\/span><span class=\"nx\">libc<\/span><span class=\"o\">++<\/span>\n<\/code><\/pre><\/div>\n\n<h4>12 \u9519\u8bef\u5206\u6790<\/h4>\n<p>\u4ece\u4e0b\u9762\u8fd9\u4e2a\u9519\u8bef\u4fe1\u606f\u53ef\u4ee5\u77e5\u9053\uff1aLLVM\u6700\u65b0\u76844.0.1\u7248\u672c\u5df2\u7ecf\u4e0d\u80fd\u901a\u8fc7configure\/make\u6765\u7f16\u8bd1\u5b89\u88c5\u4e86\uff0c\u5b83\u53ea\u652f\u6301<code>CMake<\/code>\u7f16\u8bd1\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">..<\/span><span class=\"o\">\/<\/span><span class=\"nx\">llvm<\/span><span class=\"o\">\/<\/span><span class=\"nx\">configure<\/span><span class=\"w\">  <\/span><span class=\"o\">--<\/span><span class=\"nx\">enable<\/span><span class=\"o\">-<\/span><span class=\"nx\">optimized<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">enable<\/span><span class=\"o\">-<\/span><span class=\"nx\">targets<\/span><span class=\"p\">=<\/span><span class=\"nx\">host<\/span><span class=\"o\">-<\/span><span class=\"nx\">only<\/span><span class=\"w\"> <\/span><span class=\"nx\">CC<\/span><span class=\"p\">=<\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"nx\">CXX<\/span><span class=\"p\">=<\/span><span class=\"nx\">g<\/span><span class=\"o\">++<\/span><span class=\"err\">################################################################################################################################################################<\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">LLVM<\/span><span class=\"w\"> <\/span><span class=\"nx\">project<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">longer<\/span><span class=\"w\"> <\/span><span class=\"nx\">supports<\/span><span class=\"w\"> <\/span><span class=\"nx\">building<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">configure<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"p\">.<\/span><span class=\"err\">\u200b<\/span><span class=\"nx\">Please<\/span><span class=\"w\"> <\/span><span class=\"nx\">migrate<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">CMake<\/span><span class=\"o\">-<\/span><span class=\"nx\">based<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"w\"> <\/span><span class=\"nx\">system<\/span><span class=\"p\">.<\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">more<\/span><span class=\"w\"> <\/span><span class=\"nx\">information<\/span><span class=\"w\"> <\/span><span class=\"nx\">see<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/llvm.org\/docs\/CMake.html################################################################################################################################################################<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">build<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"CMake"}},{"@attributes":{"term":"clang"}}]},{"title":"Typecho\u540c\u6b65\u65b0\u6d6a\u5fae\u535a\u7684\u63d2\u4ef6\uff08\u53ef\u63d0\u53d6\u6587\u7ae0\u56fe\u7247\u4f5c\u914d\u56fe\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/typechosynweibo.html","rel":"alternate"}},"published":"2017-07-04T22:52:00+08:00","updated":"2017-07-04T22:52:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-07-04:\/mix\/typechosynweibo.html","summary":"<p>\u7531\u4e8e\u535a\u5ba2\u57282015-12-10\u5df2\u7ecf\u4eceTypecho\u8f6c\u5230\u4e86Pelican\uff0c\u6240\u4ee5\u628a\u8fd9\u4e2aTypecho\u540c\u6b65\u65b0\u6d6a\u5fae\u535a\u7684\u63d2\u4ef6\u653e\u5728Github\u4e0a\u540e\u5c31\u4e00\u76f4\u4e5f\u6ca1\u7ba1\u4e86\u3002\u6700\u8fd1\u6709\u540c\u5b66\u5728Github\u4e0a\u63d0\u4e86<a href=\"https:\/\/github.com\/vfhky\/WeiboSync\/issues\" title=\"\u67e5\u770bissue\">issue<\/a>\uff0c\u4e8e\u662f\u5199\u4e86\u8fd9\u7bc7\u6587\u7ae0\u5bf9\u63d2\u4ef6\u4f5c\u4e86\u8be6\u7ec6\u8bf4\u660e\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u6709\u5e2e\u52a9\u3002<\/p>\n<p>\u63d2\u4ef6\u57fa\u4e8e<a href=\"http:\/\/open.weibo.com\" title=\"\u70b9\u51fb\u67e5\u770b\">\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0<\/a>\u6700\u65b0\u7684<code>OAuth2<\/code>\u8ba4\u8bc1\u65b9\u5f0f\u8c03\u7528\u76f8\u5173API\u63a5\u53e3\u628a\u6587\u7ae0\u540c\u6b65\u5230\u5fae\u535a\u4e0a\u3002\u5fae\u535a\u53d1\u5e03\u540e\uff0c\u4f1a\u663e\u793a\u6765\u6e90\uff08\u4e5f\u5373\u5e94\u7528\u540d\u79f0\uff0c\u5982\u4e0b\u56feBZ\u7684\u662f<code>TypeCodes<\/code>\uff09\u4ee5\u53ca\u7f29\u7565\u56fe\uff08\u9700\u8981\u5728\u63d2\u4ef6\u540e\u53f0\u8bbe\u7f6e\uff09\u3002<\/p>\n<p><img alt=\"\u535a\u5ba2\u6587\u7ae0\u540c\u6b65\u5230\u65b0\u6d6a\u5fae\u535a\u7684\u6548\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/blog_synchronize_weibo.png\" title=\"\u535a\u5ba2\u6587\u7ae0\u540c\u6b65\u5230\u65b0\u6d6a\u5fae\u535a\u7684\u6548\u679c\"><\/p>\n","content":"<p>\u7531\u4e8e\u535a\u5ba2\u57282015-12-10\u5df2\u7ecf\u4eceTypecho\u8f6c\u5230\u4e86Pelican\uff0c\u6240\u4ee5\u628a\u8fd9\u4e2aTypecho\u540c\u6b65\u65b0\u6d6a\u5fae\u535a\u7684\u63d2\u4ef6\u653e\u5728Github\u4e0a\u540e\u5c31\u4e00\u76f4\u4e5f\u6ca1\u7ba1\u4e86\u3002\u6700\u8fd1\u6709\u540c\u5b66\u5728Github\u4e0a\u63d0\u4e86<a href=\"https:\/\/github.com\/vfhky\/WeiboSync\/issues\" title=\"\u67e5\u770bissue\">issue<\/a>\uff0c\u4e8e\u662f\u5199\u4e86\u8fd9\u7bc7\u6587\u7ae0\u5bf9\u63d2\u4ef6\u4f5c\u4e86\u8be6\u7ec6\u8bf4\u660e\uff0c\u5e0c\u671b\u5bf9\u5927\u5bb6\u6709\u5e2e\u52a9\u3002<\/p>\n<p>\u63d2\u4ef6\u57fa\u4e8e<a href=\"http:\/\/open.weibo.com\" title=\"\u70b9\u51fb\u67e5\u770b\">\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0<\/a>\u6700\u65b0\u7684<code>OAuth2<\/code>\u8ba4\u8bc1\u65b9\u5f0f\u8c03\u7528\u76f8\u5173API\u63a5\u53e3\u628a\u6587\u7ae0\u540c\u6b65\u5230\u5fae\u535a\u4e0a\u3002\u5fae\u535a\u53d1\u5e03\u540e\uff0c\u4f1a\u663e\u793a\u6765\u6e90\uff08\u4e5f\u5373\u5e94\u7528\u540d\u79f0\uff0c\u5982\u4e0b\u56feBZ\u7684\u662f<code>TypeCodes<\/code>\uff09\u4ee5\u53ca\u7f29\u7565\u56fe\uff08\u9700\u8981\u5728\u63d2\u4ef6\u540e\u53f0\u8bbe\u7f6e\uff09\u3002<\/p>\n<p><img alt=\"\u535a\u5ba2\u6587\u7ae0\u540c\u6b65\u5230\u65b0\u6d6a\u5fae\u535a\u7684\u6548\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/blog_synchronize_weibo.png\" title=\"\u535a\u5ba2\u6587\u7ae0\u540c\u6b65\u5230\u65b0\u6d6a\u5fae\u535a\u7684\u6548\u679c\"><\/p>\n\n\n<h3>1 \u63d2\u4ef6\u8bf4\u660e\uff1a<\/h3>\n<p>\u7531\u4e8e\u63d2\u4ef6\u57fa\u4e8e<code>OAuth2<\/code>\u8ba4\u8bc1\u65b9\u5f0f\uff0c\u5728\u8c03\u7528\u76f8\u5173\u5fae\u535aAPI\u7684\u65f6\u5019\u9700\u8981\u7528\u6237\u7684<code>access_token<\/code>\uff0830\u5929\u6709\u6548\uff09\u548c<code>uid<\/code>\u6570\u636e\uff0c\u6240\u4ee5\u9700\u8981\u81ea\u5df1\u989d\u5916\u642d\u5efa\u4e00\u4e2a\u65b0\u6d6a\u5fae\u535a\u5e94\u7528\u670d\u52a1\u3002<\/p>\n<h3>2 \u642d\u5efa\u65b0\u6d6a\u5fae\u535a\u5e94\u7528\u670d\u52a1\uff1a<\/h3>\n<p>\u9996\u5148\u7528\u6237\u5fc5\u987b\u6709\u4e00\u4e2a\u5df2\u7ecf\u5ba1\u6838\u901a\u8fc7\u7684\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0\u7684\u5e94\u7528\u3002\u7533\u8bf7\u65b9\u6cd5\u8fd9\u91cc\u4e0d\u518d\u8d58\u8ff0\uff0c\u8be6\u89c1<a href=\"http:\/\/open.weibo.com\/authentication\/\" title=\"\u5fae\u535a\u767b\u5f55\u4ecb\u7ecd\">\u5b98\u65b9\u8bf4\u660e<\/a>\u3002<\/p>\n<h5>2.1 \u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/h5>\n<p>\u6839\u636e\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0\u7684\u5e94\u7528\u7684\u4fe1\u606f\u4fee\u6539<code>config.php<\/code>\u6587\u4ef6\u4e2d\u7684<code>WB_AKEY<\/code>\u3001<code>WB_SKEY<\/code>\u548c<code>WB_CALLBACK_URL<\/code>\u8fd9\u4e09\u4e2a\u53d8\u91cf\uff0c\u5b83\u4eec\u5206\u522b\u4ee3\u8868\u5e94\u7528\u7684<code>App Key<\/code>\u3001<code>App Secret<\/code>\u548c\u56de\u8c03\u5730\u5740\u3002<\/p>\n<p><img alt=\"\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0OAuth2.0\u6388\u6743\u56de\u8c03\u5730\u5740\" src=\"https:\/\/cdn.typecodes.com\/2017\/07\/sinaweiboauthcallback_1.png\" title=\"\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0OAuth2.0\u6388\u6743\u56de\u8c03\u5730\u5740\"><\/p>\n<h5>2.2 \u535a\u5ba2\u642d\u5efa\u56de\u8c03\u670d\u52a1<\/h5>\n<p>\u628a\u672c\u76ee\u5f55\uff08<code>weibo<\/code>\uff09\u4e0a\u4f20\u81f3\u5bf9\u5e94\u7684\u65b0\u6d6a\u5fae\u535a\u5e94\u7528\u670d\u52a1\u5668\uff0c\u5982\u679c\u80fd\u901a\u8fc7\u8bbf\u95ee\u8be5\u56de\u8c03\u5730\u5740\uff08\u4f8b\u5982<code>https:\/\/typecodes.com\/weibo<\/code>\uff09\u5219\u8868\u793a\u670d\u52a1\u642d\u5efa\u5b8c\u6bd5\u3002<\/p>\n<h3>3 \u5b89\u88c5\u63d2\u4ef6\uff1a<\/h3>\n<p>\u5728\u642d\u5efa\u65b0\u6d6a\u5fae\u535a\u5e94\u7528\u670d\u52a1\u540e\u5c31\u53ef\u4ee5\u5b89\u88c5\u8fd9\u4e2a\u65b0\u6d6a\u5fae\u535a\u540c\u6b65\u63d2\u4ef6\u4e86\u3002<\/p>\n<h5>3.1 \u4fee\u6539\u914d\u7f6e\u6587\u4ef6<\/h5>\n<p>\u540c2.1\u5c0f\u8282\u6240\u793a\uff0c\u6839\u636e\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0\u7684\u5e94\u7528\u7684\u4fe1\u606f\u4fee\u6539<code>config.php<\/code>\u6587\u4ef6\u4e2d\u7684<code>WB_AKEY<\/code>\u3001<code>WB_SKEY<\/code>\u548c<code>WB_CALLBACK_URL<\/code>\u8fd9\u4e09\u4e2a\u53d8\u91cf\uff0c\u5b83\u4eec\u5206\u522b\u4ee3\u8868\u5e94\u7528\u7684<code>App Key<\/code>\u3001<code>App Secret<\/code>\u548c\u56de\u8c03\u5730\u5740\u3002<\/p>\n<h5>3.2 \u4e0a\u4f20\u63d2\u4ef6\u7a0b\u5e8f<\/h5>\n<p>\u628a\u672c\u76ee\u5f55\uff08<code>WeiboSync<\/code>\uff09\u4e0a\u4f20\u81f3Typecho\u63d2\u4ef6\u76ee\u5f55\uff08\u9ed8\u8ba4\u4e3a<code>\/usr\/plugins<\/code>\uff09\u3002<\/p>\n<h3>4 \u63d2\u4ef6\u8bbe\u7f6e<\/h3>\n<p>\u8fdb\u5165typecho\u7684\u540e\u53f0\u5e76\u542f\u7528<code>WeiboSync<\/code>\u63d2\u4ef6\uff0c\u518d\u70b9\u51fb<code>\u8bbe\u7f6e<\/code>\u6309\u94ae\uff0c\u8fdb\u5165\u5230<code>WeiboSync<\/code>\u63d2\u4ef6\u4fe1\u606f\u7684\u8bbe\u7f6e\u9875\u9762\u3002<\/p>\n<p><img alt=\"Typecho\u540c\u6b65\u65b0\u6d6a\u5fae\u535a\u7684\u63d2\u4ef6\u7684\u8bbe\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/update_weibo_plugin.png\" title=\"Typecho\u540c\u6b65\u65b0\u6d6a\u5fae\u535a\u7684\u63d2\u4ef6\u7684\u8bbe\u7f6e\"><\/p>\n<p>\u70b9\u51fb\u201c\u4f7f\u7528\u5fae\u535a\u8d26\u53f7\u767b\u5f55\u201d\u6309\u94ae\u4f1a\u8df3\u8f6c\u5230\u65b0\u6d6a\u5fae\u535a\u767b\u5f55\u6388\u6743\u754c\u9762\uff0c\u5728\u6388\u6743\u767b\u5f55\u540e\u4f1a\u81ea\u52a8\u8df3\u8f6c\u52302.2\u5c0f\u8282\u8bbe\u7f6e\u7684\u56de\u8c03\u5730\u5740\u754c\u9762\u3002<\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5728\u8fd9\u4e2a\u754c\u9762\u4f1a\u8f93\u51fa\u7528\u6237\u7684<code>access_token<\/code>\uff0830\u5929\u6709\u6548\uff09\u548c<code>uid<\/code>\u6570\u636e\uff0c\u628a\u8fd9\u4e24\u4e2a\u503c\u586b\u5199\u5230\u4e0a\u56fe\u4e2d\u7684<code>\u65b0\u6d6a\u5fae\u535aAccess Token<\/code>\u548c<code>\u4e2a\u4eba\u5fae\u535aID<\/code>\u4e2d\u5373\u53ef\u3002<\/p>\n<p><img alt=\"\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0\u7684\u5e94\u7528\u56de\u8c03\u670d\u52a1\" src=\"https:\/\/cdn.typecodes.com\/2017\/07\/typechosynweibo.png\" title=\"\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0\u7684\u5e94\u7528\u56de\u8c03\u670d\u52a1\"><\/p>\n<h3>5 \u63d2\u4ef6\u7ef4\u62a4<\/h3>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u6574\u4e2a\u5de5\u7a0b\u653e\u5728\u4e86GitHub\u4e0a\u4e86\uff0c\u5730\u5740\u662f\uff1a<a href=\"https:\/\/github.com\/vfhky\/WeiboSync\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/WeiboSync<\/a> \u3002<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"\u65b0\u6d6a\u5fae\u535a\u5f00\u653e\u5e73\u53f0"}},{"@attributes":{"term":"typecho\u63d2\u4ef6"}}]},{"title":"shell\u904d\u5386\u8f93\u51fa\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u7684\u65e5\u671f","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/alldateduringtwodays1.html","rel":"alternate"}},"published":"2017-06-22T22:48:00+08:00","updated":"2017-06-22T22:48:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-06-22:\/linux\/alldateduringtwodays1.html","summary":"<p>\u5728\u5e73\u5e38c\/c++\u5f00\u53d1\u4e2d\u7ecf\u5e38\u9047\u5230\u65e5\u671f\u5904\u7406\u7684\u60c5\u5f62\uff0c\u4f8b\u5982\u6c42\u4e24\u4e2a\u7ed9\u5b9a\u7684\u65e5\u671f\u4e4b\u95f4\u76f8\u5dee\u7684\u5929\u6570\u6216\u8005\u9700\u8981\u4f7f\u7528map\u5b58\u50a8\u4e24\u4e2a\u56fa\u5b9a\u65e5\u671f\u8303\u56f4\u5185\u7684\u6240\u6709\u65e5\u671f\u3002\u524d\u6bb5\u65f6\u95f4\u9879\u76ee\u4e2d\u9700\u8981\u7528shell\u811a\u672c\u6279\u91cf\u5904\u7406\u7ed9\u5b9a\u7684\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u65e5\u671f\u4ea7\u751f\u7684\u65e5\u5fd7\uff0c\u5f53\u65f6\u4ee5\u4e3ashell\u5904\u7406\u4e0d\u65b9\u4fbf\u5c31\u7528c++\u6765\u5904\u7406\u4e86\u3002\u540e\u9762\u7528shell\u5b9e\u73b0\u4e86\u4e0b\uff0c\u53d1\u73b0\u4e5f\u633a\u7b80\u5355\u7684\u3002<\/p>\n<p><img alt=\"shell\u904d\u5386\u8f93\u51fa\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u7684\u65e5\u671f\" src=\"https:\/\/cdn.typecodes.com\/2017\/06\/alldateduringtwodays1_1.png\" title=\"shell\u904d\u5386\u8f93\u51fa\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u7684\u65e5\u671f\"><\/p>\n","content":"<p>\u5728\u5e73\u5e38c\/c++\u5f00\u53d1\u4e2d\u7ecf\u5e38\u9047\u5230\u65e5\u671f\u5904\u7406\u7684\u60c5\u5f62\uff0c\u4f8b\u5982\u6c42\u4e24\u4e2a\u7ed9\u5b9a\u7684\u65e5\u671f\u4e4b\u95f4\u76f8\u5dee\u7684\u5929\u6570\u6216\u8005\u9700\u8981\u4f7f\u7528map\u5b58\u50a8\u4e24\u4e2a\u56fa\u5b9a\u65e5\u671f\u8303\u56f4\u5185\u7684\u6240\u6709\u65e5\u671f\u3002\u524d\u6bb5\u65f6\u95f4\u9879\u76ee\u4e2d\u9700\u8981\u7528shell\u811a\u672c\u6279\u91cf\u5904\u7406\u7ed9\u5b9a\u7684\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u65e5\u671f\u4ea7\u751f\u7684\u65e5\u5fd7\uff0c\u5f53\u65f6\u4ee5\u4e3ashell\u5904\u7406\u4e0d\u65b9\u4fbf\u5c31\u7528c++\u6765\u5904\u7406\u4e86\u3002\u540e\u9762\u7528shell\u5b9e\u73b0\u4e86\u4e0b\uff0c\u53d1\u73b0\u4e5f\u633a\u7b80\u5355\u7684\u3002<\/p>\n<p><img alt=\"shell\u904d\u5386\u8f93\u51fa\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u7684\u65e5\u671f\" src=\"https:\/\/cdn.typecodes.com\/2017\/06\/alldateduringtwodays1_1.png\" title=\"shell\u904d\u5386\u8f93\u51fa\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u7684\u65e5\u671f\"><\/p>\n\n\n<h4>1 \u601d\u8def\u6d41\u7a0b<\/h4>\n<p>1\u3001\u663e\u7136\u4e0d\u80fd\u76f4\u63a5\u628a\u8fd9\u4e24\u4e2a\u65e5\u671f\u5f53\u4f5c\u6574\u6570\u76f8\u51cf\u5f97\u5230\u5dee\u503c\u7136\u540e\u628a\u521d\u59cb\u65e5\u671f\u4e0d\u65ad\u7d2f\u52a01\u5f97\u5230\u6240\u6709\u7684\u65e5\u671f\uff0c\u800c\u4e14\u8981\u8003\u8651\u5927\u5c0f\u6708\u7684\u95ee\u9898\u3002<\/p>\n<p>2\u3001\u4e3a\u4e86\u4ee5\u540e\u5f00\u53d1\u7684\u65b9\u4fbf\uff0c\u9700\u8981\u628a\u8fd9\u4e2a\u6c42\u4e24\u4e2a\u56fa\u5b9a\u4e0a\u671f\u8303\u56f4\u5185\u7684\u6240\u6709\u65e5\u671f\u529f\u80fd\u5c01\u88c5\u5728\u4e00\u4e2a\u51fd\u6570\uff08\u5373\u4e0b\u9762\u811a\u672c\u4e2d\u7684<code>genAlldate<\/code>\uff09\u4e2d\u3002<\/p>\n<p>\u4f46\u662fshell\u7684<code>function<\/code>\u4e0d\u80fd\u50cfC\/C++\u90a3\u6837\u80fdreturn\u4e00\u4e2a\u6570\u636e\u7c7b\u578b\uff0c\u4e5f\u6ca1\u6709\u5f15\u7528\u6216\u8005\u6307\u9488\u7684\u529f\u80fd\uff0c\u6240\u4ee5\u5728\u9700\u8981\u5148\u58f0\u660e\u4e00\u4e2a\u6570\u7ec4\u53d8\u91cf<code>DATE_ARRAY<\/code>\u7528\u4e8e\u5b58\u653e\u8ba1\u7b97\u51fa\u6765\u7684\u6240\u6709\u65e5\u671f\uff0c\u7136\u540e\u5728\u51fd\u6570\u904d\u5386\u4e2d\u76f4\u63a5\u5199\u5165\u6bcf\u4e2a\u65e5\u671f\u6570\u636e\u3002<\/p>\n<p>3\u3001\u6700\u540e\u4f7f\u7528\u4e863\u79cd\u65b9\u6cd5\u6765\u904d\u5386\u8f93\u51fa\u6570\u7ec4<code>DATE_ARRAY<\/code>\u5b58\u653e\u7684\u6240\u6709\u65e5\u671f\u3002<\/p>\n<p>4\u3001\u8f93\u51fa\u7684\u65e5\u671f\u683c\u5f0f\u5c3d\u91cf\u80fd\u591f\u81ea\u5b9a\u4e49\uff0c\u4f8b\u59822017-03-30\u30012017.06.18\u548c20170618\u7b49\u7b49\u3002<\/p>\n<h4>2 shell\u7a0b\u5e8f<\/h4>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span>\n<span class=\"normal\">73<\/span>\n<span class=\"normal\">74<\/span>\n<span class=\"normal\">75<\/span>\n<span class=\"normal\">76<\/span>\n<span class=\"normal\">77<\/span>\n<span class=\"normal\">78<\/span>\n<span class=\"normal\">79<\/span>\n<span class=\"normal\">80<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      alldateduringtwodays1.sh<\/span>\n<span class=\"c1\"># Description:   Print all the date during the two days you inpute.<\/span>\n<span class=\"c1\"># Simple Usage:  .\/alldateduringtwodays1.sh 2017-04-01 2017-06-14 or .\/alldateduringtwodays1.sh 20170401 20170614 [-]<\/span>\n<span class=\"c1\"># (c) 2017.6.15 vfhky https:\/\/typecodes.com\/linux\/alldateduringtwodays1.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/datehandle\/alldateduringtwodays1.sh<\/span>\n\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-le<span class=\"w\"> <\/span><span class=\"m\">2<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">3<\/span><span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Usage: <\/span><span class=\"nv\">$0<\/span><span class=\"s2\"> 2017-04-01 2017-06-14 [-]  or  <\/span><span class=\"nv\">$0<\/span><span class=\"s2\"> 20170401 20170614 [-] .&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"nv\">START_DAY<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>+%s<span class=\"k\">)<\/span>\n<span class=\"nv\">END_DAY<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$2<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>+%s<span class=\"k\">)<\/span>\n<span class=\"c1\"># The spliter bettwen year, month and day.<\/span>\n<span class=\"nv\">SPLITER<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">3<\/span><span class=\"si\">}<\/span>\n\n\n<span class=\"c1\"># Declare an array to store all the date during the two days you inpute.<\/span>\n<span class=\"nb\">declare<\/span><span class=\"w\"> <\/span>-a<span class=\"w\"> <\/span>DATE_ARRAY\n\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>genAlldate\n<span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">3<\/span><span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Usage: genAlldate 2017-04-01 2017-06-14 [-]  or  genAlldate 20170401 20170614 [-] .&quot;<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n\n<span class=\"w\">    <\/span><span class=\"nv\">START_DAY_TMP<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">1<\/span><span class=\"si\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">END_DAY_TMP<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">2<\/span><span class=\"si\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">SPLITER_TMP<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">3<\/span><span class=\"si\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">I_DATE_ARRAY_INDX<\/span><span class=\"o\">=<\/span><span class=\"m\">0<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\"># while [[ &quot;${START_DAY}&quot; -le &quot;${END_DAY}&quot; ]]; do<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"o\">((<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">START_DAY_TMP<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&lt;<span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">END_DAY_TMP<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">))<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">do<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">cur_day<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span>@<span class=\"si\">${<\/span><span class=\"nv\">START_DAY_TMP<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>+<span class=\"s2\">&quot;%Y<\/span><span class=\"si\">${<\/span><span class=\"nv\">SPLITER_TMP<\/span><span class=\"si\">}<\/span><span class=\"s2\">%m<\/span><span class=\"si\">${<\/span><span class=\"nv\">SPLITER_TMP<\/span><span class=\"si\">}<\/span><span class=\"s2\">%d&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"w\">        <\/span>DATE_ARRAY<span class=\"o\">[<\/span><span class=\"si\">${<\/span><span class=\"nv\">I_DATE_ARRAY_INDX<\/span><span class=\"si\">}<\/span><span class=\"o\">]=<\/span><span class=\"si\">${<\/span><span class=\"nv\">cur_day<\/span><span class=\"si\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\"># We should use START_DAY_TMP other ${START_DAY_TMP} here.<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">START_DAY_TMP<\/span><span class=\"o\">=<\/span><span class=\"k\">$((<\/span><span class=\"si\">${<\/span><span class=\"nv\">START_DAY_TMP<\/span><span class=\"si\">}<\/span><span class=\"o\">+<\/span><span class=\"m\">86400<\/span><span class=\"k\">))<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">((<\/span>I_DATE_ARRAY_INDX++<span class=\"o\">))<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">#sleep 1<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">done<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Call the funciotn to generate date during the two days you inpute.<\/span>\ngenAlldate<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">START_DAY<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">END_DAY<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">SPLITER<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n\n\n<span class=\"c1\"># [Method 1] Traverse the array.<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;[Method 1] Traverse the array.&quot;<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>SINGLE_DAY<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">DATE_ARRAY<\/span><span class=\"p\">[@]<\/span><span class=\"si\">}<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">SINGLE_DAY<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">done<\/span>\n\n\n<span class=\"c1\"># [Method 2] Traverse the array.<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;\\n[Method 2] Traverse the array.&quot;<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>i<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"p\">!DATE_ARRAY[@]<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">do<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">printf<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;%s\\t%s\\n&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$i<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">DATE_ARRAY<\/span><span class=\"p\">[<\/span><span class=\"nv\">$i<\/span><span class=\"p\">]<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">done<\/span>\n\n\n<span class=\"c1\"># [Method 3] Traverse the array.<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;\\n[Method 3] Traverse the array.&quot;<\/span>\n<span class=\"nv\">i<\/span><span class=\"o\">=<\/span><span class=\"m\">0<\/span>\n<span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$i<\/span><span class=\"w\"> <\/span>-lt<span class=\"w\"> <\/span><span class=\"si\">${#<\/span><span class=\"nv\">DATE_ARRAY<\/span><span class=\"p\">[@]<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">DATE_ARRAY<\/span><span class=\"p\">[<\/span><span class=\"nv\">$i<\/span><span class=\"p\">]<\/span><span class=\"si\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">let<\/span><span class=\"w\"> <\/span>i++\n<span class=\"k\">done<\/span>\n\n<span class=\"c1\"># If you do not need this array any more, you can unset it.<\/span>\n<span class=\"c1\"># unset DATE_ARRAY<\/span>\n\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u6d4b\u8bd5<\/h4>\n<p>\u8be5shell\u811a\u672c\u652f\u6301\u7684\u8f93\u5165\u65e5\u671f\u683c\u5f0f\u4e3a<code>2017-04-01<\/code>\u548c<code>20170401<\/code>\u8fd9\u4e24\u79cd\uff0c\u8f93\u51fa\u7684\u65e5\u671f\u683c\u5f0f\u683c\u5f0f\u5f88\u7075\u6d3b\uff0c\u53ea\u8981\u5728\u6267\u884c\u7a0b\u5e8f\u65f6\u518d\u8ffd\u52a0\u4e00\u4e2a\u4efb\u610f\u65e5\u671f\u5206\u9694\u7b26\uff08\u4f8b\u5982\u5e38\u89c1\u7684<code>.<\/code>\u3001<code>-<\/code>\u7b49\uff09\u5373\u53ef\uff0c\u6700\u540e\u7531\u811a\u672c\u4e2d\u7684<code>SPLITER<\/code>\u53d8\u91cf\u505a\u8f93\u51fa\u683c\u5f0f\u63a7\u5236\u3002<\/p>\n<p>\u8fd9\u91cc\u4f7f\u7528<code>.\/alldateduringtwodays1.sh 2017-03-30 2017-04-02 .<\/code>\u8fdb\u884c\u6d4b\u8bd5\uff0c\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n<p><img alt=\"shell\u904d\u5386\u8f93\u51fa\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u7684\u65e5\u671f\" src=\"https:\/\/cdn.typecodes.com\/2017\/06\/alldateduringtwodays1_2.png\" title=\"shell\u904d\u5386\u8f93\u51fa\u4e24\u4e2a\u65e5\u671f\u8303\u56f4\u5185\u6240\u6709\u7684\u65e5\u671f\"><\/p>\n<h4>4 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"traverse"}}]},{"title":"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e09\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/sedawkfindreplace3.html","rel":"alternate"}},"published":"2017-05-22T23:45:00+08:00","updated":"2017-05-22T23:45:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-05-22:\/linux\/sedawkfindreplace3.html","summary":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/sedawkfindreplace2.html\" title=\"\u300a\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e8c\uff09\u300b\">\u524d\u6587<\/a>\u4e2d\u6f14\u793a\u4e86\u4f7f\u7528awk\u548csed\u547d\u4ee4\u6b63\u5219\u67e5\u627e\u548c\u66ff\u6362<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b\">Makefile<\/a>\u6587\u4ef6\u4e2d\u7684<code>make clean<\/code>\u64cd\u4f5c\u89c4\u5219\uff1a\u628a<code>-$(RM) $(ULT_BIN)<\/code>\u548c<code>-$(RM) $(ULT_BIN)<\/code>\u8fd9\u4e24\u53e5\u5199\u6210\u4e00\u53e5<code>-$(RM)  $(ULT_BIN) $(ULT_BIN)<\/code>\uff0c\u8fd9\u7bc7\u6587\u4ef6\u4e3b\u8981\u662f\u901a\u8fc7<code>sed<\/code>\u548c<code>awk<\/code>\u547d\u4ee4\u7ee7\u7eed\u4f18\u5316\u8be5Makefile\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e09\uff09\" src=\"https:\/\/cdn.typecodes.com\/2017\/05\/sedawkfindreplace3_awk_sed_find_1.png\" title=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e09\uff09\"><\/p>\n","content":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/sedawkfindreplace2.html\" title=\"\u300a\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e8c\uff09\u300b\">\u524d\u6587<\/a>\u4e2d\u6f14\u793a\u4e86\u4f7f\u7528awk\u548csed\u547d\u4ee4\u6b63\u5219\u67e5\u627e\u548c\u66ff\u6362<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b\">Makefile<\/a>\u6587\u4ef6\u4e2d\u7684<code>make clean<\/code>\u64cd\u4f5c\u89c4\u5219\uff1a\u628a<code>-$(RM) $(ULT_BIN)<\/code>\u548c<code>-$(RM) $(ULT_BIN)<\/code>\u8fd9\u4e24\u53e5\u5199\u6210\u4e00\u53e5<code>-$(RM)  $(ULT_BIN) $(ULT_BIN)<\/code>\uff0c\u8fd9\u7bc7\u6587\u4ef6\u4e3b\u8981\u662f\u901a\u8fc7<code>sed<\/code>\u548c<code>awk<\/code>\u547d\u4ee4\u7ee7\u7eed\u4f18\u5316\u8be5Makefile\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e09\uff09\" src=\"https:\/\/cdn.typecodes.com\/2017\/05\/sedawkfindreplace3_awk_sed_find_1.png\" title=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e09\uff09\"><\/p>\n\n\n<h4>1 \u5177\u4f53\u529f\u80fd\u9700\u6c42<\/h4>\n<p>\u8981\u5b9e\u73b0\u7684\u6548\u679c\u5982\u679c\u4e0a\u56fe\u6240\u793a\uff0c\u5de6\u8fb9\u8868\u793a\u4e4b\u524d\u7684Makefile\u6587\u4ef6\uff0c\u53f3\u8fb9\u662f\u901a\u8fc7\u672c\u6b21Shell\u811a\u672c\u5904\u7406\u540e\u7684Makefile\u6587\u4ef6\uff0c\u7ea2\u8272\u90e8\u5206\u5c31\u662f\u9700\u8981\u70b9\u3002\u5177\u4f53\u5982\u4e0b\uff1a<\/p>\n<p>\u9700\u6c421\uff1a<\/p>\n<p>\u4e4b\u524d\u8fd9\u4e2aMakefile\u811a\u672c\u5728\u751f\u6210\u591a\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\u65f6\u4f1a\u8c03\u7528<code>gen_excbin<\/code>\u5305\uff0c\u7136\u540e\u6267\u884c<code>*.o<\/code>\u7684\u751f\u6210\u89c4\u5219\uff0c\u4f46\u662f\u7531\u4e8e\u5b83\u524d\u9762\u52a0\u4e86<code>$(CURDIR)\/<\/code>\u53d8\u91cf\uff0c\u800c<code>%.cpp<\/code>\u548c<code>.c<\/code>\u524d\u9762\u6ca1\u6709\u52a0\uff0c\u6240\u4ee5\u4e0d\u4f1a\u8c03\u7528<code>gen_depend<\/code>\u5305\u751f\u6210.d\u4f9d\u8d56\u6587\u4ef6\u4e86\uff0c\u800c\u662f\u6309\u7167\u9ed8\u8ba4\u9690\u542b\u7684gcc\u6216\u8005g++\u7f16\u8bd1\u89c4\u5219\u751f\u6210.o\u6587\u4ef6\u3002\u6240\u4ee5\u4e3a\u4e86\u6279\u91cf\u66ff\u6362\u6389\u865a\u62df\u673a\u4e2d\u9879\u76ee\u73b0\u6709\u6240\u6709\u7684Makefile\u6587\u4ef6\uff0cBZ\u9009\u62e9\u7528\u5305\u542b<code>sed<\/code>\u548c<code>awk<\/code>\u547d\u4ee4\u7684shell\u811a\u672c\u6765\u5904\u7406\u3002<\/p>\n<p>\u9700\u6c422\uff1a<\/p>\n<p>\u6bcf\u8c03\u7528<code>gen_excbin<\/code>\u6216\u8005<code>gen_libs<\/code>\u5305\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\u6216\u8005\u5e93\u6587\u4ef6\u540e\uff08\u5373<code>$$@<\/code>\u548c<code>$$@ $$^)<\/code>\u7ed3\u5c3e\u5904\uff09\u90fd\u8ffd\u52a0\u6253\u5370\u4e00\u4e2a\u5305\u542b<code>SUCCESS<\/code>\u6587\u4ef6\u7684\u884c\uff0c\u65b9\u4fbf\u533a\u5206\u751f\u6210\u591a\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\u65f6\u65e5\u5fd7\u4e0d\u597d\u533a\u5206\u7684\u60c5\u5f62\u3002<\/p>\n<p>\u9700\u6c423\uff1a<\/p>\n<p>\u66ff\u6362\u6389\u539f\u6765\u7684<code>$(bin).o<\/code>\u4e3a<code>$(CURDIR)\/$(bin).o<\/code>\u3002<\/p>\n<h4>2 shell\u7a0b\u5e8f<\/h4>\n<p>\u4e0b\u9762\u7684\u8fd9\u4efdshell\u811a\u672c\u6bd4\u8f83\u7b80\u5355\uff0c\u76f4\u63a5\u8fd0\u884c<code>.\/sedawkfindreplace3.sh<\/code>\u5373\u53ef\u3002\u540c<a href=\"https:\/\/typecodes.com\/linux\/sedawkfindreplace2.html\" title=\"\u300a\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e8c\uff09\u300b\">\u524d\u6587<\/a>\u7684\u811a\u672c\u6846\u67b6\u4e00\u6837\uff0c\u8fd9\u91cc\u5148\u4f7f\u7528<code>for ... in<\/code>\u7684Makefile\u6587\u4ef6\u904d\u5386\u4e2d\uff0c\u7136\u540e\u5229\u7528\u4e86awk\u547d\u4ee4\u7684\u6b63\u5219\u5339\u914d\u67e5\u627e\u3001\u66ff\u6362\u64cd\u4f5c\uff0c\u7136\u540e\u662fsed\u547d\u4ee4\u6267\u884c\u6b63\u5219\u5339\u914d\u67e5\u627e\u3001\u66ff\u6362\u4ee5\u53ca\u8ffd\u52a0\u64cd\u4f5c\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      sedawkfindreplace3.sh<\/span>\n<span class=\"c1\"># Description:   Basic usage of sed and awk command such as find and replace words in the regular expression.<\/span>\n<span class=\"c1\"># Simple Usage:  .\/sedawkfindreplace1.sh<\/span>\n<span class=\"c1\"># (c) 2017.5.22 vfhky https:\/\/typecodes.com\/linux\/sedawkfindreplace3.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/filehandle\/sedawkfindreplace3.sh<\/span>\n\n\n<span class=\"c1\"># Dir to be handled for windows.<\/span>\n<span class=\"c1\"># SRC_DIR=&quot;\/e\/typecodes.com\/vfhky\/src&quot;<\/span>\n<span class=\"c1\"># Dir to be handled for Linux.<\/span>\n<span class=\"nv\">SRC_DIR<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\/home\/vfhky\/src&quot;<\/span>\n<span class=\"c1\"># The makefile you want to modify.<\/span>\n<span class=\"nv\">SEARCH_NAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;Makefile*&quot;<\/span>\n<span class=\"c1\"># The maximum depth of the dirs where files such as Makefile you&#39;re dealing with lies in.<\/span>\n<span class=\"nv\">MAXDEPTH<\/span><span class=\"o\">=<\/span><span class=\"m\">10<\/span>\n\n<span class=\"c1\"># Get the target files you want to modify.<\/span>\n<span class=\"nv\">ALL_MAKEFILE<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>find<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">SRC_DIR<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>-maxdepth<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">MAXDEPTH<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>-type<span class=\"w\"> <\/span>f<span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">SEARCH_NAME<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">)<\/span>\n\n\n<span class=\"c1\"># Traverse the target files.<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>FILE<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">ALL_MAKEFILE<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;Handling file=[&#39;<\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span><span class=\"s1\">&#39;]&#39;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#### Ways recommended: find &quot;-$(RM) $(ULT_BIN)&quot; by awk command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#awk &#39;\/\\$\\(CURDIR\\)\\\/\\%\\.o\\: \\%\\.cpp\/{printf( &quot;[%s:%d]: %s\\n&quot;, FILENAME, NR, $0) }&#39; ${FILE}<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#awk &#39;\/-lprint$\/{printf( &quot;[%s:%d]: %s\\n&quot;, FILENAME, NR, $0) }&#39; ${FILE}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">#### replace &quot;-$(RM) $(ULT_BIN)&quot; with &quot;-$(RM) $(ULT_BIN) $(ULT_LIBS)&quot; using awk command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># awk &#39;{sub(\/-\\$\\(RM\\) \\$\\(ULT_BIN\\)\/,&quot;-\\$\\(RM\\) \\$\\(ULT_BIN\\) \\$\\(ULT_LIBS\\)&quot;); print $0}&#39; ${FILE} &gt; ${FILE}.tmp; cp ${FILE}.tmp ${FILE}; rm -rf ${FILE}.tmp<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">#### find &quot;-$(RM) $(ULT_BIN)&quot; by sed command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#sed -n &quot;\/\\$(CURDIR)\\\/\\%.o: \\%.c$\/p&quot; ${FILE}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">#### Ways recommended: Step1. replace &quot;-$(RM) $(ULT_BIN)&quot; with &quot;-$(RM) $(ULT_BIN) $(ULT_LIBS)&quot; using sed command.<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">## \u66ff\u6362<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s1\">&#39;s#\\$(CURDIR)\\\/\\%.o: \\%.cpp$#\\$(CURDIR)\\\/\\%.o: \\$(CURDIR)\\\/\\%.cpp#g&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">## \u66ff\u6362<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s1\">&#39;s#\\$(CURDIR)\\\/\\%.o: \\%.c$#\\$(CURDIR)\\\/\\%.o: \\$(CURDIR)\\\/\\%.c#g&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">## \u66ff\u6362<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s1\">&#39;s#$(bin).o#\\$(CURDIR)\\\/$(bin).o#g&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">## \u8ffd\u52a0\uff08\u4ee5  $$@  \u7ed3\u5c3e\uff09<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s1\">&#39;\/ -o \\$\\$\\@$\/ a\\<\/span>\n<span class=\"s1\">    @echo \\&quot;========================Success========================\\&quot;&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">## \u8ffd\u52a0\uff08\u4ee5  $$@ $$^)  \u7ed3\u5c3e\uff09<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"s1\">&#39;\/\\$\\$\\@ \\$\\$\\^)$\/ a\\<\/span>\n<span class=\"s1\">    @echo \\&quot;========================Success========================\\&quot;&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u811a\u672c\u6d4b\u8bd5<\/h4>\n<p>BZ\u5728C\/C++\u5de5\u7a0b\u5728\/home\/vfhky\/src\uff0c\u6267\u884c\u8fd9\u4e2a\u811a\u672c\u5f97\u5230\u7684\u5982\u4e0b\u56fe\u6240\u793a\u7684\u7ed3\u679c\uff1a<\/p>\n<p><img alt=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e09\uff09\" src=\"https:\/\/cdn.typecodes.com\/2017\/05\/sedawkfindreplace3_awk_sed_find_2.png\" title=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e09\uff09\"><\/p>\n<h4>4 Linux find \u547d\u4ee4\u4e2d\u6b63\u5219<\/h4>\n<p>\u5728<code>find<\/code>\u547d\u4ee4\u7684\u67d0\u4e2a\u53c2\u6570\u4f7f\u7528\u6b63\u5219\uff0c\u90a3\u4e48\u6700\u597d\u5bf9\u8fd9\u4e2a\u5bf9\u6570\u52a0\u4e0a\u53cc\u5f15\u53f7\uff0c\u6b63\u5982\u4e0a\u9762\u7684\u4ee3\u7801<code>\"${SEARCH_NAME}\"<\/code>\u6240\u793a\uff0c\u5426\u5219\u4f1a\u51fa\u73b0\u4e0b\u9762\u7684\u9519\u8bef\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nl\">find<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">paths<\/span><span class=\"w\"> <\/span><span class=\"n\">must<\/span><span class=\"w\"> <\/span><span class=\"n\">precede<\/span><span class=\"w\"> <\/span><span class=\"nl\">expression<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Makefile1<\/span>\n<span class=\"k\">Usage<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">find<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-H<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-L<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-P<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-Olevel<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-D help|tree|search|stat|rates|opt|exec<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">path...<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">expression<\/span><span class=\"o\">]<\/span>\n<\/code><\/pre><\/div>\n\n<h4>5 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>\n<p>\u540c\u65f6\uff0cBZ\u4e5f\u628a\u4fee\u6539\u540e\u7684Makefile\u6587\u4ef6\u540c\u6b65\u66f4\u65b0\u5230\u4e86\u5bf9\u5e94\u7684Github\u4e0a\u4e86\uff0c\u6b22\u8fce\u5173\u6ce8\uff0c\u5730\u5740\u8fd8\u662f\u4e4b\u524d\u7684\uff1a<a href=\"https:\/\/github.com\/vfhky\/General_Makefile\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/General_Makefile<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"sed"}},{"@attributes":{"term":"awk"}},{"@attributes":{"term":"Makefile"}}]},{"title":"\u4f7f\u7528C++ STL\u5e93\u7edf\u8ba1\u4e00\u6563\u6587\u4e2d\u5355\u8bcd\u51fa\u73b0\u6b21\u6570\u548c\u884c\u53f7","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/stlcalcarticlewordlines1.html","rel":"alternate"}},"published":"2017-04-16T16:44:00+08:00","updated":"2017-04-16T16:44:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-04-16:\/cseries\/stlcalcarticlewordlines1.html","summary":"<p>\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7ecf\u5e38\u4f1a\u9047\u5230\u6587\u4ef6\u5904\u7406\u7684\u60c5\u5f62\uff0c\u4f8b\u5982\u7edf\u8ba1\u4e00\u7bc7\u6587\u7ae0\u5355\u8bcd\u7684\u6570\u91cf\u3001\u884c\u6570\u3001\u51fa\u73b0\u9891\u7387\u6700\u9ad8\u7684\u51e0\u4e2a\u5355\u8bcd\u7b49\u7b49\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7C++\u6765\u89e3\u6790\u4e00\u7bc7\u6587\u7ae0\uff0c\u5b9e\u73b0\u6bcf\u4e2a\u5355\u8bcd\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff09\u51fa\u73b0\u7684\u603b\u6b21\u6570\u548c\u51fa\u73b0\u7684\u884c\u53f7\u7684\u7edf\u8ba1\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528C++ STL\u5e93\u7edf\u8ba1\u4e00\u6563\u6587\u4e2d\u5355\u8bcd\u51fa\u73b0\u6b21\u6570\u548c\u884c\u53f7\" src=\"https:\/\/cdn.typecodes.com\/2017\/04\/stlcalcarticlewordlines1_1.png\" title=\"\u4f7f\u7528C++ STL\u5e93\u7edf\u8ba1\u4e00\u6563\u6587\u4e2d\u5355\u8bcd\u51fa\u73b0\u6b21\u6570\u548c\u884c\u53f7\"><\/p>\n","content":"<p>\u5728\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u7ecf\u5e38\u4f1a\u9047\u5230\u6587\u4ef6\u5904\u7406\u7684\u60c5\u5f62\uff0c\u4f8b\u5982\u7edf\u8ba1\u4e00\u7bc7\u6587\u7ae0\u5355\u8bcd\u7684\u6570\u91cf\u3001\u884c\u6570\u3001\u51fa\u73b0\u9891\u7387\u6700\u9ad8\u7684\u51e0\u4e2a\u5355\u8bcd\u7b49\u7b49\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7C++\u6765\u89e3\u6790\u4e00\u7bc7\u6587\u7ae0\uff0c\u5b9e\u73b0\u6bcf\u4e2a\u5355\u8bcd\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff09\u51fa\u73b0\u7684\u603b\u6b21\u6570\u548c\u51fa\u73b0\u7684\u884c\u53f7\u7684\u7edf\u8ba1\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528C++ STL\u5e93\u7edf\u8ba1\u4e00\u6563\u6587\u4e2d\u5355\u8bcd\u51fa\u73b0\u6b21\u6570\u548c\u884c\u53f7\" src=\"https:\/\/cdn.typecodes.com\/2017\/04\/stlcalcarticlewordlines1_1.png\" title=\"\u4f7f\u7528C++ STL\u5e93\u7edf\u8ba1\u4e00\u6563\u6587\u4e2d\u5355\u8bcd\u51fa\u73b0\u6b21\u6570\u548c\u884c\u53f7\"><\/p>\n\n\n<h4>1 \u6f14\u793a\u7a0b\u5e8f<\/h4>\n<p>\u6587\u4ef6\u5904\u7406\u80fd\u6bd4\u8f83\u597d\u5730\u8003\u9a8c\u5bf9\u5f00\u53d1\u8bed\u8a00\u57fa\u7840\u6280\u80fd\u7684\u638c\u63e1\u80fd\u529b\uff0c\u56e0\u4e3a\u8fd9\u9700\u8981\u53bb\u8003\u8651\u6570\u636e\u7684\u8bfb\u53d6\u3001\u6570\u636e\u7684\u5b58\u50a8\u65b9\u5f0f\u3001\u6570\u636e\u7684\u5904\u7406\u7b49\u7b49\uff0c\u53ef\u80fd\u4e0d\u540c\u7684\u5904\u7406\u65b9\u6cd5\u4f1a\u5f97\u5230\u4e0d\u540c\u7684\u6548\u7387\u548c\u7ed3\u679c\u3002<\/p>\n<p>\u4e0b\u9762\u7684\u4ee3\u7801\u4e3b\u8981\u662f\u4f7f\u7528C++\u7684STL\u5e93\u89e3\u6790\u4e00\u7bc7\u82f1\u6587\u6563\u6587\uff08\u7f51\u4e0a\u770b\u5230\u4e0d\u9519\u5c31wget\u4e0b\u6765\u4e86\uff09\uff0c\u6d89\u53ca\u7684\u7f16\u7a0b\u57fa\u672c\u70b9\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">STL\u5bb9\u5668\u4e2d\u7684map\u548cvector\u5bb9\u5668<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"kr\">if<\/span><span class=\"n\">stream\u5e93\u6587\u4ef6\u6d41\u7684\u64cd\u4f5c<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">string\u7684\u5206\u5272\u67e5\u627efind<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u83b7\u53d6\u5b50\u4e32substr<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u53bb\u9664\u975e\u6cd5\u5b57\u7b26\u7b49\u5f85<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">4<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">c<\/span><span class=\"o\">++<\/span><span class=\"n\">\u4e2d\u7684\u57fa\u672c\u77e5\u8bc6\u70b9<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">\u6784\u9020\u51fd\u6570<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u5305\u62ec\u5e38\u91cf\u7684\u521d\u59cb\u5316<\/span><span class=\"err\">\uff09\u3001<\/span><span class=\"n\">\u5f15\u7528<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5bf9\u8c61\u7684\u6784\u9020\u548c\u6790\u6784\u7b49\u7b49<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6587\u7ae0\u5185\u5bb9\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u4e0b\u9762\u76f4\u63a5\u5448\u4e0a\u4ee3\u7801\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span>\n<span class=\"normal\">138<\/span>\n<span class=\"normal\">139<\/span>\n<span class=\"normal\">140<\/span>\n<span class=\"normal\">141<\/span>\n<span class=\"normal\">142<\/span>\n<span class=\"normal\">143<\/span>\n<span class=\"normal\">144<\/span>\n<span class=\"normal\">145<\/span>\n<span class=\"normal\">146<\/span>\n<span class=\"normal\">147<\/span>\n<span class=\"normal\">148<\/span>\n<span class=\"normal\">149<\/span>\n<span class=\"normal\">150<\/span>\n<span class=\"normal\">151<\/span>\n<span class=\"normal\">152<\/span>\n<span class=\"normal\">153<\/span>\n<span class=\"normal\">154<\/span>\n<span class=\"normal\">155<\/span>\n<span class=\"normal\">156<\/span>\n<span class=\"normal\">157<\/span>\n<span class=\"normal\">158<\/span>\n<span class=\"normal\">159<\/span>\n<span class=\"normal\">160<\/span>\n<span class=\"normal\">161<\/span>\n<span class=\"normal\">162<\/span>\n<span class=\"normal\">163<\/span>\n<span class=\"normal\">164<\/span>\n<span class=\"normal\">165<\/span>\n<span class=\"normal\">166<\/span>\n<span class=\"normal\">167<\/span>\n<span class=\"normal\">168<\/span>\n<span class=\"normal\">169<\/span>\n<span class=\"normal\">170<\/span>\n<span class=\"normal\">171<\/span>\n<span class=\"normal\">172<\/span>\n<span class=\"normal\">173<\/span>\n<span class=\"normal\">174<\/span>\n<span class=\"normal\">175<\/span>\n<span class=\"normal\">176<\/span>\n<span class=\"normal\">177<\/span>\n<span class=\"normal\">178<\/span>\n<span class=\"normal\">179<\/span>\n<span class=\"normal\">180<\/span>\n<span class=\"normal\">181<\/span>\n<span class=\"normal\">182<\/span>\n<span class=\"normal\">183<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    stl_apply_readfile_1.cpp<\/span>\n<span class=\"cm\"> * @Describe    A simple example for using c++ STL to calculate words and line numbers in an article.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2017-04-16 16:44 https:\/\/typecodes.com\/cseries\/stlcalcarticlewordlines1.html<\/span>\n<span class=\"cm\"> * @Compile     g++ stl_apply_readfile_1.cpp -o stl_apply_readfile_1<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;iostream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;map&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;vector&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;fstream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;algorithm&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;assert.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"k\">namespace<\/span><span class=\"w\"> <\/span><span class=\"nn\">std<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"k\">class<\/span><span class=\"w\"> <\/span><span class=\"nc\">CFileHandle<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"k\">public<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">CFileHandle<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_file_name<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">s_m_file_name<\/span><span class=\"p\">(<\/span><span class=\"n\">s_file_name<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">i_m_line_number<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8bfb\u53d6\u6bcf\u884c\u7684\u6570\u636e\uff0c\u7136\u540e\u8fdb\u884c\u5904\u7406<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">ReadFile<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_file_name<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">ifstream<\/span><span class=\"w\"> <\/span><span class=\"n\">inFile<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u4ee5\u4e8c\u8fdb\u5236\u53ef\u8bfb\u7684\u65b9\u5f0f\u6253\u5f00\u6587\u4ef6\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\uff1a inFile.open( s_file_name.data() );<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_file_name<\/span><span class=\"p\">.<\/span><span class=\"n\">c_str<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">ios<\/span><span class=\"o\">::<\/span><span class=\"n\">in<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">ios<\/span><span class=\"o\">::<\/span><span class=\"n\">binary<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/Checks if the file stream has an associated file.<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">assert<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">is_open<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u6bcf\u4e00\u884c\u7684\u6570\u636e<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u8bfb\u53d6\u4e00\u884c\u5185\u5bb9    getline( inFile, s_line_buf )<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">getline<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">inFile<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">widen<\/span><span class=\"p\">(<\/span><span class=\"sc\">&#39;\\n&#39;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">++<\/span><span class=\"n\">i_m_line_number<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/\u7edf\u4e00\u8f6c\u6362\u6210\u5927\u5199\uff1a\u4e5f\u53ef\u4ee5\u4f7f\u7528 transform( s_line_buf.begin(), s_line_buf.end(), s_line_buf.begin(), ::toupper );<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">transform<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">begin<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">begin<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"p\">)(<\/span><span class=\"kt\">int<\/span><span class=\"p\">))<\/span><span class=\"n\">toupper<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/\u5f00\u59cb\u6570\u636e\u5904\u7406<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">HandleLine<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u5173\u95ed\u6587\u4ef6\u6d41<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">inFile<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5bf9\u6bcf\u884c\u7684\u6570\u636e\u8fdb\u884c\u89e3\u6790<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">HandleLine<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_line_buf<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_start<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_last<\/span><span class=\"o\">=<\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">size<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/std::size_t i_split_pos;<\/span>\n<span class=\"w\">        <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_split_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_start<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">i_last<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">i_split_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39; &#39;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_start<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/if( i_split_pos == std::string::npos )<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_split_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">s_word<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">substr<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_start<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_last<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">HandleUnkind<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">HandleWord<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">                <\/span><span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">            <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">                \u907f\u514d\u7a7a\u683c\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u4e0b\u9762\u8fd9\u4e24\u884c\u6765\u53bb\u6389\u884c\u9996\u548c\u884c\u5c3e\u7684\u7a7a\u683c<\/span>\n<span class=\"cm\">                s_line_buf.erase( 0, s_line_buf.find_first_not_of(&quot; &quot;) );<\/span>\n<span class=\"cm\">                s_line_buf.erase( s_line_buf.find_last_not_of(&quot; &quot;) + 1 );<\/span>\n<span class=\"cm\">             *\/<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_start<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">i_split_pos<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">s_word<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_line_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">substr<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_start<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_split_pos<\/span><span class=\"o\">-<\/span><span class=\"n\">i_start<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">HandleUnkind<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">HandleWord<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">i_start<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">i_split_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/\u5bf9\u4e8e\u884c\u9996\u7684\u7a7a\u683c\u4e0d\u8fdb\u884c\u5904\u7406<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">i_start<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">i_split_pos<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u53bb\u9664\u6bcf\u4e2a\u5355\u8bcd\u53ef\u80fd\u5305\u542b\u7684\u975e\u5b57\u7b26\uff08\u96640~9\u548cA~Z\u5916\u7684\u6570\u636e\uff09<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">HandleUnkind<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_word_buf<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">assert<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">size<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/char c_word_buf[s_word_buf.size()+1]; \u5728vs\u4e2d\u4f1a\u62a5\u9519\uff1aerror C2131: \u8868\u8fbe\u5f0f\u7684\u8ba1\u7b97\u7ed3\u679c\u4e0d\u662f\u5e38\u6570<\/span>\n<span class=\"w\">        <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">c_word_buf<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"p\">[<\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">size<\/span><span class=\"p\">()<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">]();<\/span>\n\n<span class=\"w\">        <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">j<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">.<\/span><span class=\"n\">size<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"o\">++<\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x39<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x41<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x5A<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">c_word_buf<\/span><span class=\"p\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">++<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">s_word_buf<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">c_word_buf<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">delete<\/span><span class=\"w\"> <\/span><span class=\"n\">c_word_buf<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5bf9\u6bcf\u4e2a\u5355\u8bcd\u7684\u5904\u7406<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">HandleWord<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_word_buf<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">string<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">vector<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;::<\/span><span class=\"n\">iterator<\/span><span class=\"w\"> <\/span><span class=\"n\">mapit<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mapobj<\/span><span class=\"p\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u5982\u679c\u8be5\u5355\u8bcd\u4e0d\u5b58\u5728<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">mapit<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">mapobj<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">vector<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">vect<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">vect<\/span><span class=\"p\">.<\/span><span class=\"n\">push_back<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_m_line_number<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">mapobj<\/span><span class=\"p\">.<\/span><span class=\"n\">insert<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">make_pair<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_word_buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">vect<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">mapit<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">.<\/span><span class=\"n\">push_back<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_m_line_number<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u904d\u5386map\u5bf9\u8c61<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">Traverse<\/span><span class=\"p\">()<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">vector<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;::<\/span><span class=\"n\">iterator<\/span><span class=\"w\"> <\/span><span class=\"n\">mapit<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mapobj<\/span><span class=\"p\">.<\/span><span class=\"n\">begin<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Words<\/span><span class=\"se\">\\t\\t\\t\\t<\/span><span class=\"s\">Counts<\/span><span class=\"se\">\\t\\t\\t\\t<\/span><span class=\"s\">Lines&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;---------------------------------------------------------------------&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">mapit<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">mapobj<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"o\">++<\/span><span class=\"n\">mapit<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">mapit<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">first<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;<\/span><span class=\"se\">\\t\\t\\t\\t<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">mapit<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">.<\/span><span class=\"n\">size<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;<\/span><span class=\"se\">\\t\\t\\t\\t<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">vector<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;::<\/span><span class=\"n\">iterator<\/span><span class=\"w\"> <\/span><span class=\"n\">vectorit<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mapit<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">.<\/span><span class=\"n\">begin<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"n\">vectorit<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">mapit<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"o\">++<\/span><span class=\"n\">vectorit<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">vectorit<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot; &quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u83b7\u53d6\u6587\u4ef6\u603b\u884c\u6570<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">GetTotalLines<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">i_m_line_number<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"k\">private<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">string<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">vector<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">mapobj<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_m_line_number<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_m_file_name<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6587\u4ef6\u6240\u5728\u8def\u5f84<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_file_name<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\">  <\/span><span class=\"s\">&quot;STL_APPLY_READFILE_1&quot;<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">CFileHandle<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">pCFileHandle<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">CFileHandle<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_file_name<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5f00\u59cb\u5904\u7406\u6587\u4ef6<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pCFileHandle<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">ReadFile<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_file_name<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6253\u5370\u603b\u884c\u6570<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">__FILE__<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;:&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">__LINE__<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;] Total Lines=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">pCFileHandle<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">GetTotalLines<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;].&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u904d\u5386\u7ed3\u679c<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pCFileHandle<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">Traverse<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">delete<\/span><span class=\"w\"> <\/span><span class=\"n\">pCFileHandle<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u4f7f\u7528g++\u7f16\u8bd1\u5668\u8fdb\u884c\u7f16\u8bd1\u5e76\u6267\u884c<\/h4>\n<p>\u4f7f\u7528g++\u6216\u8005\u4e4b\u524d\u5199\u7684\u8fd9\u4e2a<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b\">Makefile<\/a>\u6587\u4ef6\u8fdb\u884c\u7f16\u8bd1\uff0c\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528make\u547d\u4ee4\u7f16\u8bd1\u7684\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2017\/04\/stlcalcarticlewordlines1_2.png\" title=\"\u4f7f\u7528make\u547d\u4ee4\u7f16\u8bd1\u7684\u7ed3\u679c\"><\/p>\n<p>\u63a5\u7740\u6267\u884c\u7a0b\u5e8f<code>stl_apply_readfile_1<\/code>\uff0c\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff08\u56fe\u7247\u5927\u5c0f\u7684\u9650\u5236\u53ea\u663e\u793a\u4e86\u4e00\u90e8\u5206\u7ed3\u679c\uff09\u3002\u53e6\u5916\uff0c\u4e0a\u9762C++\u7a0b\u5e8f\u4e2d\u7684\u6570\u636e\u5904\u7406\u51fd\u6570<code>HandleUnkind<\/code>\u76f8\u5bf9\u6bd4\u8f83<code>\u7c97\u7565<\/code>\uff1a\u53ea\u7b80\u5355\u8fc7\u6ee4\u4e86\u975e\u6570\u5b57\u548c\u5b57\u6bcd\u7684\u5b57\u7b26\u3002\u8fd9\u6837\u4f1a\u51fa\u73b0\u7c7b\u4f3c\u628a<code>YOU'R<\/code>\u8fd9\u6837\u7684\u6570\u636e\u5904\u7406\u6210<code>YOUR<\/code>\u7684\u60c5\u51b5\uff0c\u5927\u5bb6\u53ef\u4ee5\u8fdb\u884c\u4ee3\u7801\u6539\u8fdb\u505a\u66f4\u7cbe\u7ec6\u5316\u7684\u5904\u7406\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528C++ STL\u5e93\u7edf\u8ba1\u4e00\u6563\u6587\u4e2d\u5355\u8bcd\u51fa\u73b0\u6b21\u6570\u548c\u884c\u53f7\" src=\"https:\/\/cdn.typecodes.com\/2017\/04\/stlcalcarticlewordlines1_3.png\" title=\"\u4f7f\u7528C++ STL\u5e93\u7edf\u8ba1\u4e00\u6563\u6587\u4e2d\u5355\u8bcd\u51fa\u73b0\u6b21\u6570\u548c\u884c\u53f7\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"stl"}}]},{"title":"Linux C++\u4f7f\u7528\u51fd\u6570\u6a21\u677f\u5b9e\u73b0JSON\u6570\u636e\u5feb\u901f\u548c\u5b8c\u6574\u5199\u5165\u5230\u6587\u4ef6","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/templatejsoncpp2file1.html","rel":"alternate"}},"published":"2017-04-16T15:54:00+08:00","updated":"2017-04-16T15:54:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-04-16:\/cseries\/templatejsoncpp2file1.html","summary":"<p>\u6628\u5929\u5728\u81ea\u5df1\u7684CentOS7\u673a\u5668\u4e0a\u7f16\u8bd1\u4e86JSONCPP\u5e93\uff0c\u7136\u540e\u6839\u636eapi\u5199\u4e86\u4e0b\u9762\u8fd9\u4e2a\u7b80\u5355\u7684\u6d4b\u8bd5\u7a0b\u5e8f\u3002\u4ee3\u7801\u6d89\u53ca\u4e86\u6587\u4ef6\u6d41\u6570\u636e\u8bfb\u53d6\u548c\u5199\u5165\u3001jsoncpp\u5e93\u7684\u8bfb\u5199api\u7684\u4f7f\u7528\u3002\u6574\u4e2a\u5904\u7406\u6d41\u7a0b\u662f\u5148\u8bfb\u53d6\u4e00\u4e2ajson\u683c\u5f0f\u6587\u4ef6\u7684\u5185\u5bb9\uff0c\u7136\u540e\u628a\u8fd9\u4e9b\u5185\u5bb9\u5206\u522b\u7528jsoncpp\u5e93\u7684<code>Json::FastWriter<\/code>\uff08\u5feb\u901f\u5199\u5165\uff09\u548c<code>Json::StyledWriter<\/code>\uff08\u5b8c\u6574\u5199\u5165\uff09\u8fd9\u4e24\u4e2a\u65b9\u5f0f\u5199\u5165\u5230\u4e24\u4e2a\u6587\u4ef6\u4e2d\uff0c\u6700\u540e\u8bfb\u53d6\u8fd9\u4e24\u4e2a\u6587\u4ef6\u5e76\u8f93\u51fa\u3002<\/p>\n<p><img alt=\"Linux C++\u4f7f\u7528\u51fd\u6570\u6a21\u677f\u5b9e\u73b0JSON\u6570\u636e\u5feb\u901f\u548c\u5b8c\u6574\u5199\u5165\u5230\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/04\/jsoncpp_basic_4_1.png\" title=\"Linux C++\u4f7f\u7528\u51fd\u6570\u6a21\u677f\u5b9e\u73b0JSON\u6570\u636e\u5feb\u901f\u548c\u5b8c\u6574\u5199\u5165\u5230\u6587\u4ef6\"><\/p>\n","content":"<p>\u6628\u5929\u5728\u81ea\u5df1\u7684CentOS7\u673a\u5668\u4e0a\u7f16\u8bd1\u4e86JSONCPP\u5e93\uff0c\u7136\u540e\u6839\u636eapi\u5199\u4e86\u4e0b\u9762\u8fd9\u4e2a\u7b80\u5355\u7684\u6d4b\u8bd5\u7a0b\u5e8f\u3002\u4ee3\u7801\u6d89\u53ca\u4e86\u6587\u4ef6\u6d41\u6570\u636e\u8bfb\u53d6\u548c\u5199\u5165\u3001jsoncpp\u5e93\u7684\u8bfb\u5199api\u7684\u4f7f\u7528\u3002\u6574\u4e2a\u5904\u7406\u6d41\u7a0b\u662f\u5148\u8bfb\u53d6\u4e00\u4e2ajson\u683c\u5f0f\u6587\u4ef6\u7684\u5185\u5bb9\uff0c\u7136\u540e\u628a\u8fd9\u4e9b\u5185\u5bb9\u5206\u522b\u7528jsoncpp\u5e93\u7684<code>Json::FastWriter<\/code>\uff08\u5feb\u901f\u5199\u5165\uff09\u548c<code>Json::StyledWriter<\/code>\uff08\u5b8c\u6574\u5199\u5165\uff09\u8fd9\u4e24\u4e2a\u65b9\u5f0f\u5199\u5165\u5230\u4e24\u4e2a\u6587\u4ef6\u4e2d\uff0c\u6700\u540e\u8bfb\u53d6\u8fd9\u4e24\u4e2a\u6587\u4ef6\u5e76\u8f93\u51fa\u3002<\/p>\n<p><img alt=\"Linux C++\u4f7f\u7528\u51fd\u6570\u6a21\u677f\u5b9e\u73b0JSON\u6570\u636e\u5feb\u901f\u548c\u5b8c\u6574\u5199\u5165\u5230\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/04\/jsoncpp_basic_4_1.png\" title=\"Linux C++\u4f7f\u7528\u51fd\u6570\u6a21\u677f\u5b9e\u73b0JSON\u6570\u636e\u5feb\u901f\u548c\u5b8c\u6574\u5199\u5165\u5230\u6587\u4ef6\"><\/p>\n\n\n<h4>1 \u6d4b\u8bd5\u7a0b\u5e8f<\/h4>\n<p>\u4ee3\u7801\u6bd4\u8f83\u7b80\u5355\uff0c\u901a\u8fc7<code>\u51fd\u6570\u6a21\u677f<\/code>\u5b9e\u73b0\u4e86<code>Json::FastWriter<\/code>\uff08\u5feb\u901f\u5199\u5165\uff09\u548c<code>Json::StyledWriter<\/code>\uff08\u5b8c\u6574\u5199\u5165\uff09\u8fd9\u4e24\u4e2a\u65b9\u5f0f\u5199\u5165\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    jsoncpp_basic_4.cpp<\/span>\n<span class=\"cm\"> * @Describe    A simple example for using function template to complete Json::FastWriter and Json::StyledWriter.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2017-04-16 15:54 https:\/\/typecodes.com\/cseries\/templatejsoncpp2file1.html<\/span>\n<span class=\"cm\"> * @Compile     g++ jsoncpp_basic_4.cpp -ljsoncpp -o jsoncpp_basic_4<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;iostream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;fstream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;json\/json.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdlib.h&gt;<\/span>\n<span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"k\">namespace<\/span><span class=\"w\"> <\/span><span class=\"nn\">std<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"c1\">\/\/\u8bfb\u53d6json\u683c\u5f0f\u7684\u6587\u4ef6<\/span>\n<span class=\"kt\">bool<\/span><span class=\"w\"> <\/span><span class=\"nf\">b_ReadJson<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_file_path<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">Json<\/span><span class=\"o\">::<\/span><span class=\"n\">Value<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">j_root<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">bool<\/span><span class=\"w\"> <\/span><span class=\"n\">b_result<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nb\">true<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">Json<\/span><span class=\"o\">::<\/span><span class=\"n\">Features<\/span><span class=\"w\"> <\/span><span class=\"n\">features<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">Json<\/span><span class=\"o\">::<\/span><span class=\"n\">Features<\/span><span class=\"o\">::<\/span><span class=\"n\">strictMode<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">Json<\/span><span class=\"o\">::<\/span><span class=\"n\">Reader<\/span><span class=\"w\"> <\/span><span class=\"n\">j_reader<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">features<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6253\u5f00\u6587\u4ef6\u6d41<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">ifstream<\/span><span class=\"w\"> <\/span><span class=\"n\">istream<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">istream<\/span><span class=\"p\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_file_path<\/span><span class=\"p\">.<\/span><span class=\"n\">c_str<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">ios<\/span><span class=\"o\">::<\/span><span class=\"n\">in<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">ios<\/span><span class=\"o\">::<\/span><span class=\"n\">binary<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">istream<\/span><span class=\"p\">.<\/span><span class=\"n\">is_open<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">istream<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">b_result<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/parse\u51fd\u6570\u4f1a\u8fd4\u56debool\u503c<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">j_reader<\/span><span class=\"p\">.<\/span><span class=\"n\">parse<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">istream<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">j_root<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">istream<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">__LINE__<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]Fail to parse.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">b_result<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">istream<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">b_result<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n\n<span class=\"c1\">\/\/\u4f7f\u7528\u51fd\u6570\u6a21\u677f\u6765\u5b9e\u73b0\u5feb\u901f\u5199\u5165json\u6570\u636e\u5230\u6587\u4ef6\u548c\u5199\u5165\u5b8c\u6574json\u6570\u636e\u5230\u6587\u4ef6\u8fd9\u4e24\u79cd\u65b9\u5f0f<\/span>\n<span class=\"k\">template<\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"k\">class<\/span><span class=\"w\"> <\/span><span class=\"nc\">T<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span>\n<span class=\"kt\">bool<\/span><span class=\"w\"> <\/span><span class=\"n\">b_WriteJson<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">s_file_path<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">Json<\/span><span class=\"o\">::<\/span><span class=\"n\">Value<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">j_root<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">T<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">t_writer<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">bool<\/span><span class=\"w\"> <\/span><span class=\"n\">b_result<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nb\">true<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_fwriter<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">t_writer<\/span><span class=\"p\">.<\/span><span class=\"n\">write<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">j_root<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">ofstream<\/span><span class=\"w\"> <\/span><span class=\"n\">ostream<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_file_path<\/span><span class=\"p\">.<\/span><span class=\"n\">c_str<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"n\">ios<\/span><span class=\"o\">::<\/span><span class=\"n\">out<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">ios<\/span><span class=\"o\">::<\/span><span class=\"n\">binary<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">is_open<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">b_result<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">ostream<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">s_fwriter<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">ostream<\/span><span class=\"p\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">b_result<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">Json<\/span><span class=\"o\">::<\/span><span class=\"n\">Value<\/span><span class=\"w\"> <\/span><span class=\"n\">j_root<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8981\u8bfb\u53d6\u7684\u6587\u4ef6<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_reader<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;JSONCPP_BASIC_2.json&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8981\u5feb\u901f\u5199\u5165\u7684\u6587\u4ef6<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_fwriter<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;JSONCPP_BASIC_4_1.json&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8981\u4ee5\u5b8c\u6574json\u683c\u5f0f\u5199\u5165\u7684\u6587\u4ef6<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_swriter<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;JSONCPP_BASIC_4_2.json&quot;<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">b_ReadJson<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_reader<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">j_root<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">__LINE__<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]Fail b_ReadJson.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5feb\u901f\u5199\u5165json\u6570\u636e\u5230\u6587\u4ef6<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">Json<\/span><span class=\"o\">::<\/span><span class=\"n\">FastWriter<\/span><span class=\"w\"> <\/span><span class=\"n\">j_fwriter<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">b_WriteJson<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_fwriter<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">j_root<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">j_fwriter<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">       <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">__LINE__<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]Fail b_WriteJson.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">       <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5199\u5165\u5b8c\u6574json\u6570\u636e\u5230\u6587\u4ef6<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">Json<\/span><span class=\"o\">::<\/span><span class=\"n\">StyledWriter<\/span><span class=\"w\"> <\/span><span class=\"n\">j_swriter<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">b_WriteJson<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_swriter<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">j_root<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">j_swriter<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">       <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">__LINE__<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]Fail b_WriteJson.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">       <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-3<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5148\u8bfb\u53d6\u4e0a\u9762\u5feb\u901f\u5199\u5165json\u6570\u636e\u5230\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;-----------------------&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_fwriter<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;-----------------------&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">s_cmd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;cat &quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_fwriter<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">system<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_cmd<\/span><span class=\"p\">.<\/span><span class=\"n\">c_str<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u518d\u8bfb\u53d6\u4e0a\u9762\u5b8c\u6574json\u6570\u636e\u5230\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9\uff08\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528system\u51fd\u6570\uff09<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;<\/span><span class=\"se\">\\n<\/span><span class=\"s\">-----------------------&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_swriter<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;-----------------------&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">b_ReadJson<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">s_jon_swriter<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">j_root<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">       <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">__LINE__<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]Fail to parse.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">       <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-4<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">j_root<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u7f16\u8bd1\u5e76\u6267\u884c<\/h4>\n<p>\u4f7f\u7528g++\u6216\u8005\u4e4b\u524d\u5199\u7684\u8fd9\u4e2a<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b\">Makefile<\/a>\u6587\u4ef6\u8fdb\u884c\u7f16\u8bd1\uff0c\u6267\u884c\u7ed3\u679c\u5982\u5f00\u5934\u7684\u56fe\u7247\u6240\u793a\u3002<\/p>\n<p><img alt=\"Linux C++\u4f7f\u7528\u51fd\u6570\u6a21\u677f\u5b9e\u73b0JSON\u6570\u636e\u5feb\u901f\u548c\u5b8c\u6574\u5199\u5165\u5230\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2017\/04\/jsoncpp_basic_4_2.png\" title=\"Linux C++\u4f7f\u7528\u51fd\u6570\u6a21\u677f\u5b9e\u73b0JSON\u6570\u636e\u5feb\u901f\u548c\u5b8c\u6574\u5199\u5165\u5230\u6587\u4ef6\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"jsoncpp"}},{"@attributes":{"term":"json"}},{"@attributes":{"term":"template"}}]},{"title":"Git\u591a\u4ed3\u5e93\u4f5c\u5b50\u76ee\u5f55\u7684\u53cc\u5411\u540c\u6b65\uff1a\u4e00\u6b21Git Subtree\u7684\u5b9e\u8df5","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/gitsubtree1.html","rel":"alternate"}},"published":"2017-03-22T18:30:00+08:00","updated":"2017-03-22T18:30:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-03-22:\/mix\/gitsubtree1.html","summary":"<p>\u4eca\u5e741\u6708\u4e2d\u65ec\u7684\u65f6\u5019BZ\u5728GitHub\u4e0a\u6536\u5230Typecho\u793e\u533a\u7ec4\u7ec7<a href=\"https:\/\/github.com\/typecho-fans\" title=\"GitHub\u7684Organizations\u540d\">typecho-fans<\/a>\u7684\u6210\u5458\u9080\u8bf7\uff0c\u539f\u6765\u662f\u60f3\u628a\u6240\u6709TP\u7684\u5f00\u6e90\u63d2\u4ef6\u90fd\u6574\u5408\u5230<a href=\"https:\/\/github.com\/typecho-fans\/plugins\" title=\"\u70b9\u51fb\u67e5\u770b\">GitHub<\/a>\u4e0a\u8fdb\u884c\u7ef4\u62a4\u3002\u4e4b\u524dBLOG\u5728\u4f7f\u7528Typecho\u7684\u65f6\u5019\u5199\u4e863\u4e2a\u63d2\u4ef6\uff1a<a href=\"https:\/\/typecodes.com\/web\/scsfortypecho.html\" title=\"\u300a\u65b0\u6d6a\u4e91\u5b58\u50a8(SCS) for Typecho \u63d2\u4ef6\u300b\">\u65b0\u6d6a\u4e91\u5b58\u50a8SCS\u63d2\u4ef6<\/a>\u3001<a href=\"https:\/\/typecodes.com\/web\/typechomp3player.html\" title=\"\u300a\u97f3\u4e50\u64ad\u653e\u5668PlayAtWill for typecho\u63d2\u4ef6\uff08\u79fb\u690d\u81eawordpress\uff09\u300b\">\u79fb\u690d\u81eaWordPress\u7684\u97f3\u4e50\u64ad\u653e\u5668\u63d2\u4ef6<\/a>\u548c<a href=\"https:\/\/typecodes.com\/mix\/synweibophpmarkdownimgurl.html\" title=\"\u300a\u5347\u7ea7\u535a\u5ba2\u6587\u7ae0\u540c\u6b65\u5fae\u535a\u7684\u63d2\u4ef6\uff1aPHP\u6b63\u5219\u63d0\u53d6Markdown\u7684\u56fe\u7247\u5730\u5740\u300b\">\u65b0\u6d6a\u5fae\u535a\u540c\u6b65\u63d2\u4ef6<\/a>\uff0c\u90a3\u5982\u679c\u653e\u5230typecho-fans\u4e0a\u8fdb\u884c\u7ef4\u62a4\u7684\u8bdd\u5bf9\u4f7f\u7528\u8005\u548c\u5f00\u53d1\u8005\u6765\u8bf4\u90fd\u662f\u633a\u65b9\u4fbf\u7684\u3002\u4f46\u662f\u5f53\u65f6\u4e0d\u77e5\u9053\u600e\u4e48\u628a\u4e4b\u524d\u8fd93\u4e2a\u5df2\u7ecf\u653e\u5728GitHub\u4e0a\u8fdb\u884c\u7ef4\u62a4\u7684\u63d2\u4ef6\u4ed3\u5e93\u4f5c\u4e3a\u5b50\u76ee\u5f55\/\u4ed3\u5e93\u540c\u6b65\u5230typecho-fans\u7684\u63d2\u4ef6\u4ed3\u5e93\u4e2d\uff0c\u6240\u4ee5\u4e00\u76f4\u90fd\u6ca1\u6709\u884c\u52a8\u3002<\/p>\n<p><img alt=\"Git\u591a\u4ed3\u5e93\u4f5c\u5b50\u76ee\u5f55\u7684\u53cc\u5411\u540c\u6b65\uff1a\u4e00\u6b21Git Subtree\u7684\u5b9e\u8df5\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/gitsubtree1_typecho_fans.png\" title=\"Git\u591a\u4ed3\u5e93\u4f5c\u5b50\u76ee\u5f55\u7684\u53cc\u5411\u540c\u6b65\uff1a\u4e00\u6b21Git Subtree\u7684\u5b9e\u8df5\"><\/p>\n","content":"<p>\u4eca\u5e741\u6708\u4e2d\u65ec\u7684\u65f6\u5019BZ\u5728GitHub\u4e0a\u6536\u5230Typecho\u793e\u533a\u7ec4\u7ec7<a href=\"https:\/\/github.com\/typecho-fans\" title=\"GitHub\u7684Organizations\u540d\">typecho-fans<\/a>\u7684\u6210\u5458\u9080\u8bf7\uff0c\u539f\u6765\u662f\u60f3\u628a\u6240\u6709TP\u7684\u5f00\u6e90\u63d2\u4ef6\u90fd\u6574\u5408\u5230<a href=\"https:\/\/github.com\/typecho-fans\/plugins\" title=\"\u70b9\u51fb\u67e5\u770b\">GitHub<\/a>\u4e0a\u8fdb\u884c\u7ef4\u62a4\u3002\u4e4b\u524dBLOG\u5728\u4f7f\u7528Typecho\u7684\u65f6\u5019\u5199\u4e863\u4e2a\u63d2\u4ef6\uff1a<a href=\"https:\/\/typecodes.com\/web\/scsfortypecho.html\" title=\"\u300a\u65b0\u6d6a\u4e91\u5b58\u50a8(SCS) for Typecho \u63d2\u4ef6\u300b\">\u65b0\u6d6a\u4e91\u5b58\u50a8SCS\u63d2\u4ef6<\/a>\u3001<a href=\"https:\/\/typecodes.com\/web\/typechomp3player.html\" title=\"\u300a\u97f3\u4e50\u64ad\u653e\u5668PlayAtWill for typecho\u63d2\u4ef6\uff08\u79fb\u690d\u81eawordpress\uff09\u300b\">\u79fb\u690d\u81eaWordPress\u7684\u97f3\u4e50\u64ad\u653e\u5668\u63d2\u4ef6<\/a>\u548c<a href=\"https:\/\/typecodes.com\/mix\/synweibophpmarkdownimgurl.html\" title=\"\u300a\u5347\u7ea7\u535a\u5ba2\u6587\u7ae0\u540c\u6b65\u5fae\u535a\u7684\u63d2\u4ef6\uff1aPHP\u6b63\u5219\u63d0\u53d6Markdown\u7684\u56fe\u7247\u5730\u5740\u300b\">\u65b0\u6d6a\u5fae\u535a\u540c\u6b65\u63d2\u4ef6<\/a>\uff0c\u90a3\u5982\u679c\u653e\u5230typecho-fans\u4e0a\u8fdb\u884c\u7ef4\u62a4\u7684\u8bdd\u5bf9\u4f7f\u7528\u8005\u548c\u5f00\u53d1\u8005\u6765\u8bf4\u90fd\u662f\u633a\u65b9\u4fbf\u7684\u3002\u4f46\u662f\u5f53\u65f6\u4e0d\u77e5\u9053\u600e\u4e48\u628a\u4e4b\u524d\u8fd93\u4e2a\u5df2\u7ecf\u653e\u5728GitHub\u4e0a\u8fdb\u884c\u7ef4\u62a4\u7684\u63d2\u4ef6\u4ed3\u5e93\u4f5c\u4e3a\u5b50\u76ee\u5f55\/\u4ed3\u5e93\u540c\u6b65\u5230typecho-fans\u7684\u63d2\u4ef6\u4ed3\u5e93\u4e2d\uff0c\u6240\u4ee5\u4e00\u76f4\u90fd\u6ca1\u6709\u884c\u52a8\u3002<\/p>\n<p><img alt=\"Git\u591a\u4ed3\u5e93\u4f5c\u5b50\u76ee\u5f55\u7684\u53cc\u5411\u540c\u6b65\uff1a\u4e00\u6b21Git Subtree\u7684\u5b9e\u8df5\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/gitsubtree1_typecho_fans.png\" title=\"Git\u591a\u4ed3\u5e93\u4f5c\u5b50\u76ee\u5f55\u7684\u53cc\u5411\u540c\u6b65\uff1a\u4e00\u6b21Git Subtree\u7684\u5b9e\u8df5\"><\/p>\n\n\n<p>\u8fd9\u51e0\u5929\u53d1\u73b0\u5728\u793e\u533aGitHub\u4e0a\u7684README\u6587\u4ef6\u4e2d\u5df2\u7ecf\u63a8\u8350\u7528<code>subtree<\/code>\u65b9\u6cd5\u6dfb\u52a0\u4f5c\u8005\u4e4b\u524d\u7684\u63d2\u4ef6repo\uff08<code>submodule<\/code>\u65b9\u6cd5\u80fd\u94fe\u63a5\u81f3\u539frepo\u4f46\u4e5f\u4f1a\u7ed9\u4e0b\u8f7d\u4e0e\u7ef4\u62a4\u5e26\u6765\u4e00\u5b9a\u9ebb\u70e6\uff09\uff0c\u6240\u4ee5BZ\u67e5\u4e86<code>subtree<\/code>\u7684\u76f8\u5173\u8d44\u6599\uff0c\u7136\u540e\u6210\u529f\u5c06\u81ea\u5df1\u4e4b\u524d\u653e\u5728GitHub\u4e0a\u7684\u8fd93\u4e2a\u63d2\u4ef6repo\u4f5c\u4e3a\u793e\u533a\u63d2\u4ef6\u5e93\u76843\u4e2a\u5b50\u76ee\u5f55\u8fdb\u884c<code>\u53cc\u5411\u540c\u6b65<\/code>\u7ef4\u62a4\u3002\u4e0b\u9762\u662f\u8fd9\u6b21<code>Git Subtree<\/code>\u5b9e\u8df5\u7684\u5177\u4f53\u8fc7\u7a0b\u3002<\/p>\n<h4>1 \u514b\u9686\u793e\u533a\u7ef4\u62a4\u7684\u63d2\u4ef6\u5e93\u5230\u672c\u5730<\/h4>\n<p>BZ\u5728\u81ea\u5df1\u7684Win 10\u673a\u5668\u4e0a\u5b89\u88c5\u4e86git version 2.11.0.windows.1\uff0c\u56e0\u6b64\u4e0b\u9762\u6240\u6709\u7684\u64cd\u4f5c\u90fd\u662f\u901a\u8fc7<code>Git Bash<\/code>\u5b9e\u73b0\u7684\u3002\u5982\u4e0b\u6240\u793a\uff0c\u9996\u5148\u4f7f\u7528git clone\u547d\u4ee4\u628a\u7531\u793e\u533a\u7ef4\u62a4\u7684\u63d2\u4ef6\u5e93\u514b\u9686\u5230E\u76d8(plugins\u76ee\u5f55)\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u8fdb\u5165\u786c\u76d8\u7684E\u76ee\u5f55\u5e76clone\u9879\u76ee<\/span>\n<span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">-<\/span><span class=\"nx\">pc<\/span><span class=\"w\"> <\/span><span class=\"nx\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">e<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">git<\/span><span class=\"w\"> <\/span><span class=\"nx\">clone<\/span><span class=\"w\"> <\/span><span class=\"nx\">git<\/span><span class=\"err\">@<\/span><span class=\"nx\">github<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span><span class=\"p\">:<\/span><span class=\"nx\">typecho<\/span><span class=\"o\">-<\/span><span class=\"nx\">fans<\/span><span class=\"o\">\/<\/span><span class=\"nx\">plugins<\/span><span class=\"p\">.<\/span><span class=\"nx\">git<\/span>\n<span class=\"nx\">Cloning<\/span><span class=\"w\"> <\/span><span class=\"nx\">into<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">plugins<\/span><span class=\"err\">&#39;<\/span><span class=\"o\">...<\/span>\n<span class=\"nx\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Counting<\/span><span class=\"w\"> <\/span><span class=\"nx\">objects<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">3928<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Compressing<\/span><span class=\"w\"> <\/span><span class=\"nx\">objects<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">124<\/span><span class=\"o\">\/<\/span><span class=\"mi\">124<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Total<\/span><span class=\"w\"> <\/span><span class=\"mi\">3928<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">51<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"nx\">reused<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"nx\">pack<\/span><span class=\"o\">-<\/span><span class=\"nx\">reused<\/span><span class=\"w\"> <\/span><span class=\"mi\">3803<\/span>\n<span class=\"nx\">Receiving<\/span><span class=\"w\"> <\/span><span class=\"nx\">objects<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">3928<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3928<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">7.58<\/span><span class=\"w\"> <\/span><span class=\"nx\">MiB<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">265.00<\/span><span class=\"w\"> <\/span><span class=\"nx\">KiB<\/span><span class=\"o\">\/<\/span><span class=\"nx\">s<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Resolving<\/span><span class=\"w\"> <\/span><span class=\"nx\">deltas<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">1284<\/span><span class=\"o\">\/<\/span><span class=\"mi\">1284<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Checking<\/span><span class=\"w\"> <\/span><span class=\"nx\">out<\/span><span class=\"w\"> <\/span><span class=\"nx\">files<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">1484<\/span><span class=\"o\">\/<\/span><span class=\"mi\">1484<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span><span class=\"p\">.<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u6dfb\u52a0\u7b2c1\u4e2a\u8981\u4f5c\u4e3a\u5b50\u4ed3\u5e93\/\u76ee\u5f55\u7684\u8fdc\u7a0b\u4ed3\u5e93<\/h4>\n<p>\u8fdb\u5165\u521a\u5efa\u7acb\u7684plugins\u76ee\u5f55\uff0c\u7136\u540e\u4f7f\u7528<code>git remote add<\/code>\u547d\u4ee4\u628a\u8981\u5408\u5e76\u8fdb\u6765\u4f5c\u4e3a\u5b50\u4ed3\u5e93\/\u76ee\u5f55\u7684\u8fdc\u7a0b\u5e93<code>PlayAtWill<\/code>\u52a0\u5165\u5230\u672c\u5730\u4ed3\u5e93plugins\u4e2d\u3002\u6ce8\u610f\uff1a\u4e00\u4e2a\u672c\u5730\u7684\u4ed3\u5e93\u53ef\u4ee5\u6dfb\u52a0\u591a\u4e2a\u8fdc\u7a0b\u4ed3\u5e93\uff01<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"cp\">####### \u6dfb\u52a0\u8fdc\u7a0b\u4ed3\u5e93PlayAtWill\uff0c\u5176\u4e2d-f\u610f\u601d\u662f\u5728\u6dfb\u52a0\u8fdc\u7a0b\u4ed3\u5e93\u4e4b\u540e\uff0c\u7acb\u5373\u6267\u884cfetch <\/span>\n<span class=\"n\">vfhky<\/span><span class=\"p\">@<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">remote<\/span><span class=\"w\"> <\/span><span class=\"n\">add<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">f<\/span><span class=\"w\"> <\/span><span class=\"n\">PlayAtWill<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"p\">@<\/span><span class=\"n\">github<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">PlayAtWill<\/span><span class=\"p\">.<\/span><span class=\"n\">git<\/span>\n<span class=\"n\">Updating<\/span><span class=\"w\"> <\/span><span class=\"n\">PlayAtWill<\/span>\n<span class=\"nl\">warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">no<\/span><span class=\"w\"> <\/span><span class=\"n\">common<\/span><span class=\"w\"> <\/span><span class=\"n\">commits<\/span>\n<span class=\"nl\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Counting<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"nl\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Total<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">reused<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">pack<\/span><span class=\"o\">-<\/span><span class=\"n\">reused<\/span><span class=\"w\"> <\/span><span class=\"mi\">14<\/span>\n<span class=\"n\">Unpacking<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">15<\/span><span class=\"o\">\/<\/span><span class=\"mi\">15<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">From<\/span><span class=\"w\"> <\/span><span class=\"n\">github<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">PlayAtWill<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">branch<\/span><span class=\"p\">]<\/span><span class=\"w\">      <\/span><span class=\"n\">master<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">PlayAtWill<\/span><span class=\"o\">\/<\/span><span class=\"n\">master<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">tag<\/span><span class=\"p\">]<\/span><span class=\"w\">         <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.0<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.0<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3 \u628a\u7b2c1\u4e2a\u8fdc\u7a0b\u4ed3\u5e93\u4f5c\u4e3a\u672c\u5730\u4ed3\u5e93\u7684\u5b50\u4ed3\u5e93\/\u76ee\u5f55<\/h4>\n<p>\u5728\u6dfb\u52a0\u5b8c<code>PlayAtWill<\/code>\u8fd9\u4e2a\u8fdc\u7a0b\u4ed3\u5e93\u540e\u5c31\u53ef\u4ee5\u901a\u8fc7<code>git subtree add<\/code>\u547d\u4ee4\u6765\u8bbe\u7f6e\u8fd9\u4e2a\u8fdc\u7a0b\u4ed3\u5e93\u4e3a\u793e\u533a\u63d2\u4ef6\u5e93plugins\u7684\u4e00\u4e2a\u5b50\u4ed3\u5e93\uff08\u6216\u8005\u79f0\u4e3a\u5b50\u76ee\u5f55\uff09\u4e86\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"w\"> <\/span><span class=\"n\">\u5176\u4e2d<\/span><span class=\"o\">--<\/span><span class=\"n\">squash\u610f\u601d\u662f\u628asubtree\u7684\u6539\u52a8\u5408\u5e76\u6210\u4e00\u6b21commit<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u8fd9\u6837\u5c31\u4e0d\u7528\u62c9\u53d6\u5b50\u9879\u76ee\u5b8c\u6574\u7684\u5386\u53f2\u8bb0\u5f55<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"n\">vfhky<\/span><span class=\"nv\">@vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">subtree<\/span><span class=\"w\"> <\/span><span class=\"k\">add<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"k\">prefix<\/span><span class=\"o\">=<\/span><span class=\"n\">PlayAtWill<\/span><span class=\"w\"> <\/span><span class=\"n\">PlayAtWill<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">squash<\/span>\n<span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"k\">fetch<\/span><span class=\"w\"> <\/span><span class=\"n\">PlayAtWill<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<span class=\"k\">From<\/span><span class=\"w\"> <\/span><span class=\"n\">github<\/span><span class=\"p\">.<\/span><span class=\"nl\">com<\/span><span class=\"p\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">PlayAtWill<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">branch<\/span><span class=\"w\">            <\/span><span class=\"n\">master<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">FETCH_HEAD<\/span>\n<span class=\"n\">Added<\/span><span class=\"w\"> <\/span><span class=\"n\">dir<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;PlayAtWill&#39;<\/span><span class=\"w\">         <\/span><span class=\"err\">\u3010<\/span><span class=\"n\">\u6b64\u65f6\u5728\u672c\u5730\u4ed3\u5e93\u540c\u6b65\u521b\u5efa\u4e86\u8fdc\u7a0bPlayAtWill\u4ed3\u5e93<\/span><span class=\"err\">\u3011<\/span>\n<\/code><\/pre><\/div>\n\n<h4>4 \u67e5\u770b\u672c\u5730\u6574\u4e2a\u4ed3\u5e93\u60c5\u51b5<\/h4>\n<p>\u4f7f\u7528<code>git status<\/code>\u547d\u4ee4\u67e5\u770b\u672c\u5730\u6574\u4e2a\u4ed3\u5e93plugins\u7684\u60c5\u51b5\uff0c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u53ef\u4ee5\u770b\u5230\u7531\u4e8e\u7b2c2\u30013\u5c0f\u8282\u7684\u64cd\u4f5c\uff0c\u73b0\u5728\u672c\u5730\u4ed3\u5e93\u5df2\u7ecf\u6bd4\u5bf9\u5e94\u7684\u8fdc\u7a0b\u4ed3\u5e93(origin\/master)\u591a\u4e862\u4e2a<code>commits<\/code>\u3002\u5982\u679c\u6b64\u65f6\u672c\u5730\u4ed3\u5e93\u6ca1\u6709\u8981\u66f4\u6539\u7684\u6587\u4ef6\u7684\u8bdd\uff0c\u90a3\u4e48\u76f4\u63a5\u4f7f\u7528<code>git push<\/code>\u547d\u4ee4\u53ef\u4ee5\u63a8\u9001\u5230typecho-fans\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4e2d\u4e86\uff08\u5176\u5b83\u5f00\u53d1\u6210\u5458\u4e5f\u80fd\u770b\u5230\u6b64\u6b21\u66f4\u65b0\uff09\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">vfhky<\/span><span class=\"nv\">@vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">status<\/span>\n<span class=\"k\">On<\/span><span class=\"w\"> <\/span><span class=\"n\">branch<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<span class=\"n\">Your<\/span><span class=\"w\"> <\/span><span class=\"n\">branch<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">ahead<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;origin\/master&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">by<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"n\">commits<\/span><span class=\"p\">.<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">(<\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;git push&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">publish<\/span><span class=\"w\"> <\/span><span class=\"n\">your<\/span><span class=\"w\"> <\/span><span class=\"k\">local<\/span><span class=\"w\"> <\/span><span class=\"n\">commits<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">nothing<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">commit<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">working<\/span><span class=\"w\"> <\/span><span class=\"n\">tree<\/span><span class=\"w\"> <\/span><span class=\"n\">clean<\/span>\n<\/code><\/pre><\/div>\n\n<h4>5 \u6dfb\u52a0\u7b2c2\u4e2a\u8981\u4f5c\u4e3a\u5b50\u4ed3\u5e93\/\u76ee\u5f55\u7684\u8fdc\u7a0b\u4ed3\u5e93<\/h4>\n<p>\u540c\u5c0f\u82822\u4e2d\u7684\u64cd\u4f5c\u4e00\u6837\uff0c\u4f7f\u7528<code>git remote add<\/code>\u547d\u4ee4\u628a\u8981\u5408\u5e76\u8fdb\u6765\u4f5c\u4e3a\u5b50\u4ed3\u5e93\/\u76ee\u5f55\u7684\u8fdc\u7a0b\u5e93<code>SCS<\/code>\u52a0\u5165\u5230\u672c\u5730\u4ed3\u5e93plugins\u4e2d\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"cp\">####### \u6dfb\u52a0\u8fdc\u7a0b\u4ed3\u5e93SCS\uff0c\u5176\u4e2d-f\u610f\u601d\u662f\u5728\u6dfb\u52a0\u8fdc\u7a0b\u4ed3\u5e93\u4e4b\u540e\uff0c\u7acb\u5373\u6267\u884cfetch <\/span>\n<span class=\"n\">vfhky<\/span><span class=\"p\">@<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">remote<\/span><span class=\"w\"> <\/span><span class=\"n\">add<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">f<\/span><span class=\"w\"> <\/span><span class=\"n\">SCS<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"p\">@<\/span><span class=\"n\">github<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">SCS<\/span><span class=\"p\">.<\/span><span class=\"n\">git<\/span>\n<span class=\"n\">Updating<\/span><span class=\"w\"> <\/span><span class=\"n\">SCS<\/span>\n<span class=\"nl\">warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">no<\/span><span class=\"w\"> <\/span><span class=\"n\">common<\/span><span class=\"w\"> <\/span><span class=\"n\">commits<\/span>\n<span class=\"nl\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Counting<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">48<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"nl\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Compressing<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">6<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"nl\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Total<\/span><span class=\"w\"> <\/span><span class=\"mi\">48<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">reused<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">pack<\/span><span class=\"o\">-<\/span><span class=\"n\">reused<\/span><span class=\"w\"> <\/span><span class=\"mi\">42<\/span>\n<span class=\"n\">Unpacking<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">48<\/span><span class=\"o\">\/<\/span><span class=\"mi\">48<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">From<\/span><span class=\"w\"> <\/span><span class=\"n\">github<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">SCS<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">branch<\/span><span class=\"p\">]<\/span><span class=\"w\">      <\/span><span class=\"n\">master<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">SCS<\/span><span class=\"o\">\/<\/span><span class=\"n\">master<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">tag<\/span><span class=\"p\">]<\/span><span class=\"w\">         <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.1.1<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.1.1<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">tag<\/span><span class=\"p\">]<\/span><span class=\"w\">         <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.1<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.1<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">tag<\/span><span class=\"p\">]<\/span><span class=\"w\">         <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.2<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.2<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">tag<\/span><span class=\"p\">]<\/span><span class=\"w\">         <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.3<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.3<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">tag<\/span><span class=\"p\">]<\/span><span class=\"w\">         <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.4<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.0.4<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">tag<\/span><span class=\"p\">]<\/span><span class=\"w\">         <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.1.0<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">v1<\/span><span class=\"mf\">.1.0<\/span>\n<\/code><\/pre><\/div>\n\n<h4>6 \u628a\u7b2c2\u4e2a\u8fdc\u7a0b\u4ed3\u5e93\u4f5c\u4e3a\u672c\u5730\u4ed3\u5e93\u7684\u5b50\u4ed3\u5e93\/\u76ee\u5f55<\/h4>\n<p>\u540c\u5c0f\u82823\u4e2d\u7684\u64cd\u4f5c\u4e00\u6837\uff0c\u4f7f\u7528<code>git subtree add<\/code>\u547d\u4ee4\u6765\u8bbe\u7f6e\u8fd9\u4e2a\u8fdc\u7a0b\u4ed3\u5e93SCS\u4f5c\u4e3a\u793e\u533a\u63d2\u4ef6\u5e93plugins\u7684\u4e00\u4e2a\u5b50\u4ed3\u5e93\uff08\u6216\u8005\u79f0\u4e3a\u5b50\u76ee\u5f55\uff09\u4e86\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"w\"> <\/span><span class=\"n\">\u5176\u4e2d<\/span><span class=\"o\">--<\/span><span class=\"n\">squash\u610f\u601d\u662f\u628asubtree\u7684\u6539\u52a8\u5408\u5e76\u6210\u4e00\u6b21commit<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u8fd9\u6837\u5c31\u4e0d\u7528\u62c9\u53d6\u5b50\u9879\u76ee\u5b8c\u6574\u7684\u5386\u53f2\u8bb0\u5f55<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"n\">vfhky<\/span><span class=\"nv\">@vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">subtree<\/span><span class=\"w\"> <\/span><span class=\"k\">add<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"k\">prefix<\/span><span class=\"o\">=<\/span><span class=\"n\">SCS<\/span><span class=\"w\"> <\/span><span class=\"n\">SCS<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">squash<\/span>\n<span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"k\">fetch<\/span><span class=\"w\"> <\/span><span class=\"n\">SCS<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<span class=\"k\">From<\/span><span class=\"w\"> <\/span><span class=\"n\">github<\/span><span class=\"p\">.<\/span><span class=\"nl\">com<\/span><span class=\"p\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">SCS<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">branch<\/span><span class=\"w\">            <\/span><span class=\"n\">master<\/span><span class=\"w\">     <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">FETCH_HEAD<\/span>\n<span class=\"n\">Added<\/span><span class=\"w\"> <\/span><span class=\"n\">dir<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;SCS&#39;<\/span>\n<\/code><\/pre><\/div>\n\n<h4>7 \u4fee\u6539\u9879\u76ee\u7684readme.md\u6587\u4ef6<\/h4>\n<p>\u7531\u4e8e\u65b0\u589e\u4e86\u4e24\u4e2a\u63d2\u4ef6\uff0c\u6240\u4ee5\u9700\u8981\u66f4\u65b0\u4e0b\u672c\u5730\u4ed3\u5e93\u7684readme.md\u6587\u4ef6\u3002\u8fd9\u91ccBZ\u5728\u81ea\u5df1\u7684win10\u4e0a\u5b89\u88c5\u4e86MarkdownPad2\uff0c\u6240\u4ee5\u76f4\u63a5\u4f7f\u7528MarkdownPad\u547d\u4ee4\u6253\u5f00\u8fd9\u4e2a\u6587\u4ef6\u7f16\u8f91\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">vfhky<\/span><span class=\"nv\">@vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">d<\/span><span class=\"o\">\/<\/span><span class=\"n\">MarkdownPad<\/span><span class=\"err\">\\<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"o\">\/<\/span><span class=\"n\">MarkdownPad2<\/span><span class=\"p\">.<\/span><span class=\"n\">exe<\/span><span class=\"w\">  <\/span><span class=\"n\">README<\/span><span class=\"p\">.<\/span><span class=\"n\">md<\/span>\n<\/code><\/pre><\/div>\n\n<h4>8 \u67e5\u770b\u672c\u5730\u6574\u4e2a\u4ed3\u5e93\u60c5\u51b5<\/h4>\n<p>\u540c\u5c0f\u82824\u4e2d\u7684\u64cd\u4f5c\u4e00\u6837\uff0c\u4f7f\u7528<code>git status<\/code>\u547d\u4ee4\u67e5\u770b\u672c\u5730\u6574\u4e2a\u4ed3\u5e93plugins\u7684\u60c5\u51b5\uff0c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\u3002\u53ef\u4ee5\u770b\u5230\u672c\u5730\u4ed3\u5e93\u7531\u4e8e\u7b2c2\/3\/5\/6\u5c0f\u8282\u7684\u64cd\u4f5c\u4e00\u5171\u8fdb\u884c\u4e864\u4e2a<code>commits<\/code>\uff0c\u7136\u540e\u7531\u4e8e\u5c0f\u82827\u7684\u64cd\u4f5c\u4fee\u6539\u4e86README.md\u6587\u4ef6\uff08\u7b49\u5f85<code>git add<\/code>\u64cd\u4f5c\uff09\u3002 <\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">vfhky<\/span><span class=\"nv\">@vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">status<\/span>\n<span class=\"k\">On<\/span><span class=\"w\"> <\/span><span class=\"n\">branch<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<span class=\"n\">Your<\/span><span class=\"w\"> <\/span><span class=\"n\">branch<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">ahead<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;origin\/master&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">by<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"n\">commits<\/span><span class=\"p\">.<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">(<\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;git push&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">publish<\/span><span class=\"w\"> <\/span><span class=\"n\">your<\/span><span class=\"w\"> <\/span><span class=\"k\">local<\/span><span class=\"w\"> <\/span><span class=\"n\">commits<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">Changes<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">staged<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">commit<\/span><span class=\"err\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">(<\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;git add &lt;file&gt;...&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">update<\/span><span class=\"w\"> <\/span><span class=\"n\">what<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">committed<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">  <\/span><span class=\"p\">(<\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;git checkout -- &lt;file&gt;...&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">discard<\/span><span class=\"w\"> <\/span><span class=\"n\">changes<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">working<\/span><span class=\"w\"> <\/span><span class=\"n\">directory<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"nl\">modified<\/span><span class=\"p\">:<\/span><span class=\"w\">   <\/span><span class=\"n\">README<\/span><span class=\"p\">.<\/span><span class=\"n\">md<\/span>\n<span class=\"k\">no<\/span><span class=\"w\"> <\/span><span class=\"n\">changes<\/span><span class=\"w\"> <\/span><span class=\"n\">added<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">commit<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;git add&quot;<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"o\">\/<\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;git commit -a&quot;<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<h4>9 \u67e5\u770bgit\u7684\u64cd\u4f5c\u8bb0\u5f55<\/h4>\n<p>\u4f7f\u7528<code>git log<\/code>\u547d\u4ee4\u67e5\u770b\u672c\u5730\u4ed3\u5e93\u7684git\u64cd\u4f5c\u65e5\u5fd7\uff0c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">vfhky<\/span><span class=\"nv\">@vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"nf\">log<\/span>\n<span class=\"k\">commit<\/span><span class=\"w\"> <\/span><span class=\"mi\">126<\/span><span class=\"n\">fdf96dc462f22c5a64b71f92d425de12b3f06<\/span>\n<span class=\"k\">Merge<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">3175<\/span><span class=\"n\">b06<\/span><span class=\"w\"> <\/span><span class=\"n\">c4f6105<\/span>\n<span class=\"nl\">Author<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">vfhky<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"n\">vfhky<\/span><span class=\"nv\">@qq<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">&gt;<\/span>\n<span class=\"nc\">Date<\/span><span class=\"err\">:<\/span><span class=\"w\">   <\/span><span class=\"n\">Tue<\/span><span class=\"w\"> <\/span><span class=\"n\">Mar<\/span><span class=\"w\"> <\/span><span class=\"mi\">21<\/span><span class=\"w\"> <\/span><span class=\"mi\">20<\/span><span class=\"err\">:<\/span><span class=\"mi\">27<\/span><span class=\"err\">:<\/span><span class=\"mi\">57<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">Merge<\/span><span class=\"w\"> <\/span><span class=\"k\">commit<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;c4f61059b3cf459466a4972bc34246de524e1f33&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;SCS&#39;<\/span>\n<span class=\"k\">commit<\/span><span class=\"w\"> <\/span><span class=\"n\">c4f61059b3cf459466a4972bc34246de524e1f33<\/span>\n<span class=\"nl\">Author<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">vfhky<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"n\">vfhky<\/span><span class=\"nv\">@qq<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">&gt;<\/span>\n<span class=\"nc\">Date<\/span><span class=\"err\">:<\/span><span class=\"w\">   <\/span><span class=\"n\">Tue<\/span><span class=\"w\"> <\/span><span class=\"n\">Mar<\/span><span class=\"w\"> <\/span><span class=\"mi\">21<\/span><span class=\"w\"> <\/span><span class=\"mi\">20<\/span><span class=\"err\">:<\/span><span class=\"mi\">27<\/span><span class=\"err\">:<\/span><span class=\"mi\">57<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">Squashed<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;SCS\/&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">content<\/span><span class=\"w\"> <\/span><span class=\"k\">from<\/span><span class=\"w\"> <\/span><span class=\"k\">commit<\/span><span class=\"w\"> <\/span><span class=\"mi\">00668<\/span><span class=\"n\">df<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">git<\/span><span class=\"o\">-<\/span><span class=\"n\">subtree<\/span><span class=\"o\">-<\/span><span class=\"nl\">dir<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">SCS<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">git<\/span><span class=\"o\">-<\/span><span class=\"n\">subtree<\/span><span class=\"o\">-<\/span><span class=\"nl\">split<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">00668<\/span><span class=\"n\">dfe151c7ea371595a297075249d39916c51<\/span>\n<span class=\"k\">commit<\/span><span class=\"w\"> <\/span><span class=\"mi\">3175<\/span><span class=\"n\">b0670d5a2410170e4f8a74791580639fea38<\/span>\n<span class=\"k\">Merge<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"mf\">0e9<\/span><span class=\"n\">dfe9<\/span><span class=\"w\"> <\/span><span class=\"n\">f4f9dca<\/span>\n<span class=\"nl\">Author<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">vfhky<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"n\">vfhky<\/span><span class=\"nv\">@qq<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">&gt;<\/span>\n<span class=\"nc\">Date<\/span><span class=\"err\">:<\/span><span class=\"w\">   <\/span><span class=\"n\">Tue<\/span><span class=\"w\"> <\/span><span class=\"n\">Mar<\/span><span class=\"w\"> <\/span><span class=\"mi\">21<\/span><span class=\"w\"> <\/span><span class=\"mi\">20<\/span><span class=\"err\">:<\/span><span class=\"mi\">25<\/span><span class=\"err\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\"> <\/span><span class=\"mi\">2017<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">0800<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">Merge<\/span><span class=\"w\"> <\/span><span class=\"k\">commit<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;f4f9dcab478239e4be38da081417cd627f9c64bf&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;PlayAtWill&#39;<\/span>\n<\/code><\/pre><\/div>\n\n<h4>10 \u628a\u672c\u5730\u4ed3\u5e93\u6240\u6709\u7684\u66f4\u65b0\u90fd\u540c\u6b65\u5230\u8fdc\u7a0b\u4ed3\u5e93<\/h4>\n<p>\u901a\u8fc7\u5c0f\u82828\/9\u7684\u5206\u6790\uff0c\u786e\u8ba4\u4e86\u6574\u4e2a\u672c\u5730\u4ed3\u5e93\u7684\u6240\u6709\u66f4\u65b0\u548c\u63d0\u4ea4\u90fd\u662f\u65e0\u8bef\u7684\uff0c\u90a3\u4e48\u5c31\u4f7f\u7528<code>git add<\/code>\u3001<code>git commit -m<\/code>\u548c<code>git push<\/code>\u8fd93\u4e2a\u547d\u4ee4\u628a\u672c\u5730\u4ed3\u5e93\u7684\u6240\u6709\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u793e\u533atypecho-fans\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4e2d\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">vfhky<\/span><span class=\"p\">@<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">add<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">all<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">commit<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">m<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;add two plugins.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">push<\/span><span class=\"w\"> <\/span><span class=\"n\">origin<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">master<\/span><span class=\"w\"> <\/span><span class=\"n\">bafc97f<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">add<\/span><span class=\"w\"> <\/span><span class=\"n\">two<\/span><span class=\"w\"> <\/span><span class=\"n\">plugins<\/span><span class=\"p\">.<\/span>\n<span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"n\">changed<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"n\">insertions<\/span><span class=\"p\">(<\/span><span class=\"o\">+<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">Counting<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">18<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Delta<\/span><span class=\"w\"> <\/span><span class=\"n\">compression<\/span><span class=\"w\"> <\/span><span class=\"n\">using<\/span><span class=\"w\"> <\/span><span class=\"n\">up<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"w\"> <\/span><span class=\"n\">threads<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Compressing<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">18<\/span><span class=\"o\">\/<\/span><span class=\"mi\">18<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Writing<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">18<\/span><span class=\"o\">\/<\/span><span class=\"mi\">18<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"mf\">27.09<\/span><span class=\"w\"> <\/span><span class=\"n\">KiB<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span><span class=\"o\">\/<\/span><span class=\"n\">s<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Total<\/span><span class=\"w\"> <\/span><span class=\"mi\">18<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">reused<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n<span class=\"nl\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Resolving<\/span><span class=\"w\"> <\/span><span class=\"n\">deltas<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">4<\/span><span class=\"o\">\/<\/span><span class=\"mi\">4<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">completed<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"n\">local<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">To<\/span><span class=\"w\"> <\/span><span class=\"n\">github<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">:<\/span><span class=\"n\">typecho<\/span><span class=\"o\">-<\/span><span class=\"n\">fans<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"p\">.<\/span><span class=\"n\">git<\/span>\n<span class=\"w\">   <\/span><span class=\"mf\">0e9<\/span><span class=\"n\">dfe9<\/span><span class=\"p\">..<\/span><span class=\"n\">bafc97f<\/span><span class=\"w\">  <\/span><span class=\"n\">master<\/span><span class=\"w\"> <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u901a\u8fc7\u4e0a\u9762\u7684\u64cd\u4f5c\u5df2\u7ecf\u6210\u529f\u628a\u672c\u5730\u4ed3\u5e93\u7684\u6240\u6709\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u4e86\u793e\u533a\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4e2d\u4e86\uff0c\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n<p><img alt=\"\u6210\u529f\u628a\u672c\u5730\u4ed3\u5e93\u7684\u6240\u6709\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u4e86\u793e\u533a\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4e2d\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/gitsubtree1_syn_typecho_fans.png\" title=\"\u6210\u529f\u628a\u672c\u5730\u4ed3\u5e93\u7684\u6240\u6709\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u4e86\u793e\u533a\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4e2d\"><\/p>\n<h4>11 \u5bf9\u5b50\u4ed3\u5e93\u7684\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u5176\u5bf9\u5e94\u7684\u539f\u6765\u7684\u8fdc\u7a0b\u4ed3\u5e93<\/h4>\n<p>\u5982\u679c\u5728\u672c\u5730\u4ed3\u5e93\u4e2d\u5bf9\u521a\u624d\u901a\u8fc7<code>git subtree add<\/code>\u547d\u4ee4\u8bbe\u7f6e\u4e3a\u5b50\u4ed3\u5e93\u7684SCS\u548cPlayAtWill\u4f5c\u4fee\u6539\uff0c\u53c8\u5982\u4f55\u540c\u6b65\u66f4\u65b0\u5230\u8fd9\u4e24\u4e2a\u5b50\u4ed3\u5e93\u539f\u6765\u5bf9\u5e94\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4e2d\u5462\uff1f<\/p>\n<p>\u8fd9\u91cc\u4ee5\u4fee\u6539\u5b50\u4ed3\u5e93SCS\u4e3a\u4f8b\uff0c\u5df2\u77e5\u5b83\u539f\u6765\u5bf9\u5e94\u7684\u8fdc\u7a0b\u4ed3\u5e93\u662fgit@github.com:vfhky\/SCS.git\u3002\u5f53\u4fee\u6539\u4e86SCS\u4e2d\u7684<code>README.md<\/code>\u6587\u4ef6\uff08\u5e76\u4e14\u5df2\u7ecf\u5728\u672c\u5730\u4ed3\u5e93\u4f5c\u4e86<code>git commit<\/code>\u548c<code>git push<\/code>\u64cd\u4f5c\uff09\uff0c\u90a3\u4e48\u4f7f\u7528<code>git subtree push<\/code>\u547d\u4ee4\u5c31\u53ef\u4ee5\u540c\u6b65\u66f4\u65b0\u5230\u5b83\u539f\u6765\u5bf9\u5e94\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4e86\u3002<\/p>\n<p><code>git subtree push<\/code>\u7684\u539f\u7406\u662f\u5148\u904d\u5386\u672c\u5730\u4ed3\u5e93\u6240\u6709\u7684<code>git commit<\/code>\u64cd\u4f5c\uff0c\u7136\u540e\u5339\u914d\u51fa\u5bf9\u5b50\u4ed3\u5e93<code>SCS<\/code>\u7684\u90a3\u4e9b<code>commit<\/code>\uff0c\u6700\u540e\u628a\u8fd9\u4e9b\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u5b83\u539f\u6765\u5bf9\u5e94\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4e2d\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"w\"> <\/span><span class=\"n\">\u5bf9\u5b50\u4ed3\u5e93\u7684\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u5176\u5bf9\u5e94\u7684\u539f\u6765\u8fdc\u7a0b\u4ed3\u5e93<\/span>\n<span class=\"n\">vfhky<\/span><span class=\"nv\">@vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">subtree<\/span><span class=\"w\"> <\/span><span class=\"n\">push<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"k\">prefix<\/span><span class=\"o\">=<\/span><span class=\"n\">SCS<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"nv\">@github<\/span><span class=\"p\">.<\/span><span class=\"nl\">com<\/span><span class=\"p\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">SCS<\/span><span class=\"p\">.<\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">squash<\/span>\n<span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">push<\/span><span class=\"w\"> <\/span><span class=\"k\">using<\/span><span class=\"err\">:<\/span><span class=\"w\">  <\/span><span class=\"n\">git<\/span><span class=\"nv\">@github<\/span><span class=\"p\">.<\/span><span class=\"nl\">com<\/span><span class=\"p\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">SCS<\/span><span class=\"p\">.<\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<span class=\"n\">Counting<\/span><span class=\"w\"> <\/span><span class=\"nl\">objects<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Delta<\/span><span class=\"w\"> <\/span><span class=\"n\">compression<\/span><span class=\"w\"> <\/span><span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"n\">up<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"w\"> <\/span><span class=\"n\">threads<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Compressing<\/span><span class=\"w\"> <\/span><span class=\"nl\">objects<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Writing<\/span><span class=\"w\"> <\/span><span class=\"nl\">objects<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"mi\">360<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span><span class=\"o\">\/<\/span><span class=\"n\">s<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Total<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">reused<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">delta<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n<span class=\"nl\">remote<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Resolving<\/span><span class=\"w\"> <\/span><span class=\"nl\">deltas<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">1<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">completed<\/span><span class=\"w\"> <\/span><span class=\"k\">with<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"k\">local<\/span><span class=\"w\"> <\/span><span class=\"n\">objects<\/span><span class=\"p\">.<\/span>\n<span class=\"k\">To<\/span><span class=\"w\"> <\/span><span class=\"n\">github<\/span><span class=\"p\">.<\/span><span class=\"nl\">com<\/span><span class=\"p\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">SCS<\/span><span class=\"p\">.<\/span><span class=\"n\">git<\/span>\n<span class=\"w\">   <\/span><span class=\"mi\">00668<\/span><span class=\"n\">df<\/span><span class=\"p\">.<\/span><span class=\"mf\">.088684<\/span><span class=\"n\">c<\/span><span class=\"w\">  <\/span><span class=\"mi\">088684<\/span><span class=\"n\">c0e68554dea3c29c61c68003798ddbd781<\/span><span class=\"w\"> <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<span class=\"n\">vfhky<\/span><span class=\"nv\">@vfhky<\/span><span class=\"o\">-<\/span><span class=\"n\">pc<\/span><span class=\"w\"> <\/span><span class=\"n\">MINGW64<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">e<\/span><span class=\"o\">\/<\/span><span class=\"n\">plugins<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6700\u7ec8\u7684\u540c\u6b65\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n<p><img alt=\"\u5bf9\u5b50\u4ed3\u5e93\u7684\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u5176\u5bf9\u5e94\u7684\u539f\u6765\u8fdc\u7a0b\u4ed3\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/gitsubtree1_syn_scs.png\" title=\"\u5bf9\u5b50\u4ed3\u5e93\u7684\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u5176\u5bf9\u5e94\u7684\u539f\u6765\u8fdc\u7a0b\u4ed3\u5e93\"><\/p>\n<h4>12 \u628a\u5b50\u4ed3\u5e93\u5bf9\u5e94\u7684\u8fdc\u7a0b\u4ed3\u5e93\u7684\u64cd\u4f5c\u540c\u6b65\u66f4\u65b0\u5230\u672c\u5730\u4ed3\u5e93<\/h4>\n<p>\u5982\u679c\u5bf9\u5b50\u4ed3\u5e93\u539f\u6765\u5bf9\u5e94\u7684\u8fdc\u7a0b\u4ed3\u5e93\u4f5c\u4e86\u4fee\u6539\uff0c\u90a3\u4e48\u53ef\u4ee5\u5728\u672c\u5730\u4ed3\u5e93\u4f7f\u7528<code>git subtree pull --prefix=SCS git@github.com:vfhky\/SCS.git master --squash<\/code>\u547d\u4ee4\u6765\u83b7\u53d6\u5176\u8fdc\u7a0b\u4ed3\u5e93\u66f4\u65b0\u7684\u5185\u5bb9\uff0c\u8fd9\u91cc\u5c31\u4e0d\u505a\u6f14\u793a\u4e86\u3002\u5230\u6b64\uff0c\u5173\u4e8e\u5b50\u4ed3\u5e93\u548c\u5176\u539f\u6765\u5bf9\u5e94\u7684\u8fdc\u7a0b\u4ed3\u5e93\u7684<code>\u53cc\u5411\u540c\u6b65<\/code>\u64cd\u4f5c\u6f14\u793a\u5df2\u7ecf\u5b8c\u6bd5\u3002<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"git"}}]},{"title":"C++\u4e2d\u4f7f\u7528vs2015\u548cg++\u5bf9new\u5f00\u8f9f\u7684\u5806\u5185\u5b58\u662f\u5426\u521d\u59cb\u5316\u7684\u5206\u6790","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/gccvsheapnewinit1.html","rel":"alternate"}},"published":"2017-03-14T23:24:00+08:00","updated":"2017-03-14T23:24:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-03-14:\/cseries\/gccvsheapnewinit1.html","summary":"<p>\u5728C++\u4e2d\u4f7f\u7528<code>new<\/code>\u8fd0\u7b97\u7b26\u5728\u5806\u4e2d\u7533\u8bf7\u4e00\u5185\u5b58\u5757\u7684\u4f7f\u7528\u6743\u7684\u540c\u65f6\u8fd8\u53ef\u4ee5\u6267\u884c\u5bf9\u8be5\u5185\u5b58\u5757\u7684\u521d\u59cb\u5316\u5de5\u4f5c\u3002\u4e0b\u9762\u901a\u8fc7\u4f7f\u75282\u4e2a\u7c7b\u5bf9\u8c61\u548c2\u4e2a\u57fa\u672c\u6570\u636e\u7c7b\u578b\u6765\u5206\u6790\u4f7f\u7528<code>new class_object<\/code>\u3001<code>new class_object()<\/code>\u548c<code>new int<\/code>\u3001<code>new int()<\/code>\u5bf9\u8fd9\u5757\u5185\u5b58\u7684\u521d\u59cb\u5316\u60c5\u51b5\u3002<\/p>\n","content":"<p>\u5728C++\u4e2d\u4f7f\u7528<code>new<\/code>\u8fd0\u7b97\u7b26\u5728\u5806\u4e2d\u7533\u8bf7\u4e00\u5185\u5b58\u5757\u7684\u4f7f\u7528\u6743\u7684\u540c\u65f6\u8fd8\u53ef\u4ee5\u6267\u884c\u5bf9\u8be5\u5185\u5b58\u5757\u7684\u521d\u59cb\u5316\u5de5\u4f5c\u3002\u4e0b\u9762\u901a\u8fc7\u4f7f\u75282\u4e2a\u7c7b\u5bf9\u8c61\u548c2\u4e2a\u57fa\u672c\u6570\u636e\u7c7b\u578b\u6765\u5206\u6790\u4f7f\u7528<code>new class_object<\/code>\u3001<code>new class_object()<\/code>\u548c<code>new int<\/code>\u3001<code>new int()<\/code>\u5bf9\u8fd9\u5757\u5185\u5b58\u7684\u521d\u59cb\u5316\u60c5\u51b5\u3002<\/p>\n\n\n<h4>1 \u793a\u4f8b\u7a0b\u5e8f<\/h4>\n<p>\u8fd9\u91cc\u7528\u4e0b\u9762\u8fd9\u4e2aC++\u7a0b\u5e8f\u4f5c\u4e3a\u6f14\u793a\uff0c\u5728\u540e\u9762\u4e24\u4e2a\u5c0f\u8282\u4e2d\u5206\u522b\u4f7f\u7528g++\u548cvs2015\u6765\u7f16\u8bd1\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    gccvsheapnewinit1.cpp<\/span>\n<span class=\"cm\"> * @Describe    A simple example for using new to allocating mem and initialize it compiled with visual studio and g++.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2017-03-14 23:24 https:\/\/typecodes.com\/cseries\/gccvsheapnewinit1.html<\/span>\n<span class=\"cm\"> * @Compile     g++ gccvsheapnewinit1.cpp -o gccvsheapnewinit1<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;iostream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"k\">namespace<\/span><span class=\"w\"> <\/span><span class=\"nn\">std<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\">\/\/\u7c7bA\u4e2d\u662f\u5426\u5f00\u542f\u9ed8\u8ba4\u6784\u9020\u51fd\u6570<\/span>\n<span class=\"cp\">#define DEFAULTFUN 0<\/span>\n\n<span class=\"k\">class<\/span><span class=\"w\"> <\/span><span class=\"nc\">A<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"k\">public<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_value<\/span><span class=\"p\">;<\/span>\n<span class=\"cp\">#if DEFAULTFUN<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u65e0\u53c2\u6784\u9020\u51fd\u6570<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">A<\/span><span class=\"p\">()<\/span><span class=\"o\">:<\/span><span class=\"n\">i_value<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">){}<\/span>\n<span class=\"cp\">#endif<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">A<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">obj1<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">A<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5982\u679c\u7c7bA\u4e2d\u6ca1\u6709\u81ea\u5b9a\u4e49\u7684\u6784\u9020\u51fd\u6570\uff08\u8c03\u7528\u7f16\u8bd1\u5668\u5408\u6210\u7684\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff0c\u4e0d\u4f1a\u5bf9\u6570\u636e\u6210\u5458\u521d\u59cb\u5316\uff09\uff0c\u5982\u679c\u4e0d\u52a0\u62ec\u53f7\uff0c\u5219\u6253\u53701\u4e2a\u968f\u673a\u6570\uff1b\u5982\u679c\u6709\u81ea\u5b9a\u4e49\u7684\u6784\u9020\u51fd\u6570\uff0c\u90a3\u4e48\u4f1a\u8c03\u7528\u8fd9\u4e2a\u6784\u9020\u51fd\u6570\u8fdb\u884c\u521d\u59cb\u5316\uff08\u672c\u4f8b\u4e3a10\uff09\u3002<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;new A=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">obj1<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">i_value<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">delete<\/span><span class=\"w\"> <\/span><span class=\"n\">obj1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">A<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">obj2<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">A<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5982\u679c\u7c7bA\u4e2d\u6ca1\u6709\u81ea\u5b9a\u4e49\u7684\u6784\u9020\u51fd\u6570\uff08\u8c03\u7528\u7f16\u8bd1\u5668\u5408\u6210\u7684\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff09\uff0c\u4f46\u662f\u63a5\u7740\u4f1a\u5bf9\u5185\u5b58\uff08\u5404\u4e2a\u6210\u5458\u53d8\u91cf\uff09\u8fdb\u884c\u521d\u59cb\u5316\uff08\u9ed8\u8ba4\u4e3a0\uff09\uff1b\u5982\u679c\u81ea\u5b9a\u4e49\u4e86\u6784\u9020\u51fd\u6570\uff0c\u90a3\u4e48\u4f1a\u8c03\u7528\u8fd9\u4e2a\u6784\u9020\u51fd\u6570\u8fdb\u884c\u521d\u59cb\u5316\uff08\u672c\u4f8b\u4e3a10\uff09\u3002<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;new A()=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">obj2<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">i_value<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">delete<\/span><span class=\"w\"> <\/span><span class=\"n\">obj2<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;----------------&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/int\u7c7b\u578b\u4e2d\u6ca1\u6709\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff0c\u5982\u679c\u4e0d\u52a0\u62ec\u53f7\uff0c\u90a3\u4e48\u4e0d\u4f1a\u521d\u59cb\u5316\u3002<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">i_arra<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"p\">[<\/span><span class=\"mi\">20<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;new int[10]=[%d]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">i_arra<\/span><span class=\"o\">+<\/span><span class=\"mi\">10<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">delete<\/span><span class=\"w\"> <\/span><span class=\"n\">i_arra<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/int\u7c7b\u578b\u4e2d\u6ca1\u6709\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff0c\u5982\u679c\u52a0\u62ec\u53f7\uff0c\u90a3\u4e48\u4f1a\u521d\u59cb\u5316\u4e3a0\u3002<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">i_arrb<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"p\">[<\/span><span class=\"mi\">20<\/span><span class=\"p\">]();<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;new int[10]()=[%d]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">i_arrb<\/span><span class=\"o\">+<\/span><span class=\"mi\">10<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">delete<\/span><span class=\"w\"> <\/span><span class=\"n\">i_arrb<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u4f7f\u7528g++\u7f16\u8bd1\u5668\u8fdb\u884c\u7f16\u8bd1\u5e76\u6267\u884c<\/h4>\n<p>\u65e0\u8bba\u662f\u5426\u5c06<code>DEFAULTFUN<\/code>\u7684\u503c\u8bbe\u7f6e\u4e3a1\uff08\u5373\u6253\u5f00\u7c7bA\u4e2d\u7684\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff09\uff0c\u5728\u4f7f\u7528g++\u7f16\u8bd1\u5668\u7f16\u8bd1\u5e76\u6267\u884c\u7684\u8f93\u51fa\u7ed3\u679c\u90fd\u5982\u4e0b\u56fe\u6240\u793a\u3002\u4ece\u56fe\u4e2d\u53ef\u4ee5\u770b\u51fa\u5728\u4f7f\u7528<code>new<\/code>\u8fd0\u7b97\u7b26\u5f00\u8f9f\u4e86\u5185\u5b58\u540e\uff0c\u4f1a\u81ea\u52a8\u5bf9\u8fd9\u5757\u5185\u5b58\u8fdb\u884c\u521d\u59cb\u5316\u3002\u56e0\u6b64\uff0c\u56fe\u4e2d\u7c7bA\u7684\u4e24\u4e2a\u5bf9\u8c61obj1\u548cobj2\u5bf9\u5e94\u7684\u6570\u636e\u6210\u5458i_value\u7684\u503c\u90fd\u4e3a0\uff0c\u800c\u4e14\u6574\u578b\u6307\u9488\u53d8\u91cf\u6307\u5411\u504f\u79fb\u91cf\u4e3a10\u7684\u90a3\u4e2a\u6574\u6570\u4e5f\u90fd\u662f0\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528g++\u7f16\u8bd1\u540e\u6267\u884c\u8f93\u51fa\u7684\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/heapnewinit1_g++.png\" title=\"\u4f7f\u7528g++\u7f16\u8bd1\u540e\u6267\u884c\u8f93\u51fa\u7684\u7ed3\u679c\"><\/p>\n<h4>3 \u5728visual studio 2015\u4e2d\u8fdb\u884c\u7f16\u8bd1\u5e76\u6267\u884c<\/h4>\n<p>\u5206\u522b\u628a\u4e0a\u9762\u7a0b\u5e8f\u4e2d\u7684<code>DEFAULTFUN<\/code>\u7684\u503c\u8bbe\u7f6e\u4e3a0\u548c1\uff0c\u4e5f\u5c31\u662f\u6d4b\u8bd5\u7c7b\u4e2d\u662f\u5426\u5305\u542b\u81ea\u5b9a\u4e49\u7684\u6784\u9020\u51fd\u6570\u5bf9\u4f7f\u7528<code>new<\/code>\u8fd0\u7b97\u7b26\u5f00\u8f9f\u5185\u5b58\u5e76\u521d\u59cb\u5316\u7684\u5f71\u54cd\uff0c\u7136\u540e\u5728vs2015\u4e2d\u8fdb\u884c\u7f16\u8bd1\u548c\u6267\u884c\uff0c\u5177\u4f53\u64cd\u4f5c\u548c\u5bf9\u5e94\u7ed3\u679c\u5982\u4e0b\u3002<\/p>\n<h5>3.1 \u628a<code>DEFAULTFUN<\/code>\u7684\u503c\u8bbe\u7f6e\u4e3a0<\/h5>\n<p><code>DEFAULTFUN<\/code>\u7684\u503c\u8bbe\u7f6e\u4e3a0\uff0c\u7136\u540e\u5728visual studio 2015\u4e2d\u8fdb\u884c\u7f16\u8bd1\u5e76\u6267\u884c\uff0c\u5f97\u5230\u7684\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\u3002\u5bf9\u6bd4\u7c7bA\u7684\u5bf9\u8c61obj1\u548cobj2\u7684\u6570\u636e\u6210\u5458\u7684\u8f93\u51fa\u503c\u53ef\u4ee5\u5f97\u51fa\u7ed3\u8bba\uff1a\u5982\u679c\u7c7bA\u4e2d\u6ca1\u6709\u81ea\u5b9a\u4e49\u7684\u6784\u9020\u51fd\u6570\uff0c\u90a3\u4e48<code>new A<\/code>\u548c<code>new A()<\/code>\u4f1a\u8c03\u7528\u7f16\u8bd1\u5668\u5408\u6210\u7684\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff0c\u4f46\u662f\u53ea\u6709<code>new A()<\/code>\u4f1a\u5bf9\u8fd9\u5757\u5185\u5b58\uff08\u5404\u4e2a\u6210\u5458\u53d8\u91cf\uff09\u8fdb\u884c\u521d\u59cb\u5316\uff08\u9ed8\u8ba4\u4e3a0\uff09\u3002<\/p>\n<p><img alt=\"\u5728visual studio2015\u4e2d\u7f16\u8bd1\u6267\u884c\u8f93\u51fa\u7684\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/heapnewinit1_vs2015_1.png\" title=\"\u5728visual studio2015\u4e2d\u7f16\u8bd1\u6267\u884c\u8f93\u51fa\u7684\u7ed3\u679c\"><\/p>\n<h5>3.2 \u628a<code>DEFAULTFUN<\/code>\u7684\u503c\u8bbe\u7f6e\u4e3a1<\/h5>\n<p><code>DEFAULTFUN<\/code>\u7684\u503c\u8bbe\u7f6e\u4e3a1\uff0c\u7136\u540e\u5728visual studio 2015\u4e2d\u8fdb\u884c\u7f16\u8bd1\u5e76\u6267\u884c\uff0c\u5f97\u5230\u7684\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\u3002\u5bf9\u6bd4\u7c7bA\u7684\u5bf9\u8c61obj1\u548cobj2\u7684\u6570\u636e\u6210\u5458\u7684\u8f93\u51fa\u503c\u53ef\u4ee5\u5f97\u51fa\u7ed3\u8bba\uff1a\u5982\u679c\u81ea\u5b9a\u4e49\u4e86\u6784\u9020\u51fd\u6570\uff0c\u90a3\u4e48\u4e0d\u8bba\u662f<code>new A<\/code>\u8fd8\u662f<code>new A()<\/code>\u90fd\u4f1a\u8c03\u7528\u8fd9\u4e2a\u6784\u9020\u51fd\u6570\u8fdb\u884c\u521d\u59cb\u5316\uff08\u672c\u4f8b\u4e3a10\uff09\u3002<\/p>\n<p><img alt=\"\u5728visual studio2015\u4e2d\u7f16\u8bd1\u6267\u884c\u8f93\u51fa\u7684\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/heapnewinit1_vs2015_2.png\" title=\"\u5728visual studio2015\u4e2d\u7f16\u8bd1\u6267\u884c\u8f93\u51fa\u7684\u7ed3\u679c\"><\/p>\n<h4>4 \u603b\u7ed3<\/h4>\n<p>\u4ece\u7b2c2\u5c0f\u8282\u7684\u7ed3\u679c\u53ef\u4ee5\u770b\u51fa\uff0c\u5bf9\u4e8eg++\u7f16\u8bd1\u5668\u6765\u8bf4\uff0c\u65e0\u8bba\u662f\u4f7f\u7528<code>new class_object<\/code>\u3001<code>new class_object()<\/code>\u548c<code>new int<\/code>\u3001<code>new int()<\/code>\u90fd\u4f1a\u5bf9\u7533\u8bf7\u7684\u8fd9\u5757\u5185\u5b58\u8fdb\u884c\u521d\u59cb\u5316\u3002<\/p>\n<p>\u4ece\u7b2c3\u548c\u7b2c4\u5c0f\u8282\u7684\u7ed3\u679c\u53ef\u4ee5\u770b\u51fa\uff0c\u5bf9\u4e8evisual studio 2015\u7f16\u8bd1\u5668\u6765\u8bf4\u4ed6\u4eec\u5bf9\u4e0a\u8ff0<code>new<\/code>\u8fd0\u7b97\u7b26\u7684\u64cd\u4f5c\u6709\u4e0d\u540c\u7684\u7ed3\u679c\uff0c\u5177\u4f53\u603b\u7ed3\u5982\u4e0b\uff1a<\/p>\n<p>\u5bf9\u4e8e\u57fa\u672c\u6570\u636e\u7c7b\u578b\uff08\u4f8b\u5982int, char\u7b49\u5f85\uff09\u5728\u4f7f\u7528new\u5f00\u8f9f\u7533\u8bf7\u5185\u5b58\u7a7a\u95f4\u65f6\uff0c\u5982\u679c\u4f7f\u7528<code>new data_type[numbers]<\/code>\u4e0d\u4f1a\u505a\u5185\u5b58\u7684\u521d\u59cb\u5316\u64cd\u4f5c\uff1b\u800c\u4f7f\u7528<code>new data_type[numbers]()<\/code>\u65f6\u9664\u4e86\u7533\u8bf7\u5185\u5b58\u7a7a\u95f4\u5916\u8fd8\u4f1a\u628a\u8fd9\u5757\u5185\u5b58\u4e2d\u6240\u6709\u7684\u6570\u636e\u521d\u59cb\u5316\u4e3a0\u3002<\/p>\n<p>\u5bf9\u4e8e\u5bf9\u8c61\u7c7b\u578b\uff08\u4f8b\u5982string\u4ee5\u53ca\u81ea\u5b9a\u4e49\u7684\u7c7b\u5bf9\u8c61\u7b49\uff09\u5728\u4f7f\u7528new\u5f00\u8f9f\u7533\u8bf7\u5185\u5b58\u7a7a\u95f4\u65f6\uff0c\u5982\u679c\u6ca1\u6709\u81ea\u5b9a\u4e49\u6784\u9020\u51fd\u6570\uff0c\u90a3\u4e48\u4f7f\u7528<code>new data_type[numbers]<\/code>\u548c\u4f7f\u7528<code>new data_type[numbers]()<\/code>\u90fd\u4f1a\u8c03\u7528\u7531\u7f16\u8bd1\u5668\u5408\u6210\u7684\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff0c\u4f46\u662f<code>new data_type[numbers]()<\/code>\u8fd8\u4f1a\u628a\u8fd9\u5757\u5185\u5b58\u4e2d\u6240\u6709\u7684\u6570\u636e\u521d\u59cb\u5316\u4e3a0\uff1b\u5982\u679c\u81ea\u5b9a\u4e49\u4e86\u6784\u9020\u51fd\u6570\uff0c\u90a3\u4e48\u4f7f\u7528<code>new data_type[numbers]<\/code>\u548c\u4f7f\u7528<code>new data_type[numbers]()<\/code>\u90fd\u4f1a\u8c03\u7528\u7531\u7f16\u8bd1\u5668\u5408\u6210\u7684\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff0c\u7136\u540e\u8fdb\u884c\u521d\u59cb\u5316\uff08\u4f8b\u4e2d\u4e3a10\uff09\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"new"}},{"@attributes":{"term":"heap"}},{"@attributes":{"term":"g++"}},{"@attributes":{"term":"vs"}}]},{"title":"Linux TCP\u5ba2\u6237\u7aef\u51fa\u73b0CLOSE_WAIT\u540e\u8fdb\u5165\u6b7b\u5faa\u73af","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/tcpclosewaitfinwaitrst1.html","rel":"alternate"}},"published":"2017-03-10T13:49:00+08:00","updated":"2017-03-10T13:49:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-03-10:\/cseries\/tcpclosewaitfinwaitrst1.html","summary":"<p>\u5728<a href=\"https:\/\/typecodes.com\/cseries\/tcpclosewaitsigpipe.html\" title=\"\u300aLinux TCP\u901a\u4fe1\u51fa\u73b0CLOSE_WAIT\u540e\u5bfc\u81f4\u670d\u52a1\u7aef\u8fdb\u7a0b\u6302\u6389\u300b\">\u524d\u6587<\/a>\u4e2d\u8bb2\u8ff0\u4e86Linux\u670d\u52a1\u7aefTCP\u7684\u67d0\u4e2a\u94fe\u8def\u53d8\u6210<code>CLOSE_WAIT<\/code>\u72b6\u6001\uff0c\u7136\u540e\u7531\u4e8e\u5ba2\u6237\u7aef\u5df2\u7ecf\u5173\u95ed\u4e86\uff08\u53d1\u9001\u4e86<code>RST<\/code>\u6807\u5fd7\u7684\u62a5\u6587\uff09\uff0c\u90a3\u4e48\u670d\u52a1\u7aef\u5982\u679c\u7ee7\u7eed\u5411\u8fd9\u4e2a\u94fe\u8def\u4e2d\u5199\u5165\u6570\u636e\u7684\u8bdd\u5c31\u4f1a\u6536\u5230<code>SIGPIPE<\/code>\u4fe1\u53f7\u800c\u7ec8\u6b62\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u5ba2\u6237\u7aef\u8fdb\u5165<code>CLOSE_WAIT<\/code>\u540e\u7531\u4e8e\u6536\u5230\u670d\u52a1\u7aef\u4ea7\u751f\u7684<code>RST<\/code>\u6807\u5fd7\u62a5\u6587\u8fdb\u5165\u6b7b\u5faa\u73af\u7684\u60c5\u51b5\u3002\u6ce8\uff1a<code>RST<\/code>\u8868\u793a\u590d\u4f4d\uff0c\u7528\u6765\u5173\u95ed\u5f02\u5e38\u7684\u8fde\u63a5\u3002<\/p>\n<p><img alt=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/tcpclosewaitfinwaitrst1_server_process.png\" title=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\"><\/p>\n","content":"<p>\u5728<a href=\"https:\/\/typecodes.com\/cseries\/tcpclosewaitsigpipe.html\" title=\"\u300aLinux TCP\u901a\u4fe1\u51fa\u73b0CLOSE_WAIT\u540e\u5bfc\u81f4\u670d\u52a1\u7aef\u8fdb\u7a0b\u6302\u6389\u300b\">\u524d\u6587<\/a>\u4e2d\u8bb2\u8ff0\u4e86Linux\u670d\u52a1\u7aefTCP\u7684\u67d0\u4e2a\u94fe\u8def\u53d8\u6210<code>CLOSE_WAIT<\/code>\u72b6\u6001\uff0c\u7136\u540e\u7531\u4e8e\u5ba2\u6237\u7aef\u5df2\u7ecf\u5173\u95ed\u4e86\uff08\u53d1\u9001\u4e86<code>RST<\/code>\u6807\u5fd7\u7684\u62a5\u6587\uff09\uff0c\u90a3\u4e48\u670d\u52a1\u7aef\u5982\u679c\u7ee7\u7eed\u5411\u8fd9\u4e2a\u94fe\u8def\u4e2d\u5199\u5165\u6570\u636e\u7684\u8bdd\u5c31\u4f1a\u6536\u5230<code>SIGPIPE<\/code>\u4fe1\u53f7\u800c\u7ec8\u6b62\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u5ba2\u6237\u7aef\u8fdb\u5165<code>CLOSE_WAIT<\/code>\u540e\u7531\u4e8e\u6536\u5230\u670d\u52a1\u7aef\u4ea7\u751f\u7684<code>RST<\/code>\u6807\u5fd7\u62a5\u6587\u8fdb\u5165\u6b7b\u5faa\u73af\u7684\u60c5\u51b5\u3002\u6ce8\uff1a<code>RST<\/code>\u8868\u793a\u590d\u4f4d\uff0c\u7528\u6765\u5173\u95ed\u5f02\u5e38\u7684\u8fde\u63a5\u3002<\/p>\n<p><img alt=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/tcpclosewaitfinwaitrst1_server_process.png\" title=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\"><\/p>\n\n\n<h4>1 CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3<\/h4>\n<p>\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u5728\u865a\u62df\u673aCentOS7\u670d\u52a1\u5668\uff08192.168.1.177\uff09\u4e2d\u6253\u5f00\u4e00\u4e2a\u7ec8\u7aef\u754c\u9762\uff0c\u6267\u884c\u7a0b\u5e8f<code>linux_epoll_server_2<\/code>\u5efa\u7acb8000\u7aef\u53e3\u7684\u76d1\u542c\u670d\u52a1\uff08PID:2791\uff09\u3002\u8fdb\u7a0b\u7684\u5927\u4f53\u6267\u884c\u8fc7\u7a0b\u662f\u901a\u8fc7<code>epoll_wait<\/code>\u7b49\u5f85\u5ba2\u6237\u7aef\u7684\u63a5\u5165\uff0c\u5f53\u53ef\u8bfb\u63cf\u8ff0\u7b26\u5c31\u7eea\u65f6\u6253\u5370\u63a5\u6536\u7684\u62a5\u6587\u5e76\u56de\u590d\u5e94\u7b54\u62a5\u6587\uff0c\u6700\u540e\u8c03\u7528<code>close<\/code>\u51fd\u6570\u5173\u95ed\u8fd9\u4e2a\u63cf\u8ff0\u7b26\u5e76\u5c06\u5176\u4ece\u76d1\u542c\u4e8b\u4ef6\u4e2d\u5220\u9664\u3002<\/p>\n<h4>2 CentOS\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u7aef<\/h4>\n<p>\u65b0\u5efa\u4e00\u4e2aLinux\u4f1a\u8bdd\u7ec8\u7aef\u5e76\u6267\u884c\u5ba2\u6237\u7aef\u7a0b\u5e8flinux_epoll_simple_sndmsg_netstat\uff08\u5177\u4f53\u4ee3\u7801\u89c1\u6587\u672b\u9644\u5f55\u90e8\u5206\uff09\u3002\u5728\u8fc7\u4e09\u6b21\u63e1\u624b\u5efa\u7acbTCP\u8fde\u63a5\u540e\u8fdb\u7a0b\u8fdb\u5165\u5faa\u73af\u6a21\u5f0f\uff1a\u6bcf\u6b21\u53d1\u9001\u5b8c\u62a5\u6587\u4f11\u77205\u79d2\uff08<code>sleep(5)<\/code>\uff09\u63a5\u7740\u518d\u6b21\u5411\u670d\u52a1\u7aef\u53d1\u9001\u62a5\u6587\u3002<\/p>\n<p><img alt=\"\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u7aef\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/tcpclosewaitfinwaitrst1_client_process.png\" title=\"\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u7aef\"><\/p>\n<h4>3 \u4f7f\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u72b6\u6001<\/h4>\n<p>\u65b0\u5efa\u4e00\u4e2aLinux\u4f1a\u8bdd\u7ec8\u7aef\u5e76\u521b\u5efa\u4e00\u4e2ashell\u811a\u672clinux_epoll_simple_sndmsg_netstat.sh \uff0c\u91cc\u9762\u5305\u542b\u5173\u952e\u547d\u4ee4<code>sudo netstat -npt|head -n 2;sudo netstat -npa|grep 8006<\/code>\u3002\u8fd9\u4e2a\u811a\u672c\u7528\u4e8e\u76d1\u63a7TCP\u7684\u901a\u4fe1\u72b6\u6001\u3002\u4ece\u4e0b\u56fe\u4e2d\u53ef\u4ee5\u770b\u5230\uff0c\u6700\u7ec8\u670d\u52a1\u7aef\u8fdb\u7a0b\uff08PID:2791\uff09\u5728\u76d1\u542c8006\u7aef\u53e3\uff0c\u7136\u540e\u548c\u5ba2\u6237\u7aef\u8fdb\u7a0b\uff08PID:2804\uff09\u5efa\u7acb\u4e86TCP\u8fde\u63a5\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/tcpclosewaitfinwaitrst1_netstat.png\" title=\"\u4f7f\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u72b6\u6001\"><\/p>\n<h4>4 \u5173\u952e\u6b65\u9aa4\uff1a\u4f7f\u7528tcpdump\u547d\u4ee4\u6293\u53d6TCP\u901a\u4fe1\u5305<\/h4>\n<p>\u65b0\u5efa\u4e00\u4e2aLinux\u4f1a\u8bdd\u7ec8\u7aef\u5e76\u8f93\u5165\u547d\u4ee4<code>sudo tcpdump -i lo -n port 8006<\/code>\u6293\u53d6\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684TCP\u901a\u4fe1\u62a5\u6587\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528tcpdump\u547d\u4ee4\u6293\u53d6TCP\u901a\u4fe1\u5305\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/tcpclosewaitfinwaitrst1_tcpdump.png\" title=\"\u4f7f\u7528tcpdump\u547d\u4ee4\u6293\u53d6TCP\u901a\u4fe1\u5305\"><\/p>\n<h4>5 \u8fc7\u7a0b\u5206\u6790<\/h4>\n<p>\u6839\u636e\u524d\u9762\u6b65\u9aa41\u670d\u52a1\u7aef\u3001\u6b65\u9aa42\u5ba2\u6237\u7aef\u3001\u6b65\u9aa43netstat\u7684\u76d1\u63a7\u4ee5\u53ca\u6b65\u9aa44\u4e2d\u7684TCPDUMP\u6293\u5305\u505a\u51fa\u5177\u4f53\u7684\u5206\u6790\uff1a<\/p>\n<p>1\u3001tcpdump\u6293\u5305\u5206\u6790\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">vfhky@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">sudo<\/span><span class=\"w\"> <\/span><span class=\"n\">tcpdump<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"n\">lo<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">n<\/span><span class=\"w\"> <\/span><span class=\"n\">port<\/span><span class=\"w\"> <\/span><span class=\"mi\">8006<\/span>\n<span class=\"nl\">tcpdump<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">verbose<\/span><span class=\"w\"> <\/span><span class=\"k\">output<\/span><span class=\"w\"> <\/span><span class=\"n\">suppressed<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">v<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">vv<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">full<\/span><span class=\"w\"> <\/span><span class=\"n\">protocol<\/span><span class=\"w\"> <\/span><span class=\"n\">decode<\/span>\n<span class=\"n\">listening<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">lo<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">link<\/span><span class=\"o\">-<\/span><span class=\"n\">type<\/span><span class=\"w\"> <\/span><span class=\"n\">EN10MB<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">Ethernet<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">capture<\/span><span class=\"w\"> <\/span><span class=\"k\">size<\/span><span class=\"w\"> <\/span><span class=\"mi\">65535<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u4e09\u6b21\u63e1\u624b<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">35.724646<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">S<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">1652959375<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">43690<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">mss 65495,sackOK,TS val 8433172 ecr 0,nop,wscale 7<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<span class=\"mi\">13<\/span><span class=\"err\">:<\/span><span class=\"mi\">09<\/span><span class=\"err\">:<\/span><span class=\"mf\">58.084191<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">S.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">2881349854<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">1652959376<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">43690<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">mss 65495,sackOK,TS val 8433172 ecr 8433172,nop,wscale 7<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">35.724660<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">342<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">nop,nop,TS val 8433172 ecr 8433172<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u5ba2\u6237\u7aef\u53d1\u900158\u5b57\u8282\u7684\u62a5\u6587<\/span><span class=\"err\">\uff08<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"err\">:<\/span><span class=\"mi\">59<\/span><span class=\"n\">\u4e2d\u768459<\/span><span class=\"o\">=<\/span><span class=\"n\">seq<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"o\">+<\/span><span class=\"n\">length<\/span><span class=\"p\">(<\/span><span class=\"mi\">58<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"err\">\uff09<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">35.724966<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">P.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"err\">:<\/span><span class=\"mi\">59<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">342<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">nop,nop,TS val 8433173 ecr 8433172<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">58<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u670d\u52a1\u7aef\u56de\u590dACK\u786e\u8ba4\u62a5\u6587<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">ACK<\/span><span class=\"o\">=<\/span><span class=\"n\">\u5bf9\u65b9SEQ<\/span><span class=\"o\">+<\/span><span class=\"n\">\u62a5\u6587\u957f\u5ea6<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"o\">+<\/span><span class=\"mi\">58<\/span><span class=\"o\">=<\/span><span class=\"mi\">59<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">35.724970<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">59<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">342<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">nop,nop,TS val 8433173 ecr 8433173<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u670d\u52a1\u7aef\u4e3b\u52a8\u53d1\u900158\u5b57\u8282\u7684\u62a5\u6587<\/span><span class=\"err\">\uff08<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"err\">:<\/span><span class=\"mi\">59<\/span><span class=\"n\">\u4e2d\u768459<\/span><span class=\"o\">=<\/span><span class=\"n\">seq<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"o\">+<\/span><span class=\"n\">length<\/span><span class=\"p\">(<\/span><span class=\"mi\">58<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"err\">\uff09<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">35.725006<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">P.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"err\">:<\/span><span class=\"mi\">59<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">59<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">342<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">nop,nop,TS val 8433173 ecr 8433173<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">58<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u5ba2\u6237\u7aef\u56de\u590dACK\u786e\u8ba4\u62a5\u6587<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">ACK<\/span><span class=\"o\">=<\/span><span class=\"n\">\u5bf9\u65b9SEQ<\/span><span class=\"o\">+<\/span><span class=\"n\">\u62a5\u6587\u957f\u5ea6<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"o\">+<\/span><span class=\"mi\">58<\/span><span class=\"o\">=<\/span><span class=\"mi\">59<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">35.725008<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">59<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">342<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">nop,nop,TS val 8433173 ecr 8433173<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u670d\u52a1\u7aef\u8c03\u7528close\u51fd\u6570\u5173\u95ed\u8fde\u63a5<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u53d1\u9001FIN\u6807\u5fd7\u7684\u62a5\u6587\u540e\u8fdb\u5165FIN_WAIT_1\u72b6\u6001<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">35.725018<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">F.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">59<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">59<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">342<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">nop,nop,TS val 8433173 ecr 8433173<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u5ba2\u6237\u7aef\u56de\u590dACK\u786e\u8ba4\u62a5\u6587<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u5ba2\u6237\u7aef\u8fdb\u5165CLOSE_WAIT\u72b6\u6001<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u670d\u52a1\u7aef\u8fdb\u5165FIN_WAIT_2\u72b6\u6001<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##ACK<\/span><span class=\"o\">=<\/span><span class=\"n\">\u5bf9\u65b9SEQ<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">=<\/span><span class=\"mi\">59<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">=<\/span><span class=\"mi\">60<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">35.766501<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">60<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">342<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">nop,nop,TS val 8433215 ecr 8433173<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u5ba2\u6237\u7aef5\u79d2\u540e\u518d\u6b21\u53d1\u900158\u5b57\u8282\u7684\u62a5\u6587<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">CLOSE_WAIT\u72b6\u6001\u8fd8\u662f\u53ef\u4ee5\u5411\u5bf9\u7aef\u53d1\u9001\u62a5\u6587\u7684<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">40.736161<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">P.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">59<\/span><span class=\"err\">:<\/span><span class=\"mi\">117<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">60<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">342<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">nop,nop,TS val 8438184 ecr 8433173<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">58<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u670d\u52a1\u7aef\u53d1\u9001RST\u94fe\u8def\u91cd\u7f6e\u6807\u5fd7\u7684\u62a5\u6587<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u5ba2\u6237\u7aef\u5173\u95ed<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">55<\/span><span class=\"err\">:<\/span><span class=\"mf\">40.736190<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.8006<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0.0.1.56710<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">R<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">2881349914<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<\/code><\/pre><\/div>\n\n<p>2\u3001netstat\u547d\u4ee4\u76d1\u63a7\uff1a\u7531\u4e8e\u811a\u672c\u4e2d\u505a\u4e86<code>sleep 1<\/code>\u7684\u64cd\u4f5c\uff0c\u6240\u4ee5\u76d1\u63a7\u4e0d\u662f\u5f88\u53ca\u65f6\uff0c\u5bf9\u5c0f\u82824\u7684\u56fe\u4e2d\u5173\u952e\u76844\u4e2a\u90e8\u5206\u8fdb\u884c\u5206\u6790\u3002\u5176\u4e2d<code>Recv-Q<\/code>\u5bf9\u5e94\u7684\u503c\u4e3a59\uff0c\u5b83\u4e0d\u540c\u4e8e\u524d\u6587\u4e2d<code>LISTEN<\/code>\u72b6\u6001\u4e0b<code>Recv-Q<\/code>\u5bf9\u5e94\u7684\u503c\uff08\u8868\u793a\u7531\u5185\u6838\u5b8c\u6210\u7684\u5df2\u5c31\u7eea\u961f\u5217\u4e2d\u7684\u8fde\u63a5\u6570\uff09\uff0c\u8fd9\u91cc\u8868\u793a\u5ba2\u6237\u7aef\u63a5\u6536\u7f13\u5b58\u4e2d\u670959\u5b57\u8282\u7684\u6570\u636e\u7b49\u5f85\u5ba2\u6237\u7aef\u8fdb\u7a0b\u53bb\u8bfb\u53d6\u3002\u53e6\u5916\u4e3a\u4ec0\u4e48\u662f59\u5b57\u8282\u800c\u4e0d\u662f\u670d\u52a1\u7aef\u53d1\u9001\u768458\u5b57\u8282\u6570\u636e\uff1fLZ\u8fd9\u91cc\u4e5f\u4e0d\u662f\u5f88\u786e\u5b9a\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">epoll<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux_epoll_simple_sndmsg_netstat<\/span><span class=\"p\">.<\/span><span class=\"nx\">sh<\/span><span class=\"w\"> <\/span>\n<span class=\"err\">######<\/span><span class=\"nx\">\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c<\/span>\n<span class=\"nx\">Active<\/span><span class=\"w\"> <\/span><span class=\"nx\">Internet<\/span><span class=\"w\"> <\/span><span class=\"nx\">connections<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">w<\/span><span class=\"o\">\/<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">servers<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Proto<\/span><span class=\"w\"> <\/span><span class=\"nx\">Recv<\/span><span class=\"o\">-<\/span><span class=\"nx\">Q<\/span><span class=\"w\"> <\/span><span class=\"nx\">Send<\/span><span class=\"o\">-<\/span><span class=\"nx\">Q<\/span><span class=\"w\"> <\/span><span class=\"nx\">Local<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">           <\/span><span class=\"nx\">Foreign<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">         <\/span><span class=\"nx\">State<\/span><span class=\"w\">       <\/span><span class=\"nx\">PID<\/span><span class=\"o\">\/<\/span><span class=\"nx\">Program<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"w\">    <\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\">      <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">0.0.0.0<\/span><span class=\"p\">:<\/span><span class=\"mi\">8006<\/span><span class=\"w\">            <\/span><span class=\"m m-Double\">0.0.0.0<\/span><span class=\"p\">:<\/span><span class=\"o\">*<\/span><span class=\"w\">               <\/span><span class=\"nx\">LISTEN<\/span><span class=\"w\">      <\/span><span class=\"mi\">2791<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux_epoll_se<\/span>\n\n<span class=\"err\">######<\/span><span class=\"nx\">\u7531\u4e8e\u670d\u52a1\u7aef\u63a5\u6536\u5e76\u56de\u590d\u62a5\u6587\u540e\u4e3b\u52a8\u8c03\u7528close\u51fd\u6570\u5173\u95ed\u4e86\u94fe\u8def<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u670d\u52a1\u7aef\u8fdb\u5165FIN_WAIT1\u72b6\u6001<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5ba2\u6237\u7aef\u8fdb\u5165CLOSE_WAIT\u72b6\u6001<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"nx\">Active<\/span><span class=\"w\"> <\/span><span class=\"nx\">Internet<\/span><span class=\"w\"> <\/span><span class=\"nx\">connections<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">w<\/span><span class=\"o\">\/<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">servers<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Proto<\/span><span class=\"w\"> <\/span><span class=\"nx\">Recv<\/span><span class=\"o\">-<\/span><span class=\"nx\">Q<\/span><span class=\"w\"> <\/span><span class=\"nx\">Send<\/span><span class=\"o\">-<\/span><span class=\"nx\">Q<\/span><span class=\"w\"> <\/span><span class=\"nx\">Local<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">           <\/span><span class=\"nx\">Foreign<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">         <\/span><span class=\"nx\">State<\/span><span class=\"w\">       <\/span><span class=\"nx\">PID<\/span><span class=\"o\">\/<\/span><span class=\"nx\">Program<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"w\">    <\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\">      <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">0.0.0.0<\/span><span class=\"p\">:<\/span><span class=\"mi\">8006<\/span><span class=\"w\">            <\/span><span class=\"m m-Double\">0.0.0.0<\/span><span class=\"p\">:<\/span><span class=\"o\">*<\/span><span class=\"w\">               <\/span><span class=\"nx\">LISTEN<\/span><span class=\"w\">      <\/span><span class=\"mi\">2791<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux_epoll_se<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">       <\/span><span class=\"mi\">59<\/span><span class=\"w\">      <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">127.0.0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">56710<\/span><span class=\"w\">         <\/span><span class=\"m m-Double\">127.0.0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">8006<\/span><span class=\"w\">          <\/span><span class=\"nx\">CLOSE_WAIT<\/span><span class=\"w\">  <\/span><span class=\"mi\">2804<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux_epoll_si<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\">      <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">127.0.0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">8006<\/span><span class=\"w\">          <\/span><span class=\"m m-Double\">127.0.0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">56710<\/span><span class=\"w\">         <\/span><span class=\"nx\">FIN_WAIT1<\/span><span class=\"w\">   <\/span><span class=\"o\">-<\/span>\n\n<span class=\"err\">######<\/span><span class=\"nx\">\u5ba2\u6237\u7aef\u56de\u590d\u4e86ACK\u786e\u8ba4\u62a5\u6587\u540e<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u670d\u52a1\u7aef\u8fdb\u5165FIN_WAIT2\u72b6\u6001<\/span>\n<span class=\"nx\">Active<\/span><span class=\"w\"> <\/span><span class=\"nx\">Internet<\/span><span class=\"w\"> <\/span><span class=\"nx\">connections<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">w<\/span><span class=\"o\">\/<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">servers<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Proto<\/span><span class=\"w\"> <\/span><span class=\"nx\">Recv<\/span><span class=\"o\">-<\/span><span class=\"nx\">Q<\/span><span class=\"w\"> <\/span><span class=\"nx\">Send<\/span><span class=\"o\">-<\/span><span class=\"nx\">Q<\/span><span class=\"w\"> <\/span><span class=\"nx\">Local<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">           <\/span><span class=\"nx\">Foreign<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">         <\/span><span class=\"nx\">State<\/span><span class=\"w\">       <\/span><span class=\"nx\">PID<\/span><span class=\"o\">\/<\/span><span class=\"nx\">Program<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"w\">    <\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\">      <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">0.0.0.0<\/span><span class=\"p\">:<\/span><span class=\"mi\">8006<\/span><span class=\"w\">            <\/span><span class=\"m m-Double\">0.0.0.0<\/span><span class=\"p\">:<\/span><span class=\"o\">*<\/span><span class=\"w\">               <\/span><span class=\"nx\">LISTEN<\/span><span class=\"w\">      <\/span><span class=\"mi\">2791<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux_epoll_se<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">       <\/span><span class=\"mi\">59<\/span><span class=\"w\">      <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">127.0.0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">56710<\/span><span class=\"w\">         <\/span><span class=\"m m-Double\">127.0.0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">8006<\/span><span class=\"w\">          <\/span><span class=\"nx\">CLOSE_WAIT<\/span><span class=\"w\">  <\/span><span class=\"mi\">2804<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux_epoll_si<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\">      <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">127.0.0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">8006<\/span><span class=\"w\">          <\/span><span class=\"m m-Double\">127.0.0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">56710<\/span><span class=\"w\">         <\/span><span class=\"nx\">FIN_WAIT2<\/span><span class=\"w\">   <\/span><span class=\"o\">-<\/span>\n\n<span class=\"err\">######<\/span><span class=\"nx\">\u7531\u4e8e\u670d\u52a1\u7aef\u56de\u590d\u4e86RST\u6807\u5fd7\u7684\u62a5\u6587\u5bfc\u81f4\u94fe\u8def\u91cd\u7f6e<\/span>\n<span class=\"nx\">Active<\/span><span class=\"w\"> <\/span><span class=\"nx\">Internet<\/span><span class=\"w\"> <\/span><span class=\"nx\">connections<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">w<\/span><span class=\"o\">\/<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">servers<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Proto<\/span><span class=\"w\"> <\/span><span class=\"nx\">Recv<\/span><span class=\"o\">-<\/span><span class=\"nx\">Q<\/span><span class=\"w\"> <\/span><span class=\"nx\">Send<\/span><span class=\"o\">-<\/span><span class=\"nx\">Q<\/span><span class=\"w\"> <\/span><span class=\"nx\">Local<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">           <\/span><span class=\"nx\">Foreign<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">         <\/span><span class=\"nx\">State<\/span><span class=\"w\">       <\/span><span class=\"nx\">PID<\/span><span class=\"o\">\/<\/span><span class=\"nx\">Program<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"w\">    <\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\">      <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">0.0.0.0<\/span><span class=\"p\">:<\/span><span class=\"mi\">8006<\/span><span class=\"w\">            <\/span><span class=\"m m-Double\">0.0.0.0<\/span><span class=\"p\">:<\/span><span class=\"o\">*<\/span><span class=\"w\">               <\/span><span class=\"nx\">LISTEN<\/span><span class=\"w\">      <\/span><span class=\"mi\">2791<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux_epoll_se<\/span>\n<\/code><\/pre><\/div>\n\n<p>3\u3001\u5ba2\u6237\u7aef\u8fdb\u7a0b\u6267\u884c\u8fc7\u7a0b\u5206\u6790\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span>\n<span class=\"normal\">5<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">###### \u5ba2\u6237\u7aef\u6267\u884c\u8fc7\u7a0b<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">epoll<\/span><span class=\"p\">]<\/span><span class=\"n\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">linux_epoll_simple_sndmsg<\/span>\n<span class=\"n\">i_send_len<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"mi\">58<\/span><span class=\"p\">].<\/span><span class=\"w\">        <\/span><span class=\"c1\">\/\/\u7b2c1\u6b21\u53d1\u9001\u62a5\u6587\uff08\u6b63\u5e38\uff09<\/span>\n<span class=\"n\">i_send_len<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"mi\">58<\/span><span class=\"p\">].<\/span><span class=\"w\">        <\/span><span class=\"c1\">\/\/5\u79d2\u540e\u518d\u6b21\u53d1\u9001\u62a5\u6587\uff0c\u90a3\u4e48\u4f1a\u6536\u5230RST\u6807\u5fd7\u7684\u5e94\u7b54\u62a5\u6587<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">epoll<\/span><span class=\"p\">]<\/span><span class=\"n\">$<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>6 \u5f97\u51fa\u7ed3\u8bba<\/h4>\n<p>\u901a\u8fc7\u5c0f\u82825\u4e2d\u7684\u5177\u4f53\u5206\u6790\u53ef\u4ee5\u770b\u5230\u5728\u670d\u52a1\u7aef\u8c03\u7528<code>close\u51fd\u6570<\/code>\u5173\u95ed\u4e86\u5ba2\u6237\u7aef\u7684\u8fde\u63a5\u540e\u8fdb\u5165<code>FIN_WAIT_1<\/code>\u72b6\u6001\uff0c\u90a3\u4e48\u5ba2\u6237\u7aef\u7acb\u9a6c\u8fdb\u5165\u4e86<code>CLOSE_WAIT<\/code>\u72b6\u6001\u3002\u800c\u670d\u52a1\u7aef\u5728\u6536\u5230\u5ba2\u6237\u7aef\u56de\u590d\u7684<code>ACK<\/code>\u62a5\u6587\u540e\u8fdb\u5165<code>FIN_WAIT_2<\/code>\u72b6\u6001\u3002<\/p>\n<p>\u56e0\u4e3a\u5904\u4e8e<code>CLOSE_WAIT<\/code>\u72b6\u6001\u7684\u4e00\u65b9\u4ecd\u7136\u53ef\u4ee5\u5411\u5bf9\u7aef\u53d1\u9001\u62a5\u6587\uff0c\u6240\u4ee5\u5ba2\u6237\u7aef\u5728\u4f11\u77205\u79d2\u540e\u518d\u6b21\u5411\u670d\u52a1\u7aef\u53d1\u9001\u4e8658\u5b57\u8282\u7684\u62a5\u6587\u3002\u4f46\u662f\u6b64\u65f6\u7684\u670d\u52a1\u7aef\u5df2\u7ecf\u5173\u95ed\u4e86\u94fe\u8def\uff08FIN_WAIT_2\u72b6\u6001\uff09\uff0c\u6240\u4ee5Linux\u5185\u6838\u81ea\u52a8\u53d1\u9001\u4e86\u4e00\u4e2a<code>RST<\/code>\u590d\u4f4d\u6807\u5fd7\u7684\u62a5\u6587\u7ed9\u5ba2\u6237\u7aef\u3002<\/p>\n<p>\u4f46\u662f\u4e3a\u4ec0\u4e48\u5ba2\u6237\u7aef\u8fdb\u7a0b\u5728\u6536\u5230<code>RST<\/code>\u62a5\u6587\u540e\u4f1a\u5173\u95ed\u5462\uff1f\u539f\u56e0\u548c<a href=\"https:\/\/typecodes.com\/cseries\/tcpclosewaitsigpipe.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux TCP\u901a\u4fe1\u51fa\u73b0CLOSE_WAIT\u540e\u5bfc\u81f4\u670d\u52a1\u7aef\u8fdb\u7a0b\u6302\u6389\u300b<\/a>\u662f\u4e00\u6837\u7684\uff0c\u5c31\u662fLinux\u5185\u6838\u4ea7\u751f\u8f6f\u4e2d\u65ad\uff0c\u53d1\u9001<code>SIGPIPE<\/code>\u4fe1\u53f7\u7ed9\u5ba2\u6237\u7aef\u8fdb\u7a0b\uff0c\u5bfc\u81f4\u5176\u9ed8\u8ba4\u7ec8\u6b62\u4e86\u3002\u8fd9\u70b9\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e\u5ba2\u6237\u7aef\u7a0b\u5e8f\u4e2d<code>#define SIGNAL_HANDLE 0<\/code>\u4e3a1\u6765\u9a8c\u8bc1\uff0c\u6267\u884c\u7684\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"Linux TCP\u5ba2\u6237\u7aef\u51fa\u73b0CLOSE_WAIT\u540e\u8fdb\u5165\u6b7b\u5faa\u73af\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/tcpclosewaitfinwaitrst1_deadcycle.png\" title=\"Linux TCP\u5ba2\u6237\u7aef\u51fa\u73b0CLOSE_WAIT\u540e\u8fdb\u5165\u6b7b\u5faa\u73af\"><\/p>\n<p>\u90a3\u4e48\u95ee\u9898\u53c8\u6765\u4e86\uff0c\u7531\u4e8e\u6355\u6349\u4e86<code>SIGPIPE<\/code>\u4fe1\u53f7\uff08\u5bf9\u5e94\u503c\u4e3a13\uff09\u540e\uff0c\u5ba2\u6237\u7aef\u8fdb\u7a0b\u4e0d\u4f1a\u7ec8\u6b62\uff0c\u6240\u4ee5\u8fdb\u5165\u4e86<code>while\u6b7b\u5faa\u73af<\/code>\u3002\u540c\u65f6\u7531\u4e8e\u6355\u6349\u4e86<code>SIGINT<\/code>\u4fe1\u53f7\uff08\u5bf9\u5e94\u503c\u4e3a2\uff09\uff0c\u5bfc\u81f4\u5728\u5ba2\u6237\u7aef\u6240\u5728\u7684Linux\u4f1a\u8bdd\u7ec8\u7aef\u4e0a\u65e0\u6cd5\u4f7f\u7528<code>Ctrl+C<\/code>\u6765\u7ec8\u6b62\u8fdb\u7a0b\uff0c\u6700\u540e\u53ea\u80fd\u4f7f\u7528<code>kill<\/code>\u4fe1\u53f7\u6765\u7ec8\u6b62\u5ba2\u6237\u7aef\uff01<\/p>\n<h4>7 \u9644\u5f55\uff1a<\/h4>\n<p>\u4ee5\u4e0a\u5c31\u662fLinux TCP\u901a\u4fe1\u4e2d\u5ba2\u6237\u7aef\u51fa\u73b0CLOSE_WAIT\u540e\u8fdb\u5165\u6b7b\u5faa\u73af\u7684\u4e00\u4e2a\u5b9e\u4f8b\u4ee5\u53ca\u5206\u6790\u8fc7\u7a0b\uff0c\u4e0b\u9762\u662f\u5ba2\u6237\u7aef\u7a0b\u5e8flinux_epoll_simple_sndmsg_netstat.c\uff0c\u5de5\u4f5c\u6d41\u7a0b\u5f88\u7b80\u5355\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span>\n<span class=\"normal\">73<\/span>\n<span class=\"normal\">74<\/span>\n<span class=\"normal\">75<\/span>\n<span class=\"normal\">76<\/span>\n<span class=\"normal\">77<\/span>\n<span class=\"normal\">78<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    linux_epoll_simple_sndmsg.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for creating a listen as a server and simulate generate a sigpipe signal in linux.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2017-03-10 12:49 https:\/\/typecodes.com\/cseries\/tcpclosewaitfinwaitrst1.html<\/span>\n<span class=\"cm\"> * @Compile     gcc linux_epoll_simple_sndmsg.c -o linux_epoll_simple_sndmsg<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdlib.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;unistd.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;errno.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/types.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;netinet\/in.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/socket.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;arpa\/inet.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;signal.h&gt;<\/span>\n\n<span class=\"cp\">#define IPADDR &quot;127.0.0.1&quot;<\/span>\n<span class=\"cp\">#define SERVPORT 8006<\/span>\n<span class=\"cp\">#define MAXLINE 1024<\/span>\n\n<span class=\"cp\">#define SIGNAL_HANDLE 0<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">sig_handle<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">signal<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Receive a signal=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">signal<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"cp\">#if SIGNAL_HANDLE<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sigaction<\/span><span class=\"w\"> <\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">old_act<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_handler<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">sig_handle<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_flags<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigemptyset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_mask<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaction<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGPIPE<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">old_act<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaction<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGINT<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">old_act<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"cp\">#endif<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u53d1\u9001\u7f13\u5b58\u533a<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">MAXLINE<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"mh\">0x00<\/span><span class=\"p\">};<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6210\u529f\u53d1\u9001\u7684\u5b57\u8282\u6570<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_send_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">sockfd<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"n\">serv_addr<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u521b\u5efa1\u4e2asocket\u63cf\u8ff0\u7b26<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">((<\/span><span class=\"n\">sockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">socket<\/span><span class=\"p\">(<\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">,<\/span><span class=\"n\">SOCK_STREAM<\/span><span class=\"p\">,<\/span><span class=\"mi\">0<\/span><span class=\"p\">))<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;socket error <\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">bzero<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">serv_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">serv_addr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">serv_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_family<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">serv_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_port<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">htons<\/span><span class=\"p\">(<\/span><span class=\"n\">SERVPORT<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">inet_pton<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">IPADDR<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">serv_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_addr<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">connect<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">serv_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"mi\">-1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;connect <\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;sockfd=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">sprintf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;HTTP\/1.0 200 OK<\/span><span class=\"se\">\\r\\n<\/span><span class=\"s\">Content-type: text\/plain<\/span><span class=\"se\">\\r\\n\\r\\n<\/span><span class=\"s\">%s&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Hello world!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_send_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">write<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">buf<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;i_send_len=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_send_len<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">sleep<\/span><span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"tcpdump"}},{"@attributes":{"term":"tcp"}},{"@attributes":{"term":"close_wait"}},{"@attributes":{"term":"rst"}}]},{"title":"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e8c\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/sedawkfindreplace2.html","rel":"alternate"}},"published":"2017-03-09T16:45:00+08:00","updated":"2017-03-09T16:45:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-03-09:\/linux\/sedawkfindreplace2.html","summary":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/sedawkfindreplace1.html\" title=\"\u300a\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e00\uff09\u300b\">\u524d\u6587<\/a>\u4e2d\u6f14\u793a\u4e86\u4f7f\u7528awk\u548csed\u547d\u4ee4\u6b63\u5219\u67e5\u627e\u548c\u66ff\u6362<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b\">Makefile<\/a>\u6587\u4ef6\u7684\u5339\u914d\u5185\u5bb9\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4f9d\u7136\u4f7f\u7528\u8fd9\u4e2aMakefile\u6587\u4ef6\u4f5c\u4e3aawk\u548csed\u547d\u4ee4\u6b63\u5219\u5339\u914d\u67e5\u627e\u3001\u66ff\u6362\u548c\u5220\u9664\u64cd\u4f5c\u3002<\/p>\n","content":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/sedawkfindreplace1.html\" title=\"\u300a\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e00\uff09\u300b\">\u524d\u6587<\/a>\u4e2d\u6f14\u793a\u4e86\u4f7f\u7528awk\u548csed\u547d\u4ee4\u6b63\u5219\u67e5\u627e\u548c\u66ff\u6362<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b\">Makefile<\/a>\u6587\u4ef6\u7684\u5339\u914d\u5185\u5bb9\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4f9d\u7136\u4f7f\u7528\u8fd9\u4e2aMakefile\u6587\u4ef6\u4f5c\u4e3aawk\u548csed\u547d\u4ee4\u6b63\u5219\u5339\u914d\u67e5\u627e\u3001\u66ff\u6362\u548c\u5220\u9664\u64cd\u4f5c\u3002<\/p>\n\n\n<h4>1 \u529f\u80fd\u9700\u6c42<\/h4>\n<p>\u7531\u4e8e\u4e4b\u524d\u5728BZ\u81ea\u5df1CenOS7\u4e2d\u7684C\/C++\u5de5\u7a0b\u90e8\u5206Makefile\u6587\u4ef6\u5728<code>make clean<\/code>\u64cd\u4f5c\u65f6\u7684\u8bed\u53e5\u53ef\u4ee5\u4f18\u5316\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u628a<code>-$(RM) $(ULT_BIN)<\/code>\u548c<code>-$(RM) $(ULT_BIN)<\/code>\u8fd9\u4e24\u53e5\u5199\u6210\u4e00\u53e5<code>-$(RM)  $(ULT_BIN) $(ULT_BIN)<\/code>\u3002<\/p>\n<h4>2 shell\u7a0b\u5e8f<\/h4>\n<p>\u4e0b\u9762\u7684\u8fd9\u4efdshell\u811a\u672c\u6bd4\u8f83\u7b80\u5355\uff0c\u76f4\u63a5\u8fd0\u884c<code>.\/sedawkfindreplace2.sh<\/code>\u5373\u53ef\u3002\u5728<code>for ... in<\/code>\u7684Makefile\u6587\u4ef6\u904d\u5386\u4e2d\uff0c\u5148\u5229\u7528\u4e86awk\u547d\u4ee4\u7684\u6b63\u5219\u5339\u914d\u67e5\u627e\u3001\u66ff\u6362\u64cd\u4f5c\uff0c\u7136\u540e\u662fsed\u547d\u4ee4\u6267\u884c\u6b63\u5219\u5339\u914d\u67e5\u627e\u3001\u66ff\u6362\u4ee5\u53ca\u5220\u9664\u64cd\u4f5c\u3002<\/p>\n<p>\u7a0b\u5e8f\u96be\u70b9\u5e94\u8be5\u5728\u4e8e\u5bf9<code>$<\/code>\u7b26\u53f7\u7684\u6b63\u5219\u5339\u914d\uff08\u5b83\u672c\u6765\u8868\u793a\u7ed3\u5c3e\uff0c\u6240\u4ee5\u9700\u8981\u8f6c\u4e49\uff09\uff0c\u53ef\u4ee5\u770b\u5230awk\u548csed\u5bf9\u5b83\u7684\u6b63\u5219\u5339\u914d\u5f62\u5f0f\u662f\u4e0d\u4e00\u6837\u7684\u3002<\/p>\n<p>\u53e6\u5916\uff0c\u811a\u672c\u4e2dsed\u547d\u4ee4\u901a\u8fc7<code>-e<\/code>\u53c2\u6570\u5148\u6267\u884c\u6b63\u5219\u5339\u914d\u548c\u66ff\u6362\u64cd\u4f5c\uff0c\u7136\u540e\u6267\u884c\u6b63\u5219\u5339\u914d\u5220\u9664\u64cd\u4f5c\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      sedawkfindreplace2.sh<\/span>\n<span class=\"c1\"># Description:   Basic usage of sed and awk command such as find and replace words in the regular expression.<\/span>\n<span class=\"c1\"># Simple Usage:  .\/sedawkfindreplace1.sh<\/span>\n<span class=\"c1\"># (c) 2017.3.9 vfhky https:\/\/typecodes.com\/linux\/sedawkfindreplace2.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/filehandle\/sedawkfindreplace2.sh<\/span>\n\n\n<span class=\"c1\"># Dir to be handled.<\/span>\n<span class=\"nv\">SRC_DIR<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\/home\/vfhky\/shell&quot;<\/span>\n<span class=\"c1\"># The makefile you want to modify.<\/span>\n<span class=\"nv\">SEARCH_NAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;Makefile*&quot;<\/span>\n<span class=\"c1\"># The maximum depth of the dirs where files such as Makefile you&#39;re dealing with lies in.<\/span>\n<span class=\"nv\">MAXDEPTH<\/span><span class=\"o\">=<\/span><span class=\"m\">10<\/span>\n\n<span class=\"c1\"># Get the target files you want to modify.<\/span>\n<span class=\"nv\">ALL_MAKEFILE<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>find<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">SRC_DIR<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>-maxdepth<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">MAXDEPTH<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>-type<span class=\"w\"> <\/span>f<span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">SEARCH_NAME<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">)<\/span>\n\n\n<span class=\"c1\"># Traverse the target files.<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>FILE<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">ALL_MAKEFILE<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#### Ways recommended: find &quot;-$(RM) $(ULT_BIN)&quot; by awk command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#awk &#39;\/-\\$\\(RM\\) \\$\\(ULT_BIN\\)\/{printf( &quot;[%s:%d]: %s\\n&quot;, FILENAME, NR, $0) }&#39; ${FILE}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">#### replace &quot;-$(RM) $(ULT_BIN)&quot; with &quot;-$(RM) $(ULT_BIN) $(ULT_LIBS)&quot; using awk command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># awk &#39;{sub(\/-\\$\\(RM\\) \\$\\(ULT_BIN\\)\/,&quot;-\\$\\(RM\\) \\$\\(ULT_BIN\\) \\$\\(ULT_LIBS\\)&quot;); print $0}&#39; ${FILE} &gt; ${FILE}.tmp; cp ${FILE}.tmp ${FILE}; rm -rf ${FILE}.tmp<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">#### find &quot;-$(RM) $(ULT_BIN)&quot; by sed command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#sed -n &quot;\/-\\$(RM) \\$(ULT_BIN)\/p&quot; ${FILE}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">#### Ways recommended: Step1. replace &quot;-$(RM) $(ULT_BIN)&quot; with &quot;-$(RM) $(ULT_BIN) $(ULT_LIBS)&quot; using sed command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#### Step2. delete the line contains the words &quot;-$(RM) $(ULT_LIBS)&quot;.<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s#-\\$(RM) \\$(ULT_BIN)#-\\$(RM) \\$(ULT_BIN) \\$(ULT_LIBS)#&quot;<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;\/-\\$(RM) \\$(ULT_LIBS)\/d&quot;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u811a\u672c\u6d4b\u8bd5<\/h4>\n<p>BZ\u5728\u865a\u62df\u673a\u7684\/home\/vfhky\/shell\u76ee\u5f55\u590d\u5236\u4e865\u4e2a\u9519\u8bef\u7684Makefile\u6587\u4ef6\uff0c\u7136\u540e\u5148\u505a\u6b63\u5219\u67e5\u627e\u6d4b\u8bd5\uff0c\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e8c\uff09\" src=\"https:\/\/cdn.typecodes.com\/2017\/03\/sedawkfindreplace1_awk_sed_find_2.png\" title=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e8c\uff09\"><\/p>\n<h4>4 Linux find \u547d\u4ee4\u4e2d\u6b63\u5219<\/h4>\n<p>\u5728<code>find<\/code>\u547d\u4ee4\u7684\u67d0\u4e2a\u53c2\u6570\u4f7f\u7528\u6b63\u5219\uff0c\u90a3\u4e48\u6700\u597d\u5bf9\u8fd9\u4e2a\u5bf9\u6570\u52a0\u4e0a\u53cc\u5f15\u53f7\uff0c\u6b63\u5982\u4e0a\u9762\u7684\u4ee3\u7801<code>\"${SEARCH_NAME}\"<\/code>\u6240\u793a\uff0c\u5426\u5219\u4f1a\u51fa\u73b0\u4e0b\u9762\u7684\u9519\u8bef\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nl\">find<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">paths<\/span><span class=\"w\"> <\/span><span class=\"n\">must<\/span><span class=\"w\"> <\/span><span class=\"n\">precede<\/span><span class=\"w\"> <\/span><span class=\"nl\">expression<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Makefile1<\/span>\n<span class=\"k\">Usage<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">find<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-H<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-L<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-P<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-Olevel<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-D help|tree|search|stat|rates|opt|exec<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">path...<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">expression<\/span><span class=\"o\">]<\/span>\n<\/code><\/pre><\/div>\n\n<h4>5 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"sed"}},{"@attributes":{"term":"awk"}},{"@attributes":{"term":"Makefile"}}]},{"title":"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e00\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/sedawkfindreplace1.html","rel":"alternate"}},"published":"2017-02-22T16:39:00+08:00","updated":"2017-02-22T16:39:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2017-02-22:\/linux\/sedawkfindreplace1.html","summary":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/handlemakefilebysed.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u4f7f\u7528sed\u547d\u4ee4\u6279\u91cf\u5904\u7406Makefile\u6587\u4ef6\u7684\u811a\u672c\u300b<\/a>\u6587\u4e2d\u4f7f\u7528sed\u547d\u4ee4\u5bf9<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b\">\u524d\u6587<\/a>\u4e2d\u7684Makefile\u6587\u4ef6\u8fdb\u884c\u4e86\u66ff\u6362\u3001\u8ffd\u52a0\u548c\u5220\u9664\u64cd\u4f5c\uff0c\u8fd9\u7bc7\u6587\u7ae0\u901a\u8fc7\u4f7f\u7528sed\u548cawk\u547d\u4ee4\u5bf9\u8be5Makefile\u6587\u4ef6\u7684\u67d0\u4e2a\u5b57\u7b26\u4e32\u8fdb\u884c\u6b63\u5219\u5339\u914d\u67e5\u627e\u4ee5\u53ca\u66ff\u6362\u3002<\/p>\n","content":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/handlemakefilebysed.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u4f7f\u7528sed\u547d\u4ee4\u6279\u91cf\u5904\u7406Makefile\u6587\u4ef6\u7684\u811a\u672c\u300b<\/a>\u6587\u4e2d\u4f7f\u7528sed\u547d\u4ee4\u5bf9<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b\">\u524d\u6587<\/a>\u4e2d\u7684Makefile\u6587\u4ef6\u8fdb\u884c\u4e86\u66ff\u6362\u3001\u8ffd\u52a0\u548c\u5220\u9664\u64cd\u4f5c\uff0c\u8fd9\u7bc7\u6587\u7ae0\u901a\u8fc7\u4f7f\u7528sed\u548cawk\u547d\u4ee4\u5bf9\u8be5Makefile\u6587\u4ef6\u7684\u67d0\u4e2a\u5b57\u7b26\u4e32\u8fdb\u884c\u6b63\u5219\u5339\u914d\u67e5\u627e\u4ee5\u53ca\u66ff\u6362\u3002<\/p>\n\n\n<h4>1 \u529f\u80fd\u9700\u6c42<\/h4>\n<p>\u7531\u4e8e\u4e4b\u524d\u5728BZ\u81ea\u5df1CenOS7\u4e2d\u7684C\/C++\u5de5\u7a0b\u90e8\u5206Makefile\u6587\u4ef6\u6709\u95ee\u9898\uff08CC\u53d8\u91cf\u88ab\u8d4b\u503c\u4e3a<code>CC     := g++<\/code>\uff09\uff0c\u6240\u4ee5\u60f3\u5199\u4e2ashell\u811a\u672c\u6279\u91cf\u628aMakefile\u6587\u4ef6\u51fa\u9519\u7684\u90e8\u5206\u5168\u90e8\u66ff\u6362\u6210<code>CC     := gcc<\/code>\u3002<\/p>\n<h4>2 shell\u7a0b\u5e8f<\/h4>\n<p>\u4e0b\u9762\u7684\u8fd9\u4efdshell\u811a\u672c\u6bd4\u8f83\u7b80\u5355\uff0c\u76f4\u63a5\u8fd0\u884c<code>.\/sedawkfindreplace1.sh<\/code>\u5373\u53ef\u3002\u5728<code>for ... in<\/code>\u7684Makefile\u6587\u4ef6\u904d\u5386\u4e2d\uff0c\u5148\u5229\u7528\u4e86awk\u547d\u4ee4\u7684\u6b63\u5219\u5339\u914d\u67e5\u627e\u3001\u66ff\u6362\u64cd\u4f5c\uff0c\u7136\u540e\u662fsed\u547d\u4ee4\u6267\u884c\u6b63\u5219\u5339\u914d\u67e5\u627e\u3001\u66ff\u6362\u64cd\u4f5c\u3002<\/p>\n<p>\u7a0b\u5e8f\u96be\u70b9\u5e94\u8be5\u5728\u4e8e\u5bf9<code>g++<\/code>\u4e2d\u7684<code>+<\/code>\u53f7\u6b63\u5219\u5339\u914d\u3002awk\u7684<code>sub<\/code>\u51fd\u6570\u7684\u6b63\u5219\u66ff\u6362\u65f6\uff0c\u9700\u8981\u5bf9<code>g++<\/code>\u5904\u7406\u6210<code>g\\+\\+<\/code>\u5f62\u5f0f\uff0c\u800c\u5176\u5b83\u6b63\u5e38\u90fd\u5199\u6210<code>g+\\+<\/code>\u7684\u5f62\u5f0f\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      sedawkfindreplace1.sh<\/span>\n<span class=\"c1\"># Description:   Basic usage of sed and awk command such as find and replace words in the regular expression.<\/span>\n<span class=\"c1\"># Simple Usage:  .\/sedawkfindreplace1.sh<\/span>\n<span class=\"c1\"># (c) 2017.2.22 vfhky https:\/\/typecodes.com\/linux\/sedawkfindreplace1.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/filehandle\/sedawkfindreplace1.sh<\/span>\n\n\n<span class=\"c1\"># Dir to be handled.<\/span>\n<span class=\"nv\">SRC_DIR<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\/home\/vfhky\/shell&quot;<\/span>\n<span class=\"c1\"># The makefile you want to modify.<\/span>\n<span class=\"nv\">SEARCH_NAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;Makefile*&quot;<\/span>\n<span class=\"c1\"># The maximum depth of the dirs where files such as Makefile you&#39;re dealing with lies in.<\/span>\n<span class=\"nv\">MAXDEPTH<\/span><span class=\"o\">=<\/span><span class=\"m\">10<\/span>\n\n<span class=\"c1\"># Get the target files you want to modify.<\/span>\n<span class=\"nv\">ALL_MAKEFILE<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>find<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">SRC_DIR<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>-maxdepth<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">MAXDEPTH<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>-type<span class=\"w\"> <\/span>f<span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">SEARCH_NAME<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">)<\/span>\n\n\n<span class=\"c1\"># Traverse the target files.<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>FILE<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">ALL_MAKEFILE<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#### Ways recommended: find &quot;^CC        := g++&quot; by awk command.<\/span>\n<span class=\"w\">    <\/span>awk<span class=\"w\"> <\/span><span class=\"s1\">&#39;\/CC        := g+\\+\/{printf( &quot;[%s:%d]: %s\\n&quot;, FILENAME, NR, $0) }&#39;<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#### replace &quot;g++&quot; with &quot;gcc&quot; using awk command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># awk &#39;{sub(\/^CC        := g\\+\\+\/,&quot;CC       := gcc&quot;); print $0}&#39; ${FILE} &gt; ${FILE}.tmp; cp ${FILE}.tmp ${FILE}; rm -rf ${FILE}.tmp<\/span>\n\n\n<span class=\"w\">    <\/span><span class=\"c1\">#### find &quot;CC       := g++&quot; by sed command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># sed -n &quot;\/^CC      := g+\\+\/p&quot; ${FILE}<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#### Ways recommended: replace &quot;g++&quot; with &quot;gcc&quot; using sed command.<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># sed -i &quot;s#^CC     := g+\\+#CC      := gcc#&quot; ${FILE}<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u811a\u672c\u6d4b\u8bd5<\/h4>\n<p>BZ\u5728\u865a\u62df\u673a\u7684\/home\/vfhky\/shell\u76ee\u5f55\u590d\u5236\u4e865\u4e2a\u9519\u8bef\u7684Makefile\u6587\u4ef6\uff0c\u7136\u540e\u5148\u505a\u6b63\u5219\u67e5\u627e\u6d4b\u8bd5\uff0c\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e00\uff09\" src=\"https:\/\/cdn.typecodes.com\/2017\/02\/sedawkfindreplace1_awk_sed_find_1.png\" title=\"\u4f7f\u7528sed\u548cawk\u67e5\u627e\u548c\u66ff\u6362\u5b57\u7b26\u4e32\u5904\u7406Makefile\u6587\u4ef6\uff08\u4e00\uff09\"><\/p>\n<h4>4 Linux find \u547d\u4ee4\u4e2d\u6b63\u5219<\/h4>\n<p>\u5728<code>find<\/code>\u547d\u4ee4\u7684\u67d0\u4e2a\u53c2\u6570\u4f7f\u7528\u6b63\u5219\uff0c\u90a3\u4e48\u6700\u597d\u5bf9\u8fd9\u4e2a\u5bf9\u6570\u52a0\u4e0a\u53cc\u5f15\u53f7\uff0c\u6b63\u5982\u4e0a\u9762\u7684\u4ee3\u7801<code>\"${SEARCH_NAME}\"<\/code>\u6240\u793a\uff0c\u5426\u5219\u4f1a\u51fa\u73b0\u4e0b\u9762\u7684\u9519\u8bef\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nl\">find<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">paths<\/span><span class=\"w\"> <\/span><span class=\"n\">must<\/span><span class=\"w\"> <\/span><span class=\"n\">precede<\/span><span class=\"w\"> <\/span><span class=\"nl\">expression<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Makefile1<\/span>\n<span class=\"k\">Usage<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">find<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-H<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-L<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-P<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-Olevel<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">-D help|tree|search|stat|rates|opt|exec<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">path...<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">expression<\/span><span class=\"o\">]<\/span>\n<\/code><\/pre><\/div>\n\n<h4>5 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"sed"}},{"@attributes":{"term":"awk"}},{"@attributes":{"term":"Makefile"}}]},{"title":"C++\u5220\u9664map\u5bb9\u5668\u4e2d\u6307\u5b9a\u503c\u7684\u5143\u7d20","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/mapdelintstring.html","rel":"alternate"}},"published":"2016-06-26T10:26:00+08:00","updated":"2016-06-26T10:26:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-06-26:\/cseries\/mapdelintstring.html","summary":"<p>map\u5bb9\u5668\u662fC++ STL\u4e2d\u7684\u91cd\u8981\u4e00\u5458\uff0c\u5e73\u65f6\u4f1a\u9047\u5230\u5220\u9664map\u5bb9\u5668\u4e2dvalue\u4e3a\u6307\u5b9a\u5143\u7d20\u7684\u95ee\u9898\uff0c\u4f8b\u5982\u5220\u9664\u6240\u6709\u5b57\u7b26\u4e32\u4e3a\"123\"\u6216\u8005\u80fd\u6574\u96643\u7684\u5143\u7d20\u3002<\/p>\n","content":"<p>map\u5bb9\u5668\u662fC++ STL\u4e2d\u7684\u91cd\u8981\u4e00\u5458\uff0c\u5e73\u65f6\u4f1a\u9047\u5230\u5220\u9664map\u5bb9\u5668\u4e2dvalue\u4e3a\u6307\u5b9a\u5143\u7d20\u7684\u95ee\u9898\uff0c\u4f8b\u5982\u5220\u9664\u6240\u6709\u5b57\u7b26\u4e32\u4e3a\"123\"\u6216\u8005\u80fd\u6574\u96643\u7684\u5143\u7d20\u3002<\/p>\n\n\n<h4>1 map\u5bb9\u5668\u4e0b\u7684\u65b9\u6cd5\u8bf4\u660e<\/h4>\n<p>\u7531\u4e8emap\u5bb9\u5668\u4e0b\u7684\u65b9\u6cd5\u8f83\u591a\uff0c\u8fd9\u91cc\u53ea\u5217\u4e3e\u4ee3\u7801\u4e2d\u7528\u5230\u7684\u51e0\u4e2a\u65b9\u6cd5\uff1a<\/p>\n<p>insert()\u65b9\u6cd5\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span>\n<span class=\"normal\">5<\/span>\n<span class=\"normal\">6<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\/\/\u63d2\u5165val\u5230pos\u7684\u540e\u9762\uff0c\u7136\u540e\u8fd4\u56de\u4e00\u4e2a\u6307\u5411\u8fd9\u4e2a\u5143\u7d20\u7684\u8fed\u4ee3\u5668\niterator insert( iterator pos, const pair&lt;KEY_TYPE,VALUE_TYPE&gt; &amp;val );\n\/\/\u63d2\u5165start\u5230end\u7684\u5143\u7d20\u5230map\u4e2d\nvoid insert( input_iterator start, input_iterator end );\n\/\/\u53ea\u6709\u5728val\u4e0d\u5b58\u5728\u65f6\u63d2\u5165val\u3002\u8fd4\u56de\u503c\u662f\u4e00\u4e2a\u6307\u5411\u88ab\u63d2\u5165\u5143\u7d20\u7684\u8fed\u4ee3\u5668\u548c\u4e00\u4e2a\u63cf\u8ff0\u662f\u5426\u63d2\u5165\u7684bool\u503c\npair&lt;iterator, bool&gt; insert( const pair&lt;KEY_TYPE,VALUE_TYPE&gt; &amp;val );\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>erase()\u65b9\u6cd5\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\/\/erase()\u51fd\u6570\u5220\u9664\u5728pos\u4f4d\u7f6e\u7684\u5143\u7d20\uff0c\u6216\u8005\u5220\u9664\u5728start\u548cend\u4e4b\u95f4\u7684\u5143\u7d20\uff0c\u6216\u8005\u5220\u9664\u90a3\u4e9b\u503c\u4e3akey\u7684\u6240\u6709\u5143\u7d20\nvoid erase( iterator pos );\nvoid erase( iterator start, iterator end );\nsize_type erase( const KEY_TYPE &amp;key );\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>iterator\u8fed\u4ee3\u5668\u3002<\/p>\n<h4>2 \u5220\u9664map\u5bb9\u5668\u4e2d\u6307\u5b9a\u7684\u5b57\u7b26\u4e32<\/h4>\n<p>\u4e0b\u9762\u4ee3\u7801\u4e2dmap\u5bb9\u5668\u7684value\u5bf9\u5e94\u7684\u662f\u4e00\u4e2astring\u7c7b\u578b\u7684\u6307\u9488\uff0c\u5728\u521d\u59cb\u5316\u65f6\u7c7b\u4f3c\u4e8e<code>string *p = new string(\"123\");<\/code>\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName    map_del_str.cpp<\/span>\n<span class=\"cm\"> * @Describe    A simple example for deleting an element of string in map.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-06-26 10:26 https:\/\/typecodes.com\/cseries\/mapdelintstring.html<\/span>\n<span class=\"cm\"> * @Compile     g++ map_del_str.cpp -o map_del_str<\/span>\n<span class=\"cm\"> * @Reference   <\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;iostream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;map&gt;<\/span>\n\n<span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"k\">namespace<\/span><span class=\"w\"> <\/span><span class=\"nn\">std<\/span><span class=\"p\">;<\/span>\n<span class=\"cp\">#define TOTAL 10<\/span>\n<span class=\"cp\">#define DEL_STR &quot;123&quot;<\/span>\n\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * \u5220\u9664map\u4e2d\u6240\u6709\u5143\u7d20\u4e3astr\u7684\u6570\u636e<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">fun<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">*&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">map1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">str<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">*&gt;::<\/span><span class=\"n\">iterator<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_Total<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"o\">=<\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">begin<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"o\">!=<\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">it<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">str<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">             * 123 123 123 123 123 123 123 123 123 123 <\/span>\n<span class=\"cm\">             *\/<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">it<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot; &quot;<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/\u4e00\u5b9a\u8981\u5148\u91ca\u653e\u5185\u5b58\u7684\u63a7\u5236<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">delete<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">it<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/\u518d\u5220\u9664\u8fed\u4ee3<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">erase<\/span><span class=\"p\">(<\/span><span class=\"n\">it<\/span><span class=\"o\">++<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">++<\/span><span class=\"n\">i_Total<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">it<\/span><span class=\"o\">++<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/i_Total=[10]<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;i_Total=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">i_Total<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">*&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">map1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u521d\u59cb\u5316map1<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">TOTAL<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">insert<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pair<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">*&gt;<\/span><span class=\"p\">(<\/span><span class=\"n\">i<\/span><span class=\"p\">,<\/span><span class=\"k\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;123&quot;<\/span><span class=\"p\">))<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/map1[i] = new string(&quot;123&quot;);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5220\u9664\u4e3aDEL_STR\u7684\u5143\u7d20<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fun<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">map1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">DEL_STR<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u67e5\u770b\u6700\u540e\u7684\u6570\u636e<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"o\">*&gt;::<\/span><span class=\"n\">iterator<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"o\">=<\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">begin<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"o\">!=<\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"o\">++<\/span><span class=\"n\">it1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;map1[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">first<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">it1<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u5220\u9664map\u4e2d\u6240\u6709\u5143\u7d20\u4e3astring\u7684\u6570\u636e\" src=\"https:\/\/cdn.typecodes.com\/2016\/06\/mapdelintstring1.png\" title=\"\u5220\u9664map\u4e2d\u6240\u6709\u5143\u7d20\u4e3astring\u7684\u6570\u636e\"><\/p>\n<h4>3 \u5220\u9664map\u5bb9\u5668\u4e2d\u6307\u5b9a\u7684\u6574\u578b\u6570\u636e<\/h4>\n<p>\u4e0b\u9762\u4ee3\u7801\u4e2dmap\u5bb9\u5668\u7684value\u5bf9\u5e94\u7684\u662f\u4e00\u4e2aint\u6570\u636e\uff0c\u5728\u521d\u59cb\u5316\u65f6\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528<code>map1[i] = i<\/code>\u8bed\u53e5\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName    map_del_int.cpp<\/span>\n<span class=\"cm\"> * @Describe    A simple example for deleting an element of interger in map.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-06-26 10:26 https:\/\/typecodes.com\/cseries\/mapdelintstring.html<\/span>\n<span class=\"cm\"> * @Compile     g++ map_del_int.cpp -o map_del_int<\/span>\n<span class=\"cm\"> * @Reference   <\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;iostream&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;map&gt;<\/span>\n\n<span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"k\">namespace<\/span><span class=\"w\"> <\/span><span class=\"nn\">std<\/span><span class=\"p\">;<\/span>\n<span class=\"cp\">#define TOTAL 100<\/span>\n<span class=\"cp\">#define DEL_INT 3<\/span>\n\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * \u5220\u9664map\u4e2d\u6240\u6709\u503c\u6574\u9664NUM\u7684\u5143\u7d20<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">fun<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">map1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">NUM<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;::<\/span><span class=\"n\">iterator<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_Total<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"o\">=<\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">begin<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"o\">!=<\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"w\"> <\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"n\">NUM<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">             * 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 84 87 90 93 96 99 <\/span>\n<span class=\"cm\">             *\/<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot; &quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">erase<\/span><span class=\"p\">(<\/span><span class=\"n\">it<\/span><span class=\"o\">++<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">++<\/span><span class=\"n\">i_Total<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">it<\/span><span class=\"o\">++<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;i_Total=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">i_Total<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">map1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u521d\u59cb\u5316map1<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">TOTAL<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">insert<\/span><span class=\"p\">(<\/span><span class=\"n\">pair<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"n\">i<\/span><span class=\"p\">,<\/span><span class=\"n\">i<\/span><span class=\"p\">));<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/map1[i] = i;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5220\u9664\u6574\u96643\u7684\u5143\u7d20<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fun<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">map1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">DEL_INT<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u67e5\u770b\u6700\u540e\u7684\u6570\u636e<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">map<\/span><span class=\"o\">&lt;<\/span><span class=\"kt\">int<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"o\">&gt;::<\/span><span class=\"n\">iterator<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"o\">=<\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">begin<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"o\">!=<\/span><span class=\"n\">map1<\/span><span class=\"p\">.<\/span><span class=\"n\">end<\/span><span class=\"p\">();<\/span><span class=\"w\"> <\/span><span class=\"o\">++<\/span><span class=\"n\">it1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">cout<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;map1[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">first<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]=[&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">it1<\/span><span class=\"o\">-&gt;<\/span><span class=\"n\">second<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">endl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u5220\u9664map\u4e2d\u6240\u6709\u503c\u6574\u9664NUM\u7684\u5143\u7d20\" src=\"https:\/\/cdn.typecodes.com\/2016\/06\/mapdelintstring2.png\" title=\"\u5220\u9664map\u4e2d\u6240\u6709\u503c\u6574\u9664NUM\u7684\u5143\u7d20\"><\/p>\n<h4>4 \u9644\u5f55<\/h4>\n<p>STL\u5bb9\u5668\u5206\u987a\u5e8f\u5bb9\u5668Sequence Container\uff08\u5305\u542bvector\uff0cdeque\uff0clist\u5bb9\u5668\uff09\u548c\u5173\u8054\u5bb9\u5668Associative Container\uff08\u5305\u542bset\uff0cmultiset\uff0cmap\uff0cmultimap\u5bb9\u5668\uff09\u3002C++\u6807\u51c6\u4e2d\uff0cSequence Container\u7684erase\u51fd\u6570\u4f1a\u8fd4\u56deiterator\uff0c\u4f46Associative Container\u4e0d\u8fd4\u56deiterator\u3002\u6240\u4ee5\u5728\u5c0f\u82822\u3001\u5c0f\u82823\u4e2d\u4f7f\u7528<code>map1.erase(it++)<\/code>\u800c\u4e0d\u662f\u76f4\u63a5<code>map1.erase(it)<\/code>\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"map"}},{"@attributes":{"term":"iterator"}}]},{"title":"\u4f7f\u7528sed\u547d\u4ee4\u6279\u91cf\u5904\u7406Makefile\u6587\u4ef6\u7684\u811a\u672c","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/handlemakefilebysed.html","rel":"alternate"}},"published":"2016-06-18T15:56:00+08:00","updated":"2016-06-18T15:56:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-06-18:\/linux\/handlemakefilebysed.html","summary":"<p>\u524d\u9762\u5199\u4e86\u4e00\u7bc7\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b<\/a>\uff0c\u91cc\u9762\u7684Makefile\u4ee3\u7801\u6709\u4e2a\u4e0d\u597d\u7684\u5730\u65b9\u9700\u8981\u4fee\u6539\u3002\u5f53\u7f16\u8bd1.cpp\u6587\u4ef6\u65f6\uff0c\u4f7f\u7528\u7684<code>STD_OPT<\/code>\u53d8\u91cf\u4ecd\u7136\u662f\u7f16\u8bd1.c\u6587\u4ef6\u65f6\u7684\u53c2\u6570<code>-std=c99<\/code>\uff0c\u8fd9\u4e2a\u5728C++\u4e2d\u662f\u4e0d\u652f\u6301\u7684\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528sed\u547d\u4ee4\u6279\u91cf\u5904\u7406Makefile\u6587\u4ef6\u7684\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2016\/06\/handle_makefile.png\" title=\"\u4f7f\u7528sed\u547d\u4ee4\u6279\u91cf\u5904\u7406Makefile\u6587\u4ef6\u7684\u811a\u672c\"><\/p>\n","content":"<p>\u524d\u9762\u5199\u4e86\u4e00\u7bc7\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b<\/a>\uff0c\u91cc\u9762\u7684Makefile\u4ee3\u7801\u6709\u4e2a\u4e0d\u597d\u7684\u5730\u65b9\u9700\u8981\u4fee\u6539\u3002\u5f53\u7f16\u8bd1.cpp\u6587\u4ef6\u65f6\uff0c\u4f7f\u7528\u7684<code>STD_OPT<\/code>\u53d8\u91cf\u4ecd\u7136\u662f\u7f16\u8bd1.c\u6587\u4ef6\u65f6\u7684\u53c2\u6570<code>-std=c99<\/code>\uff0c\u8fd9\u4e2a\u5728C++\u4e2d\u662f\u4e0d\u652f\u6301\u7684\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528sed\u547d\u4ee4\u6279\u91cf\u5904\u7406Makefile\u6587\u4ef6\u7684\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2016\/06\/handle_makefile.png\" title=\"\u4f7f\u7528sed\u547d\u4ee4\u6279\u91cf\u5904\u7406Makefile\u6587\u4ef6\u7684\u811a\u672c\"><\/p>\n\n\n<h4>1 sed\u547d\u4ee4\u7684\u7b80\u8981\u8bf4\u660e<\/h4>\n<p>\u7531\u4e8esed\u547d\u4ee4\u53ef\u7528\u7684\u53c2\u6570\u592a\u591a\u4e86\uff0c\u8fd9\u91cc\u53ea\u5217\u4e3e\u811a\u672c\u4e2d\u7528\u5230\u7684\u51e0\u4e2a\u53c2\u6570\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>sed -i\uff1a\u76f4\u63a5\u4fee\u6539\u6587\u4ef6\u800c\u4e0d\u662f\u5c06\u5904\u7406\u7684\u7ed3\u679c\u5728\u5c4f\u5e55\u4e0a\u8f93\u51fa\uff1b\nsed -e\uff1a\u591a\u4e2a\u64cd\u4f5caction\u6309\u987a\u5e8f\u6267\u884c\uff1b\nsed -e &#39;\/help:\/ a \u8981\u8ffd\u52a0\u7684\u5185\u5bb9&#39;\uff1a\u8868\u793a\u5728help:\u6587\u5b57\u540e\u9762\u8ffd\u52a0\u5185\u5bb9\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u5177\u4f53\u4ee3\u7801<\/h4>\n<p>\u4ee3\u7801\u6bd4\u8f83\u7b80\u5355\uff0c\u76f4\u63a5\u6267\u884c\u547d\u4ee4<code>.\/handle_makefile.sh<\/code>\u5373\u53ef\u3002\u5176\u4e2d<code>handle<\/code>\u51fd\u6570\u4e3b\u8981\u7528\u5230\u4e86\u6b63\u5219\u66ff\u6362\uff0c\u8ffd\u52a0\uff0c\u5220\u9664\u8fd9\u4e09\u4e2aaction\u64cd\u4f5c\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      handle_makefile.sh<\/span>\n<span class=\"c1\"># Description:   Simple usage of sed command to modify many Makefiles in batch processing.<\/span>\n<span class=\"c1\"># Simple Usage:  .\/handle_makefile.sh<\/span>\n<span class=\"c1\"># (c) 2016 vfhky https:\/\/typecodes.com\/linux\/handlemakefilebysed.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/filehandle\/handle_makefile.sh<\/span>\n\n\n<span class=\"c1\"># Dir to be handled.<\/span>\n<span class=\"nv\">SRC_DIR<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\/home\/vfhky\/shell&quot;<\/span>\n<span class=\"c1\"># The makefile you want to modify.<\/span>\n<span class=\"nv\">SEARCH_NAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;Makefile&quot;<\/span>\n\n<span class=\"c1\">####<\/span>\n<span class=\"c1\"># @param:   $1  Name of the file<\/span>\n<span class=\"c1\">####<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>handle<span class=\"o\">()<\/span>\n<span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;Handling file=[&#39;<\/span><span class=\"nv\">$1<\/span><span class=\"s1\">&#39;]&#39;<\/span>\n<span class=\"w\">    <\/span>sed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">        <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/-std=c99 -D_GNU_SOURCE \/-D_GNU_SOURCE\/&#39;<\/span><span class=\"w\">   <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">        <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/CC        += $(STD_OPT)\/CC        += -std=c99 $(STD_OPT)\/&#39;<\/span><span class=\"w\">    <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">        <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;\/help:\/ a\\<\/span>\n<span class=\"s1\">    @echo CC=[$(CC)]\\<\/span>\n<span class=\"s1\">    @echo CXX=[$(CXX)]\\<\/span>\n<span class=\"s1\">    @echo CFLAGS=[$(CFLAGS)]\\<\/span>\n<span class=\"s1\">    @echo CXXFLAGS=[$(CXXFLAGS)]&#39;<\/span><span class=\"w\">   <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">        <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;\/   @echo STD_OPT=\\[$(STD_OPT)\\]\/d&#39;<\/span><span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">        <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;\/   @echo CFLAGS=\\[$(CFLAGS)\\]\/d&#39;<\/span><span class=\"w\">   <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">         <\/span><span class=\"nv\">$1<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#echo &quot;&quot; | awk &#39;{fflush()}&#39;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Get the target files you want to modify.<\/span>\n<span class=\"nv\">ALL_MAKEFILE<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>find<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">SRC_DIR<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>-type<span class=\"w\"> <\/span>f<span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">SEARCH_NAME<\/span><span class=\"si\">}<\/span><span class=\"k\">)<\/span>\n\n\n<span class=\"c1\"># Traverse the target files.<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>FILE<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">ALL_MAKEFILE<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span>handle<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE<\/span><span class=\"si\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$?<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;failed.&#39;<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">#echo &quot;&quot; | awk &#39;{fflush()}&#39;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span><span class=\"w\">  <\/span>\n<span class=\"k\">done<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u811a\u672c\u6267\u884c\u7ed3\u679c<\/h4>\n<p>\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u811a\u672c\u4e0d\u65ad\u904d\u5386src\u76ee\u5f55\u4e0b\u7684Makefile\u6587\u4ef6\uff0c\u7136\u540e\u8fdb\u884c\u5904\u7406\u3002<\/p>\n<p><img alt=\"\u811a\u672c\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2016\/06\/handle_makefile_result.png\" title=\"\u811a\u672c\u6267\u884c\u7ed3\u679c\"><\/p>\n<h4>4 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"sed"}},{"@attributes":{"term":"shell"}},{"@attributes":{"term":"makefile"}}]},{"title":"\u81ea\u5df1\u5b9e\u73b0inet_aton\u548cinet_ntoa\u51fd\u6570\u529f\u80fd","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/networkselfdefineconv.html","rel":"alternate"}},"published":"2016-04-08T13:11:00+08:00","updated":"2016-04-08T13:11:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-04-08:\/cseries\/networkselfdefineconv.html","summary":"<p>\u4e4b\u524d\u9047\u5230\u8fc7\u8981\u81ea\u5df1\u5b9e\u73b0<code>inet_aton<\/code>\u548c<code>inet_ntoa<\/code>\u51fd\u6570\u529f\u80fd\u7684\u95ee\u9898\uff0c\u8fd9\u91cc\u603b\u7ed3\u4e00\u4e0b\u3002<\/p>\n<h4>1 \u57fa\u672c\u77e5\u8bc6<\/h4>\n<p>\u7f51\u7edc\u5b57\u8282\u5e8f\u662f\u5927\u7aef\u6a21\u5f0f\uff0c\u90a3\u4e48\u5185\u5b58\u4e2d\u7684\u4f4e\u5730\u5740\u5b58\u653e\u7684\u662f\u6570\u636e\u7684\u9ad8\u4f4d\uff0c\u5185\u5b58\u4e2d\u7684\u9ad8\u5730\u5740\u5b58\u653e\u7684\u662f\u6570\u636e\u7684\u4f4e\u4f4d\u3002\n<code>inet_aton<\/code>\u662f\u5c06IPv4\u5730\u5740\uff08\u70b9\u5206\u6cd5\uff09\u8f6c\u6362\u6210\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6574\u6570\uff1b\u800c<code>inet_ntoa<\/code>\u662f\u5c06\u5341\u8fdb\u5236\u6574\u6570\u8f6c\u6362\u6210\u5bf9\u5e94\u7684IPv4\u5730\u5740\uff08\u70b9\u5206\u6cd5\uff09\u3002<\/p>\n","content":"<p>\u4e4b\u524d\u9047\u5230\u8fc7\u8981\u81ea\u5df1\u5b9e\u73b0<code>inet_aton<\/code>\u548c<code>inet_ntoa<\/code>\u51fd\u6570\u529f\u80fd\u7684\u95ee\u9898\uff0c\u8fd9\u91cc\u603b\u7ed3\u4e00\u4e0b\u3002<\/p>\n<h4>1 \u57fa\u672c\u77e5\u8bc6<\/h4>\n<p>\u7f51\u7edc\u5b57\u8282\u5e8f\u662f\u5927\u7aef\u6a21\u5f0f\uff0c\u90a3\u4e48\u5185\u5b58\u4e2d\u7684\u4f4e\u5730\u5740\u5b58\u653e\u7684\u662f\u6570\u636e\u7684\u9ad8\u4f4d\uff0c\u5185\u5b58\u4e2d\u7684\u9ad8\u5730\u5740\u5b58\u653e\u7684\u662f\u6570\u636e\u7684\u4f4e\u4f4d\u3002\n<code>inet_aton<\/code>\u662f\u5c06IPv4\u5730\u5740\uff08\u70b9\u5206\u6cd5\uff09\u8f6c\u6362\u6210\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6574\u6570\uff1b\u800c<code>inet_ntoa<\/code>\u662f\u5c06\u5341\u8fdb\u5236\u6574\u6570\u8f6c\u6362\u6210\u5bf9\u5e94\u7684IPv4\u5730\u5740\uff08\u70b9\u5206\u6cd5\uff09\u3002<\/p>\n\n\n<h4>2 \u5b8c\u6574\u4ee3\u7801<\/h4>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span>\n<span class=\"normal\">73<\/span>\n<span class=\"normal\">74<\/span>\n<span class=\"normal\">75<\/span>\n<span class=\"normal\">76<\/span>\n<span class=\"normal\">77<\/span>\n<span class=\"normal\">78<\/span>\n<span class=\"normal\">79<\/span>\n<span class=\"normal\">80<\/span>\n<span class=\"normal\">81<\/span>\n<span class=\"normal\">82<\/span>\n<span class=\"normal\">83<\/span>\n<span class=\"normal\">84<\/span>\n<span class=\"normal\">85<\/span>\n<span class=\"normal\">86<\/span>\n<span class=\"normal\">87<\/span>\n<span class=\"normal\">88<\/span>\n<span class=\"normal\">89<\/span>\n<span class=\"normal\">90<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName    network_selfdefine.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for using sigprocmask and sigsuspend functions in linux.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-04-08 13:11 https:\/\/typecodes.com\/cseries\/networkselfdefineconv.html<\/span>\n<span class=\"cm\"> * @Compile     gcc network_selfdefine.c -o network_selfdefine<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;ctype.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&quot;print.h&quot;<\/span>\n<span class=\"cp\">#define IP_ADRESS &quot;192.168.1.177&quot;<\/span>\n\n<span class=\"cm\">\/*<\/span>\n<span class=\"cm\"> * \u5c06IPv4\u5730\u5740\uff08\u70b9\u5206\u6cd5\uff09\u8f6c\u6362\u6210\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6574\u6570<\/span>\n<span class=\"cm\"> * \u539f\u51fd\u6570\u58f0\u660e\uff1a<\/span>\n<span class=\"cm\"> * int inet_aton(const char *cp, struct in_addr *inp);<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">__inet_aton<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">c_ipaddr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">u_ipaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">u_tmp<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">c<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_base<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_shift<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_recycle<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">c_ipaddr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">u_tmp<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/\u5982\u679c\u662f\u6570\u5b57<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">isdigit<\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">u_tmp<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">u_tmp<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">i_base<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">*++<\/span><span class=\"n\">c_ipaddr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"c1\">\/\/\u5982\u679c\u4e0d\u662f\u6570\u5b57\u800c\u662f.\u7b26\u53f7\uff0c\u8bf4\u660e.\u7b26\u53f7\u524d\u9762\u7684\u6570\u636e\u5df2\u7ecf\u5904\u7406\u5b8c\u6bd5<\/span>\n<span class=\"w\">                <\/span><span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u5b57\u8282\u79fb\u4f4d\uff0c\u6ce8\u610f\u7f51\u7edc\u5b57\u8282\u5e8f\u662f\u5927\u7aef\u6a21\u5f0f<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">i_shift<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"o\">*<\/span><span class=\"n\">i_recycle<\/span><span class=\"o\">++<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">u_tmp<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;=<\/span><span class=\"w\"> <\/span><span class=\"n\">i_shift<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">u_ipaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"n\">u_tmp<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u5bf9\u70b9(.)\u7b26\u53f7\u7684\u5904\u7406<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;.&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">*++<\/span><span class=\"n\">c_ipaddr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"c1\">\/\/\u5982\u679c\u662f\u5176\u5b83\u7b26\u53f7\uff08\u4f8b\u5982\u7ed3\u675f\u7b26\\0\u7b49\uff09\u5219\u8df3\u51fa\u6574\u4e2a\u5faa\u73af<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u68c0\u67e5\u662f\u5426\u5305\u542b\u975e\u7ed3\u675f\u7b26\u3001\u7a7a\u683c\u7b49\u7b26\u53f7\uff0c\u662f\u5219\u8fd4\u56de0<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">isspace<\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">goto<\/span><span class=\"w\"> <\/span><span class=\"n\">ret_0<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">u_ipaddr<\/span><span class=\"p\">;<\/span>\n<span class=\"nl\">ret_0<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * \u5c06\u5341\u8fdb\u5236\u6574\u6570\u8f6c\u6362\u6210\u5bf9\u5e94\u7684IPv4\u5730\u5740\uff08\u70b9\u5206\u6cd5\uff09\uff0c\u5176\u4e2d\u7531\u4e8e\u7f51\u7edc\u5b57\u8282\u5e8f\u662f\u5927\u7aef\u8868\u793a\uff0c\u6240\u4ee5\u7b2c\u4e00\u4e2a\u5b57\u8282\u5bf9\u5e94\u7684\u662f\u6574\u6570\u7684\u4f4e\u4f4dbyte[0]<\/span>\n<span class=\"cm\"> * \u539f\u51fd\u6570\u58f0\u660e\uff1a<\/span>\n<span class=\"cm\"> * int inet_aton(const char *cp, struct in_addr *inp);<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">buffer<\/span><span class=\"p\">[<\/span><span class=\"mi\">16<\/span><span class=\"p\">];<\/span>\n<span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\">  <\/span><span class=\"nf\">__inet_ntoa<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">in<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">bytes<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">in<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">snprintf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buffer<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">buffer<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;%d.%d.%d.%d&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">],<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">],<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">buffer<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;IP_ADRESS[%s] ==&gt; [%lu].&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">IP_ADRESS<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">__inet_aton<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">IP_ADRESS<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%lu]=[0x%x].&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">__inet_aton<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">IP_ADRESS<\/span><span class=\"w\"> <\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">__inet_aton<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">IP_ADRESS<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Network orders[%lu] ==&gt; [%s].&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">__inet_aton<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">IP_ADRESS<\/span><span class=\"w\"> <\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">__inet_ntoa<\/span><span class=\"p\">(<\/span><span class=\"n\">__inet_aton<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">IP_ADRESS<\/span><span class=\"w\"> <\/span><span class=\"p\">))<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u7f16\u8bd1\u6267\u884c<\/h4>\n<p>\u4f7f\u7528<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b<\/a>\u4e00\u6587\u4e2d\u7684Makefile\u6587\u4ef6\u8fdb\u884c\u7a0b\u5e8f\u7f16\u8bd1\uff08\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u8fdb\u884c\u7f16\u8bd1<code>gcc network_selfdefine.c -o network_selfdefine<\/code>\uff09\uff0c\u63a5\u7740\u6267\u884c\u8be5\u7a0b\u5e8f\uff0c\u5f97\u5230\u5982\u4e0b\u56fe\u6240\u793a\u7684\u7ed3\u679c\uff1a<\/p>\n<p><img alt=\"\u81ea\u5df1\u5b9e\u73b0inet_aton\u548cinet_ntoa\u51fd\u6570\u529f\u80fd\" src=\"https:\/\/cdn.typecodes.com\/2016\/04\/network_selfdefine.png\" title=\"\u81ea\u5df1\u5b9e\u73b0inet_aton\u548cinet_ntoa\u51fd\u6570\u529f\u80fd\"><\/p>\n<p>\u9700\u8981\u8bf4\u660e\u7684\u662f\u4ece\u7b2c87\u884c\u8f93\u51fa\u7684<code>[2969675968]=[0xb101a8c0].<\/code>\u53ef\u4ee5\u770b\u51fa\uff0c\u4f4e\u5b57\u8282\u76840xC0(\u5373192)\u7531\u4e8e\u7f51\u7edc\u5b57\u8282\u5e8f\u5927\u7aef\u6a21\u5f0f\u7684\u5173\u7cfb\u5b58\u653e\u5728\u5185\u5b58\u4e2d\u7684\u9ad8\u4f4d\uff0c\u9ad8\u5b57\u8282\u76840xB1(\u5373177)\u5b58\u653e\u5728\u5185\u5b58\u4e2d\u7684\u4f4e\u4f4d\u3002<\/p>\n<h4>4 \u9644\u5f55<\/h4>\n<p>\u5173\u4e8e<code>inet_aton<\/code>\u7684man\u8bf4\u660e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">xlei<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">man<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_aton<\/span>\n<span class=\"nx\">INET<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span><span class=\"w\">                         <\/span><span class=\"nx\">Linux<\/span><span class=\"w\"> <\/span><span class=\"nx\">Programmer<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"nx\">Manual<\/span><span class=\"w\">                        <\/span><span class=\"nx\">INET<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span>\n\n<span class=\"nx\">NAME<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">,<\/span><span class=\"w\">   <\/span><span class=\"nx\">inet_addr<\/span><span class=\"p\">,<\/span><span class=\"w\">   <\/span><span class=\"nx\">inet_network<\/span><span class=\"p\">,<\/span><span class=\"w\">   <\/span><span class=\"nx\">inet_ntoa<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"nx\">inet_makeaddr<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"nx\">inet_lnaof<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">inet_netof<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">Internet<\/span><span class=\"w\"> <\/span><span class=\"nx\">address<\/span><span class=\"w\"> <\/span><span class=\"nx\">manipulation<\/span><span class=\"w\"> <\/span><span class=\"nx\">routines<\/span>\n\n<span class=\"nx\">SYNOPSIS<\/span>\n<span class=\"w\">       <\/span><span class=\"err\">#<\/span><span class=\"nx\">include<\/span><span class=\"w\"> <\/span><span class=\"p\">&lt;<\/span><span class=\"nx\">sys<\/span><span class=\"o\">\/<\/span><span class=\"nx\">socket<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"w\">       <\/span><span class=\"err\">#<\/span><span class=\"nx\">include<\/span><span class=\"w\"> <\/span><span class=\"p\">&lt;<\/span><span class=\"nx\">netinet<\/span><span class=\"o\">\/<\/span><span class=\"k\">in<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"w\">       <\/span><span class=\"err\">#<\/span><span class=\"nx\">include<\/span><span class=\"w\"> <\/span><span class=\"p\">&lt;<\/span><span class=\"nx\">arpa<\/span><span class=\"o\">\/<\/span><span class=\"nx\">inet<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"p\">&gt;<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">int<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">(<\/span><span class=\"nx\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">cp<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">inp<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">in_addr_t<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_addr<\/span><span class=\"p\">(<\/span><span class=\"nx\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">cp<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">in_addr_t<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_network<\/span><span class=\"p\">(<\/span><span class=\"nx\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">cp<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">inet_ntoa<\/span><span class=\"p\">(<\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_makeaddr<\/span><span class=\"p\">(<\/span><span class=\"nx\">int<\/span><span class=\"w\"> <\/span><span class=\"nx\">net<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">int<\/span><span class=\"w\"> <\/span><span class=\"nx\">host<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">in_addr_t<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_lnaof<\/span><span class=\"p\">(<\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">in_addr_t<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_netof<\/span><span class=\"p\">(<\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">   <\/span><span class=\"nx\">Feature<\/span><span class=\"w\"> <\/span><span class=\"nx\">Test<\/span><span class=\"w\"> <\/span><span class=\"nx\">Macro<\/span><span class=\"w\"> <\/span><span class=\"nx\">Requirements<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">glibc<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">see<\/span><span class=\"w\"> <\/span><span class=\"nx\">feature_test_macros<\/span><span class=\"p\">(<\/span><span class=\"mi\">7<\/span><span class=\"p\">)):<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_ntoa<\/span><span class=\"p\">():<\/span><span class=\"w\"> <\/span><span class=\"nx\">_BSD_SOURCE<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nx\">_SVID_SOURCE<\/span>\n\n<span class=\"nx\">DESCRIPTION<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"nx\">converts<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">Internet<\/span><span class=\"w\"> <\/span><span class=\"nx\">host<\/span><span class=\"w\"> <\/span><span class=\"nx\">address<\/span><span class=\"w\"> <\/span><span class=\"nx\">cp<\/span><span class=\"w\"> <\/span><span class=\"nx\">from<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">IPv4<\/span><span class=\"w\">  <\/span><span class=\"nx\">numbers<\/span><span class=\"o\">-<\/span><span class=\"k\">and<\/span><span class=\"o\">-<\/span><span class=\"nx\">dots<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">notation<\/span><span class=\"w\">  <\/span><span class=\"nx\">into<\/span><span class=\"w\"> <\/span><span class=\"nx\">binary<\/span><span class=\"w\"> <\/span><span class=\"nx\">form<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">network<\/span><span class=\"w\"> <\/span><span class=\"nx\">byte<\/span><span class=\"w\"> <\/span><span class=\"nx\">order<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">stores<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">structure<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">inp<\/span><span class=\"w\"> <\/span><span class=\"nx\">points<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"nx\">returns<\/span><span class=\"w\"> <\/span><span class=\"nx\">nonzero<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">address<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">valid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">zero<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span>\n<span class=\"w\">       <\/span><span class=\"k\">not<\/span><span class=\"p\">.<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5173\u4e8e<code>inet_aton<\/code>\u7684man\u8bf4\u660e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">man<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_ntoa<\/span>\n<span class=\"nx\">INET<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span><span class=\"w\">                         <\/span><span class=\"nx\">Linux<\/span><span class=\"w\"> <\/span><span class=\"nx\">Programmer<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"nx\">Manual<\/span><span class=\"w\">                        <\/span><span class=\"nx\">INET<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span>\n\n<span class=\"nx\">NAME<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">,<\/span><span class=\"w\">   <\/span><span class=\"nx\">inet_addr<\/span><span class=\"p\">,<\/span><span class=\"w\">   <\/span><span class=\"nx\">inet_network<\/span><span class=\"p\">,<\/span><span class=\"w\">   <\/span><span class=\"nx\">inet_ntoa<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"nx\">inet_makeaddr<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"nx\">inet_lnaof<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">inet_netof<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">Internet<\/span><span class=\"w\"> <\/span><span class=\"nx\">address<\/span><span class=\"w\"> <\/span><span class=\"nx\">manipulation<\/span><span class=\"w\"> <\/span><span class=\"nx\">routines<\/span>\n\n<span class=\"nx\">SYNOPSIS<\/span>\n<span class=\"w\">       <\/span><span class=\"err\">#<\/span><span class=\"nx\">include<\/span><span class=\"w\"> <\/span><span class=\"p\">&lt;<\/span><span class=\"nx\">sys<\/span><span class=\"o\">\/<\/span><span class=\"nx\">socket<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"w\">       <\/span><span class=\"err\">#<\/span><span class=\"nx\">include<\/span><span class=\"w\"> <\/span><span class=\"p\">&lt;<\/span><span class=\"nx\">netinet<\/span><span class=\"o\">\/<\/span><span class=\"k\">in<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"w\">       <\/span><span class=\"err\">#<\/span><span class=\"nx\">include<\/span><span class=\"w\"> <\/span><span class=\"p\">&lt;<\/span><span class=\"nx\">arpa<\/span><span class=\"o\">\/<\/span><span class=\"nx\">inet<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"p\">&gt;<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">int<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">(<\/span><span class=\"nx\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">cp<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">inp<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">in_addr_t<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_addr<\/span><span class=\"p\">(<\/span><span class=\"nx\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">cp<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">in_addr_t<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_network<\/span><span class=\"p\">(<\/span><span class=\"nx\">const<\/span><span class=\"w\"> <\/span><span class=\"nx\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">cp<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"nx\">inet_ntoa<\/span><span class=\"p\">(<\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_makeaddr<\/span><span class=\"p\">(<\/span><span class=\"nx\">int<\/span><span class=\"w\"> <\/span><span class=\"nx\">net<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">int<\/span><span class=\"w\"> <\/span><span class=\"nx\">host<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">in_addr_t<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_lnaof<\/span><span class=\"p\">(<\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">in_addr_t<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_netof<\/span><span class=\"p\">(<\/span><span class=\"nx\">struct<\/span><span class=\"w\"> <\/span><span class=\"nx\">in_addr<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">   <\/span><span class=\"nx\">Feature<\/span><span class=\"w\"> <\/span><span class=\"nx\">Test<\/span><span class=\"w\"> <\/span><span class=\"nx\">Macro<\/span><span class=\"w\"> <\/span><span class=\"nx\">Requirements<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">glibc<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">see<\/span><span class=\"w\"> <\/span><span class=\"nx\">feature_test_macros<\/span><span class=\"p\">(<\/span><span class=\"mi\">7<\/span><span class=\"p\">)):<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">(),<\/span><span class=\"w\"> <\/span><span class=\"nx\">inet_ntoa<\/span><span class=\"p\">():<\/span><span class=\"w\"> <\/span><span class=\"nx\">_BSD_SOURCE<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nx\">_SVID_SOURCE<\/span>\n\n<span class=\"nx\">DESCRIPTION<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"nx\">converts<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">Internet<\/span><span class=\"w\"> <\/span><span class=\"nx\">host<\/span><span class=\"w\"> <\/span><span class=\"nx\">address<\/span><span class=\"w\"> <\/span><span class=\"nx\">cp<\/span><span class=\"w\"> <\/span><span class=\"nx\">from<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">IPv4<\/span><span class=\"w\">  <\/span><span class=\"nx\">numbers<\/span><span class=\"o\">-<\/span><span class=\"k\">and<\/span><span class=\"o\">-<\/span><span class=\"nx\">dots<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">notation<\/span><span class=\"w\">  <\/span><span class=\"nx\">into<\/span><span class=\"w\"> <\/span><span class=\"nx\">binary<\/span><span class=\"w\"> <\/span><span class=\"nx\">form<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">network<\/span><span class=\"w\"> <\/span><span class=\"nx\">byte<\/span><span class=\"w\"> <\/span><span class=\"nx\">order<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">stores<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">structure<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">inp<\/span><span class=\"w\"> <\/span><span class=\"nx\">points<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">inet_aton<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"nx\">returns<\/span><span class=\"w\"> <\/span><span class=\"nx\">nonzero<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">address<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">valid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">zero<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span>\n<span class=\"w\">       <\/span><span class=\"k\">not<\/span><span class=\"p\">.<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"inet_aton"}},{"@attributes":{"term":"inet_ntoa"}},{"@attributes":{"term":"\u5b57\u8282\u5e8f"}}]},{"title":"C\u8bed\u8a00\u5220\u9664\u65e0\u5e8f\u6574\u578b\u6570\u7ec4\u4e2d\u7684\u91cd\u590d\u5143\u7d20\u53ca\u65f6\u95f4\u590d\u6742\u5ea6","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/deldisorderintarrrepeatele.html","rel":"alternate"}},"published":"2016-03-23T22:44:00+08:00","updated":"2016-03-23T22:44:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-03-23:\/cseries\/deldisorderintarrrepeatele.html","summary":"<p>\u9047\u5230\u4e00\u4e2a\u9898\uff0c\u5927\u6982\u8981\u6c42\u662f\u5199\u4e00\u4e2a\u51fd\u6570\u5904\u7406\u6765\u53bb\u6389\u4e00\u4e2a\u65e0\u5e8f\u7684\u6574\u578b\u6570\u7ec4\uff08\u4f8b\u5982int i_arr[] = { 1, 2, 2, 3, 4, 2, 3, 5 };\uff09\u4e2d\u91cd\u590d\u7684\u5143\u7d20\uff0c\u5e76\u8fd4\u56de\u6700\u7ec8\u7684\u957f\u5ea6\u3002<\/p>\n","content":"<p>\u9047\u5230\u4e00\u4e2a\u9898\uff0c\u5927\u6982\u8981\u6c42\u662f\u5199\u4e00\u4e2a\u51fd\u6570\u5904\u7406\u6765\u53bb\u6389\u4e00\u4e2a\u65e0\u5e8f\u7684\u6574\u578b\u6570\u7ec4\uff08\u4f8b\u5982int i_arr[] = { 1, 2, 2, 3, 4, 2, 3, 5 };\uff09\u4e2d\u91cd\u590d\u7684\u5143\u7d20\uff0c\u5e76\u8fd4\u56de\u6700\u7ec8\u7684\u957f\u5ea6\u3002<\/p>\n\n\n<h4>1 \u601d\u8def<\/h4>\n<p>\u770b\u5230\u8fd9\u9053\u9898\u7684\u65f6\u5019\uff0c\u7b2c\u4e00\u53cd\u5e94\u5c31\u662f\u9700\u8981\u5220\u9664\u5143\u7d20\uff0c\u7136\u540e\u8054\u60f3\u5230\u5355\u94fe\u8868\u3002\u4f46\u662f\u540e\u9762\u4e00\u60f3\u8fd8\u662f\u4e0d\u5212\u7b97\uff0c\u56e0\u4e3a\u5355\u94fe\u8868\u8fd8\u5f97\u5148\u628a\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u904d\u5386\u5230\u94fe\u8868\u8282\u70b9\u4e2d\u3002<\/p>\n<p>\u6362\u4e00\u4e0b\u601d\u8def\uff0c\u53ef\u4ee5\u5148\u521b\u5efa\u53e6\u4e00\u4e2a\u6574\u578b\u6570\u7ec4\uff08\u5927\u5c0f\u548c\u539f\u6570\u7ec4\u4e00\u6837\uff09\uff0c\u7136\u540e\u6b63\u5411\u904d\u5386\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\uff0c\u6bd4\u8f83\u5f53\u524d\u5143\u7d20\u548c\u5b83\u524d\u9762\u6240\u6709\u7684\u5143\u7d20\u662f\u5426\u91cd\u590d\uff0c\u5982\u679c\u8fd9\u4e2a\u6574\u6570\u4e4b\u524d\u6ca1\u6709\u51fa\u73b0\u8fc7\uff0c\u90a3\u4e48\u5c31\u653e\u5230\u65b0\u7684\u6570\u7ec4\u4e2d\uff0c\u4e8e\u662f\u6709\u4e86\u5c0f\u82822\u4e2d\u7684Method1\uff1b\u53e6\u5916\u4e00\u79cd\u5c31\u662f\u4e0d\u9700\u8981\u521b\u5efa\u65b0\u7684\u6570\u7ec4\uff0c\u5728\u6b63\u5411\u904d\u5386\u6570\u7ec4\u4e2d\u7684\u5143\u7d20\u65f6\uff0c\u6bd4\u8f83\u5f53\u524d\u5143\u7d20\u548c\u5b83\u540e\u9762\u6240\u6709\u7684\u5143\u7d20\u662f\u5426\u91cd\u590d\uff0c\u5982\u679c\u91cd\u590d\u5c31\u628a\u540e\u9762\u7684\u6240\u6709\u5143\u7d20\u5411\u524d\u79fb\u52a8\uff08\u5373\u8986\u76d6\uff09\uff0c\u4e8e\u662f\u6709\u4e86\u5c0f\u82822\u4e2d\u7684Method2\u3002<\/p>\n<h4>2 \u5b8c\u6574\u7a0b\u5e8f<\/h4>\n<p>\u7a0b\u5e8f\u4e2d\u7b2c104\u884c\u7684<code>--j<\/code>\u8bed\u53e5\u975e\u5e38\u91cd\u8981\uff0c\u8fd9\u662f\u4e3a\u4e86\u907f\u514d\u5f53\u524d\u5143\u7d20\u8fde\u7eed\u51fa\u73b03\u6b21\uff08\u6216\u4ee5\u4e0a\uff09\u800c\u6ca1\u6709\u88ab\u5220\u9664\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName    int_del_repeat.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for deleting the repeated elements in a deldisor interger array.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-03-23 22:44 https:\/\/typecodes.com\/cseries\/deldisorderintarrrepeatele.html<\/span>\n<span class=\"cm\"> * @Compile     gcc int_del_repeat.c -o int_del_repeat<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;malloc.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&quot;print.h&quot;<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">f_del1<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">i<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iLen<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">f_del2<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">i_f_del2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/The test array.<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_arr1<\/span><span class=\"p\">[<\/span><span class=\"mi\">26<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">11<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">22<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">23<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"w\"> <\/span><span class=\"p\">};<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_arr2<\/span><span class=\"p\">[<\/span><span class=\"mi\">26<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">11<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">22<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">23<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"w\"> <\/span><span class=\"p\">};<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_ar2r<\/span><span class=\"p\">[<\/span><span class=\"mi\">26<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">11<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">11<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">14<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">17<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">18<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">23<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">24<\/span><span class=\"w\"> <\/span><span class=\"p\">};<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_ar3r<\/span><span class=\"p\">[<\/span><span class=\"mi\">26<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">11<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">11<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">13<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">14<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">17<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">18<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">23<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">24<\/span><span class=\"w\"> <\/span><span class=\"p\">};<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/The length of .<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_p_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cp\">#if 1<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">i_p_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">f_del1<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_ar2r<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">26<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;len=[%d].&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_p_len<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"cp\">#endif<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;------------------------------<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cp\">#if 1<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">i_p_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">f_del2<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_ar3r<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">26<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;len=[%d].&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_p_len<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"cp\">#endif<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/Method 1: Using malloc to init an array for storing the elements after deleting the repeated ones.<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">f_del1<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">array<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iLen<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_recycle<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/Flags to store an element into the array i_f_del1.<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_flag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/Length of the sorted array, name as i_f_del1.<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_f_del1_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/Init an array for storing the elements after deleting the repeated ones.<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">i_f_del1<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">malloc<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iLen<\/span><span class=\"o\">*<\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/Init the first interger element.<\/span>\n<span class=\"w\">    <\/span><span class=\"o\">*<\/span><span class=\"n\">i_f_del1<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">array<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">iLen<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">i_flag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">i_recycle<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_recycle<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">array<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">array<\/span><span class=\"p\">[<\/span><span class=\"n\">i_recycle<\/span><span class=\"o\">++<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">i_flag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">                <\/span><span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/If i_flag equals 1, we should put the current element to the array i_f_del1.<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_flag<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">i_f_del1<\/span><span class=\"p\">[<\/span><span class=\"n\">i_f_del1_len<\/span><span class=\"o\">++<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">array<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">        <\/span><span class=\"o\">++<\/span><span class=\"n\">i<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"cp\">#if 1<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">i_f_del1_len<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;i_f_del1[%d]=[%d].&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_f_del1<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"cp\">#endif<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">i_f_del1_len<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/Method 2: cover up the repeated elements.<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">f_del2<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">i_f_del2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">j<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">j<\/span><span class=\"o\">=<\/span><span class=\"n\">i<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">j<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">j<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i_f_del2<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">i_f_del2<\/span><span class=\"p\">[<\/span><span class=\"n\">j<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span><span class=\"o\">=<\/span><span class=\"n\">j<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"o\">++<\/span><span class=\"n\">k<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">                <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">                    <\/span><span class=\"n\">i_f_del2<\/span><span class=\"p\">[<\/span><span class=\"n\">k<\/span><span class=\"mi\">-1<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">i_f_del2<\/span><span class=\"p\">[<\/span><span class=\"n\">k<\/span><span class=\"p\">];<\/span><span class=\"w\">        <\/span><span class=\"c1\">\/\/cover up<\/span>\n<span class=\"w\">                <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">                <\/span><span class=\"o\">--<\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">                <\/span><span class=\"c1\">\/\/Key step to avoiding the continuous elements repeated more than 2 times.<\/span>\n<span class=\"w\">                <\/span><span class=\"o\">--<\/span><span class=\"n\">j<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cp\">#if 1<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"o\">++<\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;i_f_del2[%d]=[%d].&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_f_del2<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"cp\">#endif<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u6d4b\u8bd5\u6267\u884c<\/h4>\n<p>\u4f7f\u7528<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b<\/a>\u4e00\u6587\u4e2d\u7684Makefile\u6587\u4ef6\u8fdb\u884c\u7a0b\u5e8f\u7f16\u8bd1\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u8fdb\u884c\u7f16\u8bd1<code>gcc int_del_repeat.c -o int_del_repeat<\/code>\u3002<\/p>\n<p><img alt=\"C\u8bed\u8a00\u5220\u9664\u65e0\u5e8f\u6574\u578b\u6570\u7ec4\u4e2d\u7684\u91cd\u590d\u5143\u7d20\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/int_del_repeat_disorder_array.png\" title=\"C\u8bed\u8a00\u5220\u9664\u65e0\u5e8f\u6574\u578b\u6570\u7ec4\u4e2d\u7684\u91cd\u590d\u5143\u7d20\"><\/p>\n<h4>4 \u65f6\u95f4\u590d\u6742\u5ea6<\/h4>\n<p>Method 2\u4e2d\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(N\uff3e2)\uff0cMethod 2\u4e2d\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4e3aO(N\uff3e3)\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"\u6570\u7ec4"}},{"@attributes":{"term":"\u65f6\u95f4\u590d\u6742\u5ea6"}}]},{"title":"UNIX\u73af\u5883\u9ad8\u7ea7\u7f16\u7a0b\uff08APUE\uff09\u4e4b\u5355\u5b9e\u4f8b\u5b88\u62a4\u8fdb\u7a0b","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/apuesingledaemonprocess.html","rel":"alternate"}},"published":"2016-03-14T17:52:00+08:00","updated":"2016-03-14T17:52:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-03-14:\/cseries\/apuesingledaemonprocess.html","summary":"<p>\u5728UNIX\u73af\u5883\u9ad8\u7ea7\u7f16\u7a0b\uff08APUE\uff09\u4e2d\u63d0\u5230\u4e86\u5b88\u62a4\u8fdb\u7a0b\u7684\u521b\u5efa\u65b9\u6cd5\uff0c\u601d\u8def\u5f88\u6e05\u6670\uff0c\u6240\u4ee5\u8fd9\u91cc\u901a\u8fc7\u4ee3\u7801\u5177\u4f53\u7814\u7a76\u4e0b\u3002<\/p>\n<p><img alt=\"UNIX\u73af\u5883\u9ad8\u7ea7\u7f16\u7a0b\uff08APUE\uff09\u4e4b\u5355\u5b9e\u4f8b\u5b88\u62a4\u8fdb\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/apue.png\" title=\"UNIX\u73af\u5883\u9ad8\u7ea7\u7f16\u7a0b\uff08APUE\uff09\u4e4b\u5355\u5b9e\u4f8b\u5b88\u62a4\u8fdb\u7a0b\"><\/p>\n","content":"<p>\u5728UNIX\u73af\u5883\u9ad8\u7ea7\u7f16\u7a0b\uff08APUE\uff09\u4e2d\u63d0\u5230\u4e86\u5b88\u62a4\u8fdb\u7a0b\u7684\u521b\u5efa\u65b9\u6cd5\uff0c\u601d\u8def\u5f88\u6e05\u6670\uff0c\u6240\u4ee5\u8fd9\u91cc\u901a\u8fc7\u4ee3\u7801\u5177\u4f53\u7814\u7a76\u4e0b\u3002<\/p>\n<p><img alt=\"UNIX\u73af\u5883\u9ad8\u7ea7\u7f16\u7a0b\uff08APUE\uff09\u4e4b\u5355\u5b9e\u4f8b\u5b88\u62a4\u8fdb\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/apue.png\" title=\"UNIX\u73af\u5883\u9ad8\u7ea7\u7f16\u7a0b\uff08APUE\uff09\u4e4b\u5355\u5b9e\u4f8b\u5b88\u62a4\u8fdb\u7a0b\"><\/p>\n\n\n<h4>1 \u5b8c\u6574\u7a0b\u5e8f\uff1a\u5355\u5b9e\u4f8b\u5b88\u62a4\u8fdb\u7a0b<\/h4>\n<p>\u6839\u636eAPUE\u7684\u4ecb\u7ecd\uff0c\u521b\u5efa\u5b88\u62a4\u8fdb\u7a0b\u57fa\u672c\u9700\u8981\u5982\u4e0b7\u4e2a\u6b65\u9aa4\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\u7531\u4e8e\u5b88\u62a4\u8fdb\u7a0b\u6ca1\u6709TTY\uff08\u63a7\u5236\u7ec8\u7aef\uff09\uff0c\u6240\u4ee5\u4ee3\u7801\u4e2d\u90e8\u5206\u7279\u610f\u5199\u4e0a\u53bb\u7684printf\u8bed\u53e5\u662f\u4e0d\u4f1a\u8f93\u51fa\u5230\u7ec8\u7aef\u754c\u9762\u4e0a\u7684\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span>\n<span class=\"normal\">138<\/span>\n<span class=\"normal\">139<\/span>\n<span class=\"normal\">140<\/span>\n<span class=\"normal\">141<\/span>\n<span class=\"normal\">142<\/span>\n<span class=\"normal\">143<\/span>\n<span class=\"normal\">144<\/span>\n<span class=\"normal\">145<\/span>\n<span class=\"normal\">146<\/span>\n<span class=\"normal\">147<\/span>\n<span class=\"normal\">148<\/span>\n<span class=\"normal\">149<\/span>\n<span class=\"normal\">150<\/span>\n<span class=\"normal\">151<\/span>\n<span class=\"normal\">152<\/span>\n<span class=\"normal\">153<\/span>\n<span class=\"normal\">154<\/span>\n<span class=\"normal\">155<\/span>\n<span class=\"normal\">156<\/span>\n<span class=\"normal\">157<\/span>\n<span class=\"normal\">158<\/span>\n<span class=\"normal\">159<\/span>\n<span class=\"normal\">160<\/span>\n<span class=\"normal\">161<\/span>\n<span class=\"normal\">162<\/span>\n<span class=\"normal\">163<\/span>\n<span class=\"normal\">164<\/span>\n<span class=\"normal\">165<\/span>\n<span class=\"normal\">166<\/span>\n<span class=\"normal\">167<\/span>\n<span class=\"normal\">168<\/span>\n<span class=\"normal\">169<\/span>\n<span class=\"normal\">170<\/span>\n<span class=\"normal\">171<\/span>\n<span class=\"normal\">172<\/span>\n<span class=\"normal\">173<\/span>\n<span class=\"normal\">174<\/span>\n<span class=\"normal\">175<\/span>\n<span class=\"normal\">176<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName    daemon_process.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for creating a single object of daemon process in linux.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-03-14 17:52 https:\/\/typecodes.com\/cseries\/apuesingledaemonprocess.html<\/span>\n<span class=\"cm\"> * @Compile     gcc daemon_process.c -o daemon_process<\/span>\n<span class=\"cm\"> * @Reference   program list 13-1 in APUE.<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;unistd.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdarg.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdlib.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;signal.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;syslog.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;fcntl.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/types.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/stat.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/resource.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;errno.h&gt;<\/span>\n\n<span class=\"cp\">#define PRINT_PID() printf( &quot;Row[%d]: getpid=[%d].\\n&quot;, __LINE__, getpid() )<\/span>\n<span class=\"c1\">\/\/\u5b88\u62a4\u8fdb\u7a0b\u5bf9\u5e94\u7684\u7528\u6237\u5fc5\u987b\u5bf9\u8be5\u6587\u4ef6\u5177\u6709\u8bbf\u95ee\u6743\u9650<\/span>\n<span class=\"cp\">#define LOCK_FILE &quot;\/home\/vfhky\/daemon_process.pid&quot;<\/span>\n<span class=\"cp\">#define MAXLINE 1024<\/span>\n\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * Print a message and return to caller.<\/span>\n<span class=\"cm\"> * Caller specifies &quot;errnoflag&quot;.<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">err_doit<\/span><span class=\"p\">(<\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">errnoflag<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">fmt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">va_list<\/span><span class=\"w\"> <\/span><span class=\"n\">ap<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\">    <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">MAXLINE<\/span><span class=\"p\">];<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">vsnprintf<\/span><span class=\"p\">(<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">MAXLINE<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fmt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ap<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">errnoflag<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">snprintf<\/span><span class=\"p\">(<\/span><span class=\"n\">buf<\/span><span class=\"o\">+<\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">buf<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">MAXLINE<\/span><span class=\"o\">-<\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">buf<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;: %s&quot;<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">                 <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"n\">error<\/span><span class=\"p\">));<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">strcat<\/span><span class=\"p\">(<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fflush<\/span><span class=\"p\">(<\/span><span class=\"n\">stdout<\/span><span class=\"p\">);<\/span><span class=\"w\">     <\/span><span class=\"cm\">\/* in case stdout and stderr are the same *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fputs<\/span><span class=\"p\">(<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">stderr<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fflush<\/span><span class=\"p\">(<\/span><span class=\"nb\">NULL<\/span><span class=\"p\">);<\/span><span class=\"w\">       <\/span><span class=\"cm\">\/* flushes all stdio output streams *\/<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * Fatal error unrelated to a system call.<\/span>\n<span class=\"cm\"> * Print a message and terminate.<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">err_quit<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">fmt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">...)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">va_list<\/span><span class=\"w\">     <\/span><span class=\"n\">ap<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">va_start<\/span><span class=\"p\">(<\/span><span class=\"n\">ap<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fmt<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">err_doit<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fmt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ap<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">va_end<\/span><span class=\"p\">(<\/span><span class=\"n\">ap<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">daemonize<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">cmd<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\">                 <\/span><span class=\"n\">i<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fd0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fd1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fd2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">pid_t<\/span><span class=\"w\">               <\/span><span class=\"n\">pid<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">rlimit<\/span><span class=\"w\">       <\/span><span class=\"n\">rl<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sigaction<\/span><span class=\"w\">    <\/span><span class=\"n\">sa<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * \u7b2c\u4e00\u6b65\uff1a\u8bbe\u7f6e\u6587\u4ef6\u6a21\u5f0f\u5c4f\u853d\u5b57\u4e3a0<\/span>\n<span class=\"cm\">     * Clear file creation mask.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">umask<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * \u83b7\u53d6\u6700\u5927\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26\u6570\u76ee<\/span>\n<span class=\"cm\">     * Get maximum number of file descriptors.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">getrlimit<\/span><span class=\"p\">(<\/span><span class=\"n\">RLIMIT_NOFILE<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">rl<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">err_quit<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;%s: can&#39;t get file limit&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cmd<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * \u7b2c\u4e8c\u6b65\uff1a\u521b\u5efa\u4e00\u4e2a\u5b50\u8fdb\u7a0b\uff0c\u4f7f\u7236\u8fdb\u7a0b\u9000\u51fa<\/span>\n<span class=\"cm\">     * Become a session leader to lose controlling TTY.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">((<\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">fork<\/span><span class=\"p\">())<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">err_quit<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;%s: can&#39;t fork&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cmd<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"cm\">\/* parent *\/<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">PRINT_PID<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * \u7b2c\u4e09\u6b65\uff1a\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u4f1a\u8bddID<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">setsid<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * Ensure future opens won&#39;t allocate controlling TTYs.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sa<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_handler<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">SIG_IGN<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigemptyset<\/span><span class=\"p\">(<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">sa<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_mask<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sa<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_flags<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">sigaction<\/span><span class=\"p\">(<\/span><span class=\"n\">SIGHUP<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">sa<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">err_quit<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;%s: can&#39;t ignore SIGHUP&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">fork<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\">                  <\/span><span class=\"c1\">\/\/\u518d\u6b21\u521b\u5efa\u4e00\u4e2a\u5b50\u8fdb\u7a0b\uff0c\u540c\u6837\u4f7f\u7236\u8fdb\u7a0b\u9000\u51fa<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">err_quit<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;%s: can&#39;t fork&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cmd<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"cm\">\/* parent *\/<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">PRINT_PID<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * \u7b2c\u56db\u6b65\uff1a\u5207\u6362\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u5230\u6839\u76ee\u5f55<\/span>\n<span class=\"cm\">     * Change the current working directory to the root so<\/span>\n<span class=\"cm\">     * we won&#39;t prevent file systems from being unmounted.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">chdir<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/&quot;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">err_quit<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;%s: can&#39;t change directory to \/&quot;<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * \u7b2c\u4e94\u6b65\uff1a\u5173\u95ed\u6240\u6709\u6253\u5f00\u7684\u6587\u4ef6\u63cf\u8ff0\u7b26<\/span>\n<span class=\"cm\">     * Close all open file descriptors.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">rl<\/span><span class=\"p\">.<\/span><span class=\"n\">rlim_max<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">RLIM_INFINITY<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">rl<\/span><span class=\"p\">.<\/span><span class=\"n\">rlim_max<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1024<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">rl<\/span><span class=\"p\">.<\/span><span class=\"n\">rlim_max<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"n\">i<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * \u7b2c\u516d\u6b65\uff1a\u4f7f\/dev\/null\u5177\u6709\u6587\u4ef6\u63cf\u8ff0\u7b260\uff0c1\uff0c2.<\/span>\n<span class=\"cm\">     * Attach file descriptors 0, 1, and 2 to \/dev\/null.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fd0<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/dev\/null&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">O_RDWR<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fd1<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">dup<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fd2<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">dup<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * Initialize the log file.<\/span>\n<span class=\"cm\">     * @para-in:    cmd: the identifier in the log.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">openlog<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cmd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">LOG_CONS<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">LOG_DAEMON<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">fd0<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"n\">fd1<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"n\">fd2<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">syslog<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">LOG_ERR<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;unexpected file descriptors %d %d %d&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fd0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fd1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fd2<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * \u7b2c\u4e03\u6b65\uff1a\u901a\u8fc7\u6587\u4ef6\u9501\u907f\u514d\u91cd\u590d\u8fd0\u884c\u591a\u4e2a\u5b88\u62a4\u8fdb\u7a0b<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">lockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">LOCK_FILE<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">O_RDWR<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">lockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">syslog<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">LOG_ERR<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Cannot lock file[%s], aborting[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">LOCK_FILE<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"n\">errno<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u4e0b\u9762\u8fd9\u4e00\u884c\u65e0\u6cd5\u6253\u5370\u5230\u63a7\u5236\u53f0\uff0c\u9879\u76ee\u4e0a\u5e94\u8be5\u6253\u5370\u5230\u65e5\u5fd7\u6587\u4ef6\u4e2d<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Cannot lock file[%s], aborting[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">LOCK_FILE<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"n\">errno<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">-1<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">lockf<\/span><span class=\"p\">(<\/span><span class=\"n\">lockfd<\/span><span class=\"p\">,<\/span><span class=\"n\">F_TLOCK<\/span><span class=\"p\">,<\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">syslog<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">LOG_ERR<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Daemon process is already running[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"n\">errno<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/\u4e0b\u9762\u8fd9\u4e00\u884c\u65e0\u6cd5\u6253\u5370\u5230\u63a7\u5236\u53f0\uff0c\u9879\u76ee\u4e0a\u5e94\u8be5\u6253\u5370\u5230\u65e5\u5fd7\u6587\u4ef6\u4e2d<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Daemon process is already running[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"n\">errno<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">-2<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINT_PID<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">daemonize<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Daemon test.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u7531\u4e8e\u7236\u8fdb\u7a0b\u9000\u51fa\uff0c\u6240\u6709\u53ea\u6709\u6700\u540e\u4e00\u4e2a\u5b50\u8fdb\u7a0b\u6267\u884c\u4e0b\u9762\u7684\u8bed\u53e5\uff08\u4f11\u7720\uff09<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;This line will not be print for the daemon process has no terminate.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">sleep<\/span><span class=\"p\">(<\/span><span class=\"mi\">120<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u7a0b\u5e8f\u7f16\u8bd1<\/h4>\n<p>\u4f7f\u7528<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b<\/a>\u4e00\u6587\u4e2d\u7684Makefile\u6587\u4ef6\u8fdb\u884c\u7a0b\u5e8f\u7f16\u8bd1\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u8fdb\u884c\u7f16\u8bd1<code>gcc daemon_process.c -o daemon_process<\/code>\u3002<\/p>\n<h4>3 \u521b\u5efa\u7b2c\u4e00\u4e2a\u5b88\u62a4\u8fdb\u7a0b<\/h4>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u7a0b\u5e8f\u5148\u6267\u884c\u7b2c178\u884cmain\u51fd\u6570\u4e2d\u7684\u6253\u5370\u8bed\u53e5\uff0c\u8f93\u51fa\u5f53\u524d\u7b2c\u4e00\u4e2a\u8fdb\u7a0b\u7684PID\u503c\u4e3a25872\uff1b\u7136\u540e\u7531\u4e8e\u5728daemonize\u51fd\u6570\u4e2d\u7b2c\u4e00\u4e2a\u8fdb\u7a0b(PID:25872)\u9000\u51fa\uff0c\u6240\u4ee5\u5b83\u7684\u5b50\u8fdb\u7a0b(PID:25873)\u6267\u884c\u7b2c101\u884c\u7684\u6253\u5370\u8bed\u53e5\uff1b\u63a5\u7740\u7531\u4e8e\u7b2c\u4e8c\u4e2a\u8fdb\u7a0b(PID:25873)\u9000\u51fa\uff0c\u90a3\u4e48\u5b83\u7684\u5b50\u8fdb\u7a0b(PID:25874)\u6267\u884c\u7b2c121\u884c\u7684\u6253\u5370\u8bed\u53e5\uff1b\u5728\u5173\u95ed\u4e86\u6240\u6709\u6587\u4ef6\u63cf\u8ff0\u7b26\u540e\uff0c\u8be5\u5b50\u8fdb\u7a0b(PID:25874)\u6253\u5f00\u6807\u51c6\u8f93\u5165\/\u8f93\u51fa\/\u9519\u8bef\u6d41\uff0c\u6700\u540e\u8be5\u5b50\u8fdb\u7a0b\u6210\u4e3a\u7531Linux\u7cfb\u7edfinit\u8fdb\u7a0b\u6258\u7ba1\u7684<code>\u5b64\u513f\u8fdb\u7a0b<\/code>\uff0c\u6ca1\u6709\u7ec8\u7aefterminal\uff0c\u8fd9\u4e5f\u5c31\u662f\u5b88\u62a4\u8fdb\u7a0b\u3002<\/p>\n<p><img alt=\"\u521b\u5efa\u7b2c\u4e00\u4e2a\u5b88\u62a4\u8fdb\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/daemon_process1.png\" title=\"\u521b\u5efa\u7b2c\u4e00\u4e2a\u5b88\u62a4\u8fdb\u7a0b\"><\/p>\n<p>\u5176\u4e2d\u4f7f\u7528<code>ps -axj|head -n 1; ps -axj|grep daemon_process<\/code>\u547d\u4ee4\u53d1\u73b0\u5b50\u8fdb\u7a0b(PID:25874)\u7684\u7236\u8fdb\u7a0b\u4e3a1\u8fdb\u7a0b(init\u8fdb\u7a0b)\uff0c\u7ec8\u7aefTTY\u4e3a\u7a7a\u3002<\/p>\n<p>\u63a5\u7740\u4f7f\u7528\u547d\u4ee4<code>pstree -pul<\/code>\u67e5\u770b\u5f53\u524d\u7528\u6237\u7684\u6240\u6709\u8fdb\u7a0b\u60c5\u51b5\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u518d\u6b21\u8bf4\u660e\u5b88\u62a4\u8fdb\u7a0b(PID:25874)\u521b\u5efa\u6210\u529f\u4e86\u3002<\/p>\n<p><img alt=\"\u4f7f\u7528\u547d\u4ee4pstree -pul\u67e5\u770b\u7528\u6237\u8fdb\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/daemon_process_pstree_pul.png\" title=\"\u4f7f\u7528\u547d\u4ee4pstree -pul\u67e5\u770b\u7528\u6237\u8fdb\u7a0b\"><\/p>\n<h4>4 \u521b\u5efa\u7b2c\u4e8c\u4e2a\u5b88\u62a4\u8fdb\u7a0b<\/h4>\n<p>\u5982\u679c\u5c1d\u8bd5\u518d\u6b21\u521b\u5efa\u4e00\u4e2a\u540c\u6837\u7684\u5b88\u62a4\u8fdb\u7a0b\uff0c\u5982\u4e0b\u56fe\u6240\u793a\u3002\u6267\u884c\u547d\u4ee4<code>ps -axj|head -n 1; ps -axj|grep daemon_process<\/code>\uff0c\u53d1\u73b0\u4ecd\u7136\u53ea\u6709\u4e00\u4e2a\u5b88\u62a4\u8fdb\u7a0b(PID:25874)\uff0c\u4e5f\u5c31\u662f\u521b\u5efa\u7b2c\u4e8c\u4e2a\u5b88\u62a4\u8fdb\u7a0b\u5931\u8d25\u3002<\/p>\n<p><img alt=\"\u521b\u5efa\u7b2c\u4e8c\u4e2a\u5b88\u62a4\u8fdb\u7a0b\u5931\u8d25\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/daemon_process2.png\" title=\"\u521b\u5efa\u7b2c\u4e8c\u4e2a\u5b88\u62a4\u8fdb\u7a0b\u5931\u8d25\"><\/p>\n<p>\u8fd9\u65f6\u4f7f\u7528<code>cat \/var\/log\/message<\/code>\u547d\u4ee4\u67e5\u770b\u8fdb\u7a0b\u5728Linux\u7cfb\u7edf\u65e5\u5fd7\u6587\u4ef6\u4e2d\u6253\u5370\u7684\u5185\u5bb9\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u67e5\u770b\/var\/log\/message\u65e5\u5fd7\u5185\u5bb9\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/var_log_message_err.png\" title=\"\u67e5\u770b\/var\/log\/message\u65e5\u5fd7\u5185\u5bb9\"><\/p>\n<p>\u5f88\u663e\u7136\u7a0b\u5e8f\u6267\u884c\u5230\u7b2c160\u884c\uff0c\u7531\u4e8e\u7b2c\u4e00\u4e2a\u5b88\u62a4\u8fdb\u7a0b\u5bf9LOCK_FILE\u6587\u4ef6\u52a0\u9501\u7684\u7f18\u6545\u800c\u65e0\u6cd5\u83b7\u53d6\u8be5\u6587\u4ef6\u7684\u8bbf\u95ee\u6743\u9650\u6700\u7ec8\u5bfc\u81f4\u5b50\u8fdb\u7a0b(PID:25909)\u7ec8\u6b62\u3002\u4e8e\u662f\uff0c\u7b2c\u4e8c\u6b21\u521b\u5efa\u5b88\u62a4\u8fdb\u7a0b\u5931\u8d25\u4e86\u3002<\/p>\n<h4>5 \u9644\u5f55<\/h4>\n<p>\u5173\u4e8e<code>openlog<\/code>\u548c<code>syslog<\/code>\u51fd\u6570\u7684\u4f7f\u7528\u65b9\u6cd5\uff0c\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4<code>man 3 syslog<\/code>\u67e5\u770b\uff0c\u5927\u6982\u5c31\u662f\u6839\u636e\u65e5\u5fd7\u6807\u8bc6\u7b26\uff08ident\uff09\u548c\u65e5\u5fd7level\uff08LOG_EMERG\u3001LOG_ERR\u3001LOG_WARNING\u7b49\uff09\u548c\u65e5\u5fd7\u6587\u4ef6\u7c7b\u578bfacility\uff08LOG_CRON\u3001LOG_MAIL\u3001LOG_SYSLOG\u548c\u9ed8\u8ba4\u7684LOG_USER\u7b49\uff09\u628a\u8fdb\u7a0b\u7684\u5185\u5bb9\u8f93\u51fa\u5230Linux\u7cfb\u7edf\u67d0\u4e00\u7c7b\u578b\u7684\u65e5\u5fd7\u6587\u4ef6\u4e2d\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">SYNOPSIS<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#include &lt;syslog.h&gt;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"nb nb-Type\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">openlog<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"nb\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">ident<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nb nb-Type\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">option<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nb nb-Type\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">facility<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"nb nb-Type\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">syslog<\/span><span class=\"p\">(<\/span><span class=\"nb nb-Type\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">priority<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"nb\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">format<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">...<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"nb nb-Type\">void<\/span><span class=\"w\"> <\/span><span class=\"n\">closelog<\/span><span class=\"p\">(<\/span><span class=\"nb nb-Type\">void<\/span><span class=\"p\">);<\/span>\n\n<span class=\"n\">DESCRIPTION<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">closelog<\/span><span class=\"p\">()<\/span><span class=\"w\">  <\/span><span class=\"n\">closes<\/span><span class=\"w\">  <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">descriptor<\/span><span class=\"w\"> <\/span><span class=\"n\">being<\/span><span class=\"w\"> <\/span><span class=\"n\">used<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">write<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">system<\/span><span class=\"w\"> <\/span><span class=\"n\">logger<\/span><span class=\"o\">.<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">use<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">closelog<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">optional<\/span><span class=\"o\">.<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">openlog<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"n\">opens<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">connection<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">system<\/span><span class=\"w\"> <\/span><span class=\"n\">logger<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">program<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pointed<\/span><span class=\"w\">  <\/span><span class=\"n\">to<\/span><span class=\"w\">  <\/span><span class=\"n\">by<\/span><span class=\"w\"> <\/span><span class=\"n\">ident<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">prepended<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">every<\/span><span class=\"w\"> <\/span><span class=\"n\">message<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">typically<\/span><span class=\"w\"> <\/span><span class=\"n\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">the<\/span><span class=\"w\">  <\/span><span class=\"n\">program<\/span><span class=\"w\">  <\/span><span class=\"n\">name<\/span><span class=\"o\">.<\/span><span class=\"w\">   <\/span><span class=\"n\">If<\/span><span class=\"w\">  <\/span><span class=\"n\">ident<\/span><span class=\"w\">  <\/span><span class=\"k\">is<\/span><span class=\"w\">  <\/span><span class=\"n\">NULL<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"n\">the<\/span><span class=\"w\">  <\/span><span class=\"n\">program<\/span><span class=\"w\">   <\/span><span class=\"n\">name<\/span><span class=\"w\">   <\/span><span class=\"k\">is<\/span><span class=\"w\">   <\/span><span class=\"n\">used<\/span><span class=\"o\">.<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">(<\/span><span class=\"n\">POSIX<\/span><span class=\"o\">.<\/span><span class=\"mi\">1<\/span><span class=\"o\">-<\/span><span class=\"mi\">2008<\/span><span class=\"w\"> <\/span><span class=\"n\">does<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">specify<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">behavior<\/span><span class=\"w\"> <\/span><span class=\"n\">when<\/span><span class=\"w\"> <\/span><span class=\"n\">ident<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">NULL<\/span><span class=\"o\">.<\/span><span class=\"p\">)<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">option<\/span><span class=\"w\"> <\/span><span class=\"n\">argument<\/span><span class=\"w\"> <\/span><span class=\"n\">specifies<\/span><span class=\"w\"> <\/span><span class=\"n\">flags<\/span><span class=\"w\"> <\/span><span class=\"n\">which<\/span><span class=\"w\"> <\/span><span class=\"n\">control<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">operation<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">openlog<\/span><span class=\"p\">()<\/span>\n<span class=\"w\">    <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">subsequent<\/span><span class=\"w\"> <\/span><span class=\"n\">calls<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\">  <\/span><span class=\"n\">syslog<\/span><span class=\"p\">()<\/span><span class=\"o\">.<\/span><span class=\"w\">   <\/span><span class=\"n\">The<\/span><span class=\"w\">  <\/span><span class=\"n\">facility<\/span><span class=\"w\">  <\/span><span class=\"n\">argument<\/span><span class=\"w\">  <\/span><span class=\"n\">establishes<\/span><span class=\"w\">  <\/span><span class=\"n\">a<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">default<\/span><span class=\"w\">  <\/span><span class=\"n\">to<\/span><span class=\"w\">  <\/span><span class=\"n\">be<\/span><span class=\"w\">  <\/span><span class=\"n\">used<\/span><span class=\"w\">  <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"n\">none<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">specified<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">subsequent<\/span><span class=\"w\"> <\/span><span class=\"n\">calls<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">syslog<\/span><span class=\"p\">()<\/span><span class=\"o\">.<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">Values<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">option<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">facility<\/span><span class=\"w\"> <\/span><span class=\"n\">are<\/span><span class=\"w\"> <\/span><span class=\"n\">given<\/span><span class=\"w\"> <\/span><span class=\"n\">below<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">The<\/span><span class=\"w\">  <\/span><span class=\"n\">use<\/span><span class=\"w\">  <\/span><span class=\"n\">of<\/span><span class=\"w\">  <\/span><span class=\"n\">openlog<\/span><span class=\"p\">()<\/span><span class=\"w\">  <\/span><span class=\"k\">is<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">optional<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">automatically<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">called<\/span><span class=\"w\"> <\/span><span class=\"n\">by<\/span><span class=\"w\"> <\/span><span class=\"n\">syslog<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"n\">necessary<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">which<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">case<\/span><span class=\"w\"> <\/span><span class=\"n\">ident<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">default<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">NULL<\/span><span class=\"o\">.<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">syslog<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"n\">generates<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"nb\">log<\/span><span class=\"w\"> <\/span><span class=\"n\">message<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">which<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">distributed<\/span><span class=\"w\">  <\/span><span class=\"n\">by<\/span><span class=\"w\">  <\/span><span class=\"n\">syslogd<\/span><span class=\"p\">(<\/span><span class=\"mi\">8<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">The<\/span><span class=\"w\">  <\/span><span class=\"n\">priority<\/span><span class=\"w\">  <\/span><span class=\"n\">argument<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">formed<\/span><span class=\"w\"> <\/span><span class=\"n\">by<\/span><span class=\"w\"> <\/span><span class=\"n\">ORing<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">facility<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">level<\/span><span class=\"w\"> <\/span><span class=\"n\">values<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">(<\/span><span class=\"n\">explained<\/span><span class=\"w\"> <\/span><span class=\"n\">below<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">remaining<\/span><span class=\"w\"> <\/span><span class=\"n\">arguments<\/span><span class=\"w\"> <\/span><span class=\"n\">are<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">format<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"k\">as<\/span><span class=\"w\">  <\/span><span class=\"ow\">in<\/span><span class=\"w\">  <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"ow\">and<\/span><span class=\"w\">  <\/span><span class=\"n\">any<\/span><span class=\"w\">  <\/span><span class=\"n\">arguments<\/span><span class=\"w\">  <\/span><span class=\"n\">required<\/span><span class=\"w\">  <\/span><span class=\"n\">by<\/span><span class=\"w\">  <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">format<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">except<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">two<\/span><span class=\"w\"> <\/span><span class=\"n\">character<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sequence<\/span><span class=\"w\"> <\/span><span class=\"o\">%<\/span><span class=\"n\">m<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">replaced<\/span><span class=\"w\"> <\/span><span class=\"n\">by<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"w\"> <\/span><span class=\"n\">message<\/span><span class=\"w\"> <\/span><span class=\"n\">string<\/span><span class=\"w\"> <\/span><span class=\"n\">strerror<\/span><span class=\"p\">(<\/span><span class=\"n\">errno<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">A<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">trailing<\/span><span class=\"w\"> <\/span><span class=\"n\">newline<\/span><span class=\"w\"> <\/span><span class=\"n\">may<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">added<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"n\">needed<\/span><span class=\"o\">.<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"apue"}},{"@attributes":{"term":"\u5b88\u62a4\u8fdb\u7a0b"}}]},{"title":"Linux\u4f7f\u7528KILL 0\u68c0\u6d4b\u8fdb\u7a0b\u662f\u5426\u5b58\u5728","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/kill0checkprocessifexist.html","rel":"alternate"}},"published":"2016-03-14T11:48:00+08:00","updated":"2016-03-14T11:48:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-03-14:\/cseries\/kill0checkprocessifexist.html","summary":"<p>\u4e4b\u524d\u9047\u5230\u8fc7<code>kill( pid, 0 )<\/code>\u7684\u60c5\u51b5\uff0c\u7531\u4e8e\u5e73\u5e38\u6ca1\u6ce8\u610f\u5230kill\u51fd\u6570\u7684\u5f62\u53c2\u4e3a0\u7684\u60c5\u51b5\uff0c\u4e0d\u77e5\u9053\u5b83\u7684\u4f5c\u7528\u3002\u540e\u9762\u7528<code>man 2 kill<\/code>\u547d\u4ee4\u67e5\u770b\u4e86\u4e0bkill\u51fd\u6570\u7684\u8bf4\u660e\uff0c\u53d1\u73b0\u53ef\u4ee5\u7528\u6765\u68c0\u6d4b\u8fdb\u7a0b\u7684\u5b58\u5728\u60c5\u51b5\u3002<\/p>\n<p><img alt=\"man 2 kill\u67e5\u770b\u5173\u4e8e\u5f62\u53c20\u7684\u8bf4\u660e\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/man2kill0.png\" title=\"man 2 kill\u67e5\u770b\u5173\u4e8e\u5f62\u53c20\u7684\u8bf4\u660e\"><\/p>\n","content":"<p>\u4e4b\u524d\u9047\u5230\u8fc7<code>kill( pid, 0 )<\/code>\u7684\u60c5\u51b5\uff0c\u7531\u4e8e\u5e73\u5e38\u6ca1\u6ce8\u610f\u5230kill\u51fd\u6570\u7684\u5f62\u53c2\u4e3a0\u7684\u60c5\u51b5\uff0c\u4e0d\u77e5\u9053\u5b83\u7684\u4f5c\u7528\u3002\u540e\u9762\u7528<code>man 2 kill<\/code>\u547d\u4ee4\u67e5\u770b\u4e86\u4e0bkill\u51fd\u6570\u7684\u8bf4\u660e\uff0c\u53d1\u73b0\u53ef\u4ee5\u7528\u6765\u68c0\u6d4b\u8fdb\u7a0b\u7684\u5b58\u5728\u60c5\u51b5\u3002<\/p>\n<p><img alt=\"man 2 kill\u67e5\u770b\u5173\u4e8e\u5f62\u53c20\u7684\u8bf4\u660e\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/man2kill0.png\" title=\"man 2 kill\u67e5\u770b\u5173\u4e8e\u5f62\u53c20\u7684\u8bf4\u660e\"><\/p>\n\n\n<h4>1 \u5173\u4e8ekill 0\u7684\u8bf4\u660e1<\/h4>\n<p>\u4ece\u4e0a\u56feDESCRIPTION\u533a\u57df\u7684\u6587\u5b57\u53ef\u4ee5\u770b\u51fa\uff0ckill\u51fd\u6570\u4e2d\u7684\u5f62\u53c2sig\u662f0\u7684\u8bdd\uff0c\u90a3\u4e48\u4e0d\u4f1a\u5411pid\u8fdb\u7a0b\u53d1\u9001\u4efb\u4f55\u4fe1\u53f7\uff0c\u4f46\u662f\u4ecd\u7136\u4f1a\u7ee7\u7eed\u68c0\u6d4b\u9519\u8bef\uff08\u8fdb\u7a0bID\u6216\u8005\u8fdb\u7a0b\u7ec4ID\u662f\u5426\u5b58\u5728\uff09\u3002kill\u51fd\u6570\u7684\u8fd4\u56de\u503c\u548c\u5177\u4f53\u7684\u9519\u8bef\u4fe1\u606f\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">RETURN<\/span><span class=\"w\"> <\/span><span class=\"n\">VALUE<\/span>\n<span class=\"w\">       <\/span><span class=\"n\">On<\/span><span class=\"w\">  <\/span><span class=\"n\">success<\/span><span class=\"w\">  <\/span><span class=\"p\">(<\/span><span class=\"n\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">least<\/span><span class=\"w\"> <\/span><span class=\"n\">one<\/span><span class=\"w\"> <\/span><span class=\"k\">signal<\/span><span class=\"w\"> <\/span><span class=\"n\">was<\/span><span class=\"w\"> <\/span><span class=\"n\">sent<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">zero<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">returned<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">On<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span>\n<span class=\"w\">       <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">returned<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">appropriately<\/span><span class=\"o\">.<\/span>\n\n<span class=\"n\">ERRORS<\/span>\n<span class=\"w\">       <\/span><span class=\"n\">EINVAL<\/span><span class=\"w\"> <\/span><span class=\"n\">An<\/span><span class=\"w\"> <\/span><span class=\"n\">invalid<\/span><span class=\"w\"> <\/span><span class=\"k\">signal<\/span><span class=\"w\"> <\/span><span class=\"n\">was<\/span><span class=\"w\"> <\/span><span class=\"n\">specified<\/span><span class=\"o\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"n\">EPERM<\/span><span class=\"w\">  <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"n\">does<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">have<\/span><span class=\"w\"> <\/span><span class=\"n\">permission<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">send<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"k\">signal<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">any<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span>\n<span class=\"w\">              <\/span><span class=\"n\">target<\/span><span class=\"w\"> <\/span><span class=\"n\">processes<\/span><span class=\"o\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"n\">ESRCH<\/span><span class=\"w\">  <\/span><span class=\"n\">The<\/span><span class=\"w\">  <\/span><span class=\"n\">pid<\/span><span class=\"w\">  <\/span><span class=\"ow\">or<\/span><span class=\"w\">  <\/span><span class=\"n\">process<\/span><span class=\"w\">  <\/span><span class=\"n\">group<\/span><span class=\"w\">  <\/span><span class=\"n\">does<\/span><span class=\"w\">  <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">exist<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">Note<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">an<\/span><span class=\"w\"> <\/span><span class=\"n\">existing<\/span>\n<span class=\"w\">              <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"n\">might<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">zombie<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"n\">which<\/span><span class=\"w\"> <\/span><span class=\"n\">already<\/span><span class=\"w\"> <\/span><span class=\"n\">committed<\/span><span class=\"w\"> <\/span><span class=\"n\">termina<\/span><span class=\"err\">\u2010<\/span>\n<span class=\"w\">              <\/span><span class=\"n\">tion<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">but<\/span><span class=\"w\"> <\/span><span class=\"n\">has<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">yet<\/span><span class=\"w\"> <\/span><span class=\"n\">been<\/span><span class=\"w\"> <\/span><span class=\"n\">wait<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span><span class=\"n\">ed<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"o\">.<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u7b80\u5355\u6d4b\u8bd5\u7a0b\u5e8f<\/h4>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName    chk_signal_exist.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for checking if a proccess is existing in linux.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-03-14 11:48 https:\/\/typecodes.com\/cseries\/kill0checkprocessifexist.html<\/span>\n<span class=\"cm\"> * @Compile     gcc chk_signal_exist.c -o chk_signal_exist<\/span>\n<span class=\"cm\"> *\/<\/span>\n\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;signal.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;malloc.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdlib.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n\n<span class=\"cp\">#define GO_FREE(p) \\<\/span>\n<span class=\"cp\">    free(p);    \\<\/span>\n<span class=\"cp\">    p = NULL;   \\<\/span>\n<span class=\"cp\">    printf( &quot;exit.\\n&quot; );<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Usage: %s %s<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;pid&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">-1<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">malloc<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"kt\">char<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">20<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memcpy<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">],<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">])<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * no signal is sent, but error checking is still performed;<\/span>\n<span class=\"cm\">     * this can be used to check for the existence of a process ID or process group ID.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">kill<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">atoi<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;error&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Signal[%s] exist.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">GO_FREE<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u6d4b\u8bd5\u6267\u884c<\/h4>\n<p>\u4f7f\u7528<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b<\/a>\u4e00\u6587\u4e2d\u7684Makefile\u6587\u4ef6\u8fdb\u884c\u7a0b\u5e8f\u7f16\u8bd1\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u8fdb\u884c\u7f16\u8bd1<code>gcc chk_signal_exist.c -o chk_signal_exist<\/code>\u3002<\/p>\n<p>\u5148\u6d4b\u8bd5\u8fdb\u7a0b\u4e0d\u5b58\u5728\u7684\u60c5\u51b5\uff1a\u968f\u4fbf\u8f93\u5165\u4e00\u4e2a\u8fdb\u7a0bID(23232)\u4f5c\u4e3a\u53c2\u65701<\/p>\n<p><img alt=\"\u4f7f\u7528kill 0\u6d4b\u8bd5\u8fdb\u7a0b\u4e0d\u5b58\u5728\u7684\u60c5\u51b5\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/chk_signal_exist1.png\" title=\"\u4f7f\u7528kill 0\u6d4b\u8bd5\u8fdb\u7a0b\u4e0d\u5b58\u5728\u7684\u60c5\u51b5\"><\/p>\n<p>\u7136\u540e\u6d4b\u8bd5\u8fdb\u7a0b\u5b58\u5728\u7684\u60c5\u51b5\uff1a\u5148\u4f7f\u7528ps\u547d\u4ee4\u67e5\u770b\u5df2\u5b58\u5728\u7684\u8fdb\u7a0bdaemon_sleep1(20608)\uff0c\u7136\u540e\u628a\u4f5c\u4e3a\u53c2\u65701\u4f20\u5165<\/p>\n<p><img alt=\"\u4f7f\u7528kill 0\u6d4b\u8bd5\u8fdb\u7a0b\u5b58\u5728\u7684\u60c5\u51b5\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/chk_signal_exist2.png\" title=\"\u4f7f\u7528kill 0\u6d4b\u8bd5\u8fdb\u7a0b\u5b58\u5728\u7684\u60c5\u51b5\"><\/p>\n<h4>4 \u5176\u5b83\u8bf4\u660e<\/h4>\n<p>\u7f51\u4e0a\u6709\u8d44\u6599\u8bf40\u4ee3\u8868\u7684\u662f<code>\u4fe1\u53f70<\/code>\uff0c\u4f46\u662f\u4f7f\u7528\u547d\u4ee4<code>kill -l<\/code>\u5374\u6ca1\u6709\u663e\u793a\uff0c\u6240\u4ee5\u8fd9\u91cc\u4e2a\u4eba\u89c9\u5f97\u4e0d\u5e94\u8be5\u53eb<code>\u4fe1\u53f70<\/code>\u3002\u5b83\u53ea\u662fkill\u51fd\u6570\u4e2d\u7684\u4e00\u4e2a\u666e\u901a\u5f62\u53c2\u800c\u5df2\uff0c\u5927\u4e8e0\u7684\u65f6\u5019\u53d1\u9001\u5bf9\u5e94\u4fe1\u53f7\u7ed9\u67d0\u4e2a\u8fdb\u7a0b\uff0c\u7b49\u4e8e0\u7684\u65f6\u5019\u8868\u793a\u68c0\u6d4b\u67d0\u4e2a\u8fdb\u7a0b\u662f\u5426\u5b58\u5728\u3002<\/p>\n<p><img alt=\"kill -l\u547d\u4ee4\u67e5\u770b\u6240\u6709\u652f\u6301\u7684\u4fe1\u53f7\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/killlshowsignals.png\" title=\"kill -l\u547d\u4ee4\u67e5\u770b\u6240\u6709\u652f\u6301\u7684\u4fe1\u53f7\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"kill"}},{"@attributes":{"term":"\u4fe1\u53f7"}}]},{"title":"vsnprintf\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u8f93\u51fa\u5b9e\u4f8b\uff1a\u65e5\u5fd7\u4e2d\u6253\u5370\u7a0b\u5e8f\u540d\u548c\u884c\u53f7","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/vsnprintffilenameline.html","rel":"alternate"}},"published":"2016-03-13T23:28:00+08:00","updated":"2016-03-13T23:28:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-03-13:\/cseries\/vsnprintffilenameline.html","summary":"<p>\u5728Linux C\/C++\u7a0b\u5e8f\u4e2d\u6253\u5370\u65e5\u5fd7\u65f6\uff0c\u53ef\u80fd\u4f1a\u7531\u4e8e\u9700\u8981\u6253\u5370\u672a\u77e5\u4e2a\u6570\u7684\u53d8\u91cf\u53c2\u6570\uff0c\u90a3\u4e48<code>vsnprintf<\/code>\u51fd\u6570\u5c31\u6392\u4e0a\u7528\u573a\u4e86\u3002\u8fd9\u91cc\u4f7f\u7528\u4e00\u4e2a\u7b80\u5355\u7684C\u7a0b\u5e8f\u4f8b\u5b50\uff0c\u6f14\u793a\u5728\u6253\u5370\u6e90\u7a0b\u5e8f\u6587\u4ef6\u540d\u548c\u8be5\u6253\u5370\u51fd\u6570\u6240\u5728\u7684\u884c\u53f7\u7684\u540c\u65f6\uff0c\u4f7f\u7528vsnprintf\u51fd\u6570\u6253\u5370\u4e2a\u6570\u672a\u77e5\u7684\u53c2\u6570\u53d8\u91cf\u3002<\/p>\n","content":"<p>\u5728Linux C\/C++\u7a0b\u5e8f\u4e2d\u6253\u5370\u65e5\u5fd7\u65f6\uff0c\u53ef\u80fd\u4f1a\u7531\u4e8e\u9700\u8981\u6253\u5370\u672a\u77e5\u4e2a\u6570\u7684\u53d8\u91cf\u53c2\u6570\uff0c\u90a3\u4e48<code>vsnprintf<\/code>\u51fd\u6570\u5c31\u6392\u4e0a\u7528\u573a\u4e86\u3002\u8fd9\u91cc\u4f7f\u7528\u4e00\u4e2a\u7b80\u5355\u7684C\u7a0b\u5e8f\u4f8b\u5b50\uff0c\u6f14\u793a\u5728\u6253\u5370\u6e90\u7a0b\u5e8f\u6587\u4ef6\u540d\u548c\u8be5\u6253\u5370\u51fd\u6570\u6240\u5728\u7684\u884c\u53f7\u7684\u540c\u65f6\uff0c\u4f7f\u7528vsnprintf\u51fd\u6570\u6253\u5370\u4e2a\u6570\u672a\u77e5\u7684\u53c2\u6570\u53d8\u91cf\u3002<\/p>\n\n\n<h4>1 \u5b8c\u6574\u7a0b\u5e8f<\/h4>\n<p>\u4ee3\u7801\u6bd4\u8f83\u7b80\u5355\uff0c\u5982\u679c\u9700\u8981\u628a\u5185\u5bb9\u6253\u5370\u5728\u65e5\u5fd7\u6587\u4ef6\u4e2d\u7684\u8bdd\uff0c\u8fd8\u9700\u8981\u8c03\u7528\u6587\u4ef6\u5904\u7406\u51fd\u6570\u3002\u4e3a\u4e86\u4fbf\u4e8e\u7406\u89e3\uff0c\u8fd9\u91cc\u76f4\u63a5\u628a\u5185\u5bb9\u8f93\u51fa\u5230\u63a7\u5236\u53f0\u4e0a\u4e86\u3002\u9700\u8981\u8bf4\u660e\u7684\u4e09\u4e2a\u5730\u65b9\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\u9759\u6001\u5168\u5c40\u53d8\u91cf c_FileName \u548c i_FileLineNum \u5206\u522b\u7528\u4e8e\u5b58\u50a8\u6e90\u7a0b\u5e8f\u6587\u4ef6\u540d\u548c\u6253\u5370\u51fd\u6570\u6240\u5728\u7684\u884c\u53f7\uff1b\n\u81ea\u5b9a\u4e49\u6807\u8bc6\u7b26 PRINT \u5148\u8c03\u7528\u6e90\u7a0b\u5e8f\u6587\u4ef6\u540d\u548c\u884c\u53f7\u7684\u8d4b\u503c\u51fd\u6570 Get_File_Line \uff0c\u7136\u540e\u8c03\u7528\u4e2a\u6570\u672a\u77e5\u7684\u53c2\u6570\u7684\u5904\u7406\u51fd\u6570 F_vsnprintf\uff1b\n\u7c7b\u4f3c\u4e8esprintf\u548csnprintf\u8fd9\u4e24\u4e2a\u51fd\u6570\uff0c\u76f8\u6bd4vsprintf\u51fd\u6570\uff0cvsnprintf\u52a0\u4e86\u6700\u5927\u5b57\u8282( MAXBYTES )\u7684\u9650\u5236\uff0c\u9632\u6b62\u5185\u5b58\u6ea2\u51fa\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u5177\u4f53\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName    vsnprintf_name_line.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for using vsnprintf to print the name and line-num of source file in linux.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-03-13 23:28 https:\/\/typecodes.com\/cseries\/vsnprintffilenameline.html<\/span>\n<span class=\"cm\"> * @Compile     gcc vsnprintf_name_line.c -o vsnprintf_name_line<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdarg.h&gt;<\/span>\n\n<span class=\"cp\">#define FILENAME_LEN 100<\/span>\n<span class=\"cp\">#define MAXLINE 1024<\/span>\n<span class=\"cp\">#define MAXBYTES 50<\/span>\n\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">c_FileName<\/span><span class=\"p\">[<\/span><span class=\"n\">FILENAME_LEN<\/span><span class=\"p\">];<\/span>\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\">  <\/span><span class=\"n\">i_FileLineNum<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\">\/\/Self-define a function which can print the name and line-number of the source file calling it.<\/span>\n<span class=\"cp\">#define PRINT Get_File_Line( __FILE__, __LINE__ );\\<\/span>\n<span class=\"cp\">              F_vsnprintf<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * Get the linenum and filename of the source file.<\/span>\n<span class=\"cm\"> * @Para-in:        p_FileName: The name of the source file.<\/span>\n<span class=\"cm\"> * @Para-in:        i_FileLine: The line-number of the source file.<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">Get_File_Line<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p_FileName<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i_FileLine<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">strcpy<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">c_FileName<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">p_FileName<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">i_FileLineNum<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">i_FileLine<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * Print the arguments according to the first argument, name as fmt.<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">F_vsnprintf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">fmt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">...<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">MAXLINE<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"mh\">0x00<\/span><span class=\"p\">};<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">snprintf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">MAXBYTES<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%s:%d] &quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">c_FileName<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i_FileLineNum<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">va_list<\/span><span class=\"w\"> <\/span><span class=\"n\">ap<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">va_start<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">ap<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fmt<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">vsnprintf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"o\">+<\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">buf<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">MAXLINE<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fmt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ap<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">va_end<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">ap<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">strcat<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fflush<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">stdout<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">fputs<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">stderr<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">fflush<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%s]&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Hello.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">PRINT<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%s %s]&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Hello&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;world.&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u7f16\u8bd1\u6267\u884c<\/h4>\n<p>\u4f7f\u7528<a href=\"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\u300b<\/a>\u4e00\u6587\u4e2d\u7684Makefile\u6587\u4ef6\u8fdb\u884c\u7a0b\u5e8f\u7f16\u8bd1\uff08\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u8fdb\u884c\u7f16\u8bd1<code>gcc vsnprintf_name_line.c -o vsnprintf_name_line<\/code>\uff09\uff0c\u63a5\u7740\u6267\u884c\u8be5\u7a0b\u5e8f\uff0c\u5f97\u5230\u5982\u4e0b\u56fe\u6240\u793a\u7684\u7ed3\u679c\uff1a<\/p>\n<p><img alt=\"vsnprintf\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u8f93\u51fa\u5b9e\u4f8b\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/vsnprintf_name_line.png\" title=\"vsnprintf\u5b57\u7b26\u4e32\u683c\u5f0f\u5316\u8f93\u51fa\u5b9e\u4f8b\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"vsnprintf"}},{"@attributes":{"term":"\u5b57\u7b26\u4e32\u683c\u5f0f\u5316"}}]},{"title":"Disqus\u652f\u6301\u7684HTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u65b9\u6cd5","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/disqushtmltaghighlight.html","rel":"alternate"}},"published":"2016-03-03T13:09:00+08:00","updated":"2016-03-03T13:09:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-03-03:\/mix\/disqushtmltaghighlight.html","summary":"<p>\u7531\u4e8eDisqus\u4e0d\u652f\u6301Markdown\u7684\u539f\u56e0\uff0c\u6240\u4ee5\u5728\u8bc4\u8bba\u4e2d\u4f7f\u7528HTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u5c31\u4e0d\u50cfMarkdown\u90a3\u6837\u65b9\u4fbf\u4e86\u3002\u5728\u67e5\u770b\u4e86<a href=\"https:\/\/help.disqus.com\/customer\/portal\/articles\/466253-what-html-tags-are-allowed-within-comments\" title=\"\u70b9\u51fb\u67e5\u770b\">Disqus\u5b98\u65b9<\/a>\u5173\u4e8eHTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u7684\u8bf4\u660e\u540e\uff0c\u53d1\u73b0Disqus\u53ea\u652f\u6301\u539f\u751f\u7684HTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u65b9\u5f0f\u3002<\/p>\n<p><img alt=\"Disqus\u4e2dHTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u7684\u6548\u679c\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/disqus_htmltag_highlight_result.png\" title=\"Disqus\u4e2dHTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u7684\u6548\u679c\"><\/p>\n","content":"<p>\u7531\u4e8eDisqus\u4e0d\u652f\u6301Markdown\u7684\u539f\u56e0\uff0c\u6240\u4ee5\u5728\u8bc4\u8bba\u4e2d\u4f7f\u7528HTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u5c31\u4e0d\u50cfMarkdown\u90a3\u6837\u65b9\u4fbf\u4e86\u3002\u5728\u67e5\u770b\u4e86<a href=\"https:\/\/help.disqus.com\/customer\/portal\/articles\/466253-what-html-tags-are-allowed-within-comments\" title=\"\u70b9\u51fb\u67e5\u770b\">Disqus\u5b98\u65b9<\/a>\u5173\u4e8eHTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u7684\u8bf4\u660e\u540e\uff0c\u53d1\u73b0Disqus\u53ea\u652f\u6301\u539f\u751f\u7684HTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u65b9\u5f0f\u3002<\/p>\n<p><img alt=\"Disqus\u4e2dHTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u7684\u6548\u679c\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/disqus_htmltag_highlight_result.png\" title=\"Disqus\u4e2dHTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u7684\u6548\u679c\"><\/p>\n\n\n<h4>1 \u652f\u6301\u7684HTML\u6807\u7b7e<\/h4>\n<p>Disqus\u5b98\u65b9\u7ed9\u51fa\u7684HTML\u6807\u7b7e\u5982\u4e0b\uff0cBZ\u63a8\u6d4b\u5927\u90e8\u5206\u539f\u751f\u7684HTML TAG\u5e94\u8be5\u90fd\u662f\u652f\u6301\u7684\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"p\">&lt;<\/span><span class=\"nt\">br<\/span><span class=\"p\">&gt;<\/span>Defines a single line break.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">br<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">i<\/span><span class=\"p\">&gt;<\/span>italic text<span class=\"p\">&lt;\/<\/span><span class=\"nt\">i<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">a<\/span><span class=\"p\">&gt;<\/span> Defines an anchor.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">a<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">strong<\/span><span class=\"p\">&gt;<\/span> Defines bold text.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">strong<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">blockquote<\/span><span class=\"p\">&gt;<\/span> Defines a long quotation.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">blockquote<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">caption<\/span><span class=\"p\">&gt;<\/span> Defines a table caption.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">caption<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">cite<\/span><span class=\"p\">&gt;<\/span> Defines a citation.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">cite<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">em<\/span><span class=\"p\">&gt;<\/span> Defines italic text.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">em<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span> Defines a paragraph.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">span<\/span><span class=\"p\">&gt;<\/span> Defines a section in a document.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">span<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">s<\/span><span class=\"p\">&gt;<\/span> Defines strikethrough text.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">s<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">strike<\/span><span class=\"p\">&gt;<\/span> Defines strikethrough text.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">strike<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nt\">u<\/span><span class=\"p\">&gt;<\/span> Defines strikethrough text.<span class=\"p\">&lt;\/<\/span><span class=\"nt\">u<\/span><span class=\"p\">&gt;<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u652f\u6301\u7684\u4ee3\u7801\u9ad8\u4eae\u65b9\u5f0f<\/h4>\n<p>\u53ea\u8981\u5c06\u4ee3\u7801\u5305\u542b\u5728<code>&lt;pre&gt;&lt;code class=\"\u4ee3\u7801\u7c7b\u578b\"&gt;......&lt;\/code&gt;&lt;\/pre&gt;<\/code>\u6807\u7b7e\u5185\u5c31\u884c\u4e86\u3002\u76ee\u524d\u5b98\u65b9\u652f\u6301\u7684\u4ee3\u7801\u7c7b\u578b\u5305\u62ec\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>C#\nHTML\/XML (Note: You must first HTML-encode these tags to display them)\nJava\nPython\nC\/C++\nHTTP\nJavaScript\nRuby\nCSS\nIni\nPHP\nSQL\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u6f14\u793a<\/h4>\n<p>\u8fd9\u91cc\u6f14\u793a\u4e86\u5728Disqus\u8bc4\u8bba\u4e2d\u4f7f\u7528<code>blockquote<\/code>\u6807\u7b7e\u4ee5\u53ca\u4ee3\u7801\u9ad8\u4eae\u7684\u65b9\u6cd5\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"Disqus\u4e2dHTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u7684\u4f7f\u7528\u65b9\u6cd5\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/disqus_htmltag_highlight.png\" title=\"Disqus\u4e2dHTML\u6807\u7b7e\u548c\u4ee3\u7801\u9ad8\u4eae\u7684\u4f7f\u7528\u65b9\u6cd5\"><\/p>\n<p>\u6700\u7ec8\u7684\u6548\u679c\u5982\u672c\u6587\u7b2c\u4e00\u5f20\u56fe\u7247\u6240\u793a\u3002<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"pelican"}},{"@attributes":{"term":"disqus"}},{"@attributes":{"term":"\u4ee3\u7801\u9ad8\u4eae"}}]},{"title":"\u66f4\u65b0\u535a\u5ba2\u751f\u6210\u53d1\u5e03\u53ca\u540c\u6b65GitHub\u7684Shell\u811a\u672c\uff1a\u89e3\u51b3\u6587\u4ef6\u540d\u7a7a\u683c\u95ee\u9898","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/updatesyngithubpelicanshell.html","rel":"alternate"}},"published":"2016-03-02T23:55:00+08:00","updated":"2016-03-02T23:55:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-03-02:\/linux\/updatesyngithubpelicanshell.html","summary":"<p><a href=\"https:\/\/typecodes.com\/linux\/syngithubmarkdownpelican.html\" title=\"\u300a\u540c\u6b65GitHub Markdown\u6587\u7ae0\u5230Linux\u670d\u52a1\u5668\u540e\u66f4\u65b0Pelican\u535a\u5ba2\u7684\u811a\u672c\u300b\">\u524d\u9762\u4e00\u7bc7\u6587\u7ae0<\/a>\u901a\u8fc7Linux Shell\u811a\u672c\u7684\u65b9\u5f0f\uff0c\u5b9e\u73b0\u535a\u5ba2\u751f\u6210\u53d1\u5e03\u53ca\u540c\u6b65GitHub\u7684\u7684\u529f\u80fd\uff1a\u5148\u540c\u6b65GitHub\u4e2a\u4eba\u4ed3\u5e93\u4e2d\u7684Markdown\u6587\u7ae0\u5230\u672c\u5730\uff0c\u7136\u540e\u901a\u8fc7Pelican\u7f16\u8bd1\u751f\u6210\u9759\u6001HTML\u6587\u4ef6\uff0c\u6700\u540e\u53d1\u5e03\u5230Nginx\u7684web\u76ee\u5f55\u4e0b\u9762\uff0c\u540c\u65f6\u66f4\u65b0\u5230GitHub\u4e2a\u4eba\u4e3b\u9875\uff08vfhky.github.io\uff09\u3002<\/p>\n<p>\u7531\u4e8e\u6ca1\u4ed4\u7ec6\u8003\u8651\u5230Markdown\u6587\u4ef6\u540d\u4e2d\u53ef\u80fd\u5305\u542b\u7a7a\u683c\u7684\u95ee\u9898\uff0c\u6240\u4ee5\u5728Shell\u811a\u672c\u7684\u6587\u4ef6\u540d\u904d\u5386\u65f6\uff08\u4ee3\u7801\u7b2c108\u884c\uff09\u51fa\u73b0\u4e86BUG\uff1aLinux Shell\u9ed8\u8ba4\u628a\u7a7a\u683c\u7a7a\u683c\u505a\u4e3a\u503c\u4e0e\u503c\u4e4b\u95f4\u7684\u5206\u9694\u7b26\uff0c\u6240\u4ee5\u539f\u672c\u4e00\u4e2a\u5e26\u7a7a\u683c\u7684\u6587\u4ef6\u540d\u5c31\u88ab\u62c6\u5206\u6210\u4e86\u51e0\u4e2a\u6587\u4ef6\u540d\u3002<\/p>\n<p><img alt=\"CentOS7.2\u670d\u52a1\u5668\u9ed8\u8ba4\u7684IFS\u4e3a\u7a7a\u503c\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/centos_ifs_default.png\" title=\"CentOS7.2\u670d\u52a1\u5668\u9ed8\u8ba4\u7684IFS\u4e3a\u7a7a\u503c\"><\/p>\n","content":"<p><a href=\"https:\/\/typecodes.com\/linux\/syngithubmarkdownpelican.html\" title=\"\u300a\u540c\u6b65GitHub Markdown\u6587\u7ae0\u5230Linux\u670d\u52a1\u5668\u540e\u66f4\u65b0Pelican\u535a\u5ba2\u7684\u811a\u672c\u300b\">\u524d\u9762\u4e00\u7bc7\u6587\u7ae0<\/a>\u901a\u8fc7Linux Shell\u811a\u672c\u7684\u65b9\u5f0f\uff0c\u5b9e\u73b0\u535a\u5ba2\u751f\u6210\u53d1\u5e03\u53ca\u540c\u6b65GitHub\u7684\u7684\u529f\u80fd\uff1a\u5148\u540c\u6b65GitHub\u4e2a\u4eba\u4ed3\u5e93\u4e2d\u7684Markdown\u6587\u7ae0\u5230\u672c\u5730\uff0c\u7136\u540e\u901a\u8fc7Pelican\u7f16\u8bd1\u751f\u6210\u9759\u6001HTML\u6587\u4ef6\uff0c\u6700\u540e\u53d1\u5e03\u5230Nginx\u7684web\u76ee\u5f55\u4e0b\u9762\uff0c\u540c\u65f6\u66f4\u65b0\u5230GitHub\u4e2a\u4eba\u4e3b\u9875\uff08vfhky.github.io\uff09\u3002<\/p>\n<p>\u7531\u4e8e\u6ca1\u4ed4\u7ec6\u8003\u8651\u5230Markdown\u6587\u4ef6\u540d\u4e2d\u53ef\u80fd\u5305\u542b\u7a7a\u683c\u7684\u95ee\u9898\uff0c\u6240\u4ee5\u5728Shell\u811a\u672c\u7684\u6587\u4ef6\u540d\u904d\u5386\u65f6\uff08\u4ee3\u7801\u7b2c108\u884c\uff09\u51fa\u73b0\u4e86BUG\uff1aLinux Shell\u9ed8\u8ba4\u628a\u7a7a\u683c\u7a7a\u683c\u505a\u4e3a\u503c\u4e0e\u503c\u4e4b\u95f4\u7684\u5206\u9694\u7b26\uff0c\u6240\u4ee5\u539f\u672c\u4e00\u4e2a\u5e26\u7a7a\u683c\u7684\u6587\u4ef6\u540d\u5c31\u88ab\u62c6\u5206\u6210\u4e86\u51e0\u4e2a\u6587\u4ef6\u540d\u3002<\/p>\n<p><img alt=\"CentOS7.2\u670d\u52a1\u5668\u9ed8\u8ba4\u7684IFS\u4e3a\u7a7a\u503c\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/centos_ifs_default.png\" title=\"CentOS7.2\u670d\u52a1\u5668\u9ed8\u8ba4\u7684IFS\u4e3a\u7a7a\u503c\"><\/p>\n\n\n<h4>1 \u89e3\u51b3\u65b9\u6cd5<\/h4>\n<p>\u7f51\u4e0a\u67e5\u627e\u76f8\u5173\u8d44\u6599\u540e\uff0c\u6709\u4e24\u79cd\u4e3b\u8981\u7684\u5b9e\u73b0\u65b9\u6cd5\uff1aMethod 1\u662f\u901a\u8fc7\u4fee\u6539<code>IFS(Internal Field Seperator: Linuxshell\u4e2d\u9884\u8bbe\u7684\u5206\u9694\u7b26\uff0c\u7528\u6765\u628acommand line\u5206\u89e3\u6210word)<\/code>\u5b9e\u73b0\u3002\u5982\u4e0a\u56fe\u6240\u793a\uff0cBZ\u7528\u547d\u4ee4<code>echo $IFS<\/code>\u67e5\u770b\u4e86\u81ea\u5df1\u7684CentOS7.2\u670d\u52a1\u5668\u9ed8\u8ba4\u7684IFS\u4e3a\u7a7a\u503c\u3002<\/p>\n<p>Method 2\u662f\u76f4\u63a5\u5728\u4f7f\u7528<code>find<\/code>\u547d\u4ee4\u904d\u5386\u6587\u4ef6\u65f6\uff0c\u628a\u7ed3\u679c\u4f5c\u4e3a<code>while read<\/code>\u7684\u8f93\u5165\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u907f\u514d\u7a7a\u683c\u4f5c\u4e3a\u6587\u4ef6\u540d\u7684\u5206\u9694\u7b26\u4e86\u3002<\/p>\n<h4>2 \u5b8c\u6574\u4ee3\u7801<\/h4>\n<p>\u6839\u636e\u8fd9\u4e24\u79cd\u65b9\u6cd5\uff0c\u4fee\u6539\u540e\u7684\u4ee3\u7801\u5982\u4e0b\uff0c\u540c\u65f6\u4e5f\u5df2\u7ecf\u66f4\u65b0\u5230\u4e86\u5f53\u524d\u811a\u672c\u6240\u5728\u7684GitHub\u5de5\u7a0b\uff1a<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span>\n<span class=\"normal\">138<\/span>\n<span class=\"normal\">139<\/span>\n<span class=\"normal\">140<\/span>\n<span class=\"normal\">141<\/span>\n<span class=\"normal\">142<\/span>\n<span class=\"normal\">143<\/span>\n<span class=\"normal\">144<\/span>\n<span class=\"normal\">145<\/span>\n<span class=\"normal\">146<\/span>\n<span class=\"normal\">147<\/span>\n<span class=\"normal\">148<\/span>\n<span class=\"normal\">149<\/span>\n<span class=\"normal\">150<\/span>\n<span class=\"normal\">151<\/span>\n<span class=\"normal\">152<\/span>\n<span class=\"normal\">153<\/span>\n<span class=\"normal\">154<\/span>\n<span class=\"normal\">155<\/span>\n<span class=\"normal\">156<\/span>\n<span class=\"normal\">157<\/span>\n<span class=\"normal\">158<\/span>\n<span class=\"normal\">159<\/span>\n<span class=\"normal\">160<\/span>\n<span class=\"normal\">161<\/span>\n<span class=\"normal\">162<\/span>\n<span class=\"normal\">163<\/span>\n<span class=\"normal\">164<\/span>\n<span class=\"normal\">165<\/span>\n<span class=\"normal\">166<\/span>\n<span class=\"normal\">167<\/span>\n<span class=\"normal\">168<\/span>\n<span class=\"normal\">169<\/span>\n<span class=\"normal\">170<\/span>\n<span class=\"normal\">171<\/span>\n<span class=\"normal\">172<\/span>\n<span class=\"normal\">173<\/span>\n<span class=\"normal\">174<\/span>\n<span class=\"normal\">175<\/span>\n<span class=\"normal\">176<\/span>\n<span class=\"normal\">177<\/span>\n<span class=\"normal\">178<\/span>\n<span class=\"normal\">179<\/span>\n<span class=\"normal\">180<\/span>\n<span class=\"normal\">181<\/span>\n<span class=\"normal\">182<\/span>\n<span class=\"normal\">183<\/span>\n<span class=\"normal\">184<\/span>\n<span class=\"normal\">185<\/span>\n<span class=\"normal\">186<\/span>\n<span class=\"normal\">187<\/span>\n<span class=\"normal\">188<\/span>\n<span class=\"normal\">189<\/span>\n<span class=\"normal\">190<\/span>\n<span class=\"normal\">191<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      github_pelican_nginx.sh<\/span>\n<span class=\"c1\"># Description:   Synchronize markdown articles with github, convert to html files using Pelican, deliver it to nginx environment.<\/span>\n<span class=\"c1\"># Simple Usage:  .\/github_pelican_nginx.sh &quot;commit_comments&quot;<\/span>\n<span class=\"c1\"># Crontab Usage: 00 01 * * * \/mydata\/backups\/bak_list\/github_pelican_nginx.sh &gt;\/dev\/null 2&gt;&amp;1<\/span>\n<span class=\"c1\"># (c) 2016 vfhky https:\/\/typecodes.com\/linux\/syngithubmarkdownpelican.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/synchronize\/github_pelican_nginx.sh<\/span>\n\n\n<span class=\"c1\"># Basic command.<\/span>\n<span class=\"nv\">FINDCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;find&quot;<\/span>\n<span class=\"nv\">MVCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\\mv -f&quot;<\/span>\n<span class=\"nv\">CPCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\\cp -rf&quot;<\/span>\n<span class=\"nv\">RMCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\\rm -rf&quot;<\/span>\n<span class=\"nv\">TARXCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;tar -zxf&quot;<\/span>\n<span class=\"nv\">TARZIPCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;tar --warning=no-file-changed -zcf&quot;<\/span>\n\n<span class=\"c1\"># Pelican compile markdown files to html.<\/span>\n<span class=\"nv\">PELICAN_COMPILE_DIR<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/pelican\n<span class=\"c1\"># Private bang in github for store your markdown files.<\/span>\n<span class=\"nv\">GITHUB_PELICAN_DIR<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/GitHub\/BlogBak\n<span class=\"c1\"># Backup dir for your website&#39;s version management.<\/span>\n<span class=\"nv\">PELICAN_TAR_DIR<\/span><span class=\"o\">=<\/span>\/usr\/share\/nginx\/html\/pelican_content_bak\n<span class=\"c1\"># Dir of your website in nginx server.<\/span>\n<span class=\"nv\">PELICAN_BLOG_DIR<\/span><span class=\"o\">=<\/span>\/usr\/share\/nginx\/html\/pelican\n<span class=\"c1\"># Dir for this shell script to generate logs automatically.<\/span>\n<span class=\"nv\">BLOG_PUBLISH_LOG_DIR<\/span><span class=\"o\">=<\/span>\/mydata\/backups\/logs\/blogpublish\n<span class=\"c1\"># Your personal homepage in github.<\/span>\n<span class=\"nv\">GITHUB_PERSONAL_PAGE<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/GitHub\/vfhky.github.io\n<span class=\"c1\"># Articles in 15 minutes are legal.<\/span>\n<span class=\"nv\">TIME_GAP<\/span><span class=\"o\">=<\/span><span class=\"m\">15<\/span>\n\n<span class=\"c1\"># Get the newest file name.<\/span>\n<span class=\"c1\">#Newest_File=&quot;ls -lrt| tail -n 1 | awk &#39;{print $9}&#39;&quot;<\/span>\n\n<span class=\"c1\"># Name of this shell script.<\/span>\n<span class=\"nv\">PRGNAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;github_pelican_nginx&quot;<\/span>\n\n<span class=\"c1\"># Current date format: e.g 20150505_2015.<\/span>\n<span class=\"nv\">Current_Date<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%Y%m%d_%H%M<span class=\"k\">)<\/span>\n\n<span class=\"c1\"># Check if current user is root.<\/span>\n<span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">$(<\/span>id<span class=\"w\"> <\/span>-u<span class=\"k\">)<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>!<span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;0&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Error: You must be root to run this script.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n\n<span class=\"c1\"># Check parameter.<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Usage:    .\/github_pelican_nginx.sh \\&quot;commit_comments\\&quot;&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># Run command functions.<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>ERROR<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>&gt;\/dev\/null<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%H:%M:%S:%N<span class=\"k\">)<\/span><span class=\"s2\">][error] <\/span><span class=\"nv\">$*<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">BLOG_PUBLISH_LOG_DIR<\/span><span class=\"si\">}<\/span>\/<span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span>.log\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>NOTICE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>&gt;\/dev\/null<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%H:%M:%S:%N<span class=\"k\">)<\/span><span class=\"s2\">][notice] <\/span><span class=\"nv\">$*<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">BLOG_PUBLISH_LOG_DIR<\/span><span class=\"si\">}<\/span>\/<span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span>.log\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>RUNCMD<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%H:%M:%S:%N<span class=\"k\">)<\/span><span class=\"s2\">][notice] <\/span><span class=\"nv\">$*<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">BLOG_PUBLISH_LOG_DIR<\/span><span class=\"si\">}<\/span>\/<span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span>.log\n<span class=\"w\">    <\/span><span class=\"nb\">eval<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Git pull command function.<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>Git_Pull<span class=\"o\">(){<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;git pull origin master &gt;\/dev\/null&quot;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Git commit command function.<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>Git_Commit<span class=\"o\">(){<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Usage: Git_Commit commit_comments!&quot;<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;git pull &amp;&amp; git add --all &amp;&amp; git commit -m \\&quot;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">\\&quot; &amp;&amp; git push origin master&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Get the path of markdown articles in TIME_GAP minutes.<\/span>\n<span class=\"c1\"># function Get_Files_Path(){<\/span>\n<span class=\"c1\">#    RUNCMD &quot;${FINDCMD} . -mmin -${TIME_GAP} -type f -name \\&quot;*.md\\&quot; -print0&quot;<\/span>\n<span class=\"c1\"># }<\/span>\n\n<span class=\"c1\"># Lock down permissions.You should be careful when it comes to your website for the permission of files, but it&#39;s safe using 022.<\/span>\n<span class=\"c1\"># umask 022<\/span>\n\n<span class=\"c1\"># Create the log dir.<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"nv\">$BLOG_PUBLISH_LOG_DIR<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>mkdir<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span><span class=\"nv\">$BLOG_PUBLISH_LOG_DIR<\/span>\n<span class=\"k\">fi<\/span>\n\n\n<span class=\"c1\"># Main process begin.<\/span>\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[1]Start pull from GitHub.&quot;<\/span>\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"m\">0<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">GITHUB_PELICAN_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/md_article &amp;&amp; Git_Pull&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Git pull failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\n<span class=\"c1\">#### Method 1:Chang the IFS to del with the blank word in the filename.<\/span>\n<span class=\"c1\">#old_IFS=$IFS<\/span>\n<span class=\"c1\">#IFS=$(echo -en &quot;\\n\\b&quot;)<\/span>\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[2]Start copy the pulled articles to the compile dir of PELICAN.&quot;<\/span>\n<span class=\"c1\"># New_Article_Files=$(Get_Files_Path ${GITHUB_PELICAN_DIR}\/md_article)<\/span>\n<span class=\"c1\"># You should not delete the double quotation marks in case of existing a blank in the file path.<\/span>\n<span class=\"c1\">#### Method 1: for New_Article_File in `${FINDCMD} . -mmin -${TIME_GAP} -type f -name &quot;*.md&quot;`<\/span>\n<span class=\"c1\">#### Method 2: use the while recycle.<\/span>\n<span class=\"si\">${<\/span><span class=\"nv\">FINDCMD<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>.<span class=\"w\"> <\/span>-mmin<span class=\"w\"> <\/span>-<span class=\"si\">${<\/span><span class=\"nv\">TIME_GAP<\/span><span class=\"si\">}<\/span><span class=\"w\"> <\/span>-type<span class=\"w\"> <\/span>f<span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;*.md&quot;<\/span><span class=\"p\">|<\/span><span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"nb\">read<\/span><span class=\"w\"> <\/span>New_Article_File\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>-z<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">New_Article_File<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;No articles, nothing to do.&quot;<\/span>\n<span class=\"w\">        <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;No articles, nothing to do.&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">FILE_PATH<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>dirname<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_COMPILE_DIR<\/span><span class=\"si\">}<\/span>\/content\/articles\/<span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">New_Article_File<\/span><span class=\"p\">:<\/span><span class=\"nv\">2<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;mkdir -p <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE_PATH<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">CPCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> \\&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">New_Article_File<\/span><span class=\"si\">}<\/span><span class=\"s2\">\\&quot; <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE_PATH<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"c1\">#### Method 1:Recovery the IFS setting.<\/span>\n<span class=\"c1\">#IFS=${old_IFS}<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Copy the pulled articles failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[3]Start compile in pelican.&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_COMPILE_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; make publish &gt; \/dev\/null&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Compile in pelican failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[4]Start generate a tar packgage and move it to the backup dir.&quot;<\/span>\n<span class=\"c1\"># The command of tar cause the problem that file changed as we read with the value 1, so we should ignore it using OR logic.<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_COMPILE_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/output &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">TARZIPCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz . || <\/span><span class=\"si\">${<\/span><span class=\"nv\">MVCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_BLOG_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Generate a tar packgage failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[5]Start unpack the target files.&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_BLOG_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">TARXCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">MVCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_TAR_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Unpack the target files failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># if [ $# -eq 1 ]; then<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Ready to synchronize to the homepage on github.com.&quot;<\/span>\n<span class=\"w\">    <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[6]Start copy the packgage to the local homepage bang cloned from remote in GitHub.&quot;<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">CPCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_TAR_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/<\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz <\/span><span class=\"si\">${<\/span><span class=\"nv\">GITHUB_PERSONAL_PAGE<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">GITHUB_PERSONAL_PAGE<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">TARXCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">RMCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz&quot;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Copy the packgage to the local homepage bang failed!&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n\n<span class=\"w\">    <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[7]Start synchronize website to my homepage on GitHub.&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># read -p &quot;Please input your comments on this commitment: &quot; COMMIT_COMMENTS<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># while [[ -z &quot;${COMMIT_COMMENTS}&quot; ]]<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># do<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#   read -p &quot;Comments can not be empty.Please input again: &quot; COMMIT_COMMENTS<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># done<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># RUNCMD &quot;Git_Commit \\&quot;${COMMIT_COMMENTS}\\&quot;&quot;<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;Git_Commit \\&quot;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">\\&quot;&quot;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Synchronize website to GitHub failed!&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n<span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Not synchronize your weibsite to the homepage on github.com.&quot;<\/span>\n<span class=\"w\">    <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[6]Not synchronize your weibsite to the homepage on github.com.&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;------END------&quot;<\/span>\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u811a\u672c\u6267\u884c\u7ed3\u679c<\/h4>\n<p><img alt=\"github_pelican_nginx\u811a\u672c\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2016\/03\/github_pelican_nginx_excute_log.png\" title=\"github_pelican_nginx\u811a\u672c\u6267\u884c\u7ed3\u679c\"><\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"pelican"}},{"@attributes":{"term":"github"}},{"@attributes":{"term":"markdown"}}]},{"title":"\u4e00\u4e2asigprocmask\u548csigsuspend\u51fd\u6570\u7684\u7efc\u5408\u5e94\u7528","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/sigprocmasksigsuspendapp.html","rel":"alternate"}},"published":"2016-02-29T11:39:00+08:00","updated":"2016-02-29T11:39:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-02-29:\/cseries\/sigprocmasksigsuspendapp.html","summary":"<p>\u5728Linux\u670d\u52a1\u7aef\u540e\u53f0\u5f00\u53d1\u4e2d\uff0c\u7ecf\u5e38\u4f1a\u7528\u5230\u4fe1\u53f7\u5904\u7406\u51fd\u6570\uff1a<code>sigprocmask<\/code>\u548c<code>sigsuspend<\/code>\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u4e00\u4e2a\u7efc\u5408\u5b9e\u4f8b\u6f14\u793a\u5982\u4f55\u4f7f\u7528sigprocmask\u51fd\u6570\u5c4f\u853d\u76ee\u6807\u4fe1\u53f7\uff08\u4fe1\u53f7\u63a9\u7801\uff09\u4ee5\u53casigsuspend\u51fd\u6570\u6302\u8d77\u8fdb\u7a0b\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u7f16\u8bd1\u6267\u884csigprocmask_sigsuspend\u7a0b\u5e8f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/sigprocmask_sigsuspend_init.png\" title=\"Linux\u4e2d\u7f16\u8bd1\u6267\u884csigprocmask_sigsuspend\u7a0b\u5e8f\"><\/p>\n","content":"<p>\u5728Linux\u670d\u52a1\u7aef\u540e\u53f0\u5f00\u53d1\u4e2d\uff0c\u7ecf\u5e38\u4f1a\u7528\u5230\u4fe1\u53f7\u5904\u7406\u51fd\u6570\uff1a<code>sigprocmask<\/code>\u548c<code>sigsuspend<\/code>\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u4e00\u4e2a\u7efc\u5408\u5b9e\u4f8b\u6f14\u793a\u5982\u4f55\u4f7f\u7528sigprocmask\u51fd\u6570\u5c4f\u853d\u76ee\u6807\u4fe1\u53f7\uff08\u4fe1\u53f7\u63a9\u7801\uff09\u4ee5\u53casigsuspend\u51fd\u6570\u6302\u8d77\u8fdb\u7a0b\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u7f16\u8bd1\u6267\u884csigprocmask_sigsuspend\u7a0b\u5e8f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/sigprocmask_sigsuspend_init.png\" title=\"Linux\u4e2d\u7f16\u8bd1\u6267\u884csigprocmask_sigsuspend\u7a0b\u5e8f\"><\/p>\n\n\n<h4>1 sigprocmask\u548csigsuspend\u51fd\u6570\u7684\u8bf4\u660e<\/h4>\n<p>\u5173\u4e8e<code>sigprocmask<\/code>\u51fd\u6570\u7684\u8bf4\u660e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">\u5934\u6587\u4ef6\uff1a<\/span><span class=\"w\">    <\/span><span class=\"c1\">#include &lt;signal.h&gt;<\/span>\n<span class=\"err\">\u51fd\u6570\uff1a<\/span><span class=\"w\">     <\/span><span class=\"nb nb-Type\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">sigprocmask<\/span><span class=\"p\">(<\/span><span class=\"nb nb-Type\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">how<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">sigset_t<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">set<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">sigset_t<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">oldset<\/span><span class=\"p\">);<\/span>\n<span class=\"err\">\u529f\u80fd\uff1a<\/span><span class=\"w\">     <\/span><span class=\"err\">\u7528\u4e8e\u83b7\u53d6\u6216\u8005\u6539\u53d8\u5f53\u524d\u8fdb\u7a0b\u7684\u4fe1\u53f7\u63a9\u7801\uff08\u5f53\u524d\u8fdb\u7a0b\u5c4f\u853d\u7684\u4fe1\u53f7\u96c6\uff09\u3002<\/span>\n<span class=\"err\">\u8fd4\u56de\u503c\uff1a<\/span><span class=\"w\">    <\/span><span class=\"mi\">0<\/span><span class=\"err\">\u6210\u529f\uff0c<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"err\">\u5931\u8d25\uff08\u5177\u4f53\u539f\u56e0\u7531<\/span><span class=\"n\">errno\u503c\u8868\u793a<\/span><span class=\"err\">\uff09\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5173\u4e8e<code>sigsuspend<\/code>\u51fd\u6570\u7684\u8bf4\u660e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">\u5934\u6587\u4ef6\uff1a<\/span><span class=\"w\">    <\/span><span class=\"c1\">#include &lt;signal.h&gt;<\/span>\n<span class=\"err\">\u51fd\u6570\uff1a<\/span><span class=\"w\">     <\/span><span class=\"nb nb-Type\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">sigsuspend<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"n\">sigset_t<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">mask<\/span><span class=\"p\">);<\/span>\n<span class=\"err\">\u529f\u80fd\uff1a<\/span><span class=\"w\">     <\/span><span class=\"err\">\u963b\u585e\u5f53\u524d\u8fdb\u7a0b\uff08<\/span><span class=\"n\">TASK_INTERRUPTIBLE\u53ef\u4e2d\u65ad\u72b6\u6001<\/span><span class=\"err\">\uff09\uff0c\u7b49\u5f85<\/span><span class=\"n\">mask\u4fe1\u53f7\u96c6<\/span><span class=\"err\">\uff08\u4fe1\u53f7\u63a9\u7801\uff09\u4e4b\u5916\u7684\u4efb\u4f55\u4fe1\u53f7\u7684\u5230\u6765\u3002<\/span>\n<span class=\"w\">            <\/span><span class=\"err\">\u5728\u6536\u5230<\/span><span class=\"n\">pendmask\u4e4b\u5916<\/span><span class=\"err\">\uff09\u4fe1\u53f7\u540e\uff0c\u5148\u8c03\u7528\u8be5\u4fe1\u53f7\u7684\u5904\u7406\u51fd\u6570\uff0c\u7136\u540e\u628a\u4fe1\u53f7\u96c6<\/span><span class=\"n\">mask\u8fd8\u539f\u4e3a\u539f\u6765\u7684\u4fe1\u53f7\u96c6<\/span><span class=\"err\">\uff0c\u63a5\u7740\u4ece<\/span><span class=\"n\">sigsuspend\u8c03\u7528\u5904\u8fd4\u56de<\/span><span class=\"err\">\uff08\u8fdb\u7a0b\u6062\u590d\u6267\u884c\uff09\u3002<\/span>\n<span class=\"err\">\u8fd4\u56de\u503c\uff1a<\/span><span class=\"w\">    <\/span><span class=\"err\">\u8be5\u7cfb\u7edf\u8c03\u7528\u59cb\u7ec8\u8fd4\u56de<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"err\">\uff0c\u5e76\u5c06<\/span><span class=\"n\">errno\u8bbe\u7f6e\u4e3aEINTR<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u5b8c\u6574\u7684\u7a0b\u5e8f\u5b9e\u4f8b<\/h4>\n<p>\u5728CentOS\u670d\u52a1\u5668\u4e2d\u4f7f\u7528\u7f16\u8bd1\u5e76\u6267\u884c\u4e0b\u9762\u8fd9\u6bb5\u7a0b\u5e8f\uff0c\u6548\u679c\u5982\u4e0a\u56fe\u6240\u793a\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName    sigprocmask_sigsuspend.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for using sigprocmask and sigsuspend functions in linux.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-02-29 11:21 https:\/\/typecodes.com\/cseries\/sigprocmasksigsuspendapp.html<\/span>\n<span class=\"cm\"> * @Compile     gcc sigprocmask_sigsuspend.c -o sigprocmask_sigsuspend<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdlib.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/types.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;unistd.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;signal.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;errno.h&gt;<\/span>\n\n<span class=\"c1\">\/\/Signal handle function.<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">sig_handler<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">signal<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Receive signal=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">signal<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;getpid=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">getpid<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/Register a signal.<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sigaction<\/span><span class=\"w\"> <\/span><span class=\"n\">new_act<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigemptyset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_mask<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_handler<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">sig_handler<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_flags<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaction<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGUSR1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaction<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGUSR2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaction<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGINT<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/Add SIGINT, SIGUSR1\/SIGUSR2 signals to the signal-set of new_set.<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">sigset_t<\/span><span class=\"w\"> <\/span><span class=\"n\">new_set<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">old_set<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigemptyset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_set<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaddset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_set<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGINT<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span><span class=\"w\">              <\/span><span class=\"c1\">\/\/2<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaddset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_set<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGUSR1<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span><span class=\"w\">             <\/span><span class=\"c1\">\/\/10<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/sigaddset( &amp;new_set, SIGUSR2 );           \/\/12<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * Repalce the old mask set with the new mask set.Thus the process will block the signal of SIGINT and SIGUSR1, <\/span>\n<span class=\"cm\">     * but it will excute the function of sig_handler when the signal such as SIGUSR2 other than SIGINT, SIGUSR1 arrives.<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigprocmask<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIG_SETMASK<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_set<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">old_set<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/Add SIGUSR1 and SIGUSR2 signals to the signal-set of pendmask.<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">sigset_t<\/span><span class=\"w\"> <\/span><span class=\"n\">pendmask<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigemptyset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">pendmask<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaddset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">pendmask<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGUSR1<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span><span class=\"w\">            <\/span><span class=\"c1\">\/\/10<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaddset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">pendmask<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGUSR2<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span><span class=\"w\">            <\/span><span class=\"c1\">\/\/12<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/Replaces the signal mask of the process with pendmask temporarily and suspends the process until delivery of a signal whose action is to invoke a signal handler or to terminate a process.<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">sigsuspend<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">pendmask<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Sigsuspend returned with value[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">EINTR<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%d]Interrupted by a signal.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;--while.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">sleep<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u53d1\u9001SIGUSR1\u548cSIGUSR2\u4fe1\u53f7<\/h4>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u4f7f\u7528<code>kill<\/code>\u547d\u4ee4\u5411\u8fdb\u7a0b\uff08PID:7154\uff09\u53d1\u9001<code>SIGUSR1<\/code>\u548c<code>SIGUSR2<\/code>\u4fe1\u53f7\u3002<\/p>\n<p><img alt=\"\u53d1\u9001SIGUSR1\u548cSIGUSR2\u4fe1\u53f7\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/kill_sigusr1_sigusr2.png\" title=\"\u53d1\u9001SIGUSR1\u548cSIGUSR2\u4fe1\u53f7\"><\/p>\n<p>\u7531\u4e8e<code>sigsuspend<\/code>\u51fd\u6570\u628a\u4fe1\u53f7<code>SIGUSR1<\/code>\u548c<code>SIGUSR2<\/code>\u52a0\u5165\u5230\u4fe1\u53f7\u63a9\u7801<code>pendmask<\/code>\u4e2d\uff0c\u6240\u4ee5\u8fd9\u4e24\u4e2a\u4fe1\u53f7\u7684\u5230\u6765\u5bf9\u5f53\u524d\u8fdb\u7a0b\u6ca1\u6709\u4efb\u4f55\u5f71\u54cd\u3002<\/p>\n<h4>4 \u53d1\u9001SIGINT\u4fe1\u53f7<\/h4>\n<p>\u4f7f\u7528\u547d\u4ee4<code>kill -SIGINT 7154<\/code>\u5411\u5f53\u524d\u8fdb\u7a0b\uff08PID:7154\uff09\u53d1\u9001<code>SIGINT<\/code>\u4fe1\u53f7\u3002\u7531\u4e8e\u8be5\u4fe1\u53f7\u4e0d\u5728\u4fe1\u53f7\u63a9\u7801<code>pendmask<\/code>\u4e2d\uff0c\u6240\u4ee5\u5148\u8c03\u7528<code>SIGINT<\/code>\u4fe1\u53f7\u7684\u5904\u7406\u51fd\u6570sig_handler\uff0c\u7136\u540e\u628a\u73b0\u5728\u7684\u4fe1\u53f7\u96c6<code>pendmask<\/code>\u8fd8\u539f\u4e3a\u539f\u6765\u7684<code>new_set<\/code>\u4fe1\u53f7\u96c6\u3002<\/p>\n<p>\u8fd9\u65f6\uff0c\u7531\u4e8e\u4e4b\u524d\u7531\u4e8e\u4fe1\u53f7\u63a9\u7801<code>pendmask<\/code>\u88ab\u5c4f\u853d\u7684\u672a\u51b3\u4fe1\u53f7\u4fe1\u53f7<code>SIGUSR1<\/code>\u548c<code>SIGUSR2<\/code>\u7531\u5185\u6838\u91cd\u65b0\u4f20\u9012\uff0c\u6240\u4ee5\u8fdb\u7a0b\u4f1a\u6267\u884c<code>SIGUSR2<\/code>\u4fe1\u53f7\u7684\u5904\u7406\u51fd\u6570\uff08SIGUSR1\u4fe1\u53f7\u88ab\u4fe1\u53f7\u96c6new_set\u6240\u5c4f\u853d\uff0c\u56e0\u6b64\u4e0d\u4f1a\u6267\u884c\uff09\u3002\u63a5\u7740\u8fdb\u7a0b\u4ecesigsuspend\u8c03\u7528\u5904\u8fd4\u56de\uff0c\u6062\u590d\u6267\u884c\uff08\u8fdb\u5165while\u5faa\u73af\uff09\u3002<\/p>\n<p><img alt=\"\u6267\u884cSIGINT\u548cSIGUSR2\u4fe1\u53f7\u5904\u7406\u51fd\u6570\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/sigint_while.png\" title=\"\u6267\u884cSIGINT\u548cSIGUSR2\u4fe1\u53f7\u5904\u7406\u51fd\u6570\"><\/p>\n<p>\u5982\u679c\u7ee7\u7eed\u53d1\u9001<code>SIGINT<\/code>\u4fe1\u53f7\uff0c\u56e0\u4e3a\u88ab\u52a0\u5165\u5230\u4e86\u5f53\u524d\u4fe1\u53f7\u63a9\u7801<code>new_set<\/code>\u4e2d\uff0c\u6240\u4ee5\u4e5f\u4f1a\u88ab\u5c4f\u853d\uff08\u5bf9\u8fdb\u7a0b\u65e0\u5f71\u54cd\uff09\u3002\u6700\u540e\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4<code>kill -SIGKILL 7154<\/code>\u5c06\u6574\u4e2a\u8fdb\u7a0b\u5173\u95ed\u3002<\/p>\n<p><img alt=\"\u7ee7\u7eed\u53d1\u9001SIGINT\u548cSIGKILL\u4fe1\u53f7\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/sigint_sigkill.png\" title=\"\u7ee7\u7eed\u53d1\u9001SIGINT\u548cSIGKILL\u4fe1\u53f7\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"sigprocmask"}},{"@attributes":{"term":"sigsuspend"}},{"@attributes":{"term":"\u4fe1\u53f7"}}]},{"title":"Linux TCP\u901a\u4fe1\u51fa\u73b0CLOSE_WAIT\u540e\u5bfc\u81f4\u670d\u52a1\u7aef\u8fdb\u7a0b\u6302\u6389","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/tcpclosewaitsigpipe.html","rel":"alternate"}},"published":"2016-02-29T08:39:00+08:00","updated":"2016-02-29T08:39:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-02-29:\/cseries\/tcpclosewaitsigpipe.html","summary":"<p>\u5728<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait2.html\" title=\"\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e8c\uff09\u300b\">\u524d\u6587<\/a>\u4e2d\u8bb2\u8ff0\u4e86Linux\u670d\u52a1\u7aefTCP\u901a\u4fe1\u51fa\u73b0<code>CLOSE_WAIT<\/code>\u72b6\u6001\u7684\u539f\u56e0\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u4e00\u4e2a\u5b9e\u4f8b\u6f14\u793a\u5b83\u4e2a\u4e00\u4e2a\u201c\u6076\u52a3\u201d\u5f71\u54cd\uff1a\u76f4\u63a5\u4f7f\u670d\u52a1\u7aef\u8fdb\u7a0bDown\u6389\u3002<\/p>\n<p><img alt=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/tcp_socket_server1.png\" title=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\"><\/p>\n","content":"<p>\u5728<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait2.html\" title=\"\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e8c\uff09\u300b\">\u524d\u6587<\/a>\u4e2d\u8bb2\u8ff0\u4e86Linux\u670d\u52a1\u7aefTCP\u901a\u4fe1\u51fa\u73b0<code>CLOSE_WAIT<\/code>\u72b6\u6001\u7684\u539f\u56e0\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u4e00\u4e2a\u5b9e\u4f8b\u6f14\u793a\u5b83\u4e2a\u4e00\u4e2a\u201c\u6076\u52a3\u201d\u5f71\u54cd\uff1a\u76f4\u63a5\u4f7f\u670d\u52a1\u7aef\u8fdb\u7a0bDown\u6389\u3002<\/p>\n<p><img alt=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/tcp_socket_server1.png\" title=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\"><\/p>\n\n\n<h4>1 CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3<\/h4>\n<p>\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u5728\u865a\u62df\u673aCentOS7\u670d\u52a1\u5668\uff08192.168.1.178\uff09\u4e2d\u6253\u5f00\u4e00\u4e2a\u7ec8\u7aef\u754c\u9762\uff0c\u5efa\u7acb8000\u7aef\u53e3\u7684\u76d1\u542c\u670d\u52a1\uff08PID:13035\uff09\u3002\u6240\u7528\u4ee3\u7801\u5982\u4e0b\uff0c\u548c<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait1.html\" title=\"\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e00\uff09\u300b\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u4e2d\u7684\u7a0b\u5e8f\u5927\u4f53\u4e00\u6837\uff0c\u53ea\u662f\u591a\u4e86\u4e00\u4e2aSIGPIPE\u4fe1\u53f7\u5904\u7406\u4ee5\u53ca\u81ea\u52a8\u56de\u590d(Auto response from server.)\u90e8\u5206\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span>\n<span class=\"normal\">73<\/span>\n<span class=\"normal\">74<\/span>\n<span class=\"normal\">75<\/span>\n<span class=\"normal\">76<\/span>\n<span class=\"normal\">77<\/span>\n<span class=\"normal\">78<\/span>\n<span class=\"normal\">79<\/span>\n<span class=\"normal\">80<\/span>\n<span class=\"normal\">81<\/span>\n<span class=\"normal\">82<\/span>\n<span class=\"normal\">83<\/span>\n<span class=\"normal\">84<\/span>\n<span class=\"normal\">85<\/span>\n<span class=\"normal\">86<\/span>\n<span class=\"normal\">87<\/span>\n<span class=\"normal\">88<\/span>\n<span class=\"normal\">89<\/span>\n<span class=\"normal\">90<\/span>\n<span class=\"normal\">91<\/span>\n<span class=\"normal\">92<\/span>\n<span class=\"normal\">93<\/span>\n<span class=\"normal\">94<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    server_socket.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for creating a listen as a server and simulate generate a sigpipe signal in linux.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-02-29 08:01 https:\/\/typecodes.com\/cseries\/tcpclosewaitsigpipe.html<\/span>\n<span class=\"cm\"> * @Compile     gcc server_socket.c -o server_socket<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/types.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/socket.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;netinet\/in.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;arpa\/inet.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;errno.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;signal.h&gt;<\/span>\n\n<span class=\"c1\">\/\/Whether add a signal handle.<\/span>\n<span class=\"cp\">#define SIGNAL_HANDLE 0<\/span>\n\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">sig_handle<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">signal<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Receive a signal=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">signal<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">llOpt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">sin_size<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">BUFSIZ<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_family<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">s_addr<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">INADDR_ANY<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_port<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">htons<\/span><span class=\"p\">(<\/span><span class=\"mi\">8000<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"cp\">#if SIGNAL_HANDLE<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sigaction<\/span><span class=\"w\"> <\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">old_act<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_handler<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">sig_handle<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_flags<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigemptyset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">.<\/span><span class=\"n\">sa_mask<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaction<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGPIPE<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">old_act<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigaction<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGINT<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">new_act<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">old_act<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span><span class=\"w\">    <\/span>\n<span class=\"w\">    <\/span><span class=\"cp\">#endif<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">socket<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SOCK_STREAM<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span><span class=\"w\">  <\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;socket&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">setsockopt<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SOL_SOCKET<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SO_REUSEADDR<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">llOpt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">llOpt<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">bind<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;bind&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">listen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">sin_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Server is listening with pid=[%d].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">getpid<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">accept<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">sin_size<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;accept&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/Print the ip address and port of client.<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Accept client[%s:%u].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">inet_ntoa<\/span><span class=\"p\">(<\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_addr<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">ntohs<\/span><span class=\"p\">(<\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_port<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">send<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Auto response from server.&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;Auto response from server.&quot;<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">BUFSIZ<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">recv<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">,<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">BUFSIZ<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">len<\/span><span class=\"p\">]<\/span><span class=\"o\">=<\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Message from client=[%s]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u5728Linux\u4e2d\u5229\u7528telnet\u547d\u4ee4\u521b\u5efa\u4e00\u4e2a\u5ba2\u6237\u7aef<\/h4>\n<p>\u65b0\u5efa\u4e00\u4e2ashell\u811a\u672cnetstat_nap.sh\uff0c\u91cc\u9762\u53ea\u5305\u542b\u4e00\u6761\u6709\u6548\u547d\u4ee4<code>netstat -nap|head -n 2;netstat -nap|grep 8000<\/code>\u3002<\/p>\n<p>\u518d\u6253\u5f00\u4e00\u4e2aLinux\u7ec8\u7aef\u754c\u9762\uff0c\u7136\u540e\u8f93\u5165\u547d\u4ee4<code>telnet 192.168.1.177 8000<\/code>\u4f5c\u4e3a\u5ba2\u6237\u7aef\u5efa\u7acb\u4e0e\u670d\u52a1\u7aef\u7684TCP\u8fde\u63a5\u3002\u8fd9\u65f6\u6267\u884c\u811a\u672c<code>.\/netstat_nap.sh<\/code>\u53ef\u4ee5\u770b\u5230Linux\u5ba2\u6237\u7aef\uff08PID:13045\uff09\u548c\u670d\u52a1\u7aef\uff08PID:13035\uff09\u7684TCP\u901a\u4fe1\u5df2\u7ecf\u53d8\u6210<code>ESTABLISHED<\/code>\u72b6\u6001\uff0c\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/tcp_linux_client_established.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<h4>3 \u5728Windows\u4e2d\u5229\u7528telnet\u547d\u4ee4\u521b\u5efa\u4e00\u4e2a\u5ba2\u6237\u7aef<\/h4>\n<p>\u5728Windows\u4e3b\u673a\uff08192.168.1.110\uff09\u4e2d\u6253\u5f00\u4e00\u4e2aPowerShell\u7ec8\u7aef\u754c\u9762\uff0c\u7136\u540e\u8f93\u5165\u547d\u4ee4<code>telnet 192.168.1.177 8000<\/code>\u4f5c\u4e3a\u5ba2\u6237\u7aef\u5efa\u7acb\u4e0eLinux\u670d\u52a1\u7aef\u7684TCP\u8fde\u63a5\u3002<\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u6267\u884c\u811a\u672c<code>.\/netstat_nap.sh<\/code>\uff0c\u53ef\u4ee5\u770b\u5230Windows\u5ba2\u6237\u7aef\uff08\u7aef\u53e3:64012\uff09\u548c\u670d\u52a1\u7aef\uff08PID:13035\uff09\u7684TCP\u901a\u4fe1\u5df2\u7ecf\u53d8\u6210<code>ESTABLISHED<\/code>\u72b6\u6001\u3002\u540c\u65f6\u4f7f\u7528\u547d\u4ee4<code>lsof -i:8000<\/code>\uff0c\u53ef\u4ee5\u770b\u5230\u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6\u3002\u6b64\u65f6\uff0c\u5904\u4e8e<code>LISTEN<\/code>\u72b6\u6001\u768413035\u8fdb\u7a0b\u5bf9\u5e94\u7684<code>Recv-Q<\/code>\uff08\u8868\u793a\u5185\u6838\u4e2d\u5df2\u7ecf\u63a5\u6536\u7684\u961f\u5217\uff09\u4ece0\u53d8\u6210\u4e861\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/win_client_netstat_lsof.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<h4>4 \u76f4\u63a5\u5173\u95edWindows telnet\u5ba2\u6237\u7aef\u754c\u9762\u5e76\u4f7f\u7528Wireshark\u6293\u5305<\/h4>\n<p>\u5728\u76f4\u63a5\u5173\u95edtelnet\u754c\u9762\u540e\uff0c\u7ee7\u7eed\u4f7f\u7528netstat_nap.sh\u811a\u672c\u548clsof\u547d\u4ee4\u53d1\u73b0\u521a\u624d\u5efa\u7acb\u7684TCP\u901a\u4fe1\u51fa\u73b0\u4e86<code>CLOSE_WAIT<\/code>\u7684\u72b6\u6001\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/win_client_close_netstat_lsof1.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<p>\u5728\u7b49\u5f852\u5206\u949f\u540e\uff0c\u5728Windows\u4e2d\u4f7f\u7528Wireshark\u6293\u5305\u53d1\u73b0\u7531\u4e8e\u5ba2\u6237\u7aef\u53d1\u9001\u4e86<code>RST+ACK<\/code>\u62a5\u6587\u7ed9Linux\u670d\u52a1\u7aef\uff0c\u6240\u4ee5\u4e8c\u8005\u7684TCP\u94fe\u8def\u5df2\u7ecf\u88ab\u590d\u4f4d\u4e86\uff1a<\/p>\n<p><img alt=\"\u5728Windows\u4e2d\u4f7f\u7528Wireshark\u6293\u5305\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/win_client_wireshark1.png\" title=\"\u5728Windows\u4e2d\u4f7f\u7528Wireshark\u6293\u5305\"><\/p>\n<p>\u8fd9\u65f6\u5728Linux\u4e2d\u518d\u6b21\u4f7f\u7528netstat_nap.sh\u811a\u672c\u548clsof\u547d\u4ee4\u53d1\u73b0<code>CLOSE_WAIT<\/code>\u7684\u72b6\u6001\u5df2\u7ecf\u4e0d\u5b58\u5728\u4e86\u3002\u4f46\u662f\u4ece\u4e0b\u56fe\u4e2d\u53ef\u4ee5\u770b\u5230\u5904\u4e8e<code>LISTEN<\/code>\u72b6\u6001\u7684<code>Recv-Q<\/code>\u5bf9\u5e94\u7684\u503c\u8fd8\u662f\u4e3a1\uff0c\u4e5f\u5c31\u662f\u7531\u5185\u6838\u7ef4\u62a4\u7684\u5df2\u5b8c\u6210\u63e1\u624b\u7684\u961f\u5217\u4e2d\u7684\u8fd9\u4e2a\u8fde\u63a5\u8fd8\u7b49\u5f85\u7740\u670d\u52a1\u7aef\u7a0b\u5e8f<code>\u8bfb\u53d6<\/code>\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/win_client_close_netstat_lsof2.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<h4>5 \u5173\u95edLinux telnet\u5ba2\u6237\u7aef<\/h4>\n<p>\u5728Windows\u5173\u95edtelnet\u5ba2\u6237\u7aef\u754c\u9762\u5e76\u53d1\u9001<code>RST+ACK<\/code>\u62a5\u6587\u540e\uff0c\u5173\u95ed\u5c0f\u82822\u4e2d\u5728Linux\u4e2d\u6253\u5f00\u7684telnet\u5ba2\u6237\u7aef\u3002\u8fd9\u65f6Linux\u670d\u52a1\u7aef\u8fdb\u7a0b\u4f1a\u6267\u884c\u7b2c90\u884c\u5904\u7684close()\u51fd\u6570\uff0c\u4e5f\u5373\u6267\u884c\u6b63\u5e38<code>\u56db\u6b21\u6325\u624b<\/code>\u5173\u95edTCP\u8fde\u63a5\u3002<\/p>\n<p>\u63a5\u7740Linux\u670d\u52a1\u7aef\u8fdb\u7a0b\u7ee7\u7eed\u4ece\u5185\u6838\u4e2d\u5df2\u5b8c\u6210\u8fde\u63a5\u961f\u5217\u4e2d\u53d6\u51fa\u5df2\u5b8c\u6210\u8fde\u63a5\uff0c\u8fd9\u6837\u4e4b\u524d\u5c0f\u82823\u4e2dWindows telnet\u5efa\u7acb\u7684\u5ba2\u6237\u7aef\u8fde\u63a5\u88ab\u8bfb\u53d6\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u670d\u52a1\u7aef\u8fdb\u7a0b\u6253\u5370\u4e86\u7b2c80\u884c\u51fa\u7684\u6570\u636e\uff08Accept client[192.168.1.110:64012].\uff09\uff0c\u4f46\u662f\u670d\u52a1\u7aef\u8fdb\u7a0b\u5374\u6302\u6389\u4e86\u3002<\/p>\n<p><img alt=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/tcp_socket_server2.png\" title=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\"><\/p>\n<p>\u8fd9\u65f6\u5728Linux\u4e2d\u518d\u6b21\u4f7f\u7528netstat_nap.sh\u811a\u672c\u548clsof\u547d\u4ee4\uff1a<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/win_client_close_netstat_lsof3.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\">  <\/p>\n<h4>6 \u539f\u56e0\u5206\u6790<\/h4>\n<p>\u7531\u4e8eWindows\u5ba2\u6237\u7aef\u7684TCP\u94fe\u8def\u5728\u5c0f\u82824\u4e2d\u7531\u4e8e<code>RST<\/code>\u7684\u7f18\u6545\u800c\u5173\u95ed\u4e86\uff0c\u6ca1\u6709\u8bfb\u7aef\u3002\u90a3\u4e48\u5f53Linux\u670d\u52a1\u7aef\u6267\u884c82\u884c\u7684send()\u51fd\u6570\u65f6\uff0c\u5411\u4e4b\u524d\u7684socket\u63cf\u8ff0\u7b26\u53d1\u900126\u5b57\u8282\u7684\u62a5\u6587\u6570\u636e\u65f6\uff0c\u4f1a\u6536\u5230\u5185\u6838\u53d1\u9001\u8fc7\u6765\u7684<code>SIGPIPE\u4fe1\u53f7<\/code>\uff0c\u5bfc\u81f4\u670d\u52a1\u7aef\u8fdb\u7a0b\u9ed8\u8ba4\u5173\u95ed\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u5982\u679c\u60f3\u6355\u6349\u5230\u8fd9\u4e2aSIGPIPE\u4fe1\u53f7\u7684\u8bdd\uff0c\u53ef\u4ee5\u5c06\u7a0b\u5e8f17\u884c\u7684SIGNAL_HANDLE\u5b8f\u5b9a\u4e49\u503c\u6539\u62101\uff0c\u90a3\u4e48\u5c31\u4f1a\u5f97\u5230\u5982\u4e0b\u56fe\u6240\u793a\u7684\u60c5\u51b5\uff08\u8fdb\u7a0b\u80fd\u6b63\u5e38\u8fd0\u884c\u4e86\uff09\u3002<\/p>\n<p><img alt=\"Linux TCP\u901a\u4fe1\u51fa\u73b0CLOSE_WAIT\u540e\u5bfc\u81f4\u670d\u52a1\u7aef\u8fdb\u7a0b\u6302\u6389\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/close_wait_sigepipe.png\" title=\"Linux TCP\u901a\u4fe1\u51fa\u73b0CLOSE_WAIT\u540e\u5bfc\u81f4\u670d\u52a1\u7aef\u8fdb\u7a0b\u6302\u6389\"> <\/p>\n<h4>7 \u95ee\u9898\u5ef6\u4f38<\/h4>\n<p>\u5982\u679c\u5728\u7b2c4\u5c0f\u8282\u4e2d\u5173\u95edWindows\u5ba2\u6237\u7aef\u754c\u9762\u540e\uff0c\u53c8\u76f4\u63a5\u5982\u7b2c5\u5c0f\u8282\u6240\u793a\u5173\u95edLinux telnet\u5ba2\u6237\u7aef\u754c\u9762\uff0c\u90a3\u4e48\u53c8\u4f1a\u51fa\u73b0\u4ec0\u4e48\u60c5\u51b5\u5462\uff1f\u4e8e\u662f\u53c8\u91cd\u65b0\u505a\u4e86\u4e00\u904d\u6d4b\u8bd5\uff0c\u6d41\u7a0b\u540c\u4e0a\uff0c\u4e0b\u9762\u662f\u6d4b\u8bd5\u7ed3\u679c\u4ee5\u53ca\u5206\u6790\u3002<\/p>\n<p>\u5148\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\uff0c\u53d1\u73b0\u76d1\u542c\u670d\u52a1\u6b63\u5e38\uff1a<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/extend_netstat_lsof.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u548clsof\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<p>\u7136\u540e\u5206\u522b\u7528TCPDUMP\u548cWireshark\u6293\u53d6TCP\u901a\u4fe1\u5305\uff0c\u622a\u53d6\u5982\u4e0b\u6240\u793a\u3002\u53ef\u4ee5\u53d1\u73b0\u5728Linux telnet\u5ba2\u6237\u7aef\u5b8c\u6210<code>\u56db\u6b21\u6325\u624b<\/code>\u540e\uff0c\u670d\u52a1\u7aef\u8fdb\u7a0b\u7ee7\u7eed\u5411\u4e4b\u524dWindows telnet\u5ba2\u6237\u7aef\u5efa\u7acb\u7684socket\u63cf\u8ff0\u7b26\u53d1\u900126\u5b57\u8282\u7684\u62a5\u6587\u6570\u636e\u3002<\/p>\n<p>\u56e0\u4e3aWindows\u5ba2\u6237\u7aef\u6b64\u65f6\u5904\u4e8e<code>FIN_WAIT2<\/code>\u72b6\u6001\uff08Linux\u670d\u52a1\u7aef\u5904\u4e8e<code>CLOSE_WAIT<\/code>\u72b6\u6001\uff09\uff0c\u6240\u4ee5\u670d\u52a1\u7aef\u80fd\u7ee7\u7eed\u53d1\u5176\u53d1\u9001\u6570\u636e\uff08\u5373\u56fe\u4e2d\u7684PUSH+ACK\u62a5\u6587\uff09\uff0c\u63a5\u7740Windows\u5ba2\u6237\u7aef\u56de\u5e94<code>RST+ACK<\/code>\u62a5\u6587\uff0c\u4ece\u800c\u4e24\u8005\u7684TCP\u94fe\u8def\u590d\u4f4d\u3002<\/p>\n<p><img alt=\"\u5728Linux\u4e2d\u4f7f\u7528TCPDUMP\u6293\u5305\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/extend_tcpdump.png\" title=\"\u5728Linux\u4e2d\u4f7f\u7528TCPDUMP\u6293\u5305\"><\/p>\n<p><img alt=\"\u5728Windows\u4e2d\u4f7f\u7528Wireshark\u6293\u5305\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/win_client_wireshark2.png\" title=\"\u5728Windows\u4e2d\u4f7f\u7528Wireshark\u6293\u5305\"><\/p>\n<p>\u8fd9\u6837Linux\u670d\u52a1\u7aef\u8fdb\u7a0b\u8fd8\u662f\u80fd\u591f\u6b63\u5e38\u6267\u884c\u76d1\u542c\u4efb\u52a1\uff1a<\/p>\n<p><img alt=\"\u670d\u52a1\u7aef\u8fdb\u7a0b\u6b63\u5e38\u6267\u884c\u76d1\u542c\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/tcp_socket_server3.png\" title=\"\u670d\u52a1\u7aef\u8fdb\u7a0b\u6b63\u5e38\u6267\u884c\u76d1\u542c\"><\/p>\n<h4>8 \u5176\u5b83<\/h4>\n<p>\u7f51\u4e0a\u6709\u4eba\u628a\u8fd9\u79cd\u5ba2\u6237\u7aef\u6216\u8005\u670d\u52a1\u7aef\u5f02\u5e38\u5173\u95ed\u7684\u8fde\u63a5\u53eb\u505aTCP\u534a\u5173\u95ed\uff08Half-Close\uff09\uff0c\u4f8b\u5982\u7f51\u7ebf\u62d4\u6389\u3001\u7a81\u7136\u65ad\u7535\u7b49\uff0c\u6b64\u65f6\u5bf9\u7aef\u8fde\u63a5\u4ecd\u8ba4\u4e3a\u53cc\u65b9\u8fde\u63a5\u5904\u4e8e\u6253\u5f00\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"tcpdump"}},{"@attributes":{"term":"wireshark"}},{"@attributes":{"term":"tcp"}},{"@attributes":{"term":"close_wait"}},{"@attributes":{"term":"sigpipe"}}]},{"title":"\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e8c\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait2.html","rel":"alternate"}},"published":"2016-02-28T18:11:00+08:00","updated":"2016-02-28T18:11:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-02-28:\/cseries\/tcpdumpwiresharkclosewait2.html","summary":"<p>\u524d\u6587<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait1.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e00\uff09\u300b<\/a>\u901a\u8fc7TCPDUMP\u548cWireshark\u5728\u5229\u7528CentOS7\u4f5c\u4e3a\u670d\u52a1\u7aef\u3001Windows10\u4f5c\u4e3a\u5ba2\u6237\u7aef\uff0c\u6a21\u62df\u6f14\u793a\u4e86\u4e00\u4e2aTCP\u901a\u4fe1\u7684CLOSE_WAIT\u72b6\u6001\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u5229\u7528\u524d\u6587\u7684\u6570\u636e\u5c1d\u8bd5\u89e3\u91caLinux\u670d\u52a1\u7aef\u4ea7\u751fCLOSE_WAIT\u72b6\u6001\u7684\u539f\u56e0\u3002<\/p>\n<p><img alt=\"\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684TCP\u901a\u4fe1\u6d41\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/socket_tcpflow.png\" title=\"\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684TCP\u901a\u4fe1\u6d41\u7a0b\"><\/p>\n","content":"<p>\u524d\u6587<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait1.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e00\uff09\u300b<\/a>\u901a\u8fc7TCPDUMP\u548cWireshark\u5728\u5229\u7528CentOS7\u4f5c\u4e3a\u670d\u52a1\u7aef\u3001Windows10\u4f5c\u4e3a\u5ba2\u6237\u7aef\uff0c\u6a21\u62df\u6f14\u793a\u4e86\u4e00\u4e2aTCP\u901a\u4fe1\u7684CLOSE_WAIT\u72b6\u6001\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u5229\u7528\u524d\u6587\u7684\u6570\u636e\u5c1d\u8bd5\u89e3\u91caLinux\u670d\u52a1\u7aef\u4ea7\u751fCLOSE_WAIT\u72b6\u6001\u7684\u539f\u56e0\u3002<\/p>\n<p><img alt=\"\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684TCP\u901a\u4fe1\u6d41\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/socket_tcpflow.png\" title=\"\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684TCP\u901a\u4fe1\u6d41\u7a0b\"><\/p>\n\n\n<h4>1 \u539f\u56e0\u5206\u6790\uff1a\u4ece\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aefTCP\u901a\u4fe1\u7684\u6d41\u7a0b\u51fa\u53d1<\/h4>\n<p>\u4ece\u524d\u6587\u4e2d\u7684tcpdump\u548cWireshark\u6293\u5305\u90fd\u53ef\u770b\u5230\u5f53Windows\u5ba2\u6237\u7aef\u5173\u95ed\u540e\uff0c\u4f1a\u4e3b\u52a8\u53d1\u9001\u5e26\u6709<code>FIN+ACK<\/code>\u6807\u5fd7\u7684\u62a5\u6587\u7ed9Linux\u670d\u52a1\u7aef\u3002\u90a3\u4e48\u4ece\u4e0a\u56feTCP\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684\u901a\u4fe1\u6d41\u7a0b\u56fe\u5f00\u59cb\u5206\u6790\uff1a\u5ba2\u6237\u7aef\u5148\u8fdb\u5165<code>FIN_WAIT_1<\/code>\u72b6\u6001\uff0c\u5728\u6536\u5230\u670d\u52a1\u7aef\u5e94\u7b54\u7684<code>ACK<\/code>\u6807\u5fd7\u7684\u62a5\u6587\u540e\u8fdb\u5165<code>FIN_WAIT_2<\/code>\u72b6\u6001\uff08\u5728Windows\u4e2d\u91cd\u65b0\u6253\u5f00\u4e00\u4e2aPowerShell\u7a97\u53e3\uff0c\u7136\u540e\u8f93\u5165\u547d\u4ee4<code>netstat -na|findstr 8000<\/code>\u67e5\u770b\uff09\u3002<\/p>\n<p><img alt=\"Windows\u5ba2\u6237\u7aef\u51fa\u73b0FIN_WAIT_2\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/windows_telnet_fin_wait_2.png\" title=\"Windows\u5ba2\u6237\u7aef\u51fa\u73b0FIN_WAIT_2\u72b6\u6001\"><\/p>\n<p>\u540c\u65f6\uff0c\u670d\u52a1\u7aef\u7684TCP\u72b6\u6001\u4e5f\u5c31\u53d8\u6210\u4e86<code>CLOSE_WAIT<\/code>\u3002\u4f46\u662f\u540e\u9762\u7531\u4e8eLinux\u670d\u52a1\u7aef\u6ca1\u6709\u8c03\u7528<code>close()<\/code>\u51fd\u6570\u5173\u95edsocket\u94fe\u8def\uff0c\u4e5f\u5373\u6ca1\u6709\u53d1\u9001<code>FIN<\/code>\u6807\u5fd7\u7684\u62a5\u6587\u7ed9\u4e3b\u52a8\u5173\u95edTCP\u94fe\u8def\u7684\u5ba2\u6237\u7aef\uff0c\u6240\u4ee5\u9020\u6210\u8fd9\u4e2a\u95ee\u9898\u3002<\/p>\n<h4>2 \u539f\u56e0\u5206\u6790\uff1a\u4ece\u670d\u52a1\u7aef\u7a0b\u5e8f\u51fa\u53d1<\/h4>\n<p>\u5728\u670d\u52a1\u7aef\u7a0b\u5e8f\u7684\u7b2c69\u884c\u53ef\u4ee5\u770b\u5230\uff1a\u4e00\u65e6\u5ba2\u6237\u7aef\u5173\u95edsocket\u540e\uff0c\u670d\u52a1\u7aef\u4e5f\u4f1a\u8c03\u7528<code>close( client_sockfd );<\/code>\u6765\u5173\u95ed\u94fe\u8def\u3002\u90a3\u4e3a\u4ec0\u4e48\u8fd8\u662f\u4f1a\u51fa\u73b0<code>CLOSE_WAIT<\/code>\u73b0\u8c61\u5462\uff1f\u7b54\u6848\u662f\u56e0\u4e3a\u670d\u52a1\u7aef\u5728\u4e0e\u5ba2\u6237\u7aef<code>\u4e09\u6b21\u63e1\u624b<\/code>\u5b8c\u540e\uff0c\u53ea\u6709\u4e00\u4e2a\u8fdb\u7a0b\uff08PID:5325\uff09\u5728\u5904\u7406\u5ba2\u6237\u7aef\u7684TCP\u6570\u636e\u4ea4\u4e92\uff0c\u800c\u8fd9\u4e2a\u8fdb\u7a0b\u6b63\u5728\u5904\u7406\u5728Linux\u4e2d\u4f7f\u7528telnet\u547d\u4ee4\u5efa\u7acb\u8d77\u6765\u7684\u8fd9\u4e2a\u5ba2\u6237\u7aef\uff08PID:5331\uff09\u7684\u8bf7\u6c42\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u5728Windows\u4e2d\u4f7f\u7528telnet\u547d\u4ee4\u4f5c\u4e3a\u5ba2\u6237\u7aef\u4e0eLinux\u670d\u52a1\u7aef\u5b8c\u6210<code>\u4e09\u6b21\u63e1\u624b<\/code>\u540e\uff0c\u6ca1\u6709\u76f8\u5173\u8fdb\u7a0b\u6765\u5904\u7406\u3002\u8fd9\u70b9\u4e5f\u53ef\u4ee5\u901a\u8fc7<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait1.html\" title=\"\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e00\uff09\u300b\">\u524d\u6587<\/a>\u5c0f\u82824\u4e2d\u7684\u622a\u56fe\u770b\u51fa\uff0c\u867d\u7136TCP\u72b6\u6001\u4e3a<code>ESTABLISHED<\/code>\uff0c\u4f46\u662f\u5bf9\u5e94\u7684\u8fdb\u7a0b<code>PID\/Program name<\/code>\u4e3a\u7a7a\uff0c\u8fd9\u70b9\u4e5f\u53ef\u4ee5\u901a\u8fc7<code>lsof -i:8000<\/code>\u547d\u4ee4\u9a8c\u8bc1\uff08\u6ca1\u6709\u56e0\u4e3aWindows\u5ba2\u6237\u7aef\u7684\u8fde\u63a5\u51fa\u73b0\u8fdb\u7a0b\u6253\u5f00\u7684\u6587\u4ef6\uff09\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/netstat_8000_3.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<p>\u5f53Windows\u5ba2\u6237\u7aef\u5173\u95edtelnet\u754c\u9762\u540e\uff0cLinux\u670d\u52a1\u7aef\u867d\u7136\u6536\u5230\u4e86\u5ba2\u6237\u7aef\u7684<code>FIN+ACK<\/code>\u6807\u5fd7\u7684\u62a5\u6587\uff0c\u4f46\u662f\u6ca1\u6709\u76f8\u5173\u8fdb\u7a0b\u8c03\u7528<code>close()<\/code>\u51fd\u6570\u901a\u77e5\u5185\u6838\u53d1\u9001<code>FIN<\/code>\u62a5\u6587\u7ed9\u5ba2\u6237\u7aef\u3002\u8fd9\u6837\u5c31\u9020\u6210\u4e86Linux\u670d\u52a1\u7aef\u7684TCP\u72b6\u6001\u51fa\u73b0\u4e86<code>CLOSE_WAIT<\/code>\uff0c\u540c\u65f6Windows\u5ba2\u6237\u7aef\u7684TCP\u72b6\u6001\u53d8\u6210\u4e86\u5bf9\u5e94\u7684<code>FIN_WAIT_2<\/code>\u3002<\/p>\n<h4>3 \u95ee\u9898\u5ef6\u4f38\uff1a\u4ece\u670d\u52a1\u7aef\u7a0b\u5e8f\u51fa\u53d1<\/h4>\n<p>\u8fd9\u91cc\u53ef\u80fd\u4f1a\u5b58\u5728\u7591\u95ee\u4e86\uff0c\u660e\u660eWindows\u5ba2\u6237\u7aef\u4e0eLinux\u670d\u52a1\u7aef\u5efa\u7acb\u4e86<code>ESTABLISHED<\/code>\u72b6\u6001\uff0c\u4e5f\u5c31\u662f<code>server_socket<\/code>\u8fdb\u7a0b\u5bf9\u5b83\u8fdb\u884c\u4e86\u5904\u7406\uff0c\u8fd9\u4e0d\u662f\u4e0e\u5c0f\u82822\u4e2d\u7684\u539f\u56e0\u5206\u6790\u76f8\u77db\u76fe\u4e86\u5417\uff1f\u5176\u5b9e\uff0c\u8fd9\u662f\u7531\u4e8e\u5bf9\u670d\u52a1\u7aef\u7684\u4e00\u4e9b\u8ba4\u8bc6\u6709\u504f\u5dee\u9020\u6210\u7684\uff0cBZ\u4e4b\u524d\u4e5f\u9519\u8bef\u5730\u8ba4\u4e3a\u4ee5\u4e0b\u547d\u9898\u662f\u6210\u7acb\u7684\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>listen()\u51fd\u6570\u4f1a\u4f7f\u8fdb\u7a0b\u963b\u585e\u7b49\u5f85\u5ba2\u6237\u7aef\u7684\u8fde\u63a5\uff0c\u4e5f\u5c31\u662f\u7b49\u5f85\u4e0e\u5ba2\u6237\u7aef\u5b8c\u6210\u4e09\u6b21\u63e1\u624b\uff1b\naccept()\u51fd\u6570\u5c31\u662f\u670d\u52a1\u7aef\u8fdb\u7a0b\u5728\u5b8c\u6210\u4e09\u6b21\u63e1\u624b\u540e\uff0c\u63a5\u6536\u5ba2\u6237\u7aef\u53d1\u9001\u62a5\u6587\u6570\u636e\u7684\u8bf7\u6c42\uff0c\u7136\u540e\u8c03\u7528recv()\u51fd\u6570\u6765\u63a5\u6536\uff1b\nclose()\u51fd\u6570\u5c31\u662f\u670d\u52a1\u7aef\u8fdb\u7a0b\u76f4\u63a5\u5411\u5ba2\u6237\u7aef\u53d1\u9001FIN\u62a5\u6587\u7ed9\u5ba2\u6237\u7aef\u3002\n<\/code><\/pre><\/div>\n\n<p>\u5176\u5b9e\u4e0d\u7136\uff0c\u5728\u67e5\u9605\u4e86\u76f8\u5173\u8d44\u6599\u540e\uff0c\u4e2a\u4eba\u89c9\u5f97\u6b63\u786e\u7684\u7406\u89e3\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>listen()\u51fd\u6570\u4e0d\u4f1a\u4f7f\u8fdb\u7a0b\u963b\u585e\uff0cUNP\u7b2c3\u724884\u9875\u6709\u4e00\u53e5\u8bdd\uff1alisten\u51fd\u6570\u628a\u4e00\u4e2a\u672a\u8fde\u63a5\u7684\u5957\u63a5\u5b57\u8f6c\u6362\u6210\u4e00\u4e2a\u88ab\u52a8\u5957\u63a5\u5b57\uff0c\u6307\u793a\u5185\u6838\u5e94\u63a5\u53d7\u6307\u5411\u8be5\u8be5\u5957\u63a5\u5b57\u7684\u8fde\u63a5\u8bf7\u6c42\u3002\n\u5185\u6838\u4e3a\u4efb\u4f55\u4e00\u4e2a\u7ed9\u5b9a\u7684\u76d1\u542c\u5957\u63a5\u5b57\u7ef4\u62a4\u4e24\u4e2a\u961f\u5217\uff1a\u672a\u5b8c\u6210\u8fde\u63a5\u961f\u5217\u548c\u5df2\u5b8c\u6210\u8fde\u63a5\u961f\u5217\u3002\n\u56e0\u6b64\uff0c\u4e09\u6b21\u63e1\u624b\u662f\u7531\u5185\u6838\u81ea\u52a8\u5b8c\u6210\u7684\uff0c\u65e0\u9700\u670d\u52a1\u5668\u8fdb\u7a0b\u63d2\u624b\u3002\n\naccept()\u51fd\u6570\u529f\u80fd\u662f\u4ece\u7531\u5185\u6838\u7ef4\u62a4\u7684\u5904\u4e8eestablished\u72b6\u6001\u7684\u5df2\u5b8c\u6210\u8fde\u63a5\u961f\u5217\u5217\u5934\u90e8\u53d6\u51fa\u4e0b\u4e00\u4e2a\u5df2\u7ecf\u5b8c\u6210\u7684\u8fde\u63a5\u3002\n\u5982\u679c\u8fd9\u4e2a\u961f\u5217\u4e3a\u7a7a\uff0caccept()\u51fd\u6570\u5c31\u4f1a\u963b\u585e\u8ba9\u8fdb\u7a0b\u8fdb\u5165\u7761\u7720\u72b6\u6001\u3002\n\nclose()\u51fd\u6570\u662f\u628a\u4e00\u4e2aTCP\u5957\u63a5\u5b57\u6807\u8bb0\u6210\u5df2\u5173\u95ed\uff0c\u7136\u540e\u7acb\u5373\u8fd4\u56de\u8c03\u7528\u8fdb\u7a0b\u3002\nTCP\u5c1d\u8bd5\u53d1\u9001\u5df2\u6392\u961f\u7b49\u5f85\u53d1\u9001\u5230\u5bf9\u7aef\u7684\u4efb\u4f55\u6570\u636e\uff0c\u53d1\u9001\u5b8c\u6bd5\u540e\u53d1\u751f\u7684\u662f\u6b63\u5e38\u7684TCP\u8fde\u63a5\u7ec8\u6b62\u5e8f\u5217\uff0c\u4e8e\u662f\u6709\u4e86\u8457\u540d\u7684\u56db\u6b21\u6325\u624b\u3002\n<\/code><\/pre><\/div>\n\n<p>\u5230\u8fd9\u91cc\u95ee\u9898\u5176\u5b9e\u5df2\u7ecf\u5f88\u7b80\u5355\u660e\u4e86\u4e86\uff0cLinux\u5185\u6838\u5b8c\u6210\u201c\u4e09\u6b21\u63e1\u624b\u201d\u8ddf\u670d\u52a1\u7aef\u8fdb\u7a0b\u65e0\u5173\uff0c\u5f53\u7136\u8fd9\u70b9\u4e5f\u53ef\u4ee5\u7531\u7a0b\u5e8f\u6ca1\u6709\u6253\u5370\u7b2c51\u300160\u884c\u7684\u6570\u636e\u8bc1\u5b9e\u3002<\/p>\n<h4>4 \u603b\u7ed3<\/h4>\n<p>socket\u88ab\u52a8\u5173\u95ed\u7684\u670d\u52a1\u7aef\u4ea7\u751fCLOSE_WAIT\u7684\u6839\u672c\u539f\u56e0\u662f\u6ca1\u6709\u8c03\u7528<code>close()<\/code>\u51fd\u6570\u5173\u95edsocket\u94fe\u8def\uff0c\u4e5f\u5373\u6ca1\u6709\u53d1\u9001<code>FIN<\/code>\u6807\u5fd7\u7684\u62a5\u6587\u7ed9\u4e3b\u52a8\u5173\u95edTCP\u94fe\u8def\u7684\u5ba2\u6237\u7aef\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"tcpdump"}},{"@attributes":{"term":"wireshark"}},{"@attributes":{"term":"tcp"}},{"@attributes":{"term":"close_wait"}}]},{"title":"\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e00\uff09","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait1.html","rel":"alternate"}},"published":"2016-02-26T18:41:00+08:00","updated":"2016-02-26T18:41:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-02-26:\/cseries\/tcpdumpwiresharkclosewait1.html","summary":"<p>\u5728Linux\u540e\u7aef\u670d\u52a1\u7f51\u7edc\u901a\u4fe1\u5f00\u53d1\u4e2d\uff0c\u53ef\u80fd\u4f1a\u9047\u5230CLOSE_WAIT\u7684\u72b6\u51b5\u3002\u5f15\u8d77TCP CLOSE_WAIT\u72b6\u6001\u7684\u60c5\u51b5\u5f88\u591a\uff0c\u5f52\u6839\u7ed3\u5e95\u8fd8\u662f\u7531\u4e8e\u88ab\u52a8\u5173\u95ed\u7684\u4e00\u65b9\u6ca1\u6709\u5173\u95edsocket\u94fe\u8def\u5bfc\u81f4\u7684\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u901a\u8fc7\u7528\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u901a\u8fc7TCPDUMP\u548cWireshark\u8fd9\u4e24\u4e2a\u5de5\u5177\u6765\u6a21\u62df\u4ea7\u751fCLOSE_WAIT\u7684\u60c5\u51b5\uff0c<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait2.html\" title=\"\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e8c\uff09\u300b\">\u4e0b\u4e00\u7bc7<\/a>\u4e3b\u8981\u662f\u5bf9\u8fd9\u4e2a\u95ee\u9898\u7684\u539f\u7406\u89e3\u91ca\u3002<\/p>\n<p><img alt=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/server_socket_8000.png\" title=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\"><\/p>\n","content":"<p>\u5728Linux\u540e\u7aef\u670d\u52a1\u7f51\u7edc\u901a\u4fe1\u5f00\u53d1\u4e2d\uff0c\u53ef\u80fd\u4f1a\u9047\u5230CLOSE_WAIT\u7684\u72b6\u51b5\u3002\u5f15\u8d77TCP CLOSE_WAIT\u72b6\u6001\u7684\u60c5\u51b5\u5f88\u591a\uff0c\u5f52\u6839\u7ed3\u5e95\u8fd8\u662f\u7531\u4e8e\u88ab\u52a8\u5173\u95ed\u7684\u4e00\u65b9\u6ca1\u6709\u5173\u95edsocket\u94fe\u8def\u5bfc\u81f4\u7684\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u901a\u8fc7\u7528\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u901a\u8fc7TCPDUMP\u548cWireshark\u8fd9\u4e24\u4e2a\u5de5\u5177\u6765\u6a21\u62df\u4ea7\u751fCLOSE_WAIT\u7684\u60c5\u51b5\uff0c<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait2.html\" title=\"\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e8c\uff09\u300b\">\u4e0b\u4e00\u7bc7<\/a>\u4e3b\u8981\u662f\u5bf9\u8fd9\u4e2a\u95ee\u9898\u7684\u539f\u7406\u89e3\u91ca\u3002<\/p>\n<p><img alt=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/server_socket_8000.png\" title=\"CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3\"><\/p>\n\n\n<h4>1 CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u7aef\u53e3<\/h4>\n<p>\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u5728\u865a\u62df\u673aCentOS7\u670d\u52a1\u5668\uff08192.168.1.178\uff09\u4e2d\u6253\u5f00\u4e00\u4e2a\u7ec8\u7aef\u754c\u9762\uff0c\u7136\u540e\u4f7f\u7528\u4e0b\u9762\u8fd9\u4e2a\u7b80\u5355\u7684\u670d\u52a1\u7aef\u7a0b\u5e8f\uff0c\u5efa\u7acb8000\u7aef\u53e3\u7684\u76d1\u542c\u670d\u52a1\uff08PID:5325\uff09\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span>\n<span class=\"normal\">73<\/span>\n<span class=\"normal\">74<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    server_socket.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for creating a listen as a server in linux system.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-02-26 18:45 https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait1.html<\/span>\n<span class=\"cm\"> * @Compile     gcc server_socket.c -o server_socket<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/types.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/socket.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;netinet\/in.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;arpa\/inet.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;errno.h&gt;<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">llOpt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">sin_size<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">BUFSIZ<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_family<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">s_addr<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">INADDR_ANY<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_port<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">htons<\/span><span class=\"p\">(<\/span><span class=\"mi\">8000<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">socket<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SOCK_STREAM<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span><span class=\"w\">  <\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;socket&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">setsockopt<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SOL_SOCKET<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SO_REUSEADDR<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">llOpt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">llOpt<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">bind<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;bind&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">listen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">sin_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Socket server begin to recieve connectiong from client.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">accept<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">sin_size<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;accept&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/Print the ip address and port of client.<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Accept client[%s:%u].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">inet_ntoa<\/span><span class=\"p\">(<\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_addr<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">ntohs<\/span><span class=\"p\">(<\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_port<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">BUFSIZ<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">recv<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">,<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">BUFSIZ<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">len<\/span><span class=\"p\">]<\/span><span class=\"o\">=<\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Message from client=[%s]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u5728Linux\u4e2d\u4f7f\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001<\/h4>\n<p>\u65b0\u5efa\u4e00\u4e2ashell\u811a\u672cnetstat.sh\uff0c\u91cc\u9762\u53ea\u5305\u542b\u4e00\u6761\u6709\u6548\u547d\u4ee4<code>netstat -nap|head -n 2;netstat -nap|grep 8000<\/code>\u3002\u6267\u884c\u8be5\u811a\u672c\u53ef\u4ee5\u770b\u5230\u670d\u52a1\u7aef\u7684\u76d1\u542c\u6548\u679c\uff1a<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/netstat_8000_1.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<h4>3 \u5728Linux\u4e2d\u5229\u7528telnet\u547d\u4ee4\u521b\u5efa\u4e00\u4e2a\u5ba2\u6237\u7aef<\/h4>\n<p>\u518d\u6253\u5f00\u4e00\u4e2aLinux\u7ec8\u7aef\u754c\u9762\uff0c\u7136\u540e\u8f93\u5165\u547d\u4ee4<code>telnet 192.168.1.177 8000<\/code>\u4f5c\u4e3a\u5ba2\u6237\u7aef\u5efa\u7acb\u4e0e\u670d\u52a1\u7aef\u7684TCP\u8fde\u63a5\u3002\u8fd9\u65f6\u6267\u884c\u811a\u672c<code>.\/netstat.sh<\/code>\u53ef\u4ee5\u770b\u5230Linux\u5ba2\u6237\u7aef\uff08PID:5331\uff09\u548c\u670d\u52a1\u7aef\uff08PID:5325\uff09\u7684TCP\u901a\u4fe1\u5df2\u7ecf\u53d8\u6210<code>ESTABLISHED<\/code>\u72b6\u6001\uff0c\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/netstat_8000_2.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<h4>4 \u5728Windows\u4e2d\u5229\u7528telnet\u547d\u4ee4\u521b\u5efa\u4e00\u4e2a\u5ba2\u6237\u7aef<\/h4>\n<p>\u5728Windows\u4e2d\u6253\u5f00\u4e00\u4e2aPowerShell\u7ec8\u7aef\u754c\u9762\uff0c\u7136\u540e\u8f93\u5165\u547d\u4ee4<code>telnet 192.168.1.177 8000<\/code>\u4f5c\u4e3a\u5ba2\u6237\u7aef\u5efa\u7acb\u4e0eLinux\u670d\u52a1\u7aef\u7684TCP\u8fde\u63a5\u3002<\/p>\n<p>\u8fd9\u65f6\u6267\u884c\u811a\u672c<code>.\/netstat.sh<\/code>\u53ef\u4ee5\u770b\u5230Windows\u5ba2\u6237\u7aef\uff08\u7aef\u53e3:52552\uff09\u548c\u670d\u52a1\u7aef\uff08PID:5325\uff09\u7684TCP\u901a\u4fe1\u5df2\u7ecf\u53d8\u6210<code>ESTABLISHED<\/code>\u72b6\u6001\uff0c\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/netstat_8000_3.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<h4>5 \u5728Linux\u4e2d\u4f7f\u7528tcpdump\u5de5\u5177\u6293\u5305<\/h4>\n<p>\u518d\u6253\u5f00\u4e00\u4e2aLinux\u7ec8\u7aef\u754c\u9762\uff0c\u7136\u540e\u8f93\u5165\u547d\u4ee4<code>tcpdump -n port 8000<\/code>\u8fdb\u884c\u6293\u5305\uff08\u76ee\u7684\u662f\u83b7\u53d6Windows\u5ba2\u6237\u7aeftelnet\u5efa\u7acb\u7684tcp\u8fde\u63a5\u7684\u6570\u636e\u5305\uff09\u3002\u5f53\u524d\u9762\u7b2c4\u5c0f\u8282\u4e2dWindows\u5ba2\u6237\u7aef\u53d1\u8d77\u201c\u4e09\u6b21\u63e1\u624b\u201d\u65f6\u5f97\u5230\u5982\u4e0b\u6570\u636e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">tcpdump<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">n<\/span><span class=\"w\"> <\/span><span class=\"n\">port<\/span><span class=\"w\"> <\/span><span class=\"mi\">8000<\/span>\n<span class=\"nl\">tcpdump<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">verbose<\/span><span class=\"w\"> <\/span><span class=\"k\">output<\/span><span class=\"w\"> <\/span><span class=\"n\">suppressed<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">v<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">vv<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">full<\/span><span class=\"w\"> <\/span><span class=\"n\">protocol<\/span><span class=\"w\"> <\/span><span class=\"n\">decode<\/span>\n<span class=\"n\">listening<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">eth0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">link<\/span><span class=\"o\">-<\/span><span class=\"n\">type<\/span><span class=\"w\"> <\/span><span class=\"n\">EN10MB<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">Ethernet<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">capture<\/span><span class=\"w\"> <\/span><span class=\"k\">size<\/span><span class=\"w\"> <\/span><span class=\"mi\">65535<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##Windows\u4e2d\u7684telnet\u547d\u4ee4\u4f5c\u4e3a\u5ba2\u6237\u7aef\u5411Linux\u670d\u52a1\u5668\u53d1\u8d77\u7b2c\u4e00\u6b21\u63e1\u624b<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u8bf7\u6c42\u5efa\u7acb\u8fde\u63a5<\/span><span class=\"p\">(<\/span><span class=\"n\">SYN<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">17<\/span><span class=\"err\">:<\/span><span class=\"mi\">10<\/span><span class=\"err\">:<\/span><span class=\"mf\">43.150463<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.110.52552<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.177<\/span><span class=\"p\">.<\/span><span class=\"nl\">irdmi<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">S<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">4020000773<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">8192<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">mss 1460,nop,wscale 8,nop,nop,sackOK<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##Linux\u670d\u52a1\u7aef\u5411Windows\u5ba2\u6237\u7aef\u53d1\u9001\u63e1\u624b\u786e\u8ba4\u5305<\/span><span class=\"p\">(<\/span><span class=\"n\">SYN<\/span><span class=\"o\">+<\/span><span class=\"n\">ACK<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">17<\/span><span class=\"err\">:<\/span><span class=\"mi\">10<\/span><span class=\"err\">:<\/span><span class=\"mf\">43.150518<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.177<\/span><span class=\"p\">.<\/span><span class=\"n\">irdmi<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.110.52552<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">S.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">2818288395<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">4020000774<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">29200<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">mss 1460,nop,nop,sackOK,nop,wscale 7<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##Windows\u5ba2\u6237\u7aef\u5411Linux\u670d\u52a1\u7aef\u53d1\u9001\u786e\u8ba4\u5305<\/span><span class=\"p\">(<\/span><span class=\"n\">ACK<\/span><span class=\"p\">)<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4e09\u6b21\u63e1\u624b\u5b8c\u6bd5<\/span>\n<span class=\"mi\">17<\/span><span class=\"err\">:<\/span><span class=\"mi\">10<\/span><span class=\"err\">:<\/span><span class=\"mf\">43.150652<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.110.52552<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.177<\/span><span class=\"p\">.<\/span><span class=\"nl\">irdmi<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">256<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u4f7f\u7528tcpdump\u5de5\u5177\u6293\u5305\uff1a\u4e09\u6b21\u63e1\u624b\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/tcpdump8000_1.png\" title=\"\u4f7f\u7528tcpdump\u5de5\u5177\u6293\u5305\uff1a\u4e09\u6b21\u63e1\u624b\"><\/p>\n<h4>6 \u5728Windows\u4e2d\u4f7f\u7528Wireshark\u6293\u5305<\/h4>\n<p>\u5728Windows\u4e2d\u4f7f\u7528<code>telnet 192.168.1.177 8000<\/code>\u547d\u4ee4\u5efa\u7acb\u4e0eLinux\u670d\u52a1\u7aef\u7684TCP\u94fe\u8def\u540e\uff08\u5373\u524d\u9762\u5c0f\u82824\u7684\u64cd\u4f5c\uff09\uff0c\u901a\u8fc7Windows\u5ba2\u6237\u7aef\u7684TCP\u7aef\u53e3\u53f752552\u5f00\u59cb\u51c6\u5907\u4f7f\u7528Wireshark\u8fdb\u884c\u6293\u5305\u3002<\/p>\n<p>\u624b\u52a8\u76f4\u63a5\u5173\u95ed\u5c0f\u82824\u4e2d\u521b\u5efa\u7684Windows telnet\u7ec8\u7aef\u754c\u9762\uff0c\u7136\u540eWireshark\u6293\u5305\u60c5\u51b5\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u5728Windows\u4e2d\u4f7f\u7528Wireshark\u6293\u5305\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/wireshark_8000.png\" title=\"\u5728Windows\u4e2d\u4f7f\u7528Wireshark\u6293\u5305\"><\/p>\n<p>\u540c\u65f6\uff0c\u901a\u8fc7Linux\u4e2d\u7684netstat.sh\u811a\u672c\u53d1\u73b0\u521a\u624d\u5efa\u7acb\u7684TCP\u901a\u4fe1\u51fa\u73b0\u4e86<code>CLOSE_WAIT<\/code>\u7684\u72b6\u6001\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/netstat_8000_4.png\" title=\"Linux\u4e2d\u5229\u7528netstat\u547d\u4ee4\u67e5\u770bTCP\u670d\u52a1\u72b6\u6001\"><\/p>\n<p>\u540c\u6837\uff0c\u4f7f\u7528\u7b2c4\u5c0f\u8282\u4e2d\u7684tcpdump\u6293\u5305\u60c5\u51b5\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>######Windows\u5ba2\u6237\u7aef\u88ab\u201c\u610f\u5916\u201d\u5173\u95ed\uff0c\u5411Linux\u670d\u52a1\u7aef\u53d1\u9001FIN+ACK\u62a5\u6587\n17:11:35.668512 IP 192.168.1.110.52552 &gt; 192.168.1.177.irdmi: Flags [F.], seq 1, ack 1, win 256, length 0\n######Linux\u670d\u52a1\u7aef\u5411Windows\u5ba2\u6237\u7aef\u53d1\u9001ACK\u786e\u8ba4\u62a5\u6587\n17:11:35.668851 IP 192.168.1.177.irdmi &gt; 192.168.1.110.52552: Flags [.], ack 2, win 229, length 0\n######2\u5206\u949f\u540e\uff0cWindows\u7cfb\u7edf\u81ea\u52a8\u5411Linux\u670d\u52a1\u7aef\u53d1\u9001\u4e00\u4e2aRST+ACK\u62a5\u6587\uff0c\u544a\u77e5\u5bf9\u65b9\u81ea\u5df1\u5df2\u5173\u95ed\u4e4b\u524d\u7684TCP\u8fde\u63a5\uff0c\u540c\u65f6\u8981\u6c42\u5bf9\u65b9\u4e5f\u5173\u95ed\u94fe\u8def\n17:13:35.670464 IP 192.168.1.110.52552 &gt; 192.168.1.177.irdmi: Flags [R.], seq 2, ack 1, win 0, length 0\n<\/code><\/pre><\/div>\n\n<p>\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u5728Linux\u4e2d\u4f7f\u7528tcpdump\u6293\u5305\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/tcpdump8000_2.png\" title=\"\u5728Linux\u4e2d\u4f7f\u7528tcpdump\u6293\u5305\"><\/p>\n<h4>7 \u539f\u56e0\u5206\u6790<\/h4>\n<p>\u8be6\u89c1<a href=\"https:\/\/typecodes.com\/cseries\/tcpdumpwiresharkclosewait2.html\" title=\"\u300a\u4f7f\u7528TCPDUMP\u548cWireshark\u6392\u67e5\u670d\u52a1\u7aefCLOSE_WAIT\uff08\u4e8c\uff09\u300b\">\u4e0b\u6587<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"tcpdump"}},{"@attributes":{"term":"wireshark"}},{"@attributes":{"term":"tcp"}},{"@attributes":{"term":"close_wait"}}]},{"title":"Linux\u4e2d\u4f7f\u7528TCPDUMP\u8fdb\u884c\u7b80\u5355\u7684TCP\u6293\u5305","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/simpletcpdumpapply.html","rel":"alternate"}},"published":"2016-02-26T15:51:00+08:00","updated":"2016-02-26T15:51:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-02-26:\/linux\/simpletcpdumpapply.html","summary":"<p>\u5728Linux TCP\u901a\u4fe1\u7684\u8c03\u8bd5\u4e2d\uff0ctcpdump\u5e94\u8be5\u7b97\u662f\u5f88\u597d\u7684\u4e00\u4e2a\u5de5\u5177\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4f7f\u7528Windows\u4f5c\u4e3a\u5ba2\u6237\u7aef\uff0c\u5411\u4f5c\u4e3a\u670d\u52a1\u7aef\u7684Linux\u4e2d\u7684\u4e00\u4e2asocket\u76d1\u542c\u7aef\u53e3\u53d1\u9001\u62a5\u6587\u4fe1\u606f\uff0c\u7136\u540e\u5728Linux\u4e2d\u7528TCPDUMP\u5de5\u5177\u8fdb\u884c\u6293\u5305\u3002\u901a\u8fc7\u8fd9\u4e2a\u5b9e\u4f8b\uff0c\u53ef\u4ee5\u8f83\u4e3a\u5b8c\u6574\u7684\u4e86\u89e3TCP\u901a\u4fe1\u4e2d\u7684\u201c\u4e09\u6b21\u63e1\u624b\u201d\u7b49\u8fc7\u7a0b\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u4f7f\u7528TCPDUMP\u8fdb\u884c\u7b80\u5355\u7684TCP\u6293\u5305\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/linuxtcpdump.png\" title=\"Linux\u4e2d\u4f7f\u7528TCPDUMP\u8fdb\u884c\u7b80\u5355\u7684TCP\u6293\u5305\"><\/p>\n","content":"<p>\u5728Linux TCP\u901a\u4fe1\u7684\u8c03\u8bd5\u4e2d\uff0ctcpdump\u5e94\u8be5\u7b97\u662f\u5f88\u597d\u7684\u4e00\u4e2a\u5de5\u5177\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4f7f\u7528Windows\u4f5c\u4e3a\u5ba2\u6237\u7aef\uff0c\u5411\u4f5c\u4e3a\u670d\u52a1\u7aef\u7684Linux\u4e2d\u7684\u4e00\u4e2asocket\u76d1\u542c\u7aef\u53e3\u53d1\u9001\u62a5\u6587\u4fe1\u606f\uff0c\u7136\u540e\u5728Linux\u4e2d\u7528TCPDUMP\u5de5\u5177\u8fdb\u884c\u6293\u5305\u3002\u901a\u8fc7\u8fd9\u4e2a\u5b9e\u4f8b\uff0c\u53ef\u4ee5\u8f83\u4e3a\u5b8c\u6574\u7684\u4e86\u89e3TCP\u901a\u4fe1\u4e2d\u7684\u201c\u4e09\u6b21\u63e1\u624b\u201d\u7b49\u8fc7\u7a0b\u3002<\/p>\n<p><img alt=\"Linux\u4e2d\u4f7f\u7528TCPDUMP\u8fdb\u884c\u7b80\u5355\u7684TCP\u6293\u5305\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/linuxtcpdump.png\" title=\"Linux\u4e2d\u4f7f\u7528TCPDUMP\u8fdb\u884c\u7b80\u5355\u7684TCP\u6293\u5305\"><\/p>\n\n\n<h5>1 CentOS\u670d\u52a1\u7aef\u5efa\u7acb\u76d1\u542c\u5e76\u6293\u5305<\/h5>\n<p>\u5728\u865a\u62df\u673a\u670d\u52a1\u5668\uff08192.168.1.178\uff09\u4f7f\u7528\u4e0b\u9762\u8fd9\u4e2a\u7b80\u5355\u7684\u670d\u52a1\u7aef\u7a0b\u5e8f\uff0c\u5efa\u7acb8000\u7aef\u53e3\u7684\u76d1\u542c\u670d\u52a1\uff0c\u7136\u540e\u4f7f\u7528<code>tcpdump -n port 8000<\/code>\u547d\u4ee4\u6293\u5305\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    server_socket.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for creating a listen as a server in linux system.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2015-09-25 21:32 https:\/\/typecodes.com\/linux\/simpletcpdumpapply.html<\/span>\n<span class=\"cm\"> * @Compile     gcc server_socket.c -o server_socket<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/types.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/socket.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;netinet\/in.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;arpa\/inet.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;errno.h&gt;<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">llOpt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">sin_size<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">BUFSIZ<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_family<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">s_addr<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">INADDR_ANY<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">my_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_port<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">htons<\/span><span class=\"p\">(<\/span><span class=\"mi\">8000<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">socket<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">AF_INET<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SOCK_STREAM<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span><span class=\"w\">  <\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;socket&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">setsockopt<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SOL_SOCKET<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">SO_REUSEADDR<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">llOpt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">llOpt<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">errno<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">bind<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">my_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;bind&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">listen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">sin_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr_in<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Socket server begin to recieve connectiong from client.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">accept<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">struct<\/span><span class=\"w\"> <\/span><span class=\"nc\">sockaddr<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"o\">&amp;<\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">sin_size<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">perror<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;accept&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Accept client[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">inet_ntoa<\/span><span class=\"p\">(<\/span><span class=\"n\">remote_addr<\/span><span class=\"p\">.<\/span><span class=\"n\">sin_addr<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">BUFSIZ<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">recv<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">,<\/span><span class=\"n\">buf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">BUFSIZ<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">buf<\/span><span class=\"p\">[<\/span><span class=\"n\">len<\/span><span class=\"p\">]<\/span><span class=\"o\">=<\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Message from client=[%s]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">buf<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">client_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">close<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">server_sockfd<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>2 Windows\u5ba2\u6237\u7aef\u53d1\u9001\u8bf7\u6c42\u62a5\u6587<\/h5>\n<p>\u5728\u672c\u5730Windows\u673a\u5668\uff08192.168.1.109\uff09\u4f7f\u7528\u62a5\u6587\u53d1\u9001\u5de5\u5177\u8fde\u63a5\u5230\u865a\u62df\u673a\u670d\u52a1\u5668192.168.1.178\uff0c\u7136\u540e\u53d1\u9001\u4e24\u6b21\u8bf7\u6c42\u62a5\u6587\u3002<\/p>\n<p>\u5176\u4e2d\uff0c\u7b2c\u4e00\u6b21\u53d1\u9001\u201c11111\u201d\u7684\u62a5\u6587\uff1a<\/p>\n<p><img alt=\"\u5ba2\u6237\u7aef\u7b2c\u4e00\u6b21\u53d1\u9001\u8bf7\u6c42\u62a5\u6587\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/client_first_send.png\" title=\"\u5ba2\u6237\u7aef\u7b2c\u4e00\u6b21\u53d1\u9001\u8bf7\u6c42\u62a5\u6587\"><\/p>\n<p>\u7b2c\u4e8c\u6b21\u53d1\u9001\u201c123321\u201d\u7684\u8bf7\u6c42\u62a5\u6587\uff1a<\/p>\n<p><img alt=\"\u5ba2\u6237\u7aef\u7b2c\u4e8c\u6b21\u53d1\u9001\u8bf7\u6c42\u62a5\u6587\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/client_second_send.png\" title=\"\u5ba2\u6237\u7aef\u7b2c\u4e8c\u6b21\u53d1\u9001\u8bf7\u6c42\u62a5\u6587\"><\/p>\n<h5>3 Windows\u5ba2\u6237\u7aef\u5173\u95edsocket<\/h5>\n<p>\u70b9\u51fb\u5de6\u8fb9\u914d\u7f6e\u83dc\u5355\u680f\u4e2d\u7684\u201c\u5173\u95ed\u201d\u6309\u94ae\uff0c\u65ad\u5f00tcp\u8fde\u63a5\u3002<\/p>\n<p><img alt=\"\u5ba2\u6237\u7aef\u5173\u95edsocket\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/client_close.png\" title=\"\u5ba2\u6237\u7aef\u5173\u95edsocket\"><\/p>\n<h5>4 \u5206\u6790\u6293\u5305\u7684\u60c5\u51b5<\/h5>\n<p>\u5728Linux\u670d\u52a1\u7aef\u7684\u6293\u5305\u60c5\u51b5\u5982\u4e0b\uff0c\u5176\u4e2d\u6293\u5305\u5185\u5bb9\u4e2d\u51fa\u73b0\u5192\u53f7\u8868\u793a\u8303\u56f4\uff0c\u4f8b\u5982seq 1:6\u8868\u793aseq\u5e8f\u53f7\u8303\u56f4\u4ece1\u52306\u3002\u53e6\u5916\uff0c\u6293\u5305\u4e2d\u7684<code>iRDMI<\/code>\u4ee3\u8868<code>iRDMI\/Shoutcast Server<\/code>\uff0c\u5bf9\u5e94\u77408000\u7aef\u53e3\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">tcpdump<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">n<\/span><span class=\"w\"> <\/span><span class=\"n\">port<\/span><span class=\"w\"> <\/span><span class=\"mi\">8000<\/span>\n<span class=\"nl\">tcpdump<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">verbose<\/span><span class=\"w\"> <\/span><span class=\"k\">output<\/span><span class=\"w\"> <\/span><span class=\"n\">suppressed<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">v<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">vv<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">full<\/span><span class=\"w\"> <\/span><span class=\"n\">protocol<\/span><span class=\"w\"> <\/span><span class=\"n\">decode<\/span>\n<span class=\"n\">listening<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">eth0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">link<\/span><span class=\"o\">-<\/span><span class=\"n\">type<\/span><span class=\"w\"> <\/span><span class=\"n\">EN10MB<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">Ethernet<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">capture<\/span><span class=\"w\"> <\/span><span class=\"k\">size<\/span><span class=\"w\"> <\/span><span class=\"mi\">65535<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span>\n\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u5185\u5bb9\u683c\u5f0f<\/span>\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u65f6\u5206\u79d2<\/span><span class=\"w\">           <\/span><span class=\"n\">\u5ba2\u6237\u7aefIP\u548c\u7aef\u53e3<\/span><span class=\"w\">         <\/span><span class=\"n\">\u670d\u52a1\u7aefIP\u548c\u7aef\u53e3<\/span><span class=\"w\">   <\/span><span class=\"n\">SYN<\/span><span class=\"p\">(<\/span><span class=\"n\">\u5ba2\u6237\u7aef\u4e3b\u52a8\u8bf7\u6c42\u8fde\u63a5\u670d\u52a1\u5668<\/span><span class=\"p\">)<\/span><span class=\"w\">  <\/span><span class=\"n\">\u5305\u5e8f\u53f7<\/span><span class=\"w\">  <\/span><span class=\"mi\">8192<\/span><span class=\"p\">(<\/span><span class=\"k\">Window<\/span><span class=\"w\"> <\/span><span class=\"k\">size<\/span><span class=\"p\">),<\/span><span class=\"w\">  <\/span><span class=\"n\">\u957f\u5ea60<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">12<\/span><span class=\"err\">:<\/span><span class=\"mf\">02.534303<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.109.8886<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.178<\/span><span class=\"p\">.<\/span><span class=\"nl\">irdmi<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">S<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">2639909369<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">8192<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">mss 1460,nop,wscale 8,nop,nop,sackOK<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u670d\u52a1\u5668\u7aef\u53d1\u9001SYN<\/span><span class=\"o\">+<\/span><span class=\"n\">ACK<\/span><span class=\"p\">(.)<\/span><span class=\"n\">\u7684\u62a5\u6587\u7ed9\u5ba2\u6237\u7aef<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"n\">ack<\/span><span class=\"o\">=<\/span><span class=\"n\">seq<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">=<\/span><span class=\"mi\">2639909369<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"n\">\u957f\u5ea60<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">12<\/span><span class=\"err\">:<\/span><span class=\"mf\">02.534339<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.178<\/span><span class=\"p\">.<\/span><span class=\"n\">irdmi<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.109.8886<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">S.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">1984808639<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">2639909370<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">14600<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">mss 1460,nop,nop,sackOK,nop,wscale 7<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u5ba2\u6237\u7aef\u6536\u5230\u786e\u8ba4\u5305\u540e<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u53d1\u9001ACK<\/span><span class=\"p\">(.)<\/span><span class=\"n\">\u62a5\u6587\u7ed9\u670d\u52a1\u7aef<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"n\">\u957f\u5ea60<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">12<\/span><span class=\"err\">:<\/span><span class=\"mf\">02.534528<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.109.8886<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.178<\/span><span class=\"p\">.<\/span><span class=\"nl\">irdmi<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">256<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u4e09\u6b21\u63e1\u624b\u6210\u529f\u540e<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"n\">\u5ba2\u6237\u7aef\u53d1\u9001<\/span><span class=\"ss\">&quot;11111&quot;<\/span><span class=\"n\">\u62a5\u6587\u5185\u5bb9\u7ed9\u670d\u52a1\u7aef<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u957f\u5ea6\u4e3a5\u5b57\u8282<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u6807\u8bc6P\u5373PSH<\/span><span class=\"p\">(<\/span><span class=\"n\">Push<\/span><span class=\"w\"> <\/span><span class=\"k\">function<\/span><span class=\"p\">)<\/span><span class=\"n\">\u4e3a1\u65f6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u4ee3\u8868\u8981\u53d1\u9001\u7f13\u51b2\u533a\u7684\u5c01\u5305<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u65e0\u9700\u7b49\u5f85\u7f13\u51b2\u533a\u6ee1\u4e86\u624d\u9001<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">12<\/span><span class=\"err\">:<\/span><span class=\"mf\">16.501177<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.109.8886<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.178<\/span><span class=\"p\">.<\/span><span class=\"nl\">irdmi<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">P.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"err\">:<\/span><span class=\"mi\">6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">256<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span>\n\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u670d\u52a1\u7aef\u6536\u5230\u5ba2\u6237\u7aef\u8bf7\u6c42\u62a5\u6587\u5305\u540e<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u53d1\u9001ACK<\/span><span class=\"p\">(.)<\/span><span class=\"n\">\u62a5\u6587\u7ed9\u5ba2\u6237\u7aef<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"n\">\u957f\u5ea6\u4e3a0\u5b57\u8282<\/span><span class=\"p\">,<\/span><span class=\"w\">  <\/span><span class=\"n\">ACK<\/span><span class=\"o\">=<\/span><span class=\"n\">SEQ<\/span><span class=\"o\">+<\/span><span class=\"n\">LENGTH<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"o\">+<\/span><span class=\"mi\">5<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">12<\/span><span class=\"err\">:<\/span><span class=\"mf\">16.501208<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.178<\/span><span class=\"p\">.<\/span><span class=\"n\">irdmi<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.109.8886<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">115<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u5ba2\u6237\u7aef\u7ee7\u7eed\u53d1\u9001\u8bf7\u6c42\u62a5\u6587<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u5185\u5bb9\u4e3a<\/span><span class=\"ss\">&quot;123321&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u957f\u5ea66\u5b57\u8282<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">44<\/span><span class=\"err\">:<\/span><span class=\"mf\">16.181474<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.109.8886<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.178<\/span><span class=\"p\">.<\/span><span class=\"nl\">irdmi<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">P.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"err\">:<\/span><span class=\"mi\">12<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">256<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span>\n\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u670d\u52a1\u7aef\u53d1\u9001ACK<\/span><span class=\"p\">(.)<\/span><span class=\"n\">\u5e94\u7b54\u62a5\u6587\u7ed9\u5ba2\u6237\u7aef<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"o\">=<\/span><span class=\"n\">SEQ<\/span><span class=\"o\">+<\/span><span class=\"n\">length<\/span><span class=\"o\">=<\/span><span class=\"mi\">6<\/span><span class=\"o\">+<\/span><span class=\"mi\">6<\/span><span class=\"o\">=<\/span><span class=\"mi\">12<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">44<\/span><span class=\"err\">:<\/span><span class=\"mf\">16.181508<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.178<\/span><span class=\"p\">.<\/span><span class=\"n\">irdmi<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.109.8886<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">115<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u5ba2\u6237\u7aef\u5173\u95ed\u540e\u5411\u670d\u52a1\u7aef\u53d1\u9001\u6807\u8bc6\u4e3a<\/span><span class=\"p\">(<\/span><span class=\"n\">R<\/span><span class=\"o\">+<\/span><span class=\"p\">.<\/span><span class=\"n\">ACK<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"n\">RST<\/span><span class=\"p\">(<\/span><span class=\"n\">Reset<\/span><span class=\"p\">)<\/span><span class=\"n\">\u4e3a1\u65f6<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u8868\u793atcp\u8fde\u63a5\u9a6c\u4e0a\u4f1a\u88ab\u7ed3\u675f<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u800c\u65e0\u9700\u7b49\u5f85\u7ec8\u6b62\u786e\u8ba4\u624b\u7eed<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">\u4e5f\u5c31\u662f\u8bf4<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u8fd9\u662f\u4e2a\u5f3a\u5236\u7ed3\u675f\u7684\u8fde\u7ebf<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">\u4e14\u53d1\u9001\u7aef\u5df2\u7ecf\u65ad\u5f00<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">\/\/<\/span><span class=\"n\">\u8fd9\u91cc\u5373\u4f7f\u670d\u52a1\u7aef\u6ca1\u6709\u8c03\u7528close<\/span><span class=\"p\">(<\/span><span class=\"n\">accept_sockfd<\/span><span class=\"p\">)<\/span><span class=\"n\">\u6765\u5411\u5ba2\u6237\u7aef\u53d1\u9001FIN\u62a5\u6587<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4e24\u8005\u4e4b\u95f4\u5efa\u7acb\u7684tcp\u94fe\u8def\u90fd\u4f1a\u88ab\u5173\u95ed<\/span><span class=\"err\">\uff01\uff01\uff01<\/span>\n<span class=\"mi\">11<\/span><span class=\"err\">:<\/span><span class=\"mi\">50<\/span><span class=\"err\">:<\/span><span class=\"mf\">55.047977<\/span><span class=\"w\"> <\/span><span class=\"n\">IP<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.109.8886<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mf\">192.168.1.178<\/span><span class=\"p\">.<\/span><span class=\"nl\">irdmi<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Flags<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">R.<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">seq<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ack<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">win<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">length<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"tcpdump"}},{"@attributes":{"term":"tcp"}}]},{"title":"CentOS 7.2\u4f7f\u7528yum\u5b89\u88c5MYSQL 5.7.10","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/yuminstallmysql5710.html","rel":"alternate"}},"published":"2016-02-26T14:55:00+08:00","updated":"2016-02-26T14:55:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-02-26:\/linux\/yuminstallmysql5710.html","summary":"<p>\u524d\u9762\u4e24\u7bc7\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u3001<a href=\"https:\/\/typecodes.com\/web\/centos7yuminstallmysql5.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 7.1\u4f7f\u7528yum\u5b89\u88c5MySql5.6 \u2026<\/a><\/p>","content":"<p>\u524d\u9762\u4e24\u7bc7\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u3001<a href=\"https:\/\/typecodes.com\/web\/centos7yuminstallmysql5.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 7.1\u4f7f\u7528yum\u5b89\u88c5MySql5.6.24\u300b<\/a>\u5206\u522b\u4f7f\u7528\u6e90\u7801\u7f16\u8bd1\u548cYUM\u65b9\u6cd5\u5b89\u88c5MySQL\u6570\u636e\u5e93\uff0c\u8fd9\u7bc7\u6587\u7ae0\u540c\u6837\u662f\u4f7f\u7528YUM\u65b9\u6cd5\u5728CentOS7.2(64bits)\u7684\u673a\u5668\u4e0a\u5b89\u88c5\u6700\u65b0\u7684MySQL5.7.10\u6570\u636e\u5e93\u3002<\/p>\n<h4>1 \u67e5\u770bLinux\u53d1\u884c\u7248\u672c<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">redhat<\/span><span class=\"o\">-<\/span><span class=\"nx\">release<\/span>\n<span class=\"nx\">CentOS<\/span><span class=\"w\"> <\/span><span class=\"nx\">Linux<\/span><span class=\"w\"> <\/span><span class=\"nx\">release<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">7.2.1511<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">Core<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u4e0b\u8f7dMySQL\u5b98\u65b9\u7684Yum Repository<\/h4>\n<p>\u6839\u636eLinux\u53d1\u884c\u7248\u672c\uff08CentOS\u3001Fedora\u90fd\u5c5e\u4e8e\u7ea2\u5e3d\u7cfb\uff09\uff0c\u4ecemysql\u5b98\u65b9\uff08http:\/\/dev.mysql.com\/downloads\/repo\/yum\/\uff09\u83b7\u53d6Yum Repository\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\">  <\/span><span class=\"n\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">dev<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"k\">get<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"k\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"p\">.<\/span><span class=\"n\">rpm<\/span>\n<span class=\"o\">--<\/span><span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"w\"> <\/span><span class=\"mi\">18<\/span><span class=\"err\">:<\/span><span class=\"mi\">36<\/span><span class=\"err\">:<\/span><span class=\"mi\">02<\/span><span class=\"o\">--<\/span><span class=\"w\">  <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">dev<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"k\">get<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"k\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"p\">.<\/span><span class=\"n\">rpm<\/span>\n<span class=\"n\">Resolving<\/span><span class=\"w\"> <\/span><span class=\"n\">dev<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">dev<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"p\">)...<\/span><span class=\"w\"> <\/span><span class=\"mf\">137.254.60.11<\/span>\n<span class=\"n\">Connecting<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">dev<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">dev<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"p\">)<\/span><span class=\"o\">|<\/span><span class=\"mf\">137.254.60.11<\/span><span class=\"o\">|<\/span><span class=\"err\">:<\/span><span class=\"mf\">80.<\/span><span class=\"p\">..<\/span><span class=\"w\"> <\/span><span class=\"n\">connected<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">HTTP<\/span><span class=\"w\"> <\/span><span class=\"n\">request<\/span><span class=\"w\"> <\/span><span class=\"n\">sent<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">awaiting<\/span><span class=\"w\"> <\/span><span class=\"n\">response<\/span><span class=\"p\">...<\/span><span class=\"w\"> <\/span><span class=\"mi\">302<\/span><span class=\"w\"> <\/span><span class=\"k\">Found<\/span>\n<span class=\"nl\">Location<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">repo<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"k\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"p\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">following<\/span><span class=\"o\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"w\"> <\/span><span class=\"mi\">18<\/span><span class=\"err\">:<\/span><span class=\"mi\">36<\/span><span class=\"err\">:<\/span><span class=\"mi\">04<\/span><span class=\"o\">--<\/span><span class=\"w\">  <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">repo<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"k\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"p\">.<\/span><span class=\"n\">rpm<\/span>\n<span class=\"n\">Resolving<\/span><span class=\"w\"> <\/span><span class=\"n\">repo<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">repo<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"p\">)...<\/span><span class=\"w\"> <\/span><span class=\"mf\">104.102.164.25<\/span>\n<span class=\"n\">Connecting<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">repo<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">repo<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"p\">)<\/span><span class=\"o\">|<\/span><span class=\"mf\">104.102.164.25<\/span><span class=\"o\">|<\/span><span class=\"err\">:<\/span><span class=\"mf\">80.<\/span><span class=\"p\">..<\/span><span class=\"w\"> <\/span><span class=\"n\">connected<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">HTTP<\/span><span class=\"w\"> <\/span><span class=\"n\">request<\/span><span class=\"w\"> <\/span><span class=\"n\">sent<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">awaiting<\/span><span class=\"w\"> <\/span><span class=\"n\">response<\/span><span class=\"p\">...<\/span><span class=\"w\"> <\/span><span class=\"mi\">200<\/span><span class=\"w\"> <\/span><span class=\"n\">OK<\/span>\n<span class=\"nl\">Length<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">8984<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mf\">8.8<\/span><span class=\"n\">K<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">application\/x-redhat-package-manager<\/span><span class=\"o\">]<\/span>\n<span class=\"n\">Saving<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"err\">\u2018<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"k\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"p\">.<\/span><span class=\"n\">rpm<\/span><span class=\"err\">\u2019<\/span>\n\n<span class=\"mi\">100<\/span><span class=\"o\">%[<\/span><span class=\"n\">=============================================================================================================================&gt;<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"mi\">984<\/span><span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"p\">.<\/span><span class=\"o\">-<\/span><span class=\"n\">K<\/span><span class=\"o\">\/<\/span><span class=\"n\">s<\/span><span class=\"w\">   <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"n\">s<\/span>\n\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"w\"> <\/span><span class=\"mi\">18<\/span><span class=\"err\">:<\/span><span class=\"mi\">36<\/span><span class=\"err\">:<\/span><span class=\"mi\">07<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mf\">68.4<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"o\">\/<\/span><span class=\"n\">s<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"err\">\u2018<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"k\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"p\">.<\/span><span class=\"n\">rpm<\/span><span class=\"err\">\u2019<\/span><span class=\"w\"> <\/span><span class=\"n\">saved<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">8984\/8984<\/span><span class=\"o\">]<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3 \u5b89\u88c5MySQL\u7684Yum Repository<\/h4>\n<p>\u5b89\u88c5\u5b8cMySQL\u7684Yum Repository\uff0c\u6bcf\u6b21\u6267\u884cyum update\u90fd\u4f1a\u68c0\u67e5MySQL\u662f\u5426\u66f4\u65b0\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># yum -y install mysql57-community-release-el7-7.noarch.rpm<\/span>\n<span class=\"n\">Loaded<\/span><span class=\"w\"> <\/span><span class=\"n\">plugins<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">axelget<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fastestmirror<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">langpacks<\/span>\n<span class=\"n\">Examining<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span>\n<span class=\"n\">Marking<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"n\">Resolving<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependencies<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mi\">7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Finished<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"w\"> <\/span><span class=\"n\">Resolution<\/span>\n\n<span class=\"n\">Dependencies<\/span><span class=\"w\"> <\/span><span class=\"n\">Resolved<\/span>\n\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\">                                       <\/span><span class=\"n\">Arch<\/span><span class=\"w\">                       <\/span><span class=\"n\">Version<\/span><span class=\"w\">                    <\/span><span class=\"n\">Repository<\/span><span class=\"w\">                                                   <\/span><span class=\"n\">Size<\/span>\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"n\">Installing<\/span><span class=\"p\">:<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"w\">                     <\/span><span class=\"n\">noarch<\/span><span class=\"w\">                     <\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mi\">7<\/span><span class=\"w\">                      <\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                     <\/span><span class=\"mf\">7.8<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n\n<span class=\"n\">Transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">Summary<\/span>\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"n\">Install<\/span><span class=\"w\">  <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span>\n\n<span class=\"n\">Total<\/span><span class=\"w\"> <\/span><span class=\"n\">size<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mf\">7.8<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n<span class=\"n\">Installed<\/span><span class=\"w\"> <\/span><span class=\"n\">size<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mf\">7.8<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n<span class=\"n\">Downloading<\/span><span class=\"w\"> <\/span><span class=\"n\">packages<\/span><span class=\"p\">:<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span>\n<span class=\"n\">Transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"w\"> <\/span><span class=\"n\">succeeded<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                                                                                                              <\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                                                                                                              <\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">1<\/span>\n\n<span class=\"n\">Installed<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mi\">7<\/span>\n\n<span class=\"n\">Complete<\/span><span class=\"o\">!<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3 \u5b89\u88c5MySQL\u6570\u636e\u5e93\u7684\u670d\u52a1\u5668\u7248\u672c<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># yum -y install mysql-community-server<\/span>\n<span class=\"n\">Loaded<\/span><span class=\"w\"> <\/span><span class=\"n\">plugins<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">axelget<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">fastestmirror<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">langpacks<\/span>\n<span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">base<\/span>\n<span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">epel<\/span>\n<span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">extras<\/span>\n<span class=\"n\">repomd<\/span><span class=\"o\">.<\/span><span class=\"n\">xml<\/span><span class=\"w\">                                                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">update<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">connectors<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">successfully<\/span>\n<span class=\"n\">repomd<\/span><span class=\"o\">.<\/span><span class=\"n\">xml<\/span><span class=\"w\">                                                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">update<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">successfully<\/span>\n<span class=\"n\">repomd<\/span><span class=\"o\">.<\/span><span class=\"n\">xml<\/span><span class=\"w\">                                                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">update<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">successfully<\/span>\n<span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">updates<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">connectors<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                                                                                                                           <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                                                                                                                               <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">primary_db<\/span><span class=\"w\">                                                                                                  <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">24<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">01<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">primary_db<\/span><span class=\"w\">                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">28<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">01<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">connectors<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">primary_db<\/span><span class=\"w\">                                                                                             <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">8.6<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">02<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">Loading<\/span><span class=\"w\"> <\/span><span class=\"n\">mirror<\/span><span class=\"w\"> <\/span><span class=\"n\">speeds<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"n\">cached<\/span><span class=\"w\"> <\/span><span class=\"n\">hostfile<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">base<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mirrors<\/span><span class=\"o\">.<\/span><span class=\"n\">aliyun<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">epel<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mirrors<\/span><span class=\"o\">.<\/span><span class=\"n\">neusoft<\/span><span class=\"o\">.<\/span><span class=\"n\">edu<\/span><span class=\"o\">.<\/span><span class=\"n\">cn<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">extras<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mirrors<\/span><span class=\"o\">.<\/span><span class=\"mf\">163.<\/span><span class=\"n\">com<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">updates<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mirrors<\/span><span class=\"o\">.<\/span><span class=\"mf\">163.<\/span><span class=\"n\">com<\/span>\n<span class=\"n\">Resolving<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependencies<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"p\">(<\/span><span class=\"n\">x86<\/span><span class=\"o\">-<\/span><span class=\"mi\">64<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"p\">(<\/span><span class=\"n\">x86<\/span><span class=\"o\">-<\/span><span class=\"mi\">64<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"p\">(<\/span><span class=\"n\">x86<\/span><span class=\"o\">-<\/span><span class=\"mi\">64<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">44<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">centos<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleted<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">libmysqlclient<\/span><span class=\"o\">.<\/span><span class=\"n\">so<\/span><span class=\"o\">.<\/span><span class=\"mi\">18<\/span><span class=\"p\">()(<\/span><span class=\"mi\">64<\/span><span class=\"n\">bit<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">:<\/span><span class=\"n\">postfix<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.10<\/span><span class=\"o\">.<\/span><span class=\"mi\">1<\/span><span class=\"o\">-<\/span><span class=\"mf\">6.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">libmysqlclient<\/span><span class=\"o\">.<\/span><span class=\"n\">so<\/span><span class=\"o\">.<\/span><span class=\"mi\">18<\/span><span class=\"p\">(<\/span><span class=\"n\">libmysqlclient_18<\/span><span class=\"p\">)(<\/span><span class=\"mi\">64<\/span><span class=\"n\">bit<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">:<\/span><span class=\"n\">postfix<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.10<\/span><span class=\"o\">.<\/span><span class=\"mi\">1<\/span><span class=\"o\">-<\/span><span class=\"mf\">6.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleting<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"n\">compat<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleting<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Finished<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"w\"> <\/span><span class=\"n\">Resolution<\/span>\n\n<span class=\"n\">Dependencies<\/span><span class=\"w\"> <\/span><span class=\"n\">Resolved<\/span>\n\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\">                                            <\/span><span class=\"n\">Arch<\/span><span class=\"w\">                          <\/span><span class=\"n\">Version<\/span><span class=\"w\">                               <\/span><span class=\"n\">Repository<\/span><span class=\"w\">                                <\/span><span class=\"n\">Size<\/span>\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"n\">Installing<\/span><span class=\"p\">:<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"w\">                               <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                        <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                          <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                        <\/span><span class=\"mf\">2.2<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"w\">     <\/span><span class=\"n\">replacing<\/span><span class=\"w\">  <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">44<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">centos<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"n\">compat<\/span><span class=\"w\">                        <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                        <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                          <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                        <\/span><span class=\"mf\">2.0<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"w\">     <\/span><span class=\"n\">replacing<\/span><span class=\"w\">  <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">44<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">centos<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"w\">                             <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                        <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                          <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                        <\/span><span class=\"mi\">142<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">dependencies<\/span><span class=\"p\">:<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"w\">                             <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                        <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                          <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                         <\/span><span class=\"mi\">24<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"w\">                             <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                        <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                          <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                        <\/span><span class=\"mi\">269<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n\n<span class=\"n\">Transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">Summary<\/span>\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"n\">Install<\/span><span class=\"w\">  <\/span><span class=\"mi\">3<\/span><span class=\"w\"> <\/span><span class=\"n\">Packages<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"o\">+<\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependent<\/span><span class=\"w\"> <\/span><span class=\"n\">packages<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">Total<\/span><span class=\"w\"> <\/span><span class=\"n\">download<\/span><span class=\"w\"> <\/span><span class=\"n\">size<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">171<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"n\">Downloading<\/span><span class=\"w\"> <\/span><span class=\"n\">packages<\/span><span class=\"p\">:<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                  <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mi\">142<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">03<\/span><span class=\"p\">:<\/span><span class=\"mi\">42<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"n\">compat<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                             <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.0<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">03<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                    <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.2<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">05<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                  <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">24<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">41<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"k\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">cache<\/span><span class=\"o\">\/<\/span><span class=\"n\">yum<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"mi\">7<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">packages<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Header<\/span><span class=\"w\"> <\/span><span class=\"n\">V3<\/span><span class=\"w\"> <\/span><span class=\"n\">DSA<\/span><span class=\"o\">\/<\/span><span class=\"n\">SHA1<\/span><span class=\"w\"> <\/span><span class=\"n\">Signature<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">key<\/span><span class=\"w\"> <\/span><span class=\"n\">ID<\/span><span class=\"w\"> <\/span><span class=\"mf\">5072e1<\/span><span class=\"n\">f5<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">NOKEY00<\/span><span class=\"w\"> <\/span><span class=\"n\">ETA<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">Public<\/span><span class=\"w\"> <\/span><span class=\"n\">key<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                  <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mi\">269<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">01<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">Retrieving<\/span><span class=\"w\"> <\/span><span class=\"n\">key<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">pki<\/span><span class=\"o\">\/<\/span><span class=\"n\">rpm<\/span><span class=\"o\">-<\/span><span class=\"n\">gpg<\/span><span class=\"o\">\/<\/span><span class=\"n\">RPM<\/span><span class=\"o\">-<\/span><span class=\"n\">GPG<\/span><span class=\"o\">-<\/span><span class=\"n\">KEY<\/span><span class=\"o\">-<\/span><span class=\"n\">mysql<\/span>\n<span class=\"n\">Importing<\/span><span class=\"w\"> <\/span><span class=\"n\">GPG<\/span><span class=\"w\"> <\/span><span class=\"n\">key<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x5072E1F5<\/span><span class=\"p\">:<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Userid<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;MySQL Release Engineering &lt;mysql-build@oss.oracle.com&gt;&quot;<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Fingerprint<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">a4a9<\/span><span class=\"w\"> <\/span><span class=\"mi\">4068<\/span><span class=\"w\"> <\/span><span class=\"mi\">76<\/span><span class=\"n\">fc<\/span><span class=\"w\"> <\/span><span class=\"n\">bd3c<\/span><span class=\"w\"> <\/span><span class=\"mi\">4567<\/span><span class=\"w\"> <\/span><span class=\"mi\">70<\/span><span class=\"n\">c8<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">c71<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">d3b<\/span><span class=\"w\"> <\/span><span class=\"mi\">5072<\/span><span class=\"w\"> <\/span><span class=\"n\">e1f5<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\">    <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"err\">@<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">7.<\/span><span class=\"n\">noarch<\/span><span class=\"p\">)<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">From<\/span><span class=\"w\">       <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">pki<\/span><span class=\"o\">\/<\/span><span class=\"n\">rpm<\/span><span class=\"o\">-<\/span><span class=\"n\">gpg<\/span><span class=\"o\">\/<\/span><span class=\"n\">RPM<\/span><span class=\"o\">-<\/span><span class=\"n\">GPG<\/span><span class=\"o\">-<\/span><span class=\"n\">KEY<\/span><span class=\"o\">-<\/span><span class=\"n\">mysql<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span>\n<span class=\"n\">Transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"w\"> <\/span><span class=\"n\">succeeded<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                          <\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                            <\/span><span class=\"mi\">2<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                          <\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                          <\/span><span class=\"mi\">4<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"n\">compat<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                     <\/span><span class=\"mi\">5<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Erasing<\/span><span class=\"w\">    <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">44<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">centos<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                           <\/span><span class=\"mi\">6<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                          <\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"n\">compat<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                     <\/span><span class=\"mi\">2<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                          <\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                            <\/span><span class=\"mi\">4<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                          <\/span><span class=\"mi\">5<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">44<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">centos<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                           <\/span><span class=\"mi\">6<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span>\n\n<span class=\"n\">Installed<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\">          <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"n\">compat<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\">          <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span>\n\n<span class=\"n\">Dependency<\/span><span class=\"w\"> <\/span><span class=\"n\">Installed<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                                       <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">10<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.<\/span><span class=\"n\">el7<\/span>\n\n<span class=\"n\">Replaced<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">44<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">centos<\/span>\n\n<span class=\"n\">Complete<\/span><span class=\"o\">!<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># clear<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6700\u540e\u7684\u622a\u56fe\uff1a<\/p>\n<p><img alt=\"yum\u5b89\u88c5mysql5.7.10\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/yum_install_mysql5.7.10.png\" title=\"yum\u5b89\u88c5mysql5.7.10\"><\/p>\n<h4>4 \u542f\u52a8\u6570\u636e\u5e93\uff1a<\/h4>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">systemctl<\/span><span class=\"w\"> <\/span><span class=\"nx\">start<\/span><span class=\"w\">  <\/span><span class=\"nx\">mysqld<\/span><span class=\"p\">.<\/span><span class=\"nx\">service<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7136\u540e\u4f7f\u7528\u547d\u4ee4<code>systemctl status mysqld.service<\/code>\u67e5\u770bMySQL\u6570\u636e\u5e93\u542f\u52a8\u540e\u7684\u670d\u52a1\u72b6\u6001\uff1a<\/p>\n<p><img alt=\"systemctl\u547d\u4ee4\u67e5\u770bMySQL\u670d\u52a1\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/mysql_process_status.png\" title=\"systemctl\u547d\u4ee4\u67e5\u770bMySQL\u670d\u52a1\u72b6\u6001\"><\/p>\n<h4>5 \u83b7\u53d6\u521d\u59cb\u5bc6\u7801<\/h4>\n<p>\u4f7f\u7528YUM\u5b89\u88c5\u5e76\u542f\u52a8MySQL\u670d\u52a1\u540e\uff0cMySQL\u8fdb\u7a0b\u4f1a\u81ea\u52a8\u5728\u8fdb\u7a0b\u65e5\u5fd7\u4e2d\u6253\u5370root\u7528\u6237\u7684\u521d\u59cb\u5bc6\u7801\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#####<\/span><span class=\"n\">##\u4ecemysql\u8fdb\u7a0b\u65e5\u5fd7\u4e2d\u83b7\u53d6root\u7528\u6237\u7684\u521d\u59cb\u5bc6\u7801<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">ra<\/span><span class=\"o\">%<\/span><span class=\"n\">yk7urCBIh<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">grep<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;password&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nf\">var<\/span><span class=\"o\">\/<\/span><span class=\"nf\">log<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysqld<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">42<\/span><span class=\"err\">:<\/span><span class=\"mf\">17.272166<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">A<\/span><span class=\"w\"> <\/span><span class=\"k\">temporary<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">generated<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">root<\/span><span class=\"nv\">@localhost<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">ra<\/span><span class=\"o\">%<\/span><span class=\"n\">yk7urCBIh<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">42<\/span><span class=\"err\">:<\/span><span class=\"mf\">36.776875<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Access<\/span><span class=\"w\"> <\/span><span class=\"n\">denied<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">user<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;root&#39;<\/span><span class=\"err\">@<\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"nl\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">NO<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">42<\/span><span class=\"err\">:<\/span><span class=\"mf\">52.063138<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Access<\/span><span class=\"w\"> <\/span><span class=\"n\">denied<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">user<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;root&#39;<\/span><span class=\"err\">@<\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"nl\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">NO<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">42<\/span><span class=\"err\">:<\/span><span class=\"mf\">57.564373<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Access<\/span><span class=\"w\"> <\/span><span class=\"n\">denied<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">user<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;root&#39;<\/span><span class=\"err\">@<\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"nl\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">NO<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">43<\/span><span class=\"err\">:<\/span><span class=\"mf\">01.477007<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">5<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Access<\/span><span class=\"w\"> <\/span><span class=\"n\">denied<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">user<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;root&#39;<\/span><span class=\"err\">@<\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"nl\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">NO<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">46<\/span><span class=\"err\">:<\/span><span class=\"mf\">03.642008<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Access<\/span><span class=\"w\"> <\/span><span class=\"n\">denied<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">user<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;root&#39;<\/span><span class=\"err\">@<\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"nl\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">NO<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">46<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.217889<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">7<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Access<\/span><span class=\"w\"> <\/span><span class=\"n\">denied<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">user<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;root&#39;<\/span><span class=\"err\">@<\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">using<\/span><span class=\"w\"> <\/span><span class=\"nl\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">NO<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">44.755199<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Shutting<\/span><span class=\"w\"> <\/span><span class=\"n\">down<\/span><span class=\"w\"> <\/span><span class=\"n\">plugin<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;validate_password&#39;<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">46.505844<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Shutting<\/span><span class=\"w\"> <\/span><span class=\"n\">down<\/span><span class=\"w\"> <\/span><span class=\"n\">plugin<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;sha256_password&#39;<\/span>\n<span class=\"mi\">2016<\/span><span class=\"o\">-<\/span><span class=\"mi\">02<\/span><span class=\"o\">-<\/span><span class=\"mi\">03<\/span><span class=\"nl\">T10<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">46.505851<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Shutting<\/span><span class=\"w\"> <\/span><span class=\"n\">down<\/span><span class=\"w\"> <\/span><span class=\"n\">plugin<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;mysql_native_password&#39;<\/span>\n<\/code><\/pre><\/div>\n\n<h4>6 \u4fee\u6539root\u7528\u6237\u5bc6\u7801<\/h4>\n<p>\u4f7f\u7528\u5c0f\u82825\u4e2d\u83b7\u53d6\u7684root\u7528\u6237\u7684\u521d\u59cb\u5bc6\u7801\uff0c\u7136\u540e\u8fdb\u884c\u4fee\u6539\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">uroot<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">p<\/span>\n<span class=\"nx\">Enter<\/span><span class=\"w\"> <\/span><span class=\"nx\">password<\/span><span class=\"p\">:<\/span><span class=\"w\">             <\/span><span class=\"err\">#######<\/span><span class=\"nx\">\u8f93\u5165\u9ed8\u8ba4\u7684root\u5bc6\u7801\u540e\u56de\u8f66<\/span>\n<span class=\"nx\">Welcome<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"nx\">monitor<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Commands<\/span><span class=\"w\"> <\/span><span class=\"nx\">end<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"nx\">g<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Your<\/span><span class=\"w\"> <\/span><span class=\"nx\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"nx\">connection<\/span><span class=\"w\"> <\/span><span class=\"nx\">id<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span>\n<span class=\"nx\">Server<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">5.7.10<\/span>\n\n<span class=\"nx\">Copyright<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">c<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"mi\">2000<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">Oracle<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"o\">\/<\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">its<\/span><span class=\"w\"> <\/span><span class=\"nx\">affiliates<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"nx\">All<\/span><span class=\"w\"> <\/span><span class=\"nx\">rights<\/span><span class=\"w\"> <\/span><span class=\"nx\">reserved<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">Oracle<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">registered<\/span><span class=\"w\"> <\/span><span class=\"nx\">trademark<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">Oracle<\/span><span class=\"w\"> <\/span><span class=\"nx\">Corporation<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"o\">\/<\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">its<\/span>\n<span class=\"nx\">affiliates<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"nx\">Other<\/span><span class=\"w\"> <\/span><span class=\"nx\">names<\/span><span class=\"w\"> <\/span><span class=\"nx\">may<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">trademarks<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">their<\/span><span class=\"w\"> <\/span><span class=\"nx\">respective<\/span>\n<span class=\"nx\">owners<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">Type<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">help<\/span><span class=\"p\">;<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;\\h&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">help<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"nx\">Type<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;\\c&#39;<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">clear<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">current<\/span><span class=\"w\"> <\/span><span class=\"nx\">input<\/span><span class=\"w\"> <\/span><span class=\"nx\">statement<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">mysql<\/span><span class=\"p\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">ALTER<\/span><span class=\"w\"> <\/span><span class=\"nx\">USER<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">root<\/span><span class=\"sc\">&#39;@&#39;<\/span><span class=\"nx\">localhost<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"nx\">IDENTIFIED<\/span><span class=\"w\"> <\/span><span class=\"nx\">BY<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">new<\/span><span class=\"w\"> <\/span><span class=\"nx\">password<\/span><span class=\"err\">&#39;<\/span><span class=\"p\">;<\/span>\n<span class=\"nx\">Query<\/span><span class=\"w\"> <\/span><span class=\"nx\">OK<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"nx\">rows<\/span><span class=\"w\"> <\/span><span class=\"nx\">affected<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"m m-Double\">0.00<\/span><span class=\"w\"> <\/span><span class=\"nx\">sec<\/span><span class=\"p\">)<\/span>\n\n<span class=\"nx\">mysql<\/span><span class=\"p\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">exit<\/span>\n<span class=\"nx\">Bye<\/span>\n<\/code><\/pre><\/div>\n\n<h4>7 \u5b89\u88c5\u5b8c\u6bd5<\/h4>\n<p>\u81f3\u6b64\uff0c\u4f7f\u7528\u5728CentOS7\u4e2d\u4f7f\u7528YUM\u65b9\u6cd5\u5b89\u88c5MySQL5.7.10\u6570\u636e\u5e93\u5b8c\u6bd5\u3002\u5982\u4e0b\u6240\u793a\uff0c\u53ef\u4ee5\u4f7f\u7528\u65b0\u7684root\u5bc6\u7801\u767b\u9646MySQL\u4e86\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">uroot<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">ppassword<\/span>\n<span class=\"nl\">mysql<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Warning<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"k\">Using<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">command<\/span><span class=\"w\"> <\/span><span class=\"n\">line<\/span><span class=\"w\"> <\/span><span class=\"n\">interface<\/span><span class=\"w\"> <\/span><span class=\"n\">can<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">insecure<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Welcome<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">monitor<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">Commands<\/span><span class=\"w\"> <\/span><span class=\"k\">end<\/span><span class=\"w\"> <\/span><span class=\"k\">with<\/span><span class=\"w\"> <\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"n\">g<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Your<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"k\">connection<\/span><span class=\"w\"> <\/span><span class=\"n\">id<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span>\n<span class=\"n\">Server<\/span><span class=\"w\"> <\/span><span class=\"nl\">version<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.7.10<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">Community<\/span><span class=\"w\"> <\/span><span class=\"n\">Server<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">GPL<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">Copyright<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">c<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"mi\">2000<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">Oracle<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"o\">\/<\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"n\">its<\/span><span class=\"w\"> <\/span><span class=\"n\">affiliates<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"ow\">All<\/span><span class=\"w\"> <\/span><span class=\"n\">rights<\/span><span class=\"w\"> <\/span><span class=\"n\">reserved<\/span><span class=\"p\">.<\/span>\n\n<span class=\"n\">Oracle<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">registered<\/span><span class=\"w\"> <\/span><span class=\"n\">trademark<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">Oracle<\/span><span class=\"w\"> <\/span><span class=\"n\">Corporation<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"o\">\/<\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"n\">its<\/span>\n<span class=\"n\">affiliates<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">Other<\/span><span class=\"w\"> <\/span><span class=\"k\">names<\/span><span class=\"w\"> <\/span><span class=\"n\">may<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">trademarks<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">their<\/span><span class=\"w\"> <\/span><span class=\"n\">respective<\/span>\n<span class=\"n\">owners<\/span><span class=\"p\">.<\/span>\n\n<span class=\"n\">Type<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;help;&#39;<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;\\h&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">help<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">Type<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;\\c&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">clear<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"k\">current<\/span><span class=\"w\"> <\/span><span class=\"k\">input<\/span><span class=\"w\"> <\/span><span class=\"k\">statement<\/span><span class=\"p\">.<\/span>\n\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">Reading<\/span><span class=\"w\"> <\/span><span class=\"nc\">table<\/span><span class=\"w\"> <\/span><span class=\"n\">information<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"k\">completion<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"nc\">table<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"k\">column<\/span><span class=\"w\"> <\/span><span class=\"k\">names<\/span>\n<span class=\"n\">You<\/span><span class=\"w\"> <\/span><span class=\"n\">can<\/span><span class=\"w\"> <\/span><span class=\"n\">turn<\/span><span class=\"w\"> <\/span><span class=\"k\">off<\/span><span class=\"w\"> <\/span><span class=\"n\">this<\/span><span class=\"w\"> <\/span><span class=\"n\">feature<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">get<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">quicker<\/span><span class=\"w\"> <\/span><span class=\"n\">startup<\/span><span class=\"w\"> <\/span><span class=\"k\">with<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">A<\/span>\n\n<span class=\"k\">Database<\/span><span class=\"w\"> <\/span><span class=\"n\">changed<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">show<\/span><span class=\"w\"> <\/span><span class=\"n\">databases<\/span><span class=\"p\">;<\/span>\n<span class=\"o\">+--------------------+<\/span>\n<span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"k\">Database<\/span><span class=\"w\">           <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">+--------------------+<\/span>\n<span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">information_schema<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"w\">              <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">performance_schema<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"n\">sys<\/span><span class=\"w\">                <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">+--------------------+<\/span>\n<span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"k\">rows<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mf\">0.00<\/span><span class=\"w\"> <\/span><span class=\"n\">sec<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">clear<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">exit<\/span>\n<span class=\"n\">Bye<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">clear<\/span>\n<\/code><\/pre><\/div>\n\n<h4>\u9644\u5f551\uff1a\u67e5\u770bMySQL\u6570\u636e\u5e93\u7684\u914d\u7f6e\u4fe1\u606f<\/h4>\n<p>MySQL\u7684\u914d\u7f6e\u6587\u4ef6\u4f9d\u7136\u662f<code>\/etc\/my.cnf<\/code>\uff0c\u5176\u5b83\u5b89\u88c5\u4fe1\u606f\u53ef\u4ee5\u901a\u8fc7<code>mysql_config<\/code>\u547d\u4ee4\u67e5\u770b\u3002\u5176\u4e2d\uff0c\u52a8\u6001\u5e93\u6587\u4ef6\u5b58\u653e\u5728<code>\/usr\/lib64\/mysql<\/code>\u76ee\u5f55\u4e0b\u3002<\/p>\n<p><img alt=\"mysql_config\u547d\u4ee4\u67e5\u770bmysql\u6570\u636e\u5e93\u7684\u5b89\u88c5\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/mysql_config.png\" title=\"mysql_config\u547d\u4ee4\u67e5\u770bmysql\u6570\u636e\u5e93\u7684\u5b89\u88c5\u4fe1\u606f\"><\/p>\n<h4>\u9644\u5f552\uff1a\u5bf9\u4e8eC\/C++\u7b49\u5f00\u53d1\u8005<\/h4>\n<p>\u7531\u4e8e\u9700\u8981\u7528\u5230\u7c7b\u4f3cmysql.h\u7b49\u5934\u6587\u4ef6\uff0c\u9700\u8981\u6267\u884c\u4e0b\u9762\u7684\u547d\u4ee4\u5b89\u88c5mysql\u5f00\u53d1\u7248\u672c\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"o\">-<\/span><span class=\"nx\">community<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span>\n<\/code><\/pre><\/div>\n\n<h4>\u9644\u5f553\uff1a\u5220\u9664MySQL\u7684Repository<\/h4>\n<p>\u56e0\u4e3a\u5c0f\u82823\u4e2d\u5b89\u88c5\u4e86MySQL\u7684Yum Repository\uff0c\u6240\u4ee5\u4ee5\u540e\u6bcf\u6b21\u6267\u884cyum\u64cd\u4f5c\u65f6\uff0c\u90fd\u4f1a\u53bb\u68c0\u67e5\u66f4\u65b0\u3002\u5982\u679c\u60f3\u8981\u53bb\u6389\u8fd9\u79cd\u81ea\u52a8\u68c0\u67e5\u64cd\u4f5c\u7684\u8bdd\uff0c\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u5378\u8f7dMySQL\u7684Repository\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">remove<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql57<\/span><span class=\"o\">-<\/span><span class=\"nx\">community<\/span><span class=\"o\">-<\/span><span class=\"nx\">release<\/span><span class=\"o\">-<\/span><span class=\"nx\">el7<\/span><span class=\"o\">-<\/span><span class=\"mi\">7<\/span><span class=\"p\">.<\/span><span class=\"nx\">noarch<\/span>\n<\/code><\/pre><\/div>\n\n<h4>update 2017.04.10 11:10<\/h4>\n<p>\u4f7f\u7528\u4e0a\u9762\u7684yum\u65b9\u6cd5\u4e5f\u53ef\u4ee5\u5b89\u88c5\u76ee\u524dmysql\u5b98\u7f51\u4e0a\u6700\u65b0\u7684\u7248\u672cmysql5.7.18\u3002\u53ea\u8981\u66ff\u6362\u5c0f\u82822\u4e2drmp\u5305\u7684\u7248\u672c\u5373\u53ef\uff0c\u540e\u7eed\u64cd\u4f5c\u6b65\u9aa4\u4e0d\u53d8\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>wget -i -c http:\/\/dev.mysql.com\/get\/mysql57-community-release-el7-10.noarch.rpm\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"mysql"}}]},{"title":"Linux\u591a\u8fdb\u7a0b\u548c\u591a\u7ebf\u7a0b\u7684\u4e00\u6b21gdb\u8c03\u8bd5\u5b9e\u4f8b","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/multilprocessthreadgdb.html","rel":"alternate"}},"published":"2016-02-25T23:18:00+08:00","updated":"2016-02-25T23:18:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-02-25:\/cseries\/multilprocessthreadgdb.html","summary":"<p>Linux C\/C++\u5f00\u53d1\u4e2dgdb\u8fdb\u884c\u591a\u8fdb\u7a0b\u548c\u591a\u7ebf\u7a0b\u7684\u8c03\u8bd5\u4e00\u76f4\u6bd4\u8f83\u9ebb\u70e6\uff0c\u5728CSDN\u4e0a\u770b\u5230\u9ad8\u79d1\u7684\u4e00\u7bc7\u6587\u7ae0<a href=\"http:\/\/blog.csdn.net\/pbymw8iwm\/article\/details\/7876797\" title=\"\u67e5\u770b\u539f\u6587\">\u300agdb\u8c03\u8bd5\u591a\u8fdb\u7a0b\u548c\u591a\u7ebf\u7a0b\u547d\u4ee4\u300b<\/a>\u6bd4\u8f83\u6709\u542f\u53d1\uff0c\u8fd9\u91cc\u5c31\u81ea\u5df1\u91cd\u65b0\u6574\u7406\u5e76\u505a\u4e86\u4e00\u4e2aGDB\u591a\u8fdb\u7a0b\/\u7ebf\u7a0b\u7684\u8c03\u8bd5\u5b9e\u8df5\u3002<\/p>\n","content":"<p>Linux C\/C++\u5f00\u53d1\u4e2dgdb\u8fdb\u884c\u591a\u8fdb\u7a0b\u548c\u591a\u7ebf\u7a0b\u7684\u8c03\u8bd5\u4e00\u76f4\u6bd4\u8f83\u9ebb\u70e6\uff0c\u5728CSDN\u4e0a\u770b\u5230\u9ad8\u79d1\u7684\u4e00\u7bc7\u6587\u7ae0<a href=\"http:\/\/blog.csdn.net\/pbymw8iwm\/article\/details\/7876797\" title=\"\u67e5\u770b\u539f\u6587\">\u300agdb\u8c03\u8bd5\u591a\u8fdb\u7a0b\u548c\u591a\u7ebf\u7a0b\u547d\u4ee4\u300b<\/a>\u6bd4\u8f83\u6709\u542f\u53d1\uff0c\u8fd9\u91cc\u5c31\u81ea\u5df1\u91cd\u65b0\u6574\u7406\u5e76\u505a\u4e86\u4e00\u4e2aGDB\u591a\u8fdb\u7a0b\/\u7ebf\u7a0b\u7684\u8c03\u8bd5\u5b9e\u8df5\u3002<\/p>\n\n\n<h4>1 \u539f\u6587\u6574\u7406<\/h4>\n<p>\u9ed8\u8ba4\u8bbe\u7f6e\u4e0b\uff0c\u5728\u8c03\u8bd5\u591a\u8fdb\u7a0b\u7a0b\u5e8f\u65f6gdb\u53ea\u4f1a\u8c03\u8bd5\u4e3b\u8fdb\u7a0b\u3002gdb7\u4ee5\u4e0a\u7684\u7248\u672c(gdb --version)\u652f\u6301\u591a\u8fdb\u7a0b\u8c03\u8bd5\uff0c\u53ea\u9700\u8981\u8bbe\u7f6e\u597d<code>follow-fork-mode<\/code>\uff08fork\u8ffd\u8e2a\u6a21\u5f0f\uff09\u4ee5\u53ca<code>detach-on-fork<\/code>\uff08\u6307\u793aGDB\u5728fork\u4e4b\u540e\u662f\u5426\u65ad\u5f00\u67d0\u4e2a\u8fdb\u7a0b\u7684\u8c03\u8bd5\uff09\u5373\u53ef\u3002<\/p>\n<p>\u8fd9\u4e24\u4e2a\u53c2\u6570\u7684\u8bbe\u7f6e\u547d\u4ee4\u5206\u522b\u662f\uff1aset follow-fork-mode [parent|child]\uff0cset detach-on-fork [on|off]\u3002\u4e24\u8005\u7ed3\u5408\u8d77\u6765\u6784\u6210\u4e86GDB\u7684\u8c03\u8bd5\u6a21\u5f0f\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>follow-fork-mode  detach-on-fork    \u8bf4\u660e\n    parent              on          GDB\u9ed8\u8ba4\u7684\u8c03\u8bd5\u6a21\u5f0f\uff1a\u53ea\u8c03\u8bd5\u4e3b\u8fdb\u7a0b\n    child               on          \u53ea\u8c03\u8bd5\u5b50\u8fdb\u7a0b\n    parent              off         \u540c\u65f6\u8c03\u8bd5\u4e24\u4e2a\u8fdb\u7a0b\uff0cgdb\u8ddf\u4e3b\u8fdb\u7a0b\uff0c\u5b50\u8fdb\u7a0bblock\u5728fork\u4f4d\u7f6e\n    child               off         \u540c\u65f6\u8c03\u8bd5\u4e24\u4e2a\u8fdb\u7a0b\uff0cgdb\u8ddf\u5b50\u8fdb\u7a0b\uff0c\u4e3b\u8fdb\u7a0bblock\u5728fork\u4f4d\u7f6e\n<\/code><\/pre><\/div>\n\n<p>\u67e5\u770bgdb\u9ed8\u8ba4\u7684\u53c2\u6570\u8bbe\u7f6e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"ss\">(<\/span><span class=\"nv\">gdb<\/span><span class=\"ss\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">show<\/span><span class=\"w\"> <\/span><span class=\"nv\">follow<\/span><span class=\"o\">-<\/span><span class=\"nv\">fork<\/span><span class=\"o\">-<\/span><span class=\"nv\">mode<\/span>\n<span class=\"nv\">Debugger<\/span><span class=\"w\"> <\/span><span class=\"nv\">response<\/span><span class=\"w\"> <\/span><span class=\"nv\">to<\/span><span class=\"w\"> <\/span><span class=\"nv\">a<\/span><span class=\"w\"> <\/span><span class=\"nv\">program<\/span><span class=\"w\"> <\/span><span class=\"k\">call<\/span><span class=\"w\"> <\/span><span class=\"nl\">of<\/span><span class=\"w\"> <\/span><span class=\"nv\">fork<\/span><span class=\"w\"> <\/span><span class=\"nv\">or<\/span><span class=\"w\"> <\/span><span class=\"nv\">vfork<\/span><span class=\"w\"> <\/span><span class=\"nv\">is<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;parent&quot;<\/span>.\n<span class=\"ss\">(<\/span><span class=\"nv\">gdb<\/span><span class=\"ss\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">show<\/span><span class=\"w\"> <\/span><span class=\"nv\">detach<\/span><span class=\"o\">-<\/span><span class=\"nv\">on<\/span><span class=\"o\">-<\/span><span class=\"nv\">fork<\/span>\n<span class=\"nv\">Whether<\/span><span class=\"w\"> <\/span><span class=\"nv\">gdb<\/span><span class=\"w\"> <\/span><span class=\"nv\">will<\/span><span class=\"w\"> <\/span><span class=\"nv\">detach<\/span><span class=\"w\"> <\/span><span class=\"nv\">the<\/span><span class=\"w\"> <\/span><span class=\"nv\">child<\/span><span class=\"w\"> <\/span><span class=\"nv\">of<\/span><span class=\"w\"> <\/span><span class=\"nv\">a<\/span><span class=\"w\"> <\/span><span class=\"nv\">fork<\/span><span class=\"w\"> <\/span><span class=\"nv\">is<\/span><span class=\"w\"> <\/span><span class=\"nv\">on<\/span>.\n<span class=\"ss\">(<\/span><span class=\"nv\">gdb<\/span><span class=\"ss\">)<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u6f14\u793a\u4ee3\u7801<\/h4>\n<p>\u4e0b\u9762\u8fd9\u6bb5\u4ee3\u7801\u7684\u4e3b\u8981\u6d41\u7a0b\u5c31\u662f\u5728main\u51fd\u6570\u4e2dfork\u521b\u5efa\u4e00\u4e2a\u5b50\u8fdb\u7a0b\uff0c\u7136\u540e\u5728\u7236\u8fdb\u7a0b\u4e2d\u53c8\u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b\uff0c\u63a5\u7740\u5c31\u4f7f\u7528gdb\u8fdb\u884c\u8c03\u8bd5\uff08block\u5b50\u8fdb\u7a0b\uff09\u3002\u6ce8\u610f\uff0c\u5728\u8c03\u8bd5\u8bbe\u7f6e\u65ad\u70b9\u7684\u65f6\u5019\uff0c\u7531\u4e8e\u4e4b\u524d\u8c03\u8bd5\u7684\u65f6\u5019\u4ee3\u7801\u6700\u524d\u9762\u6ca1\u6709\u52a0\u4e0a\u8fd97\u884c\u8bf4\u660e\u6587\u5b57\uff0c\u6240\u4ee5\u8bbe\u7f6e\u65ad\u70b9\u7684\u884c\u53f7\u8981\u52a0\u4e0a7\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    gdb_pthread.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for the debug of multiprocess and multithreading using gdb in linux system.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2016-02-25 22:48 https:\/\/typecodes.com\/cseries\/multilprocessthreadgdb.html<\/span>\n<span class=\"cm\"> * @Compile     gcc gdb_pthread.c -g -o gdb_pthread<\/span>\n<span class=\"cm\"> * @Reference   http:\/\/blog.csdn.net\/pbymw8iwm\/article\/details\/7876797<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;pthread.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;sys\/types.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;unistd.h&gt;<\/span>\n\n\n<span class=\"c1\">\/\/Parent process handle.<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">Parent<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/Child process handle.<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">Child<\/span><span class=\"p\">();<\/span>\n<span class=\"c1\">\/\/Parent process handle after generate a thread.<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nf\">ParentDo<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">fork<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span><span class=\"w\">        <\/span><span class=\"c1\">\/\/add the first breakpoint.<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">Parent<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">Child<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/Parent process handle.<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">Parent<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">pid_t<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">getpid<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">cParent<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Parent&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">cThread<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Thread&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pthread_t<\/span><span class=\"w\"> <\/span><span class=\"n\">pt<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%s]: [%d] [%s]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cParent<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;step1&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pthread_create<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;<\/span><span class=\"n\">pt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"o\">*<\/span><span class=\"n\">ParentDo<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cThread<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%s]: Can not create a thread.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cParent<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">ParentDo<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cParent<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sleep<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nf\">ParentDo<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">pid_t<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">getpid<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pthread_t<\/span><span class=\"w\"> <\/span><span class=\"n\">tid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">pthread_self<\/span><span class=\"p\">();<\/span><span class=\"w\">     <\/span><span class=\"c1\">\/\/Get the thread-id selfly.<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">tprefix<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;thread&quot;<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%s]: [%d] [%s] [%lu] [%s]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">tprefix<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">tid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;step2&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span><span class=\"w\">         <\/span><span class=\"c1\">\/\/add the second breakpoint.<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%s]: [%d] [%s] [%lu] [%s]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">tprefix<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">tid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;step3&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">Child<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">pid_t<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">getpid<\/span><span class=\"p\">();<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">prefix<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Child&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;[%s]: [%d] [%s]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">prefix<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;step1&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u5df2\u77e5\u5982\u679c\u76f4\u63a5\u8fd0\u884c\u7a0b\u5e8f\uff0c\u90a3\u4e48\u8f93\u51fa\u7684\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">vfhky@typecodes pthread_key<\/span><span class=\"o\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Parent<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">22648<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step1<\/span><span class=\"o\">]<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Parent<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">22648<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">thread<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">139722467432256<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step2<\/span><span class=\"o\">]<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Parent<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">22648<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">thread<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">139722467432256<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step3<\/span><span class=\"o\">]<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Thread<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">22648<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">thread<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">139722450630400<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step2<\/span><span class=\"o\">]<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Thread<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">22648<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">thread<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">139722450630400<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step3<\/span><span class=\"o\">]<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Child<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">22649<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step1<\/span><span class=\"o\">]<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">vfhky@typecodes pthread_key<\/span><span class=\"o\">]<\/span><span class=\"err\">$<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3 gdb\u8c03\u8bd5<\/h4>\n<h5>3.1 \u8bbe\u7f6e\u8c03\u8bd5\u6a21\u5f0f\u548cCatchpoint<\/h5>\n<p>\u8bbe\u7f6e\u8c03\u8bd5\u7236\u5b50\u8fdb\u7a0b\uff0cgdb\u8ddf\u4e3b\u8fdb\u7a0b\uff0c\u5b50\u8fdb\u7a0bblock\u5728fork\u4f4d\u7f6e\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">pthread_key<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">gdb<\/span><span class=\"w\"> <\/span><span class=\"nx\">gdb_pthread<\/span>\n<span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">gdb<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">GDB<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">Red<\/span><span class=\"w\"> <\/span><span class=\"nx\">Hat<\/span><span class=\"w\"> <\/span><span class=\"nx\">Enterprise<\/span><span class=\"w\"> <\/span><span class=\"nx\">Linux<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">7.6.1<\/span><span class=\"o\">-<\/span><span class=\"mi\">80<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span>\n<span class=\"nx\">Copyright<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">C<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"mi\">2013<\/span><span class=\"w\"> <\/span><span class=\"nx\">Free<\/span><span class=\"w\"> <\/span><span class=\"nx\">Software<\/span><span class=\"w\"> <\/span><span class=\"nx\">Foundation<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">Inc<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">License<\/span><span class=\"w\"> <\/span><span class=\"nx\">GPLv3<\/span><span class=\"o\">+<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">GPL<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">later<\/span><span class=\"w\"> <\/span><span class=\"p\">&lt;<\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/gnu.org\/licenses\/gpl.html&gt;<\/span>\n<span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">free<\/span><span class=\"w\"> <\/span><span class=\"nx\">software<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">you<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">free<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">change<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">redistribute<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">There<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">NO<\/span><span class=\"w\"> <\/span><span class=\"nx\">WARRANTY<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">extent<\/span><span class=\"w\"> <\/span><span class=\"nx\">permitted<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">law<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Type<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;show copying&quot;<\/span>\n<span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;show warranty&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">details<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"nx\">GDB<\/span><span class=\"w\"> <\/span><span class=\"nx\">was<\/span><span class=\"w\"> <\/span><span class=\"nx\">configured<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;x86_64-redhat-linux-gnu&quot;<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">bug<\/span><span class=\"w\"> <\/span><span class=\"nx\">reporting<\/span><span class=\"w\"> <\/span><span class=\"nx\">instructions<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">please<\/span><span class=\"w\"> <\/span><span class=\"nx\">see<\/span><span class=\"p\">:<\/span>\n<span class=\"p\">&lt;<\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/www.gnu.org\/software\/gdb\/bugs\/&gt;...<\/span>\n<span class=\"nx\">Reading<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">from<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"o\">...<\/span><span class=\"nx\">done<\/span><span class=\"p\">.<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">set<\/span><span class=\"w\"> <\/span><span class=\"nx\">detach<\/span><span class=\"o\">-<\/span><span class=\"nx\">on<\/span><span class=\"o\">-<\/span><span class=\"nx\">fork<\/span><span class=\"w\"> <\/span><span class=\"nx\">off<\/span>\n<span class=\"err\">#####<\/span><span class=\"nx\">catch\u8ba9\u7a0b\u5e8f\u5728\u53d1\u751f\u67d0\u79cd\u4e8b\u4ef6<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">fork<\/span><span class=\"err\">\u3001<\/span><span class=\"nx\">\u5f02\u5e38throw<\/span><span class=\"err\">\u3001<\/span><span class=\"nx\">\u5f02\u5e38catch<\/span><span class=\"err\">\u3001<\/span><span class=\"nx\">\u52a8\u6001\u5e93\u52a0\u8f7d\u7b49<\/span><span class=\"err\">\uff09<\/span><span class=\"nx\">\u7684\u65f6\u5019\u505c\u6b62\u8fd0\u884c<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">catch<\/span><span class=\"w\"> <\/span><span class=\"nx\">fork<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">Catchpoint<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">fork<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">info<\/span><span class=\"w\"> <\/span><span class=\"nx\">b<\/span>\n<span class=\"nx\">Num<\/span><span class=\"w\">     <\/span><span class=\"nx\">Type<\/span><span class=\"w\">           <\/span><span class=\"nx\">Disp<\/span><span class=\"w\"> <\/span><span class=\"nx\">Enb<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">            <\/span><span class=\"nx\">What<\/span>\n<span class=\"mi\">1<\/span><span class=\"w\">       <\/span><span class=\"nx\">catchpoint<\/span><span class=\"w\">     <\/span><span class=\"nx\">keep<\/span><span class=\"w\"> <\/span><span class=\"nx\">y<\/span><span class=\"w\">                      <\/span><span class=\"nx\">fork<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u5f00\u542fgdb\u8c03\u8bd5\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/start_gdb_debug.png\" title=\"\u5f00\u542fgdb\u8c03\u8bd5\"><\/p>\n<h5>3.2 \u5f00\u59cbgdb\u8c03\u8bd5<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">r<\/span><span class=\"w\">                         <\/span><span class=\"err\">####<\/span><span class=\"nx\">\u8fd0\u884c\u5230\u65ad\u70b9<\/span><span class=\"o\">\/<\/span><span class=\"nx\">\u6355\u6349\u70b9<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u7b2c17\u884c\u5904\u7684fork\u51fd\u6570<\/span><span class=\"err\">\uff0c<\/span><span class=\"mi\">23873<\/span><span class=\"nx\">\u662f\u5b50\u8fdb\u7a0bPID<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"nx\">Starting<\/span><span class=\"w\"> <\/span><span class=\"nx\">program<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">Thread<\/span><span class=\"w\"> <\/span><span class=\"nx\">debugging<\/span><span class=\"w\"> <\/span><span class=\"nx\">using<\/span><span class=\"w\"> <\/span><span class=\"nx\">libthread_db<\/span><span class=\"w\"> <\/span><span class=\"nx\">enabled<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Using<\/span><span class=\"w\"> <\/span><span class=\"nx\">host<\/span><span class=\"w\"> <\/span><span class=\"nx\">libthread_db<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\/lib64\/libthread_db.so.1&quot;<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">Catchpoint<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">forked<\/span><span class=\"w\"> <\/span><span class=\"nx\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00007ffff709b50c<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">__libc_fork<\/span><span class=\"w\"> <\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"p\">..<\/span><span class=\"o\">\/<\/span><span class=\"nx\">nptl<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysdeps<\/span><span class=\"o\">\/<\/span><span class=\"nx\">unix<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysv<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fork<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">130<\/span>\n<span class=\"mi\">130<\/span><span class=\"w\">       <\/span><span class=\"nx\">pid<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">ARCH_FORK<\/span><span class=\"w\"> <\/span><span class=\"p\">();<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">bt<\/span><span class=\"w\">                        <\/span><span class=\"err\">#####<\/span><span class=\"nx\">\u67e5\u770b\u5806\u6808\u60c5\u51b5<\/span>\n<span class=\"err\">#<\/span><span class=\"mi\">0<\/span><span class=\"w\">  <\/span><span class=\"mh\">0x00007ffff709b50c<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">__libc_fork<\/span><span class=\"w\"> <\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"p\">..<\/span><span class=\"o\">\/<\/span><span class=\"nx\">nptl<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysdeps<\/span><span class=\"o\">\/<\/span><span class=\"nx\">unix<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysv<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fork<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">130<\/span>\n<span class=\"err\">#<\/span><span class=\"mi\">1<\/span><span class=\"w\">  <\/span><span class=\"mh\">0x00000000004007b4<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">argc<\/span><span class=\"p\">=<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">argv<\/span><span class=\"p\">=<\/span><span class=\"mh\">0x7fffffffe4c8<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">17<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">info<\/span><span class=\"w\"> <\/span><span class=\"nx\">threads<\/span><span class=\"w\">              <\/span><span class=\"err\">#######<\/span><span class=\"nx\">\u663e\u793a\u8fd0\u884c\u7684\u7ebf\u7a0b\u4fe1\u606f<\/span><span class=\"p\">(<\/span><span class=\"mi\">23869<\/span><span class=\"nx\">\u662f\u7236\u8fdb\u7a0b\u7684PID<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">Id<\/span><span class=\"w\">   <\/span><span class=\"nx\">Target<\/span><span class=\"w\"> <\/span><span class=\"nx\">Id<\/span><span class=\"w\">         <\/span><span class=\"nx\">Frame<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">    <\/span><span class=\"nx\">Thread<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">LWP<\/span><span class=\"w\"> <\/span><span class=\"mi\">23869<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00007ffff709b50c<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">__libc_fork<\/span><span class=\"w\"> <\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"p\">..<\/span><span class=\"o\">\/<\/span><span class=\"nx\">nptl<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysdeps<\/span><span class=\"o\">\/<\/span><span class=\"nx\">unix<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysv<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fork<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">130<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">info<\/span><span class=\"w\"> <\/span><span class=\"nx\">inferiors<\/span><span class=\"w\">            <\/span><span class=\"err\">######<\/span><span class=\"nx\">\u663e\u793a\u6b63\u5728\u8c03\u8bd5\u7684\u8fdb\u7a0b<\/span><span class=\"err\">\uff1a<\/span><span class=\"mi\">1<\/span><span class=\"nx\">\u524d\u9762\u7684\u661f\u53f7\u8868\u793a\u5f53\u524d\u8c03\u8bd5\u7684\u8fdb\u7a0b<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">PID<\/span><span class=\"w\"> <\/span><span class=\"mi\">23869<\/span><span class=\"err\">\uff09\u3002<\/span><span class=\"w\">  <\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">Num<\/span><span class=\"w\">  <\/span><span class=\"nx\">Description<\/span><span class=\"w\">       <\/span><span class=\"nx\">Executable<\/span><span class=\"w\">        <\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">    <\/span><span class=\"nx\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23869<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">info<\/span><span class=\"w\"> <\/span><span class=\"nx\">b<\/span><span class=\"w\">                    <\/span><span class=\"err\">######<\/span><span class=\"nx\">\u5217\u51fa\u6240\u6709\u65ad\u70b9\u548c\u6355\u6349\u70b9<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u6b64\u65f6\u5df2\u7ecfhit<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">time<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5373\u6355\u6349\u5230\u4e86\u4e00\u6b21fork\u4e8b\u4ef6<\/span>\n<span class=\"nx\">Num<\/span><span class=\"w\">     <\/span><span class=\"nx\">Type<\/span><span class=\"w\">           <\/span><span class=\"nx\">Disp<\/span><span class=\"w\"> <\/span><span class=\"nx\">Enb<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">            <\/span><span class=\"nx\">What<\/span>\n<span class=\"mi\">1<\/span><span class=\"w\">       <\/span><span class=\"nx\">catchpoint<\/span><span class=\"w\">     <\/span><span class=\"nx\">keep<\/span><span class=\"w\"> <\/span><span class=\"nx\">y<\/span><span class=\"w\">                      <\/span><span class=\"nx\">fork<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"w\">                   <\/span><span class=\"err\">#####<\/span><span class=\"nx\">\u5b50\u8fdb\u7a0b23873<\/span>\n<span class=\"w\">        <\/span><span class=\"nx\">catchpoint<\/span><span class=\"w\"> <\/span><span class=\"nx\">already<\/span><span class=\"w\"> <\/span><span class=\"nx\">hit<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">time<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8fd9\u65f6\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u67e5\u770b\u5f53\u524dCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u7684\u72b6\u6001\uff1a\u53d1\u73b0\u7236\u8fdb\u7a0bPID\u4e3a23869\uff0c\u901a\u8fc7fork\u4ea7\u751f\u7684\u5b50\u8fdb\u7a0b\u4e3a23873\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">pstree<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">pul<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/pstree_pul_process.png\" title=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\"><\/p>\n<p>\u540c\u65f6\uff0c\u4f7f\u7528\u547d\u4ee4<code>cat \/proc\/23869\/status<\/code>\u67e5\u770b\u5f53\u524d\u8fdb\u7a0b\u7684\u8be6\u7ec6\u4fe1\u606f\uff1a\u8fdb\u7a0bPID\u4e3a23869\uff0c\u5b83\u7684\u7236\u8fdb\u7a0b\uff08\u5373GDB\u8fdb\u7a0b\uff09\u4e3a23859\uff0c\u540c\u65f6\u8fd9\u4e5f\u662f\u8ffd\u8e2a\u8fdb\u7a0bID\uff0c\u7ebf\u7a0b\u6570Threads\u4e3a1\uff08\u5171\u4eab\u4f7f\u7528\u8be5\u4fe1\u53f7\u63cf\u8ff0\u7b26\u7684\u7ebf\u7a0b\u6570\uff0c\u5728POSIX\u591a\u7ebf\u7a0b\u5e8f\u5e94\u7528\u7a0b\u5e8f\u4e2d\uff0c\u7ebf\u7a0b\u7ec4\u4e2d\u7684\u6240\u6709\u7ebf\u7a0b\u4f7f\u7528\u540c\u4e00\u4e2a\u4fe1\u53f7\u63cf\u8ff0\u7b26\uff09\u3002<\/p>\n<p><img alt=\"proc\u67e5\u770b\u8fdb\u7a0b\u7684\u72b6\u6001\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/proc_23869_1.png\" title=\"proc\u67e5\u770b\u8fdb\u7a0b\u7684\u72b6\u6001\u4fe1\u606f\"><\/p>\n<h5>3.3 \u8bbe\u7f6e\u7b2c\u4e00\u4e2a\u65ad\u70b9<\/h5>\n<p>\u5728\u7a0b\u5e8f\u7684\u7b2c18\u884c\u8bbe\u7f6e\u65ad\u70b9\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>(gdb) b gdb_pthread.c:18\nBreakpoint 2 at 0x4007b7: file gdb_pthread.c, line 18.\n(gdb) info b                        ######\u5217\u51fa\u6240\u6709\u65ad\u70b9\u548c\u6355\u6349\u70b9\nNum     Type           Disp Enb Address            What\n1       catchpoint     keep y                      fork, process 23873                 ########\u5b50\u8fdb\u7a0b23873\n        catchpoint already hit 1 time\n2       breakpoint     keep y   0x00000000004007b7 in main at gdb_pthread.c:18\n(gdb)\n<\/code><\/pre><\/div>\n\n<h5>3.4 \u6267\u884c\u5230\u7b2c\u4e00\u4e2a\u65ad\u70b9<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">c<\/span><span class=\"w\">                <\/span><span class=\"err\">#####<\/span><span class=\"nx\">\u6267\u884c\u5230\u7b2c18\u884c\u5904\u7684\u65ad\u70b9<\/span>\n<span class=\"nx\">Continuing<\/span><span class=\"p\">.<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">New<\/span><span class=\"w\"> <\/span><span class=\"nx\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"p\">]<\/span><span class=\"w\">                     <\/span><span class=\"err\">#####<\/span><span class=\"nx\">\u7236\u8fdb\u7a0b23869\u6267\u884c\u5b8c\u7b2c1\u4e2a\u6355\u6349\u70b9\u7684\u7a0b\u5e8f<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u4ea7\u751f\u5b50\u8fdb\u7a0b23873<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">Thread<\/span><span class=\"w\"> <\/span><span class=\"nx\">debugging<\/span><span class=\"w\"> <\/span><span class=\"nx\">using<\/span><span class=\"w\"> <\/span><span class=\"nx\">libthread_db<\/span><span class=\"w\"> <\/span><span class=\"nx\">enabled<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Using<\/span><span class=\"w\"> <\/span><span class=\"nx\">host<\/span><span class=\"w\"> <\/span><span class=\"nx\">libthread_db<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\/lib64\/libthread_db.so.1&quot;<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">Breakpoint<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">argc<\/span><span class=\"p\">=<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">argv<\/span><span class=\"p\">=<\/span><span class=\"mh\">0x7fffffffe4c8<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">18<\/span><span class=\"w\">            <\/span><span class=\"err\">##########<\/span><span class=\"nx\">\u7236\u8fdb\u7a0b\u6267\u884c\u5230\u7b2c18\u884c\u5904\u7684\u65ad\u70b9<\/span>\n<span class=\"mi\">18<\/span><span class=\"w\">              <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"nx\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">info<\/span><span class=\"w\"> <\/span><span class=\"nx\">threads<\/span><span class=\"w\">                      <\/span><span class=\"err\">####<\/span><span class=\"nx\">\u67e5\u770b\u6240\u6709\u8fd0\u884c\u7684\u7ebf\u7a0b<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u6709\u7236\u8fdb\u7a0b23869\u548c\u5b50\u8fdb\u7a0b23873<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">Id<\/span><span class=\"w\">   <\/span><span class=\"nx\">Target<\/span><span class=\"w\"> <\/span><span class=\"nx\">Id<\/span><span class=\"w\">         <\/span><span class=\"nx\">Frame<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">2<\/span><span class=\"w\">    <\/span><span class=\"nx\">Thread<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">LWP<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00007ffff709b50c<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">__libc_fork<\/span><span class=\"w\"> <\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"p\">..<\/span><span class=\"o\">\/<\/span><span class=\"nx\">nptl<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysdeps<\/span><span class=\"o\">\/<\/span><span class=\"nx\">unix<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysv<\/span><span class=\"o\">\/<\/span><span class=\"nx\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fork<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">130<\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">    <\/span><span class=\"nx\">Thread<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">LWP<\/span><span class=\"w\"> <\/span><span class=\"mi\">23869<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">argc<\/span><span class=\"p\">=<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">argv<\/span><span class=\"p\">=<\/span><span class=\"mh\">0x7fffffffe4c8<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">18<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">info<\/span><span class=\"w\"> <\/span><span class=\"nx\">inferiors<\/span><span class=\"w\">                    <\/span><span class=\"err\">#####<\/span><span class=\"nx\">\u663e\u793a\u6b63\u5728\u8c03\u8bd5\u7684\u8fdb\u7a0b<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">Num<\/span><span class=\"w\">  <\/span><span class=\"nx\">Description<\/span><span class=\"w\">       <\/span><span class=\"nx\">Executable<\/span><span class=\"w\">        <\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">2<\/span><span class=\"w\">    <\/span><span class=\"nx\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"w\">                <\/span><span class=\"err\">########<\/span><span class=\"nx\">\u5b50\u8fdb\u7a0b<\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">    <\/span><span class=\"nx\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23869<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"nx\">home<\/span><span class=\"o\">\/<\/span><span class=\"nx\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"w\">                <\/span><span class=\"err\">########<\/span><span class=\"nx\">\u7236\u8fdb\u7a0b<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">info<\/span><span class=\"w\"> <\/span><span class=\"nx\">b<\/span><span class=\"w\">                    <\/span><span class=\"err\">#######<\/span><span class=\"nx\">\u67e5\u770b\u5f53\u524d\u6240\u6709\u7684\u65ad\u70b9<\/span>\n<span class=\"nx\">Num<\/span><span class=\"w\">     <\/span><span class=\"nx\">Type<\/span><span class=\"w\">           <\/span><span class=\"nx\">Disp<\/span><span class=\"w\"> <\/span><span class=\"nx\">Enb<\/span><span class=\"w\"> <\/span><span class=\"nx\">Address<\/span><span class=\"w\">            <\/span><span class=\"nx\">What<\/span>\n<span class=\"mi\">1<\/span><span class=\"w\">       <\/span><span class=\"nx\">catchpoint<\/span><span class=\"w\">     <\/span><span class=\"nx\">keep<\/span><span class=\"w\"> <\/span><span class=\"nx\">y<\/span><span class=\"w\">                      <\/span><span class=\"nx\">fork<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">        <\/span><span class=\"nx\">catchpoint<\/span><span class=\"w\"> <\/span><span class=\"nx\">already<\/span><span class=\"w\"> <\/span><span class=\"nx\">hit<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">time<\/span>\n<span class=\"mi\">2<\/span><span class=\"w\">       <\/span><span class=\"nx\">breakpoint<\/span><span class=\"w\">     <\/span><span class=\"nx\">keep<\/span><span class=\"w\"> <\/span><span class=\"nx\">y<\/span><span class=\"w\">   <\/span><span class=\"p\">&lt;<\/span><span class=\"nx\">MULTIPLE<\/span><span class=\"p\">&gt;<\/span><span class=\"w\">         <\/span>\n<span class=\"w\">        <\/span><span class=\"nx\">breakpoint<\/span><span class=\"w\"> <\/span><span class=\"nx\">already<\/span><span class=\"w\"> <\/span><span class=\"nx\">hit<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">time<\/span>\n<span class=\"m m-Double\">2.1<\/span><span class=\"w\">                         <\/span><span class=\"nx\">y<\/span><span class=\"w\">     <\/span><span class=\"mh\">0x00000000004007b7<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">18<\/span><span class=\"w\"> <\/span><span class=\"nx\">inf<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span>\n<span class=\"m m-Double\">2.2<\/span><span class=\"w\">                         <\/span><span class=\"nx\">y<\/span><span class=\"w\">     <\/span><span class=\"mh\">0x00000000004007b7<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"nx\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">18<\/span><span class=\"w\"> <\/span><span class=\"nx\">inf<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"p\">(<\/span><span class=\"nx\">gdb<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u622a\u56fe\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"\u6267\u884c\u5230\u7b2c1\u4e2a\u65ad\u70b9\u5904\u67e5\u770b\u7ebf\u7a0b\u548c\u8fdb\u7a0b\u72b6\u51b5\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/break_1_info.png\" title=\"\u6267\u884c\u5230\u7b2c1\u4e2a\u65ad\u70b9\u5904\u67e5\u770b\u7ebf\u7a0b\u548c\u8fdb\u7a0b\u72b6\u51b5\"><\/p>\n<p>\u8fd9\u65f6\u4f7f\u7528\u547d\u4ee4\u67e5\u770b\u5f53\u524d\u7cfb\u7edf\u8fdb\u7a0b\u7684\u72b6\u6001\uff1a\u53d1\u73b0\u6b64\u65f6\u4ecd\u7136\u53ea\u6709\u7236\u8fdb\u7a0b23869\u548c\u5b50\u8fdb\u7a0b23873\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">pstree<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">pul<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/pstree_pul_process.png\" title=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\"><\/p>\n<h5>3.5 \u6267\u884c\u5230\u7b2c\u4e00\u4e2a\u65ad\u70b9\u6b64\u65f6\u5982\u679c\u5207\u6362\u5230\u5b50\u8fdb\u7a0b23873<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">(<\/span><span class=\"nt\">gdb<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"nt\">inferior<\/span><span class=\"w\"> <\/span><span class=\"nt\">2<\/span>\n<span class=\"cp\">[<\/span><span class=\"nx\">Switching<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">inferior<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"err\">[<\/span><span class=\"nb\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"cp\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">(\/<\/span><span class=\"nt\">home<\/span><span class=\"o\">\/<\/span><span class=\"nt\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nt\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nt\">gdb_pthread<\/span><span class=\"o\">)]<\/span>\n<span class=\"cp\">[<\/span><span class=\"nx\">Switching<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">thread<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">Thread<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">LWP<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"p\">))<\/span><span class=\"cp\">]<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">#<\/span><span class=\"nn\">0<\/span><span class=\"w\">  <\/span><span class=\"nt\">0x00007ffff709b50c<\/span><span class=\"w\"> <\/span><span class=\"nt\">in<\/span><span class=\"w\"> <\/span><span class=\"nt\">__libc_fork<\/span><span class=\"w\"> <\/span><span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"nt\">at<\/span><span class=\"w\"> <\/span><span class=\"o\">..\/<\/span><span class=\"nt\">nptl<\/span><span class=\"o\">\/<\/span><span class=\"nt\">sysdeps<\/span><span class=\"o\">\/<\/span><span class=\"nt\">unix<\/span><span class=\"o\">\/<\/span><span class=\"nt\">sysv<\/span><span class=\"o\">\/<\/span><span class=\"nt\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nt\">fork<\/span><span class=\"p\">.<\/span><span class=\"nc\">c<\/span><span class=\"p\">:<\/span><span class=\"nd\">130<\/span>\n<span class=\"nt\">130<\/span><span class=\"w\">       <\/span><span class=\"nt\">pid<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nt\">ARCH_FORK<\/span><span class=\"w\"> <\/span><span class=\"o\">();<\/span>\n<span class=\"o\">(<\/span><span class=\"nt\">gdb<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"nt\">info<\/span><span class=\"w\"> <\/span><span class=\"nt\">inferiors<\/span><span class=\"w\">                 <\/span><span class=\"err\">####<\/span><span class=\"p\">#<\/span><span class=\"nn\">\u663e\u793a\u6b63\u5728\u8c03\u8bd5\u7684\u8fdb\u7a0b<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"nt\">Num<\/span><span class=\"w\">  <\/span><span class=\"nt\">Description<\/span><span class=\"w\">       <\/span><span class=\"nt\">Executable<\/span><span class=\"w\">        <\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nt\">2<\/span><span class=\"w\">    <\/span><span class=\"nt\">process<\/span><span class=\"w\"> <\/span><span class=\"nt\">23873<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"nt\">home<\/span><span class=\"o\">\/<\/span><span class=\"nt\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nt\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nt\">gdb_pthread<\/span><span class=\"w\">                <\/span><span class=\"err\">####<\/span><span class=\"p\">#<\/span><span class=\"nn\">\u5b50\u8fdb\u7a0b<\/span>\n<span class=\"w\">  <\/span><span class=\"nt\">1<\/span><span class=\"w\">    <\/span><span class=\"nt\">process<\/span><span class=\"w\"> <\/span><span class=\"nt\">23869<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"nt\">home<\/span><span class=\"o\">\/<\/span><span class=\"nt\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nt\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nt\">gdb_pthread<\/span><span class=\"w\">                <\/span><span class=\"err\">####<\/span><span class=\"p\">#<\/span><span class=\"nn\">\u7236\u8fdb\u7a0b<\/span>\n<span class=\"o\">(<\/span><span class=\"nt\">gdb<\/span><span class=\"o\">)<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3.6 \u91cd\u65b0\u5207\u6362\u5230\u7236\u8fdb\u7a0b23869<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code>(gdb) inferior 1\n[Switching to inferior 1 [process 23869] (\/home\/vfhky\/bin\/gdb_pthread)]\n[Switching to thread 1 (Thread 0x7ffff7fe1740 (LWP 23869))] \n<span class=\"gh\">#<\/span>0  main (argc=1, argv=0x7fffffffe4c8) at gdb_pthread.c:18\n18              if(pid != 0)\n(gdb) info inferiors                 #####\u663e\u793a\u6b63\u5728\u8c03\u8bd5\u7684\u8fdb\u7a0b\n  Num  Description       Executable        \n  2    process 23873     \/home\/vfhky\/bin\/gdb_pthread \n<span class=\"k\">*<\/span> 1    process 23869     \/home\/vfhky\/bin\/gdb_pthread \n(gdb)\n<\/code><\/pre><\/div>\n\n<h5>3.7 \u8bbe\u7f6e\u7b2c\u4e8c\u4e2a\u65ad\u70b9\u5e76\u8c03\u8bd5<\/h5>\n<p>\u5728\u7b2c50\u884c\u8bbe\u7f6e\u65ad\u70b9\u7ee7\u7eed\u8c03\u8bd5\u4e3b\u8fdb\u7a0b\uff08\u4f7f\u7236\u8fdb\u7a0b\u4ea7\u751f\u7ebf\u7a0b\uff09\uff0c\u5176\u4e2d\u7236\u8fdb\u7a0b\u548c\u7ebf\u7a0b\u5230\u5e95\u662f\u8c01\u5148\u6267\u884c\u662f\u7531\u5185\u6838\u8c03\u5ea6\u63a7\u5236\u7684\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">b<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">50<\/span>\n<span class=\"n\">Breakpoint<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x4008a7<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mf\">50.<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"n\">locations<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">c<\/span><span class=\"w\">                    <\/span><span class=\"err\">####<\/span><span class=\"n\">##\u7ee7\u7eed\u6267\u884c\u4ee3\u7801\u5230\u7b2c50\u884c\u5904\u7684\u65ad\u70b9<\/span>\n<span class=\"n\">Continuing<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Parent<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">23869<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step1<\/span><span class=\"o\">]<\/span><span class=\"w\">                              <\/span><span class=\"err\">####<\/span><span class=\"n\">##\u7b2c33\u884c\u7236\u8fdb\u7a0b\u6253\u5370Parent<\/span><span class=\"p\">()<\/span><span class=\"n\">\u51fd\u6570\u4e2d\u7684\u6570\u636e<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">New Thread 0x7ffff6fdd700 (LWP 24024)<\/span><span class=\"o\">]<\/span><span class=\"w\">                <\/span><span class=\"err\">####<\/span><span class=\"n\">##\u7b2c35\u884c\u7236\u8fdb\u7a0b\u521b\u5efa\u4e86\u4e00\u4e2a\u7ebf\u7a0b24024<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">LWP\u8868\u793a\u8f7b\u91cf\u7ea7\u8fdb\u7a0b<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Switching to Thread 0x7ffff6fdd700 (LWP 24024)<\/span><span class=\"o\">]<\/span><span class=\"w\">            <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u5df2\u7ecf\u81ea\u52a8\u5207\u6362\u5230\u7ebf\u7a0b24024<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">LWP\u8868\u793a\u8f7b\u91cf<\/span><span class=\"err\">\u3002<\/span><span class=\"n\">\u8fdb\u7a0b<\/span><span class=\"err\">\uff09\uff0c<\/span><span class=\"n\">\u4e5f\u5c31\u662fGDB\u7ee7\u7eed\u8c03\u8bd5\u7ebf\u7a0b\u800c\u4e0d\u662f\u7236\u8fdb\u7a0b\u4e86<\/span><span class=\"err\">\u3002<\/span>\n\n<span class=\"n\">Breakpoint<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ParentDo<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">argv<\/span><span class=\"o\">=<\/span><span class=\"mh\">0x7fffffffe390<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;Thread&quot;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">50<\/span><span class=\"w\">            <\/span><span class=\"err\">####<\/span><span class=\"n\">##\u7ebf\u7a0b24024\u963b\u585e\u5728\u7a0b\u5e8f\u7684\u7b2c50\u884c<\/span>\n<span class=\"mi\">50<\/span><span class=\"w\">              <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;[%s]: [%d] [%s] [%lu] [%s]\\n&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">tprefix<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">tid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;step2&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8fd9\u65f6\u4f7f\u7528\u547d\u4ee4\u67e5\u770b\u5f53\u524d\u7cfb\u7edf\u8fdb\u7a0b\u7684\u72b6\u6001\uff1a\u5b58\u5728\u7236\u8fdb\u7a0b23869\u548c\u5b50\u8fdb\u7a0b23873\u4ee5\u53ca\u7236\u8fdb\u7a0b\u521b\u5efa\u7684\u4e00\u4e2a\u7ebf\u7a0b24024\uff08\u7ebf\u7a0b\u7528\u5927\u62ec\u53f7{}\u8868\u793a\uff09\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">pstree<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">pul<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/pstree_pul_process_2.png\" title=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\">    <\/p>\n<p>\u540c\u65f6\uff0c\u4f7f\u7528\u547d\u4ee4<code>cat \/proc\/23869\/status<\/code>\u67e5\u770b\u5f53\u524d\u8fdb\u7a0b\u7684\u8be6\u7ec6\u4fe1\u606f\uff1a\u8fdb\u7a0bPID\u4e3a23869\uff0c\u5b83\u7684\u7236\u8fdb\u7a0b\uff08\u5373GDB\u8fdb\u7a0b\uff09\u4e3a23859\uff0c\u540c\u65f6\u8fd9\u4e5f\u662f\u8ffd\u8e2a\u8fdb\u7a0bID\uff0c\u7ebf\u7a0b\u6570Threads\u4e3a2\uff08\u5f53\u524d\u7236\u8fdb\u7a0b23869+\u7ebf\u7a0b24024\uff09\u3002<\/p>\n<p><img alt=\"proc\u67e5\u770b\u8fdb\u7a0b\u7684\u72b6\u6001\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/proc_23869_2.png\" title=\"proc\u67e5\u770b\u8fdb\u7a0b\u7684\u72b6\u6001\u4fe1\u606f\"><\/p>\n<h5>3.8 \u67e5\u770b\u7b2c\u4e8c\u4e2a\u65ad\u70b9\u5904\u7684\u8c03\u8bd5\u4fe1\u606f<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code>(gdb) info inferiors                 #####\u663e\u793a\u6b63\u5728\u8c03\u8bd5\u7684\u8fdb\u7a0b \n  Num  Description       Executable        \n  2    process 23873     \/home\/vfhky\/bin\/gdb_pthread                     ###\u5b50\u8fdb\u7a0b\n<span class=\"gs\">* 1    process 23869     \/home\/vfhky\/bin\/gdb_pthread                     ###\u7236\u8fdb\u7a0b <\/span>\n<span class=\"gs\">(gdb) info threads         ####\u67e5\u770b\u6240\u6709\u8fd0\u884c\u7684\u7ebf\u7a0b\uff0c\u7236\u8fdb\u7a0b23869\u3001\u5b50\u8fdb\u7a0b23873\u3001\u7ebf\u7a0b24024\uff0c\u7531\u661f\u53f7\u53ef\u4ee5\u53d1\u73b0\u76ee\u524d\u8c03\u8bd5\u5df2\u7ecf\u5207\u6362\u5230\u4e86\u7ebf\u7a0b24024\u4e86\u3002 <\/span>\n<span class=\"gs\">  Id   Target Id         Frame <\/span>\n<span class=\"gs\">*<\/span> 3    Thread 0x7ffff6fdd700 (LWP 24024) &quot;gdb_pthread&quot; ParentDo (argv=0x7fffffffe390 &quot;Thread&quot;) at gdb_pthread.c:50\n  2    Thread 0x7ffff7fe1740 (LWP 23873) &quot;gdb_pthread&quot; 0x00007ffff709b50c in __libc_fork () at ..\/nptl\/sysdeps\/unix\/sysv\/linux\/fork.c:130\n  1    Thread 0x7ffff7fe1740 (LWP 23869) &quot;gdb_pthread&quot; ParentDo (argv=0x7fffffffe3a0 &quot;Parent&quot;) at gdb_pthread.c:50\n(gdb) info b                #####\u67e5\u770b\u8bbe\u7f6e\u7684\u6240\u6709\u7684\u65ad\u70b9breakpoint\u548c\u6355\u6349\u70b9catchpoint\uff08\u51713\u4e2a\uff09\uff1a\nNum     Type           Disp Enb Address            What\n1       catchpoint     keep y                      fork, process 23873 \n        catchpoint already hit 1 time\n2       breakpoint     keep y   &lt;MULTIPLE&gt;         \n        breakpoint already hit 1 time\n2.1                         y     0x00000000004007b7 in main at gdb_pthread.c:18 inf 2\n2.2                         y     0x00000000004007b7 in main at gdb_pthread.c:18 inf 1\n3       breakpoint     keep y   &lt;MULTIPLE&gt;         \n        breakpoint already hit 1 time\n3.1                         y     0x00000000004008a7 in ParentDo at gdb_pthread.c:50 inf 2\n3.2                         y     0x00000000004008a7 in ParentDo at gdb_pthread.c:50 inf 1\n(gdb)\n<\/code><\/pre><\/div>\n\n<h5>3.9 \u5982\u679c\u624b\u52a8\u5207\u6362\u5230\u7ebf\u7a0b24024<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">(<\/span><span class=\"nt\">gdb<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"nt\">thread<\/span><span class=\"w\"> <\/span><span class=\"nt\">3<\/span>\n<span class=\"cp\">[<\/span><span class=\"nx\">Switching<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">thread<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">Thread<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x7ffff6fdd700<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">LWP<\/span><span class=\"w\"> <\/span><span class=\"mi\">24024<\/span><span class=\"p\">))<\/span><span class=\"cp\">]<\/span>\n<span class=\"p\">#<\/span><span class=\"nn\">0<\/span><span class=\"w\">  <\/span><span class=\"nt\">ParentDo<\/span><span class=\"w\"> <\/span><span class=\"o\">(<\/span><span class=\"nt\">argv<\/span><span class=\"o\">=<\/span><span class=\"nt\">0x7fffffffe390<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Thread&quot;<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"nt\">at<\/span><span class=\"w\"> <\/span><span class=\"nt\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nc\">c<\/span><span class=\"p\">:<\/span><span class=\"nd\">50<\/span>\n<span class=\"nt\">50<\/span><span class=\"w\">              <\/span><span class=\"nt\">printf<\/span><span class=\"o\">(<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"cp\">[<\/span><span class=\"o\">%<\/span><span class=\"nx\">s<\/span><span class=\"cp\">]<\/span><span class=\"s2\">: <\/span><span class=\"cp\">[<\/span><span class=\"o\">%<\/span><span class=\"nx\">d<\/span><span class=\"cp\">]<\/span><span class=\"s2\"> <\/span><span class=\"cp\">[<\/span><span class=\"o\">%<\/span><span class=\"nx\">s<\/span><span class=\"cp\">]<\/span><span class=\"s2\"> <\/span><span class=\"cp\">[<\/span><span class=\"o\">%<\/span><span class=\"nx\">lu<\/span><span class=\"cp\">]<\/span><span class=\"s2\"> <\/span><span class=\"cp\">[<\/span><span class=\"o\">%<\/span><span class=\"nx\">s<\/span><span class=\"cp\">]<\/span><span class=\"s2\">\\n&quot;<\/span><span class=\"o\">,<\/span><span class=\"w\"> <\/span><span class=\"nt\">argv<\/span><span class=\"o\">,<\/span><span class=\"w\"> <\/span><span class=\"nt\">pid<\/span><span class=\"o\">,<\/span><span class=\"w\"> <\/span><span class=\"nt\">tprefix<\/span><span class=\"o\">,<\/span><span class=\"w\"> <\/span><span class=\"nt\">tid<\/span><span class=\"o\">,<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;step2&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">);<\/span>\n<span class=\"o\">(<\/span><span class=\"nt\">gdb<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"nt\">info<\/span><span class=\"w\"> <\/span><span class=\"nt\">threads<\/span><span class=\"w\">                   <\/span><span class=\"err\">####<\/span><span class=\"p\">#<\/span><span class=\"nn\">\u67e5\u770b\u6240\u6709\u8fd0\u884c\u7684\u7ebf\u7a0b<\/span>\n<span class=\"w\">  <\/span><span class=\"nt\">Id<\/span><span class=\"w\">   <\/span><span class=\"nt\">Target<\/span><span class=\"w\"> <\/span><span class=\"nt\">Id<\/span><span class=\"w\">         <\/span><span class=\"nt\">Frame<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nt\">3<\/span><span class=\"w\">    <\/span><span class=\"nt\">Thread<\/span><span class=\"w\"> <\/span><span class=\"nt\">0x7ffff6fdd700<\/span><span class=\"w\"> <\/span><span class=\"o\">(<\/span><span class=\"nt\">LWP<\/span><span class=\"w\"> <\/span><span class=\"nt\">24024<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"nt\">ParentDo<\/span><span class=\"w\"> <\/span><span class=\"o\">(<\/span><span class=\"nt\">argv<\/span><span class=\"o\">=<\/span><span class=\"nt\">0x7fffffffe390<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Thread&quot;<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"nt\">at<\/span><span class=\"w\"> <\/span><span class=\"nt\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nc\">c<\/span><span class=\"p\">:<\/span><span class=\"nd\">50<\/span>\n<span class=\"w\">  <\/span><span class=\"nt\">2<\/span><span class=\"w\">    <\/span><span class=\"nt\">Thread<\/span><span class=\"w\"> <\/span><span class=\"nt\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"o\">(<\/span><span class=\"nt\">LWP<\/span><span class=\"w\"> <\/span><span class=\"nt\">23873<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"nt\">0x00007ffff709b50c<\/span><span class=\"w\"> <\/span><span class=\"nt\">in<\/span><span class=\"w\"> <\/span><span class=\"nt\">__libc_fork<\/span><span class=\"w\"> <\/span><span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"nt\">at<\/span><span class=\"w\"> <\/span><span class=\"o\">..\/<\/span><span class=\"nt\">nptl<\/span><span class=\"o\">\/<\/span><span class=\"nt\">sysdeps<\/span><span class=\"o\">\/<\/span><span class=\"nt\">unix<\/span><span class=\"o\">\/<\/span><span class=\"nt\">sysv<\/span><span class=\"o\">\/<\/span><span class=\"nt\">linux<\/span><span class=\"o\">\/<\/span><span class=\"nt\">fork<\/span><span class=\"p\">.<\/span><span class=\"nc\">c<\/span><span class=\"p\">:<\/span><span class=\"nd\">130<\/span>\n<span class=\"w\">  <\/span><span class=\"nt\">1<\/span><span class=\"w\">    <\/span><span class=\"nt\">Thread<\/span><span class=\"w\"> <\/span><span class=\"nt\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"o\">(<\/span><span class=\"nt\">LWP<\/span><span class=\"w\"> <\/span><span class=\"nt\">23869<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"nt\">ParentDo<\/span><span class=\"w\"> <\/span><span class=\"o\">(<\/span><span class=\"nt\">argv<\/span><span class=\"o\">=<\/span><span class=\"nt\">0x7fffffffe3a0<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Parent&quot;<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"nt\">at<\/span><span class=\"w\"> <\/span><span class=\"nt\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nc\">c<\/span><span class=\"p\">:<\/span><span class=\"nd\">50<\/span>\n<span class=\"o\">(<\/span><span class=\"nt\">gdb<\/span><span class=\"o\">)<\/span><span class=\"w\"> <\/span><span class=\"nt\">info<\/span><span class=\"w\"> <\/span><span class=\"nt\">inferiors<\/span><span class=\"w\">                 <\/span><span class=\"err\">####<\/span><span class=\"p\">#<\/span><span class=\"nn\">\u663e\u793a\u6b63\u5728\u8c03\u8bd5\u7684\u8fdb\u7a0b<\/span><span class=\"w\">  <\/span>\n<span class=\"w\">  <\/span><span class=\"nt\">Num<\/span><span class=\"w\">  <\/span><span class=\"nt\">Description<\/span><span class=\"w\">       <\/span><span class=\"nt\">Executable<\/span><span class=\"w\">        <\/span>\n<span class=\"w\">  <\/span><span class=\"nt\">2<\/span><span class=\"w\">    <\/span><span class=\"nt\">process<\/span><span class=\"w\"> <\/span><span class=\"nt\">23873<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"nt\">home<\/span><span class=\"o\">\/<\/span><span class=\"nt\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nt\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nt\">gdb_pthread<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nt\">1<\/span><span class=\"w\">    <\/span><span class=\"nt\">process<\/span><span class=\"w\"> <\/span><span class=\"nt\">23869<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"nt\">home<\/span><span class=\"o\">\/<\/span><span class=\"nt\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"nt\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nt\">gdb_pthread<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">(<\/span><span class=\"nt\">gdb<\/span><span class=\"o\">)<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3.10 \u5f00\u59cb\u6267\u884c\u7b2c\u4e8c\u4e2a\u65ad\u70b9\u5904\u7684\u4ee3\u7801<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">c<\/span>\n<span class=\"n\">Continuing<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Thread<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">23869<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">thread<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">140737337218816<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step2<\/span><span class=\"o\">]<\/span><span class=\"w\">            <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u7ebf\u7a0b24024\u6267\u884c\u7b2c50\u884c\u5904<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u6253\u5370\u6570\u636e<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Thread<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">23869<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">thread<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">140737337218816<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step3<\/span><span class=\"o\">]<\/span><span class=\"w\">            <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u7ebf\u7a0b24024\u6267\u884c\u7b2c51\u884c\u5904<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u6253\u5370\u6570\u636e<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Thread 0x7ffff6fdd700 (LWP 24024) exited<\/span><span class=\"o\">]<\/span><span class=\"w\">                      <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u7ebf\u7a0b24024\u9000\u51fa<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Switching to Thread 0x7ffff7fe1740 (LWP 23869)<\/span><span class=\"o\">]<\/span><span class=\"w\">                <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u5207\u6362\u5230\u7236\u8fdb\u7a0b\u4e2d\u53bb<\/span>\n\n<span class=\"n\">Breakpoint<\/span><span class=\"w\"> <\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">ParentDo<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">argv<\/span><span class=\"o\">=<\/span><span class=\"mh\">0x7fffffffe3a0<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;Parent&quot;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">50<\/span><span class=\"w\">                <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u7236\u8fdb\u7a0b\u7ee7\u7eed\u505c\u5728\u7b2c50\u884c\u5904\u7684\u65ad\u70b9<\/span>\n<span class=\"mi\">50<\/span><span class=\"w\">              <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;[%s]: [%d] [%s] [%lu] [%s]\\n&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">tprefix<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">tid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;step2&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">info<\/span><span class=\"w\"> <\/span><span class=\"n\">inferiors<\/span><span class=\"w\">                    <\/span><span class=\"err\">####<\/span><span class=\"n\">##\u5217\u51fa\u6b63\u5728\u8c03\u8bd5\u8fdb\u7a0b<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u7236\u8fdb\u7a0b23869\u548c\u5b50\u8fdb\u7a0b23873<\/span><span class=\"err\">\uff09\uff0c<\/span><span class=\"mi\">1<\/span><span class=\"n\">\u524d\u9762\u7684\u661f\u53f7\u8868\u793a\u5f53\u524d\u8c03\u8bd5\u7684\u8fdb\u7a0b<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u7236\u8fdb\u7a0b23869<\/span><span class=\"err\">\uff09\u3002<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Num<\/span><span class=\"w\">  <\/span><span class=\"n\">Description<\/span><span class=\"w\">       <\/span><span class=\"n\">Executable<\/span><span class=\"w\">        <\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">2<\/span><span class=\"w\">    <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"n\">gdb_pthread<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">    <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23869<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"n\">gdb_pthread<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">info<\/span><span class=\"w\"> <\/span><span class=\"n\">threads<\/span><span class=\"w\">                     <\/span><span class=\"err\">####<\/span><span class=\"n\">##\u67e5\u770b\u6240\u6709\u8fd0\u884c\u7684\u7ebf\u7a0b<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Id<\/span><span class=\"w\">   <\/span><span class=\"n\">Target<\/span><span class=\"w\"> <\/span><span class=\"n\">Id<\/span><span class=\"w\">         <\/span><span class=\"n\">Frame<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">2<\/span><span class=\"w\">    <\/span><span class=\"n\">Thread<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">LWP<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00007ffff709b50c<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">__libc_fork<\/span><span class=\"w\"> <\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"p\">..<\/span><span class=\"o\">\/<\/span><span class=\"n\">nptl<\/span><span class=\"o\">\/<\/span><span class=\"n\">sysdeps<\/span><span class=\"o\">\/<\/span><span class=\"n\">unix<\/span><span class=\"o\">\/<\/span><span class=\"n\">sysv<\/span><span class=\"o\">\/<\/span><span class=\"n\">linux<\/span><span class=\"o\">\/<\/span><span class=\"n\">fork<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">130<\/span><span class=\"w\">            <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u5b50\u8fdb\u7a0b23873<\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">    <\/span><span class=\"n\">Thread<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">LWP<\/span><span class=\"w\"> <\/span><span class=\"mi\">23869<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"n\">ParentDo<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">argv<\/span><span class=\"o\">=<\/span><span class=\"mh\">0x7fffffffe3a0<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;Parent&quot;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">50<\/span><span class=\"w\">          <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u7236\u8fdb\u7a0b23869<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8fd9\u65f6\u4f7f\u7528\u547d\u4ee4\u67e5\u770b\u5f53\u524d\u7cfb\u7edf\u8fdb\u7a0b\u7684\u72b6\u6001\uff1a\u5b58\u5728\u7236\u8fdb\u7a0b23869\u548c\u5b50\u8fdb\u7a0b23873\uff0c\u5176\u4e2d\u7ebf\u7a0b24024\u5df2\u7ecf\u7ed3\u675f\u4e86\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">pstree<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">pul<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/pstree_pul_process.png\" title=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\">  <\/p>\n<h5>3.11 \u7ee7\u7eed\u8c03\u8bd5\u7236\u8fdb\u7a0b<\/h5>\n<p>\u6b64\u65f6\uff0c\u7531\u4e8e\u7ebf\u7a0b\u7684\u9000\u51fa\uff0c\u7236\u8fdb\u7a0b\u4f5c\u4e3a\u81ea\u52a8\u9009\u62e9\u7684\u8981\u8c03\u8bd5\u7684\u7ebf\u7a0b\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">c<\/span>\n<span class=\"n\">Continuing<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Parent<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">23869<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">thread<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">140737354012480<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step2<\/span><span class=\"o\">]<\/span><span class=\"w\">        <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u7236\u8fdb\u7a0b23869\u6267\u884c\u7b2c50\u884c<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Parent<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">23869<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">thread<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">140737354012480<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">step3<\/span><span class=\"o\">]<\/span><span class=\"w\">        <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u7236\u8fdb\u7a0b23869\u6267\u884c\u7b2c51\u884c<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">Inferior 1 (process 23869) exited normally<\/span><span class=\"o\">]<\/span><span class=\"w\">                <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u6b63\u5728\u8c03\u8bd5\u7684\u7236\u8fdb\u7a0b23869\u9000\u51fa<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">info<\/span><span class=\"w\"> <\/span><span class=\"n\">inferiors<\/span><span class=\"w\">             <\/span><span class=\"err\">####<\/span><span class=\"n\">##\u663e\u793a\u6b63\u5728\u8c03\u8bd5\u7684\u8fdb\u7a0b<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Num<\/span><span class=\"w\">  <\/span><span class=\"n\">Description<\/span><span class=\"w\">       <\/span><span class=\"n\">Executable<\/span><span class=\"w\">        <\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">2<\/span><span class=\"w\">    <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"w\">     <\/span><span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"n\">gdb_pthread<\/span><span class=\"w\">        <\/span><span class=\"err\">###<\/span><span class=\"n\">##fork\u521b\u5efa\u7684\u5b50\u8fdb\u7a0b23873<\/span>\n<span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">    <\/span><span class=\"o\">&lt;<\/span><span class=\"k\">null<\/span><span class=\"o\">&gt;<\/span><span class=\"w\">            <\/span><span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"n\">gdb_pthread<\/span><span class=\"w\">        <\/span><span class=\"err\">###<\/span><span class=\"n\">##fork\u521b\u5efa\u7684\u7236\u8fdb\u7a0b23869\u5df2\u7ecf\u9000\u51fa<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">info<\/span><span class=\"w\"> <\/span><span class=\"n\">threads<\/span><span class=\"w\">              <\/span><span class=\"err\">##<\/span><span class=\"n\">##\u663e\u793a\u6b63\u5728\u8fd0\u884c\u7684\u7ebf\u7a0b<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">\u53ea\u5b58\u5728\u5b50\u8fdb\u7a0b23873<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u7236\u8fdb\u7a0b23869\u5df2\u7ecf\u9000\u51fa<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Id<\/span><span class=\"w\">   <\/span><span class=\"n\">Target<\/span><span class=\"w\"> <\/span><span class=\"n\">Id<\/span><span class=\"w\">         <\/span><span class=\"n\">Frame<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">2<\/span><span class=\"w\">    <\/span><span class=\"n\">Thread<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x7ffff7fe1740<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">LWP<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;gdb_pthread&quot;<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00007ffff709b50c<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">__libc_fork<\/span><span class=\"w\"> <\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"p\">..<\/span><span class=\"o\">\/<\/span><span class=\"n\">nptl<\/span><span class=\"o\">\/<\/span><span class=\"n\">sysdeps<\/span><span class=\"o\">\/<\/span><span class=\"n\">unix<\/span><span class=\"o\">\/<\/span><span class=\"n\">sysv<\/span><span class=\"o\">\/<\/span><span class=\"n\">linux<\/span><span class=\"o\">\/<\/span><span class=\"n\">fork<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">130<\/span>\n\n<span class=\"k\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">selected<\/span><span class=\"w\"> <\/span><span class=\"n\">thread<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">See<\/span><span class=\"w\"> <\/span><span class=\"err\">`<\/span><span class=\"n\">help<\/span><span class=\"w\"> <\/span><span class=\"n\">thread<\/span><span class=\"err\">&#39;<\/span><span class=\"p\">.<\/span><span class=\"w\">         <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u63d0\u793a\u6ca1\u6709\u88ab\u9009\u4e2d\u7684\u8981\u8c03\u8bd5\u7684\u7ebf\u7a0b<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">info<\/span><span class=\"w\"> <\/span><span class=\"n\">b<\/span><span class=\"w\">                                    <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u67e5\u770b\u6240\u6709\u7684\u65ad\u70b9<\/span>\n<span class=\"n\">Num<\/span><span class=\"w\">     <\/span><span class=\"n\">Type<\/span><span class=\"w\">           <\/span><span class=\"n\">Disp<\/span><span class=\"w\"> <\/span><span class=\"n\">Enb<\/span><span class=\"w\"> <\/span><span class=\"n\">Address<\/span><span class=\"w\">            <\/span><span class=\"n\">What<\/span>\n<span class=\"mi\">1<\/span><span class=\"w\">       <\/span><span class=\"n\">catchpoint<\/span><span class=\"w\">     <\/span><span class=\"n\">keep<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span><span class=\"w\">                      <\/span><span class=\"n\">fork<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">23873<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">        <\/span><span class=\"n\">catchpoint<\/span><span class=\"w\"> <\/span><span class=\"n\">already<\/span><span class=\"w\"> <\/span><span class=\"n\">hit<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nc\">time<\/span>\n<span class=\"mi\">2<\/span><span class=\"w\">       <\/span><span class=\"n\">breakpoint<\/span><span class=\"w\">     <\/span><span class=\"n\">keep<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span><span class=\"w\">   <\/span><span class=\"o\">&lt;<\/span><span class=\"n\">MULTIPLE<\/span><span class=\"o\">&gt;<\/span><span class=\"w\">         <\/span>\n<span class=\"w\">        <\/span><span class=\"n\">breakpoint<\/span><span class=\"w\"> <\/span><span class=\"n\">already<\/span><span class=\"w\"> <\/span><span class=\"n\">hit<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nc\">time<\/span>\n<span class=\"mf\">2.1<\/span><span class=\"w\">                         <\/span><span class=\"n\">y<\/span><span class=\"w\">     <\/span><span class=\"mh\">0x00000000004007b7<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">18<\/span><span class=\"w\"> <\/span><span class=\"n\">inf<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span>\n<span class=\"mf\">2.2<\/span><span class=\"w\">                         <\/span><span class=\"n\">y<\/span><span class=\"w\">     <\/span><span class=\"mh\">0x00000000004007b7<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">18<\/span><span class=\"w\"> <\/span><span class=\"n\">inf<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"mi\">3<\/span><span class=\"w\">       <\/span><span class=\"n\">breakpoint<\/span><span class=\"w\">     <\/span><span class=\"n\">keep<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span><span class=\"w\">   <\/span><span class=\"o\">&lt;<\/span><span class=\"n\">MULTIPLE<\/span><span class=\"o\">&gt;<\/span><span class=\"w\">         <\/span>\n<span class=\"w\">        <\/span><span class=\"n\">breakpoint<\/span><span class=\"w\"> <\/span><span class=\"n\">already<\/span><span class=\"w\"> <\/span><span class=\"n\">hit<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"n\">times<\/span>\n<span class=\"mf\">3.1<\/span><span class=\"w\">                         <\/span><span class=\"n\">y<\/span><span class=\"w\">     <\/span><span class=\"mh\">0x00000000004008a7<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">ParentDo<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">50<\/span><span class=\"w\"> <\/span><span class=\"n\">inf<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\">      <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u5b50\u8fdb\u7a0b23873<\/span>\n<span class=\"mf\">3.2<\/span><span class=\"w\">                         <\/span><span class=\"n\">y<\/span><span class=\"w\">     <\/span><span class=\"mh\">0x00000000004008a7<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">ParentDo<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">gdb_pthread<\/span><span class=\"p\">.<\/span><span class=\"nl\">c<\/span><span class=\"p\">:<\/span><span class=\"mi\">50<\/span><span class=\"w\"> <\/span><span class=\"n\">inf<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">      <\/span><span class=\"err\">###<\/span><span class=\"n\">##\u7236\u8fdb\u7a0b23869<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">gdb<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8fd9\u65f6\u4f7f\u7528\u547d\u4ee4\u67e5\u770b\u5f53\u524d\u7cfb\u7edf\u8fdb\u7a0b\u7684\u72b6\u6001\uff1a\u53ea\u6709\u5b50\u8fdb\u7a0b23873\uff08\u7531\u5185\u6838init\u8fdb\u7a0b\u63a5\u7ba1\u8fd9\u4e2a\u5b64\u513f\u8fdb\u7a0b\uff09\uff0c\u7236\u8fdb\u7a0b23869\u4e5f\u5df2\u7ecf\u7ed3\u675f\u4e86\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">vfhky<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"nx\">pstree<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">pul<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/pstree_pul_process_3.png\" title=\"pstree -pul\u67e5\u770bCentOS\u7cfb\u7edf\u6240\u6709\u8fdb\u7a0b\u4fe1\u606f\">    <\/p>\n<p>\u518d\u7528<code>ps ux<\/code>\u547d\u4ee4\u67e5\u770b\u5b50\u8fdb\u7a0b23873\uff1a<\/p>\n<p><img alt=\"ps ux\u547d\u4ee4\u67e5\u770b\u5b50\u8fdb\u7a0b\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/02\/ps_ux_child_process.png\" title=\"ps ux\u547d\u4ee4\u67e5\u770b\u5b50\u8fdb\u7a0b\u4fe1\u606f\">   <\/p>\n<h4>4 \u9644\u5f55<\/h4>\n<p>\u5728gdb\u4e2d\uff0c\u7ecf\u5e38\u7528\u5230\u7684\u6062\u590d\u7a0b\u5e8f\u8fd0\u884c\u548c\u5355\u6b65\u8c03\u8bd5\u7684\u547d\u4ee4\u6709\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"k\">continue<\/span><span class=\"w\">        <\/span>\u7ee7\u7eed\u8fd0\u884c\u7a0b\u5e8f\u76f4\u5230\u4e0b\u4e00\u4e2a\u65ad\u70b9\uff08\u7c7b\u4f3c\u4e8e<span class=\"nv\">VS<\/span>\u91cc\u7684<span class=\"nv\">F5<\/span>\uff09\n<span class=\"k\">next<\/span><span class=\"w\">            <\/span>\u9010\u8fc7\u7a0b\u6b65\u8fdb\uff0c\u4e0d\u4f1a\u8fdb\u5165\u5b50\u51fd\u6570\uff08\u7c7b\u4f3c<span class=\"nv\">VS<\/span>\u91cc\u7684<span class=\"nv\">F10<\/span>\uff09\n<span class=\"nv\">setp<\/span><span class=\"w\">            <\/span>\u9010\u8bed\u53e5\u6b65\u8fdb\uff0c\u4f1a\u8fdb\u5165\u5b50\u51fd\u6570\uff08\u7c7b\u4f3c<span class=\"nv\">VS<\/span>\u91cc\u7684<span class=\"nv\">F11<\/span>\uff09\n<span class=\"k\">until<\/span><span class=\"w\">           <\/span>\u8fd0\u884c\u81f3\u5f53\u524d\u8bed\u53e5\u5757\u7ed3\u675f\n<span class=\"nv\">finish<\/span><span class=\"w\">          <\/span>\u8fd0\u884c\u81f3\u51fd\u6570\u7ed3\u675f\u5e76\u8df3\u51fa\uff0c\u5e76\u6253\u5370\u51fd\u6570\u7684\u8fd4\u56de\u503c\uff08\u7c7b\u4f3c<span class=\"nv\">VS<\/span>\u7684<span class=\"nv\">Shift<\/span><span class=\"o\">+<\/span><span class=\"nv\">F11<\/span>\uff09\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"gdb"}},{"@attributes":{"term":"fork"}},{"@attributes":{"term":"\u8fdb\u7a0b"}},{"@attributes":{"term":"\u7ebf\u7a0b"}}]},{"title":"\u540c\u6b65GitHub Markdown\u6587\u7ae0\u5230Linux\u670d\u52a1\u5668\u540e\u66f4\u65b0Pelican\u535a\u5ba2\u7684\u811a\u672c","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/syngithubmarkdownpelican.html","rel":"alternate"}},"published":"2016-01-10T22:22:00+08:00","updated":"2016-01-10T22:22:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-01-10:\/linux\/syngithubmarkdownpelican.html","summary":"<p>\u4f7f\u7528\u4e86Pelican\u540e\uff0c\u6700\u591a\u7684\u64cd\u4f5c\u5c31\u662f\u7f16\u8bd1Markdown\u6587\u7ae0\u751f\u6210HTML\u6587\u4ef6\uff0c\u7136\u540e\u53d1\u5e03\u5230Nginx\u7684\u535a\u5ba2\u76ee\u5f55\u4e0b\u3002<\/p>\n<p><img alt=\"\u6211\u7684Pelican\u535a\u5ba2\u7ba1\u7406\u548c\u53d1\u5e03\u6d41\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/github_pelican_nginx.png\" title=\"\u6211\u7684Pelican\u535a\u5ba2\u7ba1\u7406\u548c\u53d1\u5e03\u6d41\u7a0b\"><\/p>\n","content":"<p>\u4f7f\u7528\u4e86Pelican\u540e\uff0c\u6700\u591a\u7684\u64cd\u4f5c\u5c31\u662f\u7f16\u8bd1Markdown\u6587\u7ae0\u751f\u6210HTML\u6587\u4ef6\uff0c\u7136\u540e\u53d1\u5e03\u5230Nginx\u7684\u535a\u5ba2\u76ee\u5f55\u4e0b\u3002<\/p>\n<p><img alt=\"\u6211\u7684Pelican\u535a\u5ba2\u7ba1\u7406\u548c\u53d1\u5e03\u6d41\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/github_pelican_nginx.png\" title=\"\u6211\u7684Pelican\u535a\u5ba2\u7ba1\u7406\u548c\u53d1\u5e03\u6d41\u7a0b\"><\/p>\n\n\n<p>\u5982\u4e0a\u9762\u7684\u6d41\u7a0b\u56fe\u6240\u793a\uff0c\u76ee\u524d\u81ea\u5df1\u5728CentOS7.1\u670d\u52a1\u5668\u4e0a\u901a\u8fc7Pelican\u751f\u6210\u548c\u53d1\u5e03\u535a\u5ba2\u7684\u505a\u6cd5\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span>\n<span class=\"normal\">5<\/span>\n<span class=\"normal\">6<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\u5728Windows\u4e2d\u5199\u597dMarkdown\u6587\u7ae0\uff0c\u7136\u540egit push\u5230GitHub\u4e2d\u7684\u79c1\u4eba\u4ed3\u5e93\u4e2d\uff1b\n\u5728CentOS7.1\u670d\u52a1\u5668\u4e2dgit pull\u5230\u672c\u5730\u4ed3\u5e93\uff1b\n\u628aMarkdown\u6587\u4ef6\u590d\u5236\u5230Pelican\u7684\u6587\u7ae0\u76ee\u5f55(content)\u751f\u6210HTML\u6587\u4ef6\uff1b\n\u7528tar\u547d\u4ee4\u6253\u5305Pelcian\u5728OUTPUT\u76ee\u5f55\u4e2d\u751f\u6210\u7684\u6240\u6709HTML\u6587\u4ef6\u5230\u4e00\u4e2a\u535a\u5ba2\u7248\u672c\u5907\u4efd\u76ee\u5f55\u5f62\u6210\u4e00\u4e2a\u535a\u5ba2\u7248\u672c\uff1b\n\u5c06\u8fd9\u4e2a\u7248\u672c\u590d\u5236\u5230Nginx\u7684\u535a\u5ba2\u76ee\u5f55\u4e0b\u89e3\u538b\uff0c\u8fd9\u6837\u5c31\u66f4\u65b0\u4e86\u535a\u5ba2\uff1b\n\u540c\u65f6\uff0c\u4e5f\u53ef\u4ee5\u53d1\u5e03\u5230GitHub\u4e2a\u4eba\u4e3b\u9875\u4e0a\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>1 \u8003\u8651\u70b9<\/h4>\n<p>\u5982\u679c\u6bcf\u6b21\u624b\u52a8\u6267\u884c\u4e0a\u9762\u7684\u64cd\u4f5c\u6b65\u9aa4\u5b9e\u5728\u662f\u592a\u9ebb\u70e6\u4e86\uff0c\u6240\u4ee5\u51b3\u5b9a\u4f7f\u7528shell\u811a\u672c\u6765\u81ea\u52a8\u5b8c\u6210\u3002\u5f53\u7136\u9664\u4e86\u5b9e\u73b0\u4e0a\u9762\u7684\u57fa\u672c\u529f\u80fd\u70b9\u4e4b\u5916\uff0c\u811a\u672c\u8fd8\u9700\u5177\u5907\u5982\u4e0b4\u4e2a\u7279\u70b9\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\u811a\u672c\u6267\u884c\u8fc7\u7a0b\u6253\u5370\u5230\u65e5\u5fd7\u6587\u4ef6\u4e2d\uff0c\u65b9\u4fbf\u67e5\u770b\uff1b\n\u811a\u672c\u4e2d\u6bcf\u6761\u91cd\u8981\u8bed\u53e5\u7684\u6267\u884c\u65f6\u95f4\u90fd\u6709\u8bb0\u5f55\u5728\u65e5\u5fd7\u4e2d\uff1b\n\u5982\u679c\u6ca1\u6709\u4eceGitHub\u4e2a\u4eba\u4ed3\u5e93\u4e2d\u68c0\u6d4b\u5230\u66f4\u65b0\u7684\u6587\u7ae0\uff0c\u90a3\u4e48\u76f4\u63a5\u7ed3\u675f\uff1b\n\u80fd\u81ea\u52a8\u5224\u65ad\u662f\u5426\u540c\u6b65\u53d1\u5e03\u5230GitHub\u7684\u4e2a\u4eba\u4e3b\u9875\u4e2d\uff08\u535a\u4e3b\u7684\u662fvfhky.github.io\uff09\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u5177\u4f53\u4ee3\u7801<\/h4>\n<p>\u4ee3\u7801\u6bd4\u8f83\u7b80\u5355\uff0c\u9700\u8981\u6ce8\u660e\u7684\u662f\uff0c\u5982\u679c\u4e2a\u4eba\u6ca1\u6709Github\u4e3b\u9875\u7684\u8bdd\uff0c\u53ef\u4ee5\u76f4\u63a5\u6267\u884c\u547d\u4ee4<code>.\/github_pelican_nginx.sh<\/code>\u5373\u53ef\uff0c\u8fd9\u6837\u5c31\u4e0d\u4f1a\u6267\u884c\u811a\u672c\u4e2d\u7684\u7b2c7\u4e2a\u6b65\u9aa4\u3002\u5426\u5219\uff0c\u9700\u8981\u6267\u884c\u547d\u4ee4<code>.\/github_pelican_nginx.sh \"\u5173\u4e8e\u672c\u6b21\u66f4\u65b0\u7684\u8bf4\u660e\u5185\u5bb9\"<\/code>\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span>\n<span class=\"normal\">138<\/span>\n<span class=\"normal\">139<\/span>\n<span class=\"normal\">140<\/span>\n<span class=\"normal\">141<\/span>\n<span class=\"normal\">142<\/span>\n<span class=\"normal\">143<\/span>\n<span class=\"normal\">144<\/span>\n<span class=\"normal\">145<\/span>\n<span class=\"normal\">146<\/span>\n<span class=\"normal\">147<\/span>\n<span class=\"normal\">148<\/span>\n<span class=\"normal\">149<\/span>\n<span class=\"normal\">150<\/span>\n<span class=\"normal\">151<\/span>\n<span class=\"normal\">152<\/span>\n<span class=\"normal\">153<\/span>\n<span class=\"normal\">154<\/span>\n<span class=\"normal\">155<\/span>\n<span class=\"normal\">156<\/span>\n<span class=\"normal\">157<\/span>\n<span class=\"normal\">158<\/span>\n<span class=\"normal\">159<\/span>\n<span class=\"normal\">160<\/span>\n<span class=\"normal\">161<\/span>\n<span class=\"normal\">162<\/span>\n<span class=\"normal\">163<\/span>\n<span class=\"normal\">164<\/span>\n<span class=\"normal\">165<\/span>\n<span class=\"normal\">166<\/span>\n<span class=\"normal\">167<\/span>\n<span class=\"normal\">168<\/span>\n<span class=\"normal\">169<\/span>\n<span class=\"normal\">170<\/span>\n<span class=\"normal\">171<\/span>\n<span class=\"normal\">172<\/span>\n<span class=\"normal\">173<\/span>\n<span class=\"normal\">174<\/span>\n<span class=\"normal\">175<\/span>\n<span class=\"normal\">176<\/span>\n<span class=\"normal\">177<\/span>\n<span class=\"normal\">178<\/span>\n<span class=\"normal\">179<\/span>\n<span class=\"normal\">180<\/span>\n<span class=\"normal\">181<\/span>\n<span class=\"normal\">182<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># FileName:      github_pelican_nginx.sh<\/span>\n<span class=\"c1\"># Description:   Synchronize markdown articles with github, convert to html files using Pelican, deliver it to nginx environment.<\/span>\n<span class=\"c1\"># Simple Usage:  .\/github_pelican_nginx.sh &quot;commit_comments&quot;<\/span>\n<span class=\"c1\"># Crontab Usage: 00 01 * * * \/mydata\/backups\/bak_list\/github_pelican_nginx.sh &gt;\/dev\/null 2&gt;&amp;1<\/span>\n<span class=\"c1\"># (c) 2016 vfhky https:\/\/typecodes.com\/linux\/githubpelicanpublishshell.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/synchronize\/github_pelican_nginx.sh<\/span>\n\n\n<span class=\"c1\"># Basic command.<\/span>\n<span class=\"nv\">FINDCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;find&quot;<\/span>\n<span class=\"nv\">MVCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\\mv -f&quot;<\/span>\n<span class=\"nv\">CPCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\\cp -rf&quot;<\/span>\n<span class=\"nv\">RMCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\\rm -rf&quot;<\/span>\n<span class=\"nv\">TARXCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;tar -zxf&quot;<\/span>\n<span class=\"nv\">TARZIPCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;tar --warning=no-file-changed -zcf&quot;<\/span>\n\n<span class=\"c1\"># Pelican compile markdown files to html.<\/span>\n<span class=\"nv\">PELICAN_COMPILE_DIR<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/pelican\n<span class=\"c1\"># Private bang in github for store your markdown files.<\/span>\n<span class=\"nv\">GITHUB_PELICAN_DIR<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/GitHub\/BlogBak\n<span class=\"c1\"># Backup dir for your website&#39;s version management.<\/span>\n<span class=\"nv\">PELICAN_TAR_DIR<\/span><span class=\"o\">=<\/span>\/usr\/share\/nginx\/html\/pelican_content_bak\n<span class=\"c1\"># Dir of your website in nginx server.<\/span>\n<span class=\"nv\">PELICAN_BLOG_DIR<\/span><span class=\"o\">=<\/span>\/usr\/share\/nginx\/html\/pelican\n<span class=\"c1\"># Dir for this shell script to generate logs automatically.<\/span>\n<span class=\"nv\">BLOG_PUBLISH_LOG_DIR<\/span><span class=\"o\">=<\/span>\/mydata\/backups\/logs\/blogpublish\n<span class=\"c1\"># Your personal homepage in github.<\/span>\n<span class=\"nv\">GITHUB_PERSONAL_PAGE<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/GitHub\/vfhky.github.io\n<span class=\"c1\"># Articles in 15 minutes are legal.<\/span>\n<span class=\"nv\">TIME_GAP<\/span><span class=\"o\">=<\/span><span class=\"m\">15<\/span>\n\n<span class=\"c1\"># Get the newest file name.<\/span>\n<span class=\"c1\">#Newest_File=&quot;ls -lrt| tail -n 1 | awk &#39;{print $9}&#39;&quot;<\/span>\n\n<span class=\"c1\"># Name of this shell script.<\/span>\n<span class=\"nv\">PRGNAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;github_pelican_nginx&quot;<\/span>\n\n<span class=\"c1\"># Current date format: e.g 20150505_2015.<\/span>\n<span class=\"nv\">Current_Date<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%Y%m%d_%H%M<span class=\"k\">)<\/span>\n\n<span class=\"c1\"># Check if current user is root.<\/span>\n<span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">$(<\/span>id<span class=\"w\"> <\/span>-u<span class=\"k\">)<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>!<span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;0&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Error: You must be root to run this script.&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n\n<span class=\"c1\"># Check parameter.<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Usage:    .\/github_pelican_nginx.sh \\&quot;commit_comments\\&quot;&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># Run command functions.<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>ERROR<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>&gt;\/dev\/null<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%H:%M:%S:%N<span class=\"k\">)<\/span><span class=\"s2\">][error] <\/span><span class=\"nv\">$*<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">BLOG_PUBLISH_LOG_DIR<\/span><span class=\"si\">}<\/span>\/<span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span>.log\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>NOTICE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>&gt;\/dev\/null<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%H:%M:%S:%N<span class=\"k\">)<\/span><span class=\"s2\">][notice] <\/span><span class=\"nv\">$*<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">BLOG_PUBLISH_LOG_DIR<\/span><span class=\"si\">}<\/span>\/<span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span>.log\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>RUNCMD<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[<\/span><span class=\"k\">$(<\/span>date<span class=\"w\"> <\/span>+%H:%M:%S:%N<span class=\"k\">)<\/span><span class=\"s2\">][notice] <\/span><span class=\"nv\">$*<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">BLOG_PUBLISH_LOG_DIR<\/span><span class=\"si\">}<\/span>\/<span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span>.log\n<span class=\"w\">    <\/span><span class=\"nb\">eval<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Git pull command function.<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>Git_Pull<span class=\"o\">(){<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;git pull origin master &gt;\/dev\/null&quot;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Git commit command function.<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>Git_Commit<span class=\"o\">(){<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Usage: Git_Commit commit_comments!&quot;<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;git pull &amp;&amp; git add --all &amp;&amp; git commit -m \\&quot;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">\\&quot; &amp;&amp; git push origin master&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Get the path of markdown articles in TIME_GAP minutes.<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>Get_Files_Path<span class=\"o\">(){<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">FINDCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> . -mmin -<\/span><span class=\"si\">${<\/span><span class=\"nv\">TIME_GAP<\/span><span class=\"si\">}<\/span><span class=\"s2\"> -type f -name \\&quot;*.md\\&quot; -print0&quot;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Lock down permissions.You should be careful when it comes to your website for the permission of files, but it&#39;s safe using 022.<\/span>\n<span class=\"c1\"># umask 022<\/span>\n\n<span class=\"c1\"># Create the log dir.<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"nv\">$BLOG_PUBLISH_LOG_DIR<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>mkdir<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span><span class=\"nv\">$BLOG_PUBLISH_LOG_DIR<\/span>\n<span class=\"k\">fi<\/span>\n\n\n<span class=\"c1\"># Main process begin.<\/span>\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[1]Start pull from GitHub.&quot;<\/span>\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"m\">0<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">GITHUB_PELICAN_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/md_article &amp;&amp; Git_Pull&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Git pull failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[2]Start copy the pulled articles to the compile dir of PELICAN.&quot;<\/span>\n<span class=\"nv\">New_Article_Files<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>Get_Files_Path<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">GITHUB_PELICAN_DIR<\/span><span class=\"si\">}<\/span>\/md_article<span class=\"k\">)<\/span>\n<span class=\"c1\"># You should not delete the double quotation marks in case of existing a blank in the file path.<\/span>\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>New_Article_File<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">New_Article_Files<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>-z<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">New_Article_File<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;No articles, nothing to do.&quot;<\/span>\n<span class=\"w\">        <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;No articles, nothing to do.&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">FILE_PATH<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>dirname<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_COMPILE_DIR<\/span><span class=\"si\">}<\/span>\/content\/articles\/<span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">New_Article_Files<\/span><span class=\"p\">:<\/span><span class=\"nv\">2<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span><span class=\"k\">)<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;mkdir -p <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE_PATH<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">CPCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> \\&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">New_Article_File<\/span><span class=\"si\">}<\/span><span class=\"s2\">\\&quot; <\/span><span class=\"si\">${<\/span><span class=\"nv\">FILE_PATH<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Copy the pulled articles failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[3]Start compile in pelican.&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_COMPILE_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; make publish &gt; \/dev\/null&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Compile in pelican failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[4]Start generate a tar packgage and move it to the backup dir.&quot;<\/span>\n<span class=\"c1\"># The command of tar cause the problem that file changed as we read with the value 1, so we should ignore it using OR logic.<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_COMPILE_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/output &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">TARZIPCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz . || <\/span><span class=\"si\">${<\/span><span class=\"nv\">MVCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_TAR_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Generate a tar packgage failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[5]Start unpack the target files.&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">CPCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_TAR_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/<\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_BLOG_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_BLOG_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">TARXCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">RMCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Unpack the target files failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># if [ $# -eq 1 ]; then<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;You&#39;re going to synchronize your weibsite to the homepage on github.com.&quot;<\/span>\n<span class=\"w\">    <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[6]Start copy the packgage to the local homepage bang cloned from remote in GitHub.&quot;<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">CPCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">PELICAN_TAR_DIR<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/<\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz <\/span><span class=\"si\">${<\/span><span class=\"nv\">GITHUB_PERSONAL_PAGE<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">GITHUB_PERSONAL_PAGE<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">TARXCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">RMCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Current_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz&quot;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Copy the packgage to the local homepage bang failed!&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n\n<span class=\"w\">    <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[7]Start synchronize website to my homepage on GitHub.&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># read -p &quot;Please input your comments on this commitment: &quot; COMMIT_COMMENTS<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># while [[ -z &quot;${COMMIT_COMMENTS}&quot; ]]<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># do<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">#   read -p &quot;Comments can not be empty.Please input again: &quot; COMMIT_COMMENTS<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># done<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\"># RUNCMD &quot;Git_Commit \\&quot;${COMMIT_COMMENTS}\\&quot;&quot;<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;Git_Commit \\&quot;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">\\&quot;&quot;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">        <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Synchronize website to GitHub failed!&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n<span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Not synchronize your weibsite to the homepage on github.com.&quot;<\/span>\n<span class=\"w\">    <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[6]Not synchronize your weibsite to the homepage on github.com.&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;------END------&quot;<\/span>\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u811a\u672c\u6267\u884c\u7ed3\u679c<\/h4>\n<p><img alt=\"github_pelican_nginx\u811a\u672c\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/pelican_shell_excute_result.png\" title=\"github_pelican_nginx\u811a\u672c\u6267\u884c\u7ed3\u679c\"><\/p>\n<h4>4 \u811a\u672c\u7ba1\u7406<\/h4>\n<p>\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u811a\u672c\u653e\u5728Github\u4e86\uff0c\u5730\u5740\u662f<a href=\"https:\/\/github.com\/vfhky\/shell-tools\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools<\/a>\uff0c\u4ee5\u540e\u811a\u672c\u7684\u66f4\u65b0\u6216\u8005\u66f4\u591a\u597d\u7528\u7684\u811a\u672c\u4e5f\u90fd\u4f1a\u52a0\u5165\u5230\u8fd9\u4e2a\u5de5\u7a0b\u4e2d\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"pelican"}},{"@attributes":{"term":"github"}},{"@attributes":{"term":"markdown"}}]},{"title":"Linux c\u8bed\u8a00\u8fde\u63a5MySQL\u6570\u636e\u5e93\u5b9e\u4f8b","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/linuxgccgconnectmysql.html","rel":"alternate"}},"published":"2016-01-07T14:42:00+08:00","updated":"2016-01-07T14:42:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-01-07:\/cseries\/linuxgccgconnectmysql.html","summary":"<p>\u5de5\u4f5c\u4e0a\u81ea\u5df1\u5728Linux C\/C++\u5f00\u53d1\u65f6\uff0c\u7528\u7684\u90fd\u662fOracle\u6570\u636e\u5e93\uff0c\u6bd5\u7adf\u4f01\u4e1a\u7ea7\u5e94\u7528\u8ffd\u6c42\u7a33\u5b9a\u6027\u597d\u3001\u5b89\u5168\u53ef\u9760\u3002\u4e1a\u4f59\u65f6\u95f4\u505a\u4e86\u4e00\u4e9bWEB\u5f00\u53d1\uff0c\u63a5\u89e6\u5230MySQL\u6570\u636e\u5e93\u6bd4\u8f83\u591a\uff0c\u4e5f\u6bd4\u8f83\u559c\u6b22\u5f00\u6e90\u7684MySQL\u3002\u4e4b\u524d\u90fd\u662f\u7528PHP\u8fde\u63a5MySQL\u6570\u636e\u5e93\uff0c\u8fd9\u91cc\u81ea\u5df1\u7528C\u8bed\u8a00\u8fde\u63a5MySQL\uff0c\u6267\u884c\u4e00\u4e9b\u7b80\u5355\u7684\u8fde\u63a5\u3001\u67e5\u8be2\u64cd\u4f5c\u3001\u5f02\u5e38\u5904\u7406\u7b49\u64cd\u4f5c\u3002<\/p>\n","content":"<p>\u5de5\u4f5c\u4e0a\u81ea\u5df1\u5728Linux C\/C++\u5f00\u53d1\u65f6\uff0c\u7528\u7684\u90fd\u662fOracle\u6570\u636e\u5e93\uff0c\u6bd5\u7adf\u4f01\u4e1a\u7ea7\u5e94\u7528\u8ffd\u6c42\u7a33\u5b9a\u6027\u597d\u3001\u5b89\u5168\u53ef\u9760\u3002\u4e1a\u4f59\u65f6\u95f4\u505a\u4e86\u4e00\u4e9bWEB\u5f00\u53d1\uff0c\u63a5\u89e6\u5230MySQL\u6570\u636e\u5e93\u6bd4\u8f83\u591a\uff0c\u4e5f\u6bd4\u8f83\u559c\u6b22\u5f00\u6e90\u7684MySQL\u3002\u4e4b\u524d\u90fd\u662f\u7528PHP\u8fde\u63a5MySQL\u6570\u636e\u5e93\uff0c\u8fd9\u91cc\u81ea\u5df1\u7528C\u8bed\u8a00\u8fde\u63a5MySQL\uff0c\u6267\u884c\u4e00\u4e9b\u7b80\u5355\u7684\u8fde\u63a5\u3001\u67e5\u8be2\u64cd\u4f5c\u3001\u5f02\u5e38\u5904\u7406\u7b49\u64cd\u4f5c\u3002<\/p>\n\n\n<h4>1 \u6d4b\u8bd5\u7a0b\u5e8f<\/h4>\n<p>\u4ee3\u7801\u6bd4\u8f83\u7b80\u5355\uff0c\u5148\u628aMySQL\u6570\u636e\u5e93\u5b89\u88c5\u540e\u5f97\u5230\u7684\u5934\u6587\u4ef6<code>mysql.h<\/code>\u5305\u542b\u8fdb\u6765\uff0c\u7136\u540e\u7f16\u8bd1\u65f6\u9700\u8981\u7528\u5230MySQL\u5bf9\u5916\u63d0\u4f9b\u7684API\u63a5\u53e3\u3002\u67e5\u9605\u4e86\u4e0b<a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.6\/en\/c-api.html\" title=\"\">MySQL\u5b98\u65b9\u6587\u6863<\/a>\uff0cMySQL\u5bf9C\u8bed\u8a00\u63d0\u4f9b\u4e86\u4e00\u4e2a\u9759\u6001\u5e93libmysqlclient.a\u548c\u4e00\u4e2a\u52a8\u6001\u5e93libmysqlclient.so\u63a5\u53e3\u6587\u4ef6\uff0c\u672c\u6587\u9009\u62e9\u4f7f\u7528\u52a8\u6001\u5e93libmysqlclient.so\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    linux_c_mysql.c<\/span>\n<span class=\"cm\"> * @Describe    A simple example for operating mysql using c programming in linux system.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2015.12.29 15:40 https:\/\/typecodes.com\/cseries\/linuxgccgconnectmysql.html<\/span>\n<span class=\"cm\"> * @Compile     gcc -I\/usr\/local\/mysql\/include  -L\/usr\/local\/mysql\/lib -lmysqlclient  linux_c_mysql.c -o linux_c_mysql<\/span>\n<span class=\"cm\"> * @Reference   http:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/c-api-function-overview.html<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdlib.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;mysql.h&gt;<\/span>\n\n\n<span class=\"c1\">\/\/MySQL connection.<\/span>\n<span class=\"n\">MYSQL<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">pMysqlConn<\/span><span class=\"p\">;<\/span>\n<span class=\"c1\">\/\/result set.<\/span>\n<span class=\"n\">MYSQL_RES<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">pMysqlRes<\/span><span class=\"p\">;<\/span>\n<span class=\"c1\">\/\/an instance of a row from the result.<\/span>\n<span class=\"n\">MYSQL_ROW<\/span><span class=\"w\"> <\/span><span class=\"n\">MysqlRow<\/span><span class=\"p\">;<\/span>\n\n<span class=\"cp\">#define MAX_BUF_SIZE 1024<\/span>\n\n<span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">pHostName<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;localhost&quot;<\/span><span class=\"p\">;<\/span><span class=\"w\">    <\/span><span class=\"c1\">\/\/or set the remote ip address.<\/span>\n<span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">pUserName<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;root&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">pPassword<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;password&quot;<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">pDbName<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;typecodes&quot;<\/span><span class=\"p\">;<\/span><span class=\"w\">      <\/span><span class=\"c1\">\/\/database name of my typecho blog.<\/span>\n<span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">unsigned<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iDbPort<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">3306<\/span><span class=\"p\">;<\/span>\n\n<span class=\"cm\">\/* print the last error message. *\/<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">finish_with_error<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">msg<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">msg<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;Error message[%s]: [%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">msg<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql_error<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlConn<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Error message[%s].<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql_error<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlConn<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">mysql_close<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlConn<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"cm\">\/**<\/span>\n<span class=\"cm\">     * When errors such as MySQL server has gone away hapended, the program should be end immeidately.<\/span>\n<span class=\"cm\">     * Otherwise, we should encounter the error below.<\/span>\n<span class=\"cm\">     * *** Error in `.\/linux_c_mysql&#39;: double free or corruption (!prev): 0x0000000001223560 ***<\/span>\n<span class=\"cm\">     *\/<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"mi\">-1<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * mysql_query() cannot be used for statements that contain binary data; you must use mysql_real_query() instead. <\/span>\n<span class=\"cm\"> * Binary data may contain the \u201c\\0\u201d character, which mysql_query() interprets as the end of the statement string.<\/span>\n<span class=\"cm\"> * In addition, mysql_real_query() is faster than mysql_query() because it does not call strlen() on the statement string. <\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">executesql<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">sql<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql_real_query<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pMysqlConn<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">sql<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">sql<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"cm\">\/* init the mysql connection. *\/<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">init_mysql<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pMysqlConn<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql_init<\/span><span class=\"p\">(<\/span><span class=\"nb\">NULL<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pMysqlConn<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">mysql_real_connect<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">pMysqlConn<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pHostName<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pUserName<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pPassword<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">pDbName<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iDbPort<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/set the language for the results excuted.<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">executesql<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;set names utf8&quot;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-3<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">x<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;A example for connecting mysql using c program in linux.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">init_mysql<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">finish_with_error<\/span><span class=\"p\">(<\/span><span class=\"nb\">NULL<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">cSqlData<\/span><span class=\"p\">[<\/span><span class=\"n\">MAX_BUF_SIZE<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"mh\">0x00<\/span><span class=\"p\">};<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">memcpy<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cSqlData<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;SELECT * FROM typecodes_users&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;SELECT * FROM vfhkytpvfhky_users&quot;<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">executesql<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cSqlData<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">finish_with_error<\/span><span class=\"p\">(<\/span><span class=\"nb\">NULL<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/pMysqlRes = mysql_use_result(pMysqlConn);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pMysqlRes<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql_store_result<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlConn<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iNum_rows<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql_num_rows<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlRes<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iNum_fields<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql_num_fields<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlRes<\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Table have [%d] records containing [%d] fields in each one.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iNum_rows<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iNum_fields<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;+------------------------------------------------+<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">MysqlRow<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql_fetch_row<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlRes<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">i<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"n\">iNum_fields<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;| %s&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">MysqlRow<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"o\">?<\/span><span class=\"n\">MysqlRow<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;NULL&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">x<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"n\">MysqlRow<\/span><span class=\"p\">[<\/span><span class=\"n\">i<\/span><span class=\"o\">++<\/span><span class=\"p\">]);<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">for<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">x<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">21<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">x<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">                <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot; &quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;|<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;+------------------------------------------------+<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">mysql_free_result<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlRes<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">mysql_close<\/span><span class=\"p\">(<\/span><span class=\"n\">pMysqlConn<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 gcc\u7f16\u8bd1\u65b9\u6cd5<\/h4>\n<p>\u7531\u4e8e\u4e4b\u524d\u5728<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b\">\u642d\u5efaMySQL\u670d\u52a1<\/a>\u7684\u65f6\u5019\uff0c\u5df2\u7ecf\u628aMySQL\u7684\u52a8\u6001\u5e93\u8def\u5f84\u901a\u8fc7ldconfig\u547d\u4ee4\u6dfb\u52a0\u5230\u4e86Linux\u7cfb\u7edf\u52a8\u6001\u5e93\u641c\u7d22\u8def\u5f84\u5f53\u4e2d\u4e86\uff0c\u6240\u4ee5\u8fd9\u91cc\u76f4\u63a5\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\u5c31\u884c\u4e86\u3002\u5f53\u7136\uff0c\u8fd8\u53ef\u4ee5\u50cf<a href=\"https:\/\/typecodes.com\/cseries\/gccgensharedlib.html\" title=\"\u300aLinux gcc\u7f16\u8bd1\u751f\u6210\u9759\u6001\u5e93\u53ca\u4f7f\u7528\u65b9\u6cd5\u300b\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u4e2d\u7684\u5176\u5b833\u79cd\u64cd\u4f5c\u65b9\u6cd5\uff0c\u628aMySQL\u52a8\u6001\u5e93mysqlclient.so\u94fe\u63a5\u8fdb\u6765\u6700\u7ec8\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\u3002<\/p>\n<p>\u7528\u4e0b\u9762\u8fd9\u6761\u547d\u4ee4\u7f16\u8bd1\u5373\u53ef\uff0c\u5176\u4e2d-I\u53c2\u6570\u8868\u793aMySQL\u6570\u636e\u5e93\u5934\u6587\u4ef6\u8def\u5f84\uff0c-L\u53c2\u6570\u8868\u793aMySQL\u6570\u636e\u5e93\u7684\u52a8\u6001\u5e93\u8def\u5f84\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">I<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"nx\">include<\/span><span class=\"w\">  <\/span><span class=\"o\">-<\/span><span class=\"nx\">L<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmysqlclient<\/span><span class=\"w\">  <\/span><span class=\"nx\">linux_c_mysql<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">linux_c_mysql<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ldd<\/span><span class=\"w\"> <\/span><span class=\"nx\">linux_c_mysql<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"ldd\u547d\u4ee4\u67e5\u770b\u53ef\u6267\u884c\u6587\u4ef6\u6240\u4f9d\u8d56\u7684\u52a8\u6001\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/gcc_compile_conncet_mysql.png\" title=\"ldd\u547d\u4ee4\u67e5\u770b\u53ef\u6267\u884c\u6587\u4ef6\u6240\u4f9d\u8d56\u7684\u52a8\u6001\u5e93\"><\/p>\n<h4>3 \u6267\u884c\u7ed3\u679c<\/h4>\n<p>\u4e0b\u56fe\u662f\u7a0b\u5e8f\u6267\u884c\u83b7\u53d6\u7684\u4e4b\u524dTypecho\u535a\u5ba2\u6570\u636e\u5e93typecodes\u4e2d\u7684\u7528\u6237\u8868typecodes_users\u4e2d\u7684\u6570\u636e\uff1a<\/p>\n<p><img alt=\"ldd\u547d\u4ee4\u67e5\u770b\u53ef\u6267\u884c\u6587\u4ef6\u6240\u4f9d\u8d56\u7684\u52a8\u6001\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/excute_connect_mysql.png\" title=\"ldd\u547d\u4ee4\u67e5\u770b\u53ef\u6267\u884c\u6587\u4ef6\u6240\u4f9d\u8d56\u7684\u52a8\u6001\u5e93\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"gcc"}},{"@attributes":{"term":"mysql"}}]},{"title":"Linux gcc\u7f16\u8bd1\u751f\u6210\u9759\u6001\u5e93\u548c\u5171\u4eab\u52a8\u6001\u5e93\u7684\u8fc7\u7a0b","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/gccgensharedlib.html","rel":"alternate"}},"published":"2016-01-05T22:48:00+08:00","updated":"2016-01-05T22:48:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2016-01-05:\/cseries\/gccgensharedlib.html","summary":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u5b9e\u4f8b\u6f14\u793a\u5728Linux\u4e0b\u5982\u4f55\u4f7f\u7528gcc\u5206\u522b\u7f16\u8bd1\u751f\u6210\u9759\u6001\u5e93\u548c\u52a8\u6001\u5e93\u6587\u4ef6\u4ee5\u53ca\u5176\u5b83\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528\u8fd9\u4e2a\u751f\u6210\u7684\u9759\u6001\u5e93\u548c\u52a8\u6001\u5e93\u3002<\/p>\n","content":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u5b9e\u4f8b\u6f14\u793a\u5728Linux\u4e0b\u5982\u4f55\u4f7f\u7528gcc\u5206\u522b\u7f16\u8bd1\u751f\u6210\u9759\u6001\u5e93\u548c\u52a8\u6001\u5e93\u6587\u4ef6\u4ee5\u53ca\u5176\u5b83\u7a0b\u5e8f\u5982\u4f55\u4f7f\u7528\u8fd9\u4e2a\u751f\u6210\u7684\u9759\u6001\u5e93\u548c\u52a8\u6001\u5e93\u3002<\/p>\n\n\n<h4>1 \u8981\u7528\u5230\u76843\u4e2a\u6d4b\u8bd5\u7a0b\u5e8f<\/h4>\n<p>1\u3001\u5934\u6587\u4ef6hello.h\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">#ifndef HELLO_H<\/span>\n<span class=\"cp\">#define HELLO_H<\/span>\n<span class=\"w\">  <\/span><span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">hello<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">name<\/span><span class=\"p\">);<\/span>\n<span class=\"cp\">#endif<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>2\u3001hello.c\u7a0b\u5e8f\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span>\n<span class=\"normal\">5<\/span>\n<span class=\"normal\">6<\/span>\n<span class=\"normal\">7<\/span>\n<span class=\"normal\">8<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">hello<\/span><span class=\"p\">(<\/span><span class=\"k\">const<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">name<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Welcome to %s.<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">name<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;libmyhello.so.1.0.1<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/printf( &quot;libmyhello.so.1.0.2\\n&quot; );<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/printf( &quot;libmyhello.so.1.0.3\\n&quot; );<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>3\u3001\u4e3b\u7a0b\u5e8fmain.c\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span>\n<span class=\"normal\">5<\/span>\n<span class=\"normal\">6<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&quot;hello.h&quot;<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">hello<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;typecodes.com&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>2 \u751f\u6210\u9759\u6001\u5e93\u6587\u4ef6<\/h4>\n<p>\u4f7f\u7528\u5982\u4e0b\u4e24\u4e2a\u547d\u4ee4\u5373\u53ef\u628a.o\u76ee\u6807\u6587\u4ef6\u805a\u5408\u6210.a\u9759\u6001\u5e93\u6587\u4ef6\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ls<\/span>\n<span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\">  <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"w\">  <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span>\n\n<span class=\"err\">####<\/span><span class=\"nx\">\u751f\u6210\u76ee\u6807\u6587\u4ef6<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ls<\/span>\n<span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\">  <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"w\">  <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span><span class=\"w\">  <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span>\n\n<span class=\"err\">#####<\/span><span class=\"nx\">\u751f\u6210\u9759\u6001\u5e93\u6587\u4ef6<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ar<\/span><span class=\"w\"> <\/span><span class=\"nx\">rcs<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ls<\/span>\n<span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\">  <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"w\">  <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span><span class=\"w\">  <\/span><span class=\"nx\">libmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span><span class=\"w\">  <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u90a3\u4e48\u5982\u4f55\u4f7f\u7528\u751f\u6210\u7684\u9759\u6001\u5e93\u6587\u4ef6\u5462\uff1f\u8fd9\u91cc\u4ee5main.c\u4e2d\u8c03\u7528\u9759\u6001\u5e93\u6587\u4ef6\u5e76\u751f\u6210\u6700\u7ec8\u7684\u53ef\u6267\u884c\u6587\u4ef6hello\u4e3a\u4f8b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span>\n<span class=\"err\">####<\/span><span class=\"nx\">\u6216\u8005\u7c7b\u4f3c\u4e8e\u52a8\u6001\u5171\u4eab\u5e93<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">L<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmyhello<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">L<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmyhello<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6ce8\u610f\uff1a\u5982\u679c\u51fa\u73b0\u4e0b\u9762\u8fd9\u4e2a\u9519\u8bef\uff0c\u90a3\u4e48\u662f\u7531\u4e8e\u7a0b\u5e8f\u94fe\u63a5\u9700\u8981\u9759\u6001\u5e93\uff0c\u7cfb\u7edf\u6ca1\u6709\u5b89\u88c5\u9759\u6001\u5e93\u5bfc\u81f4\u62a5\u9519\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">L<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmyhello<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">ld<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">cannot<\/span><span class=\"w\"> <\/span><span class=\"nx\">find<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lc<\/span>\n<span class=\"nx\">collect2<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">error<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">ld<\/span><span class=\"w\"> <\/span><span class=\"k\">returned<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">exit<\/span><span class=\"w\"> <\/span><span class=\"nx\">status<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"nx\">info<\/span><span class=\"w\"> <\/span><span class=\"nx\">glibc<\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span>\n<span class=\"nx\">Loaded<\/span><span class=\"w\"> <\/span><span class=\"nx\">plugins<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">axelget<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">fastestmirror<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">langpacks<\/span>\n<span class=\"nx\">No<\/span><span class=\"w\"> <\/span><span class=\"nx\">metadata<\/span><span class=\"w\"> <\/span><span class=\"nx\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"kd\">base<\/span>\n<span class=\"nx\">No<\/span><span class=\"w\"> <\/span><span class=\"nx\">metadata<\/span><span class=\"w\"> <\/span><span class=\"nx\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">epel<\/span>\n<span class=\"nx\">No<\/span><span class=\"w\"> <\/span><span class=\"nx\">metadata<\/span><span class=\"w\"> <\/span><span class=\"nx\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">extras<\/span>\n<span class=\"nx\">No<\/span><span class=\"w\"> <\/span><span class=\"nx\">metadata<\/span><span class=\"w\"> <\/span><span class=\"nx\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">updates<\/span>\n<span class=\"nx\">Loading<\/span><span class=\"w\"> <\/span><span class=\"nx\">mirror<\/span><span class=\"w\"> <\/span><span class=\"nx\">speeds<\/span><span class=\"w\"> <\/span><span class=\"nx\">from<\/span><span class=\"w\"> <\/span><span class=\"nx\">cached<\/span><span class=\"w\"> <\/span><span class=\"nx\">hostfile<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"kd\">base<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">mirrors<\/span><span class=\"p\">.<\/span><span class=\"nx\">aliyun<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nx\">epel<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">mirrors<\/span><span class=\"p\">.<\/span><span class=\"nx\">yun<\/span><span class=\"o\">-<\/span><span class=\"nx\">idc<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nx\">extras<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">mirrors<\/span><span class=\"p\">.<\/span><span class=\"nx\">aliyun<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"nx\">updates<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">mirrors<\/span><span class=\"p\">.<\/span><span class=\"nx\">aliyun<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span>\n<span class=\"nx\">Available<\/span><span class=\"w\"> <\/span><span class=\"nx\">Packages<\/span>\n<span class=\"nx\">Name<\/span><span class=\"w\">        <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">glibc<\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span>\n<span class=\"nx\">Arch<\/span><span class=\"w\">        <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">i686<\/span>\n<span class=\"nx\">Version<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">2.17<\/span>\n<span class=\"nx\">Release<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">106<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7_2<\/span><span class=\"m m-Double\">.1<\/span>\n<span class=\"nx\">Size<\/span><span class=\"w\">        <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">1.2<\/span><span class=\"w\"> <\/span><span class=\"nx\">M<\/span>\n<span class=\"nx\">Repo<\/span><span class=\"w\">        <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">updates<\/span><span class=\"o\">\/<\/span><span class=\"mi\">7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">x86_64<\/span>\n<span class=\"nx\">Summary<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">C<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"nx\">libraries<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"nx\">linking<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">URL<\/span><span class=\"w\">         <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/www.gnu.org\/software\/glibc\/<\/span>\n<span class=\"nx\">License<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">LGPLv2<\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">LGPLv2<\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">exceptions<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">GPLv2<\/span><span class=\"o\">+<\/span>\n<span class=\"nx\">Description<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">glibc<\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"kn\">package<\/span><span class=\"w\"> <\/span><span class=\"nx\">contains<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">C<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"nx\">libraries<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"nx\">linking<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">You<\/span><span class=\"w\"> <\/span><span class=\"nx\">don<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">need<\/span><span class=\"w\"> <\/span><span class=\"nx\">these<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">unless<\/span><span class=\"w\"> <\/span><span class=\"nx\">you<\/span><span class=\"w\"> <\/span><span class=\"nx\">link<\/span><span class=\"w\"> <\/span><span class=\"nx\">statically<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">highly<\/span><span class=\"w\"> <\/span><span class=\"nx\">discouraged<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">Name<\/span><span class=\"w\">        <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">glibc<\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span>\n<span class=\"nx\">Arch<\/span><span class=\"w\">        <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">x86_64<\/span>\n<span class=\"nx\">Version<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">2.17<\/span>\n<span class=\"nx\">Release<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">106<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7_2<\/span><span class=\"m m-Double\">.1<\/span>\n<span class=\"nx\">Size<\/span><span class=\"w\">        <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">1.5<\/span><span class=\"w\"> <\/span><span class=\"nx\">M<\/span>\n<span class=\"nx\">Repo<\/span><span class=\"w\">        <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">updates<\/span><span class=\"o\">\/<\/span><span class=\"mi\">7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">x86_64<\/span>\n<span class=\"nx\">Summary<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">C<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"nx\">libraries<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"nx\">linking<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">URL<\/span><span class=\"w\">         <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/www.gnu.org\/software\/glibc\/<\/span>\n<span class=\"nx\">License<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">LGPLv2<\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">LGPLv2<\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">exceptions<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">GPLv2<\/span><span class=\"o\">+<\/span>\n<span class=\"nx\">Description<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">glibc<\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"kn\">package<\/span><span class=\"w\"> <\/span><span class=\"nx\">contains<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">C<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"nx\">libraries<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"nx\">linking<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">You<\/span><span class=\"w\"> <\/span><span class=\"nx\">don<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">need<\/span><span class=\"w\"> <\/span><span class=\"nx\">these<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">unless<\/span><span class=\"w\"> <\/span><span class=\"nx\">you<\/span><span class=\"w\"> <\/span><span class=\"nx\">link<\/span><span class=\"w\"> <\/span><span class=\"nx\">statically<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">highly<\/span><span class=\"w\"> <\/span><span class=\"nx\">discouraged<\/span><span class=\"p\">.<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\uff0c\u5b89\u88c5glibc-static\u7a0b\u5e8f\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">glibc<\/span><span class=\"o\">-<\/span><span class=\"nx\">static<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ls<\/span>\n<span class=\"nx\">hello<\/span><span class=\"w\">  <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\">  <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">h<\/span><span class=\"w\">  <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span><span class=\"w\">  <\/span><span class=\"nx\">libmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span><span class=\"w\">  <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span>\n\n<span class=\"err\">#####<\/span><span class=\"nx\">\u8fd0\u884c\u53ef\u6267\u884c\u6587\u4ef6\u5373\u53ef<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">Hello<\/span><span class=\"w\"> <\/span><span class=\"nx\">everyone<\/span><span class=\"p\">!<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">howto_gen_static_lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>\n\n<h4>3 \u751f\u6210\u52a8\u6001\u5e93\u6587\u4ef6<\/h4>\n<p>\u53ef\u4ee5\u5982\u4e0b\u97623.1\u5c0f\u8282\u6240\u793a\u901a\u8fc7gcc\u76f4\u63a5\u751f\u6210\u52a8\u6001\u5e93\u6587\u4ef6\uff0c\u4e5f\u53ef\u4ee5\u50cf3.2\u5c0f\u8282\u4e2d\u90a3\u6837\u4f9d\u6b21\u751f\u6210realname\u3001soname\u3001linkname\u5e93\u6587\u4ef6\u3002\u4e0d\u7ecf\u5e38\u66f4\u65b0\u52a8\u6001\u5e93\u7248\u672c\u7684\u8bdd\uff0c\u4e00\u822c\u4f1a\u91c7\u75283.1\u5c0f\u8282\u4e2d\u7684\u505a\u6cd5\uff1b\u7248\u672c\u66f4\u65b0\u8f83\u9891\u7e41\u7684\u52a8\u6001\u5e93\uff0c\u8bf8\u5982MySQL\u7684\u4e00\u4e9b\u52a8\u6001\u5e93\u5c31\u662f\u91c7\u7528\u76843.2\u5c0f\u8282\u4e2d\u7684\u505a\u6cd5\u3002<\/p>\n<h5>3.1 \u76f4\u63a5\u7f16\u8bd1\u751f\u6210symbolic link\u52a8\u6001\u5e93\u6587\u4ef6<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">##### \u751f\u6210hello.o\u76ee\u6807\u6587\u4ef6<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># gcc -c -fPIC hello.c<\/span>\n<span class=\"c1\">##### \u751f\u6210\u52a8\u6001\u5e93\u6587\u4ef6libmyhello.so<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># gcc -shared -fPIC -o libmyhello.so hello.o<\/span>\n<span class=\"c1\">##### main.c\u8c03\u7528\u52a8\u6001\u5e93\u6587\u4ef6\u5e76\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6hello<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># gcc -o hello main.c -L. -lmyhello<\/span>\n<span class=\"c1\">##### \u5982\u679c\u76f4\u63a5\u6267\u884c\u7a0b\u5e8f\u5219\u4f1a\u62a5\u9519<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># .\/hello <\/span>\n<span class=\"o\">.\/<\/span><span class=\"n\">hello<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"w\"> <\/span><span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"n\">loading<\/span><span class=\"w\"> <\/span><span class=\"n\">shared<\/span><span class=\"w\"> <\/span><span class=\"n\">libraries<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">libmyhello<\/span><span class=\"o\">.<\/span><span class=\"n\">so<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">cannot<\/span><span class=\"w\"> <\/span><span class=\"n\">open<\/span><span class=\"w\"> <\/span><span class=\"n\">shared<\/span><span class=\"w\"> <\/span><span class=\"n\">object<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">such<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"n\">directory<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u53ef\u6267\u884c\u6587\u4ef6hello\u627e\u4e0d\u5230\u94fe\u63a5\u7684\u52a8\u6001\u5e93libmyhello.so\u800c\u62a5\u9519\uff1a<\/p>\n<p><img alt=\"error while loading shared libraries\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/errorloadingsharedlib.png\" title=\"error while loading shared libraries\">\n\u200b <br>\n\u539f\u56e0\u5206\u6790\uff1a\u4f7f\u7528<code>ldd hello<\/code>\u547d\u4ee4\u67e5\u770b\u53ef\u6267\u884c\u6587\u4ef6hello\u4f9d\u8d56\u7684\u52a8\u6001\u5e93libmyhello.so\uff0c\u7ed3\u679c\u662fnot found\u3002<\/p>\n<p><img alt=\"ldd\u547d\u4ee4\u67e5\u770b\u53ef\u6267\u884c\u6587\u4ef6\u6240\u4f9d\u8d56\u7684\u52a8\u6001\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/lddlibnotfound.png\" title=\"ldd\u547d\u4ee4\u67e5\u770b\u53ef\u6267\u884c\u6587\u4ef6\u6240\u4f9d\u8d56\u7684\u52a8\u6001\u5e93\">\n\u200b <br>\n\u89e3\u51b3\u65b9\u6cd5\u4e00\uff1a\u4f7f\u7528<code>root<\/code>\u7528\u6237\u628a\u81ea\u5df1\u751f\u6210\u7684\u52a8\u6001\u5171\u4eab\u5e93\u8def\u5f84\u6dfb\u52a0\u7cfb\u7edf\u52a8\u6001\u5e93\u4e2d\u5373\u53ef\u3002\n\u200b <br>\n    ##### ldconfig\u66f4\u65b0\u914d\u7f6e\u6587\u4ef6\u76ee\u5f55\u4e0b\u7684\u6240\u6709\u52a8\u6001\u94fe\u63a5\u5e93\u4e3aLinux\u7cfb\u7edf\u6240\u5171\u4eab\n    [root@typecodes ~]# echo \"\/root\/\"&gt;\/etc\/ld.so.conf.d\/test.conf\n    [root@typecodes ~]# ldconfig\n    ##### \u8fd0\u884c\u53ef\u6267\u884c\u6587\u4ef6\n    [root@typecodes ~]# .\/hello\n    Welcome to typecodes.com.<\/p>\n<p>\u8fd9\u65f6\u4f7f\u7528<code>ldconfig -v<\/code>\u547d\u4ee4\u67e5\u770b\u7cfb\u7edf\u52a8\u6001\u5e93\u7684\u641c\u7d22\u8def\u5f84\uff0c\u53ef\u4ee5\u770b\u5230libmyhello.so.1\u52a8\u6001\u5e93\u6240\u5728\u7684\u8def\u5f84\u4e3a\u7edd\u5bf9\u8def\u5f84<code>\/root\/<\/code>\uff1a<\/p>\n<p><img alt=\"ldconfig\u547d\u4ee4\u67e5\u770b\u7cfb\u7edf\u52a8\u6001\u5e93\u8def\u5f84\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/ldconfigviewlibrary.png\" title=\"ldconfig\u547d\u4ee4\u67e5\u770b\u7cfb\u7edf\u52a8\u6001\u5e93\u8def\u5f84\"><\/p>\n<h5>3.2 \u5148\u751f\u6210real name\u52a8\u6001\u5e93\u6587\u4ef6\uff0c\u7136\u540e\u521b\u5efasoname\u8f6f\u8fde\u63a5\uff0c\u6700\u540e\u521b\u5efalink name\u8f6f\u94fe\u63a5<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#####<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u751f\u6210hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">o\u76ee\u6807\u6587\u4ef6<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">fPIC<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span>\n<span class=\"err\">#####<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u751f\u6210\u5171\u4eab\u5e93<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u5bf9\u5e94real<\/span><span class=\"w\"> <\/span><span class=\"nx\">name\u662flibmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.1.0.1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u5bf9\u5e94soname\u662flibmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.1<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">g<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">shared<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">Wl<\/span><span class=\"p\">,<\/span><span class=\"o\">-<\/span><span class=\"nx\">soname<\/span><span class=\"p\">,<\/span><span class=\"nx\">libmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.1<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.1.0.1<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"gcc\u901a\u8fc7-Wl,-soname\u53c2\u6570\u751f\u6210\u52a8\u6001\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/gccsharedWlsoname.png\" title=\"gcc\u901a\u8fc7-Wl,-soname\u53c2\u6570\u751f\u6210\u52a8\u6001\u5e93\"><\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u4f7f\u7528<code>readelf -d libmyhello.so.1.0.1<\/code>\u547d\u4ee4\u67e5\u770b\u52a8\u6001\u5e93libmyhello.so.1.0.1\u7684\u4fe1\u606f\uff0c\u53ef\u4ee5\u770b\u5230\u5bf9\u5e94\u7684soname\u4e3alibmyhello.so.1\uff1a<\/p>\n<p><img alt=\"readelf\u67e5\u770b\u52a8\u6001\u5e93\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/readelfdynamiclib.png\" title=\"readelf\u67e5\u770b\u52a8\u6001\u5e93\u4fe1\u606f\"><\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u4f7f\u7528<code>ldconfig -vn .<\/code>\u547d\u4ee4\u5728\u5f53\u524d\u76ee\u5f55\u81ea\u52a8\u751f\u6210\u4e00\u4e2a\u8f6f\u94fe\u63a5\uff1a\u5c06soname\uff08libmyhello.so.1\uff09\u94fe\u63a5\u5230real name\uff08libmyhello.so.1.0.1\uff09\u3002<\/p>\n<p><img alt=\"ldconfig\u547d\u4ee4\u751f\u6210soname\u6587\u4ef6\u8f6f\u94fe\u63a5\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/ldconfigvngensoftlink.png\" title=\"ldconfig\u547d\u4ee4\u751f\u6210soname\u6587\u4ef6\u8f6f\u94fe\u63a5\"><\/p>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u4f7f\u7528<code>ln -sf libmyhello.so.1 libmyhello.so<\/code>\u547d\u4ee4\u521b\u5efa\u94fe\u63a5\u5230soname\u7684\u5171\u4eab\u5e93\u6587\u4ef6\u540d(Link Name)\uff1alibmyhello.so\u3002\n\u200b <br>\n<img alt=\"\u521b\u5efa\u94fe\u63a5\u5230real name\u7684Link Name\u5e93\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/lnsfgensoftliblink.png\" title=\"\u521b\u5efa\u94fe\u63a5\u5230real name\u7684Link Name\u5e93\u6587\u4ef6\"><\/p>\n<p>\u8fd9\u91cc\u5982\u679c\u548c\u524d\u9762\u4e00\u6837\uff0c\u76f4\u63a5\u94fe\u63a5\u521b\u5efa\u7684\u52a8\u6001\u5e93\u6587\u4ef6libmyhello.so\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6hello\uff0c\u7136\u540e\u76f4\u81f3\u6267\u884chello\uff0c\u90a3\u4e48\u4e5f\u4f1a\u63d0\u793a\u627e\u4e0d\u5230\u94fe\u63a5\u7684\u52a8\u6001\u5e93libmyhello.so\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">L<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmyhello<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u539f\u56e0\u4e5f\u662f\u4e00\u6837\u7684\uff0c\u53ef\u6267\u884c\u6587\u4ef6hello\u627e\u4e0d\u5230\u94fe\u63a5\u5e93\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span>\n<span class=\"normal\">5<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>[root@typecodes ~]# ldd hello\n        linux-vdso.so.1 =&gt;  (0x00007ffd7e7f7000)\n        libmyhello.so.1 =&gt; not found\n        libc.so.6 =&gt; \/lib64\/libc.so.6 (0x00007f641cb7d000)\n        \/lib64\/ld-linux-x86-64.so.2 (0x00007f641cf53000)\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>3.1\u5c0f\u8282\u4e2d\u7684\u65b9\u6cd5\u9700\u8981root\u7528\u6237\u6743\u9650\uff0c\u5bf9\u4e8e\u975eroot\u7528\u6237\u6709\u65b9\u6cd5\u4e8c\u6765\u89e3\u51b3\uff1a\u5982\u524d\u6587<a href=\"https:\/\/typecodes.com\/cseries\/gcclderrlibrarypath.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aLinux gcc\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\uff1aLIBRARY_PATH\u548cLD_LIBRARY_PATH\u7684\u533a\u522b\u300b<\/a>\u6240\u8ff0\uff0c\u53ea\u8981\u5728\u5f53\u524dLinux\u7cfb\u7edf\u4e2d\u914d\u7f6e<code>LD_LIBRARY_PATH<\/code>\u53d8\u91cf\uff0c\u5c31\u53ef\u4ee5\u641c\u7d22\u5230\u4f9d\u8d56\u7684\u52a8\u6001\u5e93libmyhello.so\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>[root@typecodes ~]# gcc -o hello main.c -L. -lmyhello\n##### \u628a\u5f53\u524d\u52a8\u6001\u5e93\u8def\u5f84\u6dfb\u52a0\u5230Linux\u73af\u5883\u53d8\u91cfLD_LIBRARY_PATH\u4e2d\n[root@typecodes ~]# export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:\/root\n[root@typecodes ~]# echo $LD_LIBRARY_PATH\n\/root\n##### \u6267\u884c\u7a0b\u5e8f\n[root@typecodes ~]# .\/hello\nWelcome to typecodes.com.\nlibmyhello.so.1.0\n##### ldd\u67e5\u770b\u53ef\u6267\u884c\u6587\u4ef6\u4f9d\u8d56\u7684\u52a8\u6001\u5e93\n[root@typecodes ~]# ldd hello\n        linux-vdso.so.1 =&gt;  (0x00007fffccf0d000)\n        libmyhello.so =&gt; \/root\/libmyhello.so (0x00007f6b58770000)\n        libc.so.6 =&gt; \/lib64\/libc.so.6 (0x00007f6b5839b000)\n        \/lib64\/ld-linux-x86-64.so.2 (0x00007f6b58973000)\n[root@typecodes ~]#\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p><img alt=\"\u8bbe\u7f6eLD_LIBRARY_PATH\u53d8\u91cf\u540e\uff0c\u4f7f\u7528readelf\u67e5\u770b\u52a8\u6001\u5e93\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/export_ld_library_path.png\" title=\"\u8bbe\u7f6eLD_LIBRARY_PATH\u53d8\u91cf\u540e\uff0c\u4f7f\u7528readelf\u67e5\u770b\u52a8\u6001\u5e93\u4fe1\u606f\"><\/p>\n<p>\u89e3\u51b3\u65b9\u6cd5\u4e09\uff1agcc\u94fe\u63a5\u52a8\u6001\u5e93\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\u65f6\uff0c\u52a0\u5165rpath\u53c2\u6570\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">Wl<\/span><span class=\"p\">,<\/span><span class=\"o\">-<\/span><span class=\"nx\">rpath<\/span><span class=\"p\">=.<\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">L<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmyhello<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">hello<\/span>\n<span class=\"nx\">Welcome<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">libmyhello<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.1.0.1<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"gcc\u94fe\u63a5\u52a8\u6001\u5e93\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\u65f6\uff0c\u52a0\u5165rpath\u53c2\u6570\" src=\"https:\/\/cdn.typecodes.com\/2016\/01\/gccwlrpath.png\" title=\"gcc\u94fe\u63a5\u52a8\u6001\u5e93\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\u65f6\uff0c\u52a0\u5165rpath\u53c2\u6570\"><\/p>\n<p>\u89e3\u51b3\u65b9\u6cd5\u56db\uff1a\u6700\u7b80\u5355\u7684\u64cd\u4f5c\u5c31\u662f\u76f4\u63a5\u5c06\u751f\u6210\u7684\u52a8\u6001\u5e93\u6587\u4ef6\u62f7\u8d1d\u5230Linux\u7cfb\u7edf\u52a8\u6001\u5e93\u641c\u7d22\u76ee\u5f55\u4e0b\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>\/lib\u3001\/lib64\uff1a                        \u7cfb\u7edf\u5fc5\u5907\u5171\u4eab\u5e93\n\/usr\/lib\u3001\/usr\/lib64\uff1a                \u6807\u51c6\u5171\u4eab\u5e93\u548c\u9759\u6001\u5e93\n\/usr\/local\/lib\uff1a                 \u672c\u5730\/\u7b2c\u4e09\u65b9\u51fd\u6570\u5e93\n<\/code><\/pre><\/div>\n\n<h4>4 \u603b\u7ed3\uff08update 2017.04.18 12:10\uff09<\/h4>\n<p>\u5c0f\u82822\u4e2d\u8bb2\u8ff0\u4e86\u9759\u6001\u5e93\u6587\u4ef6\u7684\u751f\u6210\u65b9\u6cd5\uff0c\u5c0f\u82823\u4e2d\u8bb2\u8ff0\u4e86\u52a8\u6001\u5e93\u7684\u751f\u6210\u65b9\u6cd5\u3002\u540c\u65f6\uff0c\u5728<code>\u6267\u884c<\/code>\u7a0b\u5e8f\u65f6\u5982\u679c\u62a5\u9519\u63d0\u793a\u627e\u4e0d\u5230\u5bf9\u5e94\u7684\u5e93\u6587\u4ef6\uff08\u53ef\u4ee5\u901a\u8fc7<code>readelf -d hello<\/code>\u9a8c\u8bc1\uff09\uff0c\u90a3\u4e48\u4e00\u5171\u67094\u79cd\u65b9\u6cd5\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6dfb\u52a0\u5e93\u8def\u5f84\u5230<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">ld<\/span><span class=\"mf\">.<\/span><span class=\"n\">so<\/span><span class=\"mf\">.<\/span><span class=\"n\">conf<\/span><span class=\"mf\">.<\/span><span class=\"n\">d<\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"n\">\u76ee\u5f55\u4e0b\u7684\u914d\u7f6e\u6587\u4ef6\u4e2d<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u7136\u540e\u6267\u884c\u547d\u4ee4ldconfig<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6dfb\u52a0\u5e93\u8def\u5f84\u5230<\/span><span class=\"w\"> <\/span><span class=\"n\">LD_LIBRARY_PATH<\/span><span class=\"w\"> <\/span><span class=\"n\">\u73af\u5883\u53d8\u91cf\u4e2d<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5728\u7f16\u8bd1\u94fe\u63a5\u547d\u4ee4\u4e2d\u52a0\u5165\u53c2\u6570<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">rpath<\/span><span class=\"o\">=<\/span><span class=\"n\">\u5e93\u6587\u4ef6\u6240\u5728\u8def\u5f84<\/span><span class=\"w\"> <\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">4<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6700\u7b80\u5355\u7684\u65b9\u5f0f<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">\u628a\u5e93\u6587\u4ef6\u62f7\u8d1d\u5230Linux\u7cfb\u7edf\u5e93\u6587\u4ef6\u6240\u5728\u76ee\u5f55\u4e0b<\/span><span class=\"err\">\uff08<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"err\">\u3001<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib64<\/span><span class=\"err\">\u3001<\/span><span class=\"o\">\/<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"err\">\u3001<\/span><span class=\"o\">\/<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib64<\/span><span class=\"err\">\u3001<\/span><span class=\"o\">\/<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib\u7b49<\/span><span class=\"err\">\uff09\u3002<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"gcc"}},{"@attributes":{"term":"\u9759\u6001\u5e93"}},{"@attributes":{"term":"soname"}},{"@attributes":{"term":"real name"}},{"@attributes":{"term":"link name"}},{"@attributes":{"term":"rpath"}},{"@attributes":{"term":"ldconfig"}}]},{"title":"Linux\u4e0bNginx\u3001MySQL\u548cPHP\u7b49\u5e94\u7528\u7684\u65e5\u5fd7\u5207\u5272\u811a\u672c","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/applogsbackup.html","rel":"alternate"}},"published":"2015-12-18T21:01:00+08:00","updated":"2015-12-18T21:01:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-12-18:\/linux\/applogsbackup.html","summary":"<p>\u5728Linux\u4e2d\u5982\u679c\u5e94\u7528\u7a0b\u5e8f\u4f1a\u4ea7\u751f\u65e5\u5fd7\uff0c\u90a3\u4e48\u5c31\u9700\u8981\u8003\u8651\u65e5\u5fd7\u5207\u5272\uff0c\u4f8b\u5982\u6309\u7167\u56fa\u5b9a\u7684\u5927\u5c0f\u5207\u5272\u3001\u6309\u7167\u65e5\u671f\u8fdb\u884c\u5207\u5272\u7b49\u7b49\u3002\u540c\u6837\uff0c\u5728\u7f16\u8bd1<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b\">Nginx1.9.0<\/a>\u3001<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b\">MySQL5.7.7rc<\/a>\u548c<a href=\"https:\/\/typecodes.com\/web\/centos7compilephp7.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e94)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5PHP7\u300b\">PHP7<\/a>\u540e\uff0c\u8fd9\u4e09\u4e2a\u5e94\u7528\u670d\u52a1\u90fd\u4f1a\u4ea7\u751f\u65e5\u5fd7\uff0c\u5c24\u5176\u662fNginx\u8fdb\u7a0b\u6839\u636e\u914d\u7f6e\u6587\u4ef6ngnix.conf\u8bb0\u5f55\u6bcf\u6761\u8bbf\u95ee\u8bb0\u5f55\u5230access.log\u4e2d\u3002\u5982\u679c\u6240\u6709\u7684\u65e5\u5fd7\u90fd\u6253\u5370\u5230\u540c\u4e00\u4e2a\u6587\u4ef6\u4e2d\u7684\u8bdd\uff0c\u90a3\u4e48\u65f6\u95f4\u957f\u4e86\u7684\u8bdd\u5c31\u4f1a\u5f71\u54cd\u6548\u7387\u3002<\/p>\n<p><img alt=\"Nginx\u65e5\u5fd7\u5207\u5272\u5b9e\u4f8b\" src=\"https:\/\/cdn.typecodes.com\/2015\/12\/nginx_logs_backup.png\" title=\"Nginx\u65e5\u5fd7\u5207\u5272\u5b9e\u4f8b\"><\/p>\n","content":"<p>\u5728Linux\u4e2d\u5982\u679c\u5e94\u7528\u7a0b\u5e8f\u4f1a\u4ea7\u751f\u65e5\u5fd7\uff0c\u90a3\u4e48\u5c31\u9700\u8981\u8003\u8651\u65e5\u5fd7\u5207\u5272\uff0c\u4f8b\u5982\u6309\u7167\u56fa\u5b9a\u7684\u5927\u5c0f\u5207\u5272\u3001\u6309\u7167\u65e5\u671f\u8fdb\u884c\u5207\u5272\u7b49\u7b49\u3002\u540c\u6837\uff0c\u5728\u7f16\u8bd1<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b\">Nginx1.9.0<\/a>\u3001<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b\">MySQL5.7.7rc<\/a>\u548c<a href=\"https:\/\/typecodes.com\/web\/centos7compilephp7.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e94)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5PHP7\u300b\">PHP7<\/a>\u540e\uff0c\u8fd9\u4e09\u4e2a\u5e94\u7528\u670d\u52a1\u90fd\u4f1a\u4ea7\u751f\u65e5\u5fd7\uff0c\u5c24\u5176\u662fNginx\u8fdb\u7a0b\u6839\u636e\u914d\u7f6e\u6587\u4ef6ngnix.conf\u8bb0\u5f55\u6bcf\u6761\u8bbf\u95ee\u8bb0\u5f55\u5230access.log\u4e2d\u3002\u5982\u679c\u6240\u6709\u7684\u65e5\u5fd7\u90fd\u6253\u5370\u5230\u540c\u4e00\u4e2a\u6587\u4ef6\u4e2d\u7684\u8bdd\uff0c\u90a3\u4e48\u65f6\u95f4\u957f\u4e86\u7684\u8bdd\u5c31\u4f1a\u5f71\u54cd\u6548\u7387\u3002<\/p>\n<p><img alt=\"Nginx\u65e5\u5fd7\u5207\u5272\u5b9e\u4f8b\" src=\"https:\/\/cdn.typecodes.com\/2015\/12\/nginx_logs_backup.png\" title=\"Nginx\u65e5\u5fd7\u5207\u5272\u5b9e\u4f8b\"><\/p>\n\n\n<p>\u8fd9\u7bc7\u6587\u7ae0\u5c31\u662f\u9488\u5bf9Linux\u4e0b\u5e94\u7528\u4f7f\u7528shell\u811a\u672c\u8fdb\u884c\u5206\u5272\u7684\u63cf\u8ff0\uff0c\u8be5\u811a\u672c\u7279\u70b9\u662f\uff1a\u6309\u5929\u5207\u5272\u3001\u81ea\u5b9a\u4e49\u5207\u5272\u51fa\u6765\u7684\u65e5\u5fd7\u4fdd\u7559\u7684\u5929\u6570\u4ee5\u53ca\u8bb0\u5f55\u811a\u672c\u6267\u884c\u8fc7\u7a0b\u548c\u8017\u65f6\u3002\u5728\u4f7f\u7528\u65f6\u9700\u8981\u914d\u7f6e\u597d\u5bf9\u5e94\u5e94\u7528\u7684\u65e5\u5fd7\u76ee\u5f55\uff08<code>Source_Log_Dir<\/code>\u53d8\u91cf\uff09\u3001\u65e5\u5fd7\u5907\u4efd\u76ee\u5f55\uff08<code>Backup_Dirs<\/code>\u53d8\u91cf\uff09\uff0c\u7136\u540e\u4f7f\u7528Crontab\u5b9a\u65f6\u4efb\u52a1\u6267\u884c\u8be5\u811a\u672c\u5373\u53ef\u3002<\/p>\n<p><img alt=\"Nginx\u65e5\u5fd7\u5207\u5272\u65f6shell\u811a\u672c\u6267\u884c\u8fc7\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2015\/12\/nginx_logs_backup_process.png\" title=\"Nginx\u65e5\u5fd7\u5207\u5272\u65f6shell\u811a\u672c\u6267\u884c\u8fc7\u7a0b\"><\/p>\n<p>\u4e0b\u9762\u662f\u811a\u672cnginx_log_backup.sh\u7684\u5177\u4f53\u5185\u5bb9\uff0c\u8fd9\u91cc\u5907\u4efd\u7684\u662fNginx\u65e5\u5fd7\uff0c\u5176\u5b83\u8bf8\u5982MySQL\u3001php\u7b49Linux\u5e94\u7528\u53ea\u8981\u4fee\u6539\u811a\u672c\u5bf9\u5e94\u7684\u65e5\u5fd7\u8def\u5f84\u5373\u53ef\u3002\u76ee\u524d\u8be5\u811a\u672c\u5df2\u7ecf\u540c\u6b65\u5230\u535a\u5ba2\u5728GitHub\u4e0a\u521b\u5efa\u7684\u5173\u4e8eLNMP\u914d\u7f6e\u7684\u5de5\u7a0b\u4e0a\u4e86\uff0c\u5730\u5740\u662f\uff1a<a href=\"https:\/\/github.com\/vfhky\/mylnmp\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/mylnmp<\/a>\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># Backup Log Files for linux applications such as nginx, php, mysql and so on.<\/span>\n<span class=\"c1\"># Crontab Usage: 00 01 * * * \/mydata\/backups\/bak_list\/nginx_log_backup.sh &gt;\/dev\/null 2&gt;&amp;1<\/span>\n<span class=\"c1\"># (c) 2015 vfhky https:\/\/typecodes.com\/linux\/applogsbackup.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/mylnmp\/blob\/master\/nginx_log_backup.sh<\/span>\n\n<span class=\"c1\"># Basic command.<\/span>\n<span class=\"nv\">TARCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;tar -zcf&quot;<\/span>\n<span class=\"nv\">MVCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\\mv -f&quot;<\/span>\n<span class=\"nv\">FINDCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;find&quot;<\/span>\n\n<span class=\"c1\"># Number of days to keep.<\/span>\n<span class=\"nv\">NUMDAYS<\/span><span class=\"o\">=<\/span><span class=\"m\">40<\/span>\n\n<span class=\"c1\"># Path of the logs you want backup.You can set it as the nginx log path or the mysql log path and so on.<\/span>\n<span class=\"nv\">Source_Log_Dir<\/span><span class=\"o\">=<\/span>\/var\/log\/nginx\n<span class=\"c1\"># Set the file types you want backup accoding to the suffix of log files.<\/span>\n<span class=\"nv\">Source_Log_Files<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span>ls<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Source_Log_Dir<\/span><span class=\"si\">}<\/span>\/*.log<span class=\"sb\">`<\/span>\n<span class=\"c1\"># Set the backup path.<\/span>\n<span class=\"nv\">Backup_Dirs<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">Source_Log_Dir<\/span><span class=\"si\">}<\/span>\n<span class=\"c1\"># Previous date format: e.g 20150505<\/span>\n<span class=\"nv\">Previous_Date<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span>date<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"s2\">&quot;-1 days&quot;<\/span><span class=\"w\"> <\/span>+%Y%m%d<span class=\"sb\">`<\/span>\n<span class=\"c1\"># The target backup dir.<\/span>\n<span class=\"nv\">Backup_Dir<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">Backup_Dirs<\/span><span class=\"si\">}<\/span>\/<span class=\"si\">${<\/span><span class=\"nv\">Previous_Date<\/span><span class=\"si\">}<\/span>\n<span class=\"c1\"># Path of the log generated by this shell script automatically.<\/span>\n<span class=\"nv\">Shell_Log<\/span><span class=\"o\">=<\/span><span class=\"si\">${<\/span><span class=\"nv\">Backup_Dir<\/span><span class=\"si\">}<\/span>\/process.log\n\n\n<span class=\"c1\"># Run command functions.<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>ERROR<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>&gt;\/dev\/null<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[`date +%H:%M:%S:%N`][error] <\/span><span class=\"nv\">$@<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Shell_Log<\/span><span class=\"si\">}<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>NOTICE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>&gt;\/dev\/null<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[`date +%H:%M:%S:%N`][notice] <\/span><span class=\"nv\">$@<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Shell_Log<\/span><span class=\"si\">}<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>RUNCMD<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Shell_Log<\/span><span class=\"si\">}<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">eval<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span>\n<span class=\"o\">}<\/span>\n\n\n<span class=\"c1\"># Check the days user input.You can delete the codes below generally.<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span>~<span class=\"w\"> <\/span>^<span class=\"o\">[<\/span><span class=\"m\">0<\/span>-9<span class=\"o\">]<\/span>+$<span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Invalid number of days[<\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\">]!&quot;<\/span>\n<span class=\"k\">elif<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>-eq<span class=\"w\"> <\/span><span class=\"s2\">&quot;0&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Number of days must be greater than zero!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\n<span class=\"c1\"># Lock down permissions.<\/span>\n<span class=\"nb\">umask<\/span><span class=\"w\"> <\/span><span class=\"m\">077<\/span>\n\n<span class=\"c1\"># Create the backup log dir and a shell log.<\/span>\nmkdir<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span><span class=\"nv\">$Backup_Dir<\/span>\ntouch<span class=\"w\"> <\/span><span class=\"nv\">$Shell_Log<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[1]Start backup.&quot;<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[2]Start compress the log files using the tar command.&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"si\">${<\/span><span class=\"nv\">Source_Log_Dir<\/span><span class=\"si\">}<\/span><span class=\"s2\"> &amp;&amp; <\/span><span class=\"si\">${<\/span><span class=\"nv\">TARCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Previous_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz *.log&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Creat the backup package failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[3]Start move the compress file to backup dir.&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"si\">${<\/span><span class=\"nv\">MVCMD<\/span><span class=\"si\">}<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Previous_Date<\/span><span class=\"si\">}<\/span><span class=\"s2\">.tar.gz <\/span><span class=\"si\">${<\/span><span class=\"nv\">Backup_Dir<\/span><span class=\"si\">}<\/span><span class=\"s2\">\/&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Move the compress file failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[4]Start empty every log file.&quot;<\/span>\n\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>file<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Source_Log_Files<\/span><span class=\"si\">}<\/span>\n<span class=\"k\">do<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;&gt;<\/span><span class=\"nv\">$file<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">      <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Empty every log file failed!&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">fi<\/span>\n<span class=\"k\">done<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[5]Removing older folders than <\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\"> days.&quot;<\/span>\n<span class=\"c1\"># ls ${Source_Log_Dir} | grep &#39;^[0-9]\\{8\\}$&#39; | xargs rm -rf<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$FINDCMD<\/span><span class=\"s2\"> <\/span><span class=\"si\">${<\/span><span class=\"nv\">Source_Log_Dir<\/span><span class=\"si\">}<\/span><span class=\"s2\"> -type d -name [0-9]*\\[0-9] -mtime +<\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\"> | xargs rm -rf&quot;<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;[6]End backup.&quot;<\/span>\n\n<span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"shell"}},{"@attributes":{"term":"nginx"}},{"@attributes":{"term":"mysql"}},{"@attributes":{"term":"php"}}]},{"title":"\u6210\u529f\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230Pelican","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/sucesstypechotopelican.html","rel":"alternate"}},"published":"2015-12-10T22:06:00+08:00","updated":"2015-12-10T22:06:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-12-10:\/mix\/sucesstypechotopelican.html","summary":"<p>\u6839\u636e<a href=\"https:\/\/typecodes.com\/mix\/begintypechotopelican.html\" title=\"\u300a\u51c6\u5907\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230Pelican\u300b\">\u524d\u6587<\/a>\u7684\u4e0a\u7ebf\u6b65\u9aa4\uff0c\u76ee\u524d\u5df2\u7ecf\u6210\u529f\u7684\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230\u4e86Pelican\u3002\u4e2d\u95f4\u4e0a\u7ebf\u53d1\u5e03\u7684\u65f6\u5019\uff0c\u9047\u5230\u4e86\u597d\u51e0\u4e2a\u95ee\u9898\uff0c\u4e0d\u8fc7\u7531\u4e8e\u4e0a\u7ebf\u6b65\u9aa4\u4e2d\u6709\u5931\u8d25\u7684\u5904\u7406\u65b9\u6848\uff08\u4fdd\u7559Typecho\u7a0b\u5e8f\uff09\uff0c\u6240\u4ee5\u5728Typecho\u5230Pelican\u4e4b\u95f4\u6765\u6765\u56de\u56de\u5207\u6362\u4e86\u597d\u51e0\u6b21\u3002<\/p>\n","content":"<p>\u6839\u636e<a href=\"https:\/\/typecodes.com\/mix\/begintypechotopelican.html\" title=\"\u300a\u51c6\u5907\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230Pelican\u300b\">\u524d\u6587<\/a>\u7684\u4e0a\u7ebf\u6b65\u9aa4\uff0c\u76ee\u524d\u5df2\u7ecf\u6210\u529f\u7684\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230\u4e86Pelican\u3002\u4e2d\u95f4\u4e0a\u7ebf\u53d1\u5e03\u7684\u65f6\u5019\uff0c\u9047\u5230\u4e86\u597d\u51e0\u4e2a\u95ee\u9898\uff0c\u4e0d\u8fc7\u7531\u4e8e\u4e0a\u7ebf\u6b65\u9aa4\u4e2d\u6709\u5931\u8d25\u7684\u5904\u7406\u65b9\u6848\uff08\u4fdd\u7559Typecho\u7a0b\u5e8f\uff09\uff0c\u6240\u4ee5\u5728Typecho\u5230Pelican\u4e4b\u95f4\u6765\u6765\u56de\u56de\u5207\u6362\u4e86\u597d\u51e0\u6b21\u3002<\/p>\n\n\n<h5>1 \u9047\u5230\u7684\u95ee\u9898<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\u4e3b\u9898\u90e8\u5206\u4ee3\u7801\u5728\u6d4b\u8bd5\u7684\u65f6\u5019\u5b58\u5728\u5199\u6b7b\u7684\u60c5\u51b5\uff0c\u5c24\u5176\u662f\u7f51\u7ad9\u5730\u5740\uff1b\n\u6d4b\u8bd5\u7528\u7684\u4ee3\u7801\u6ca1\u88ab\u6b63\u5e38\u66ff\u6362\u6210\u6b63\u5f0f\u53d1\u5e03\u7684\u7248\u672c\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>2 \u4e0a\u7ebf\u5fc3\u5f97<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\u5207\u6362\u524d\u505a\u597d\u5907\u4efd\u5de5\u4f5c\uff0c\u5e76\u4e14\u6709\u5931\u8d25\u7684\u5904\u7406\u65b9\u6848\uff0c\u5c3d\u91cf\u907f\u514d\u5bf9\u8bbf\u95ee\u9020\u6210\u5f71\u54cd\uff1b\n\u5bf9Nginx\u6765\u8bf4\uff0c\u4eceTypecho\u5207\u6362\u5230Pelican\uff0c\u53ea\u9700\u8981\u53bb\u6389PHP\u7684\u914d\u7f6e\u90e8\u5206\u5c31\u884c\u4e86\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u6700\u540e\uff0c\u5927\u5bb6\u5728\u8bbf\u95ee\u535a\u5ba2\u7684\u65f6\u5019\u51fa\u73b0\u4efb\u4f55\u95ee\u9898\uff0c\u8bf7\u544a\u77e5\u535a\u4e3b\uff0c\u8c22\u8c22~<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"typecho"}},{"@attributes":{"term":"pelican"}}]},{"title":"\u51c6\u5907\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230Pelican","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/begintypechotopelican.html","rel":"alternate"}},"published":"2015-12-10T16:20:00+08:00","updated":"2015-12-10T16:20:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-12-10:\/mix\/begintypechotopelican.html","summary":"<p>8\u6708\u4efd\u7684\u65f6\u5019\uff0c\u7ec8\u4e8e\u4ece\u5e9e\u5927\u7684WordPress\u8f6c\u5230\u4e86\u8f7b\u91cf\u7ea7\u7684<a href=\"https:\/\/typecodes.com\/mix\/eventualwptotypecho.html\" title=\"\u300a\u7ec8\u4e8e\u4eceWordPress\u8f6c\u5411Typecho\u4e86\u300b\">\u535a\u5ba2\u7a0b\u5e8fTypecho<\/a>\u3002\u7b80\u6d01\u7684\u8bbe\u8ba1\u548c\u6bd4\u8f83\u51fa\u8272\u7684Markdown\u652f\u6301\uff0c\u6574\u4e2aTypecho\u4f53\u9a8c\u8fd8\u662f\u633a\u4e0d\u9519\u7684\u3002\u523010\u6708\u4efd\u7684\u65f6\u5019\uff0c\u81ea\u5df1\u4e86\u89e3\u4e86\u4e00\u4e9b\u9759\u6001\u535a\u5ba2\u7a0b\u5e8f\uff0c\u5305\u62ecnodejs\u7684Ghost\u3001Hexo\u7b49\uff0cruby\u5199\u7684jekyll\u4ee5\u53caPython\u5199\u7684<a href=\"http:\/\/docs.getpelican.com\/en\/3.6.3\/\" title=\"Pelican\u6700\u65b03.6.3\u5b98\u65b9\u6587\u6863\">Pelican<\/a>\u7b49\u3002<\/p>\n<p>\u7531\u4e8e\u5f53\u65f6\u6b63\u597d\u63a5\u89e6\u5230\u4e86\u5927\u87d2\u86c7\uff0c\u800c\u4e14\u5bf9js\u4e0d\u719f\uff08ruby\u90fd\u6ca1\u7528\u8fc7\uff09\uff0c\u6240\u4ee5\u5c31\u5728\u672c\u5730\u5c1d\u8bd5\u4e86\u4e00\u4e0bPelican\u3002\u4e4b\u95f4\u6298\u817e\u4e86\u4e00\u4e2a\u4eceOctopress\u79fb\u690d\u8fc7\u6765\u7684\u4e3b\u9898Pelican-Octopress\u672a\u679c\uff0c\u540e\u9762\u5fd9\u7740\u5c31\u6ca1\u600e\u4e48\u5f04\u4e86\u3002<\/p>\n<p>\u524d\u6bb5\u65f6\u95f4\u8f9e\u804c\u540e\uff0c\u95f2\u7740\u5c31\u6253\u7b97\u628a\u535a\u5ba2\u201c\u7b80\u6d01\u5230\u5e95\u201d\uff1a\u629b\u5f03MySQL\u6570\u636e\u5e93\u548cPHP\u6267\u884c\u89e3\u91ca\uff0c\u5b8c\u5168\u91c7\u7528Python\u751f\u6210\u9759\u6001HTML\u6587\u4ef6\u3002\u8fd9\u6837\u4ee5\u540e\u5c31\u53ea\u9700\u8981\u5728\u672c\u5730\u901a\u8fc7Markdown\u5199\u597d\u6587\u7ae0\uff0c\u7136\u540e\u901a\u8fc7pelican\u751f\u6210html\u6587\u4ef6\u5373\u53ef\u3002<\/p>\n<p><img alt=\"\u51c6\u5907\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230Pelican\" src=\"https:\/\/cdn.typecodes.com\/2015\/12\/10\/begintypechotopelican.png\" title=\"\u51c6\u5907\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230Pelican\"><\/p>\n","content":"<p>8\u6708\u4efd\u7684\u65f6\u5019\uff0c\u7ec8\u4e8e\u4ece\u5e9e\u5927\u7684WordPress\u8f6c\u5230\u4e86\u8f7b\u91cf\u7ea7\u7684<a href=\"https:\/\/typecodes.com\/mix\/eventualwptotypecho.html\" title=\"\u300a\u7ec8\u4e8e\u4eceWordPress\u8f6c\u5411Typecho\u4e86\u300b\">\u535a\u5ba2\u7a0b\u5e8fTypecho<\/a>\u3002\u7b80\u6d01\u7684\u8bbe\u8ba1\u548c\u6bd4\u8f83\u51fa\u8272\u7684Markdown\u652f\u6301\uff0c\u6574\u4e2aTypecho\u4f53\u9a8c\u8fd8\u662f\u633a\u4e0d\u9519\u7684\u3002\u523010\u6708\u4efd\u7684\u65f6\u5019\uff0c\u81ea\u5df1\u4e86\u89e3\u4e86\u4e00\u4e9b\u9759\u6001\u535a\u5ba2\u7a0b\u5e8f\uff0c\u5305\u62ecnodejs\u7684Ghost\u3001Hexo\u7b49\uff0cruby\u5199\u7684jekyll\u4ee5\u53caPython\u5199\u7684<a href=\"http:\/\/docs.getpelican.com\/en\/3.6.3\/\" title=\"Pelican\u6700\u65b03.6.3\u5b98\u65b9\u6587\u6863\">Pelican<\/a>\u7b49\u3002<\/p>\n<p>\u7531\u4e8e\u5f53\u65f6\u6b63\u597d\u63a5\u89e6\u5230\u4e86\u5927\u87d2\u86c7\uff0c\u800c\u4e14\u5bf9js\u4e0d\u719f\uff08ruby\u90fd\u6ca1\u7528\u8fc7\uff09\uff0c\u6240\u4ee5\u5c31\u5728\u672c\u5730\u5c1d\u8bd5\u4e86\u4e00\u4e0bPelican\u3002\u4e4b\u95f4\u6298\u817e\u4e86\u4e00\u4e2a\u4eceOctopress\u79fb\u690d\u8fc7\u6765\u7684\u4e3b\u9898Pelican-Octopress\u672a\u679c\uff0c\u540e\u9762\u5fd9\u7740\u5c31\u6ca1\u600e\u4e48\u5f04\u4e86\u3002<\/p>\n<p>\u524d\u6bb5\u65f6\u95f4\u8f9e\u804c\u540e\uff0c\u95f2\u7740\u5c31\u6253\u7b97\u628a\u535a\u5ba2\u201c\u7b80\u6d01\u5230\u5e95\u201d\uff1a\u629b\u5f03MySQL\u6570\u636e\u5e93\u548cPHP\u6267\u884c\u89e3\u91ca\uff0c\u5b8c\u5168\u91c7\u7528Python\u751f\u6210\u9759\u6001HTML\u6587\u4ef6\u3002\u8fd9\u6837\u4ee5\u540e\u5c31\u53ea\u9700\u8981\u5728\u672c\u5730\u901a\u8fc7Markdown\u5199\u597d\u6587\u7ae0\uff0c\u7136\u540e\u901a\u8fc7pelican\u751f\u6210html\u6587\u4ef6\u5373\u53ef\u3002<\/p>\n<p><img alt=\"\u51c6\u5907\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230Pelican\" src=\"https:\/\/cdn.typecodes.com\/2015\/12\/10\/begintypechotopelican.png\" title=\"\u51c6\u5907\u5c06\u535a\u5ba2\u4eceTypecho\u8fc1\u79fb\u5230Pelican\"><\/p>\n\n\n<h5>1 \u76ee\u524d\u5df2\u5b8c\u6210\u7684\u64cd\u4f5c<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\u5c06\u4e4b\u524d\u8fd9\u4efdTypecho\u4e3b\u9898\u5e73\u6ed1\u79fb\u690d\u5230Pelican\u4e2d\uff0c\u5e76\u5728\u672c\u5730\u8c03\u8bd5\u5b8c\u6bd5\uff1b\n\u5907\u4efd\u76ee\u524dLNMP\u73af\u5883\u4e2d\u7684\u535a\u5ba2\u6570\u636e\u5e93\u548cPHP\u7a0b\u5e8f\uff08\u53ef\u80fd\u4f1a\u8fc1\u79fb\u5230SAE\uff09\uff1b\n\u5bfc\u51faTypecho\u6587\u7ae0\u548c\u8bc4\u8bba\u5230Disqus\u4e2d\uff1b\n\u5728\u76ee\u524dCentOS7.1\u673a\u5668\u4e0a\u642d\u5efaPelican\u73af\u5883\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>2 \u4e0a\u7ebf\u6b65\u9aa4<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\u5173\u95ed\u535a\u5ba2\u81ea\u5e26\u8bc4\u8bba\uff1b\n\u4fee\u6539\u535a\u5ba2PHP\u7a0b\u5e8f\u4f7f\u4e4b\u652f\u6301Disqus\u8bc4\u8bba\uff0c\u5e76\u6d4b\u8bd5\u5bfc\u5165\u5230Disqus\u4e2d\u7684\u8bc4\u8bba\u662f\u5426\u6b63\u5e38\uff1b\n\u4e0a\u4f20\u672c\u5730Pelican\u751f\u6210\u7684\u535a\u5ba2\uff08\u9759\u6001HTML\u6587\u4ef6\uff09\uff1b\n\u53ef\u9009\u6b65\u9aa4\uff1a\u8bbe\u7f6e\u535a\u5ba2\u6240\u6709HTML\u6587\u4ef6\u6743\u9650\u4e3a444\uff0c\u6587\u4ef6\u5939\u4e3a555\uff08\u6ca1\u6709\u6267\u884c\u6743\u9650X\u7684\u8bdd\u4f1a\u9020\u6210403\u9519\u8bef\uff09\uff1b\n\u66f4\u6539Nginx\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u652f\u6301Pelican\u9759\u6001\u535a\u5ba2\uff1b\n\u6682\u65f6\u4fdd\u7559PHP\u548cMySQL\u670d\u52a1\uff0c\u4ee5\u4fbfPelican\u4e0a\u7ebf\u5931\u8d25\u7684\u5207\u6362\uff1b\n\u5b8c\u6210Disqus\u6d4b\u8bd5\uff1b\nservice nginx reload\u91cd\u8f7dNginx\u670d\u52a1\uff0c\u5f00\u653e\u535a\u5ba2\u8bc4\u8bba\uff1b\n\u5173\u95edPHP\u548cMySQL\u670d\u52a1\uff1b\n\u4e0a\u7ebf\u5b8c\u6bd5\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>3 \u540e\u7eed\u64cd\u4f5c<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span>\n<span class=\"normal\">4<\/span>\n<span class=\"normal\">5<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>\u66f4\u65b0\u535a\u5ba2\u6587\u7ae0\uff1b\n\u7ee7\u7eed\u4f18\u5316\u4e3b\u9898\u6a21\u677f\uff1b\n\u5c06\u535a\u5ba2PHP\u7248\u672c\u8fc1\u79fb\u5230SAE\u4e0a\uff1b\n\u5f00\u6e90\u535a\u5ba2Typecho\u7248\u7684\u4e3b\u9898\u7a0b\u5e8f\u548c\u76ee\u524dPelican\u7248\u672c\u7684\u4e3b\u9898\u7a0b\u5e8f\uff1b\n\u4fdd\u7559\u65b0\u6d6a\u5fae\u535a\u7684PHP\u7248\u672c\u7684API\u63a5\u53e3\uff08\u53ef\u80fd\u4f1a\u5f00\u653e\uff09\u3002\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>4 Pelican\u7b80\u4ecb<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">1<\/span>\n<span class=\"normal\">2<\/span>\n<span class=\"normal\">3<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>Pelican\u662f\u4e00\u4e2a\u7528Python\u8bed\u8a00\u7f16\u5199\u7684\u9759\u6001\u7f51\u7ad9\u751f\u6210\u5668\uff0c\u5b8c\u5168\u4e0d\u9700\u8981\u6570\u636e\u5e93\u548c\u903b\u8f91\u670d\u52a1\u7aef\u652f\u6301\u3002\n\u53ef\u4ee5\u4f7f\u7528restructuredText\u548cMarkdown\u8fdb\u884c\u5199\u4f5c\uff0c\u5168\u9759\u6001\u5316\u5bf9\u4e3b\u673a\u975e\u5e38\u53cb\u597d\u3002\n\u7279\u6027\uff1a\u4f7f\u7528Jinja\u6a21\u677f\u81ea\u5b9a\u4e49\u5236\u4f5cPelican\u4e3b\u9898\uff0c\u591a\u8bed\u8a00\u652f\u6301\uff0cAtom\/RSS feeds\uff0c\u4ee3\u7801\u9ad8\u4eae\uff0c\u4e30\u5bcc\u7684\u63d2\u4ef6\u652f\u6301...\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"typecho"}},{"@attributes":{"term":"pelican"}}]},{"title":"Linux TCP\u8fde\u63a5Connection Refused\u548cConnection timed out\u7684\u95ee\u9898","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/tcpconnectiontimedout.html","rel":"alternate"}},"published":"2015-09-12T22:39:00+08:00","updated":"2015-09-12T22:39:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-09-12:\/linux\/tcpconnectiontimedout.html","summary":"<p>\u524d\u6bb5\u65f6\u95f4\u548c\u5176\u5b83\u7cfb\u7edf\u505a\u8054\u8c03\u6d4b\u8bd5\uff0c\u5bf9\u65b9\u7cfb\u7edf\u91c7\u7528\u7684\u662f\u8d1f\u8f7d\u5747\u8861\u6a21\u5f0f\u3002\u8c03\u8bd5\u65f6\u91c7\u7528\u7684\u662f\u591a\u53f0\u624b\u673a\u4f5c\u4e3a\u5ba2\u6237\u7aef\u53d1\u9001\u5230\u5bf9\u65b9\u8d1f\u8f7d\u5747\u8861\u670d\u52a1\u5668\uff0c\u7136\u540e\u518d\u628a\u62a5\u6587\u8f6c\u53d1\u9001\u5230\u6211\u8fd9\u8fb9\u7684\u670d\u52a1\u7aef\u3002\u5728\u6d4b\u8bd5\u7684\u65f6\u5019\uff0c\u5bf9\u65b9\u6d4b\u8bd5\u4eba\u5458\u8bf4\u6709\u7684\u624b\u673a\u5ba2\u6237\u7aef\u4f1a\u5076\u5c14\u51fa\u73b0\u62a5\u6587\u53d1\u4e0d\u8fc7\u6765\u7684\u60c5\u51b5\u3002<\/p>\n<p>\u6545\u4e8b\u6709\u70b9\u957f\uff0c\u5148\u53d1\u4e00\u5f20tcp\u4e09\u6b21\u63e1\u624b\u7684\u8fc7\u7a0b\u56fe\u9547\u697c~<\/p>\n<p><img alt=\"Linux tcp\u4e09\u6b21\u63e1\u624b\" src=\"https:\/\/cdn.typecodes.com\/2015\/09\/tcp_handshake.png\" title=\"Linux tcp\u4e09\u6b21\u63e1\u624b\"><\/p>\n","content":"<p>\u524d\u6bb5\u65f6\u95f4\u548c\u5176\u5b83\u7cfb\u7edf\u505a\u8054\u8c03\u6d4b\u8bd5\uff0c\u5bf9\u65b9\u7cfb\u7edf\u91c7\u7528\u7684\u662f\u8d1f\u8f7d\u5747\u8861\u6a21\u5f0f\u3002\u8c03\u8bd5\u65f6\u91c7\u7528\u7684\u662f\u591a\u53f0\u624b\u673a\u4f5c\u4e3a\u5ba2\u6237\u7aef\u53d1\u9001\u5230\u5bf9\u65b9\u8d1f\u8f7d\u5747\u8861\u670d\u52a1\u5668\uff0c\u7136\u540e\u518d\u628a\u62a5\u6587\u8f6c\u53d1\u9001\u5230\u6211\u8fd9\u8fb9\u7684\u670d\u52a1\u7aef\u3002\u5728\u6d4b\u8bd5\u7684\u65f6\u5019\uff0c\u5bf9\u65b9\u6d4b\u8bd5\u4eba\u5458\u8bf4\u6709\u7684\u624b\u673a\u5ba2\u6237\u7aef\u4f1a\u5076\u5c14\u51fa\u73b0\u62a5\u6587\u53d1\u4e0d\u8fc7\u6765\u7684\u60c5\u51b5\u3002<\/p>\n<p>\u6545\u4e8b\u6709\u70b9\u957f\uff0c\u5148\u53d1\u4e00\u5f20tcp\u4e09\u6b21\u63e1\u624b\u7684\u8fc7\u7a0b\u56fe\u9547\u697c~<\/p>\n<p><img alt=\"Linux tcp\u4e09\u6b21\u63e1\u624b\" src=\"https:\/\/cdn.typecodes.com\/2015\/09\/tcp_handshake.png\" title=\"Linux tcp\u4e09\u6b21\u63e1\u624b\"><\/p>\n\n\n<h5>1 \u81ea\u5df1\u670d\u52a1\u7aef\u7684socket\u76d1\u542c\u51fa\u73b0\u95ee\u9898<\/h5>\n<p>\u4e00\u5f00\u59cb\u8ba4\u4e3a\u53ef\u80fd\u662f\u81ea\u5df1\u4f5c\u4e3a\u670d\u52a1\u7aef\u7684\u76d1\u542c\u6709\u95ee\u9898\uff0c\u56e0\u4e3a\u540e\u9762\u6392\u67e5\u76d1\u542c\u7aef\u53e3\u7684\u65f6\u5019\u53d1\u73b0\u4e86<code>close_wait<\/code>\u7684\u60c5\u51b5\u3002\u5f53\u65f6\u6ca1\u591a\u60f3\uff0c\u8ba4\u4e3a\u5bf9\u65b9\u8d1f\u8f7d\u5747\u8861\u4e0d\u4f1a\u51fa\u9519\uff08\u5148\u524d\u8ddf\u5176\u5b83\u7cfb\u7edf\u8054\u8c03\u8fc7\u4e86\uff09\uff0c\u5c31\u6025\u7740\u89e3\u51b3close_wait\u7684\u95ee\u9898\u53bb\u4e86\u3002<\/p>\n<p>\u53ef\u662f\u540e\u9762\u6d4b\u8bd5\u7684\u65f6\u5019\uff0c\u5c3d\u7ba1\u670d\u52a1\u7aef\u76d1\u542c\u6ca1\u6709\u4efb\u4f55\u5f02\u5e38\uff0c\u4f46\u662f\u624b\u673aAPP\u8fd8\u662f\u6709\u53d1\u5305\u5931\u8d25\u7684\u60c5\u51b5\uff0c\u800c\u4e14\u602a\u5f02\u7684\u662f\u670d\u52a1\u7aef\u65e5\u5fd7\u4e5f\u6ca1\u6253\u5370\u8bf7\u6c42\u5305\u5185\u5bb9\u3002<\/p>\n<h5>2 \u9632\u706b\u5899\u53ea\u6536\u5230\u5bf9\u65b9\u7cfb\u7edf\u7684\u4e00\u4e2aIP\u8bb0\u5f55<\/h5>\n<p>\u6298\u817e\u4e86\u5f88\u4e45\u8fd8\u662f\u6ca1\u627e\u5230\u539f\u56e0\u6240\u5728\uff0c\u540e\u9762\u8054\u7cfb\u4e86\u5bf9\u65b9\u7cfb\u7edf\u6d4b\u8bd5\u4eba\u5458\u5f97\u5230\u56de\u590d\u8bf4\u4ed6\u4eec\u7684\u65e5\u5fd7\u62a5\u9519\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nv\">java<\/span>.<span class=\"nv\">net<\/span>.<span class=\"nv\">SocketTimeoutException<\/span>:<span class=\"w\"> <\/span><span class=\"nv\">SocketTimeoutException<\/span><span class=\"w\"> <\/span><span class=\"nv\">invoking<\/span><span class=\"w\"> <\/span><span class=\"nv\">https<\/span>:<span class=\"o\">\/\/<\/span><span class=\"mi\">123<\/span>.<span class=\"mi\">123<\/span>.<span class=\"mi\">123<\/span>.<span class=\"mi\">214<\/span>:<span class=\"mi\">7070<\/span>:<span class=\"w\"> <\/span><span class=\"k\">connect<\/span><span class=\"w\"> <\/span><span class=\"nv\">timed<\/span><span class=\"w\"> <\/span><span class=\"nv\">out<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u4e8e\u662f\u8054\u7cfb\u7f51\u7edc\u7ba1\u7406\u5458\uff0c\u770b\u9632\u706b\u5899\u662f\u5426\u62d2\u6389\u4e86\u5bf9\u65b9\u8bf7\u6c42\u62a5\u6587\u3002\u7ed3\u679c\u7f51\u7ba1\u56de\u590d\u9632\u706b\u5899\u6b63\u5e38\uff0c\u4f46\u662f\u53ea\u6536\u5230\u5bf9\u65b9\u7684\u4e00\u53f0IP\u8bb0\u5f55\uff0c\u53e6\u4e00IP\u6ca1\u6709\u53d1\u9001\u8fc7\u62a5\u6587\u3002<\/p>\n<p>\u7acb\u5373\u53cd\u6620\u7ed9\u5bf9\u65b9\u5f00\u53d1\u4eba\u5458\uff0c\u7ed3\u679c\u5bf9\u65b9\u53d1\u73b0\u662f\u8d1f\u8f7d\u5747\u8861\u7cfb\u7edf\u7684\u4e00\u53f0\u670d\u52a1\u5668\u8fde\u63a5\u6211\u8fd9\u8fb9\u7cfb\u7edf\u7684\u7f51\u7edc\u6709\u95ee\u9898\u3002<\/p>\n<h5>3 \u95ee\u9898\u7684\u603b\u7ed3<\/h5>\n<p>\u5230\u8fd9\u91cc\u95ee\u9898\u5df2\u7ecf\u89e3\u51b3\u4e86\uff0c\u4f46\u662f\u81ea\u5df1\u5bf9\u4e8etcp\u51fa\u73b0<code>Connection timed out<\/code>\u7684\u9519\u8bef\u8ba4\u8bc6\u4e0d\u8db3\uff0c\u53ea\u60f3\u5230\u662f\u81ea\u5df1\u670d\u52a1\u7aef<code>close_wait<\/code>\u5f15\u8d77\u7684\u95ee\u9898\u3002\u4e0b\u9762\u662f\u81ea\u5df1\u5bf9tcp\u63e1\u624b\u8fc7\u7a0b\u4e2d\u51fa\u73b0<code>Connection refused<\/code>\u548c<code>Connection timed out<\/code>\u7684\u603b\u7ed3\u3002<\/p>\n<h6>3.1 Connection refused<\/h6>\n<p>\u4f7f\u7528telnet\u6765\u68c0\u67e5tcp\u94fe\u8def\u65f6\uff0c\u5982\u679c\u9047\u5230\"Connection refused\"\u7684\u9519\u8bef\uff0c\u90a3\u4e48\u8868\u793a\u4ece\u672c\u5730\u5ba2\u6237\u7aef\u5230\u76ee\u6807IP\u5730\u5740\u7684\u8def\u7531\u662f\u6b63\u5e38\u7684\uff0c\u4f46\u662f\u8be5\u76ee\u6807\u7aef\u53e3\u6ca1\u6709\u8fdb\u7a0b\u5728\u76d1\u542c\uff0c\u7136\u540e\u670d\u52a1\u7aef\u62d2\u7edd\u6389\u4e86\u8fde\u63a5\u3002<\/p>\n<p>\u4e00\u4e2a\u6210\u529f\u7684tcp\u94fe\u63a5\u5c06\u4f1a\u770b\u5230<code>Syn<\/code>\uff0c<code>Syn-Ack<\/code>\uff0c<code>Ack<\/code>\uff0c\u8fd9\u4e5f\u5c31\u662f\u6211\u4eec\u9884\u671f\u7684TCP\u4e09\u6b21\u63e1\u624b\u3002\u5f53\u4f7f\u7528<code>tcpdump<\/code>\u6216<code>wireshark<\/code>\u6293\u5305\u5de5\u5177\u6765\u63a2\u6d4b\u53d1\u9001\u8fc7\u6765\u7684\u8bf7\u6c42\u62a5\u6587\u5305\u65f6\uff0c<code>Connection refused<\/code>\u5c06\u4f1a\u770b\u5230<code>Syn<\/code>,<code>Rst<\/code>\u3002<\/p>\n<h6>3.2 Connection timed out<\/h6>\n<p>\u5982\u679ctelnet\u7684\u65f6\u5019\uff0cTCP\u8def\u7531\u4e0d\u6b63\u5e38\uff0c\u90a3\u4e48\u4f1a\u5f97\u5230\u4e00\u4e2a<code>Connection timed out<\/code>\u7684\u9519\u8bef\u3002\"Couldn't connect\"\u539f\u56e0\u6709\u5f88\u591a\uff0c\u53ef\u80fd\u662f\u670d\u52a1\u5668\u65e0\u6cd5ping\u901a\uff0c\u53ef\u80fd\u662f\u670d\u52a1\u5668\uff08\u9632\u706b\u5899\u7b49\uff09\u4e22\u5f03\u4e86\u8be5\u8bf7\u6c42\u62a5\u6587\u5305\uff0c\u4e5f\u53ef\u80fd\u662f\u670d\u52a1\u5668\u5e94\u7b54\u592a\u6162\uff0c\u53c8\u6216\u8005\u5b58\u5728\u95f4\u6b47\u6027\u7684\u95ee\u9898\uff08\u8fd9\u79cd\u60c5\u51b5\u5f88\u96be\u4ece\u65e5\u5fd7\u6587\u4ef6\u4e2d\u6392\u67e5\u95ee\u9898\uff09\u3002<\/p>\n<p>\u4e0b\u9762\u6f14\u793a\u201cConnection timed out\u201d\u7684\u60c5\u51b5\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u5148\u6253\u5f00\u4e00\u4e2assh\u4f1a\u8bdd<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">telnet\u4efb\u610f\u4e00\u4e2a\u4e0d\u5b58\u5728IP<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">telnet<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">10.10.223.123<\/span><span class=\"w\"> <\/span><span class=\"mi\">9010<\/span>\n<span class=\"nx\">Trying<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">10.10.223.123<\/span><span class=\"o\">...<\/span>\n\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u7136\u540e\u6253\u5f00\u53e6\u4e00\u4e2assh\u4f1a\u8bdd<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">netstat\u670d\u52a1\u5668\u4e0atcp\u8fde\u63a5\u72b6\u51b5<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">netstat<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">anpt<\/span>\n<span class=\"nx\">tcp<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\">      <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">10.169.218.97<\/span><span class=\"p\">:<\/span><span class=\"mi\">53794<\/span><span class=\"w\">     <\/span><span class=\"m m-Double\">10.10.223.123<\/span><span class=\"p\">:<\/span><span class=\"mi\">9010<\/span><span class=\"w\">      <\/span><span class=\"nx\">SYN_SENT<\/span><span class=\"w\">    <\/span><span class=\"mi\">4271<\/span><span class=\"o\">\/<\/span><span class=\"nx\">telnet<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7531\u4e0b\u56fe\u53ef\u77e5\uff0ctelnet\u8fdb\u7a0b\u4f5c\u4e3a\u5ba2\u6237\u7aef\u53d1\u9001SYN\u5305\u540e\uff0c\u8fdb\u5165<code>SYN_SENT<\/code>\u72b6\u6001\uff0c\u7b49\u5f85\u670d\u52a1\u7aef\u5e94\u7b54\u3002<\/p>\n<p><img alt=\"netstat\u67e5\u770btcp\u8fde\u63a5\u72b6\u6001\" src=\"https:\/\/cdn.typecodes.com\/2015\/09\/linux_netstat_antp.png\" title=\"netstat\u67e5\u770btcp\u8fde\u63a5\u72b6\u6001\"><\/p>\n<p>\u4f46\u662f\u7531\u4e8e\u5ba2\u6237\u7aef\u548c\u76ee\u6807IP\u7684\u8def\u7531\u65e0\u6cd5\u5efa\u7acb\uff08\u4e5f\u5c31\u662fBZ\u9047\u5230\u7684\u60c5\u51b5\uff09\uff0c\u6240\u4ee5\u57283\u5206\u949f\u540e\u8be5tcp\u94fe\u8def\u663e\u793a<code>Connection timed out<\/code>\u3002<\/p>\n<p><img alt=\"Linux telenet connection timed out\" src=\"https:\/\/cdn.typecodes.com\/2015\/09\/linux_telnet_timeout.png\" title=\"Linux telenet connection timed out\"><\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"tcp"}},{"@attributes":{"term":"connection refused"}},{"@attributes":{"term":"connection timed out"}}]},{"title":"\u535a\u5ba2MySQL\u670d\u52a1\u60ca\u9b42\u8bb0\uff1aLinux\u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3(Core Dump\u6587\u4ef6\u5f15\u7206)","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/mysqlerrornospace.html","rel":"alternate"}},"published":"2015-08-17T22:33:00+08:00","updated":"2015-08-17T22:33:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-08-17:\/linux\/mysqlerrornospace.html","summary":"<p>\u6628\u5929\u5728\u66f4\u65b0\u5b8c\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/mix\/synweibophpmarkdownimgurl.html\" title=\"\">\u300a\u5347\u7ea7\u535a\u5ba2\u6587\u7ae0\u540c\u6b65\u5fae\u535a\u7684\u63d2\u4ef6\uff1aPHP\u6b63\u5219\u63d0\u53d6Markdown\u7684\u56fe\u7247\u5730\u5740\u300b<\/a>\u540e\uff0c\u535a\u5ba2\u7a81\u7136\u65e0\u6cd5\u8bbf\u95ee\u4e86\u3002<\/p>\n<p><img alt=\"MySQL\u7684\u9519\u8bef\u65e5\u5fd7\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/mysql_space_error.png\" title=\"MySQL\u7684\u9519\u8bef\u65e5\u5fd7\"><\/p>\n","content":"<p>\u6628\u5929\u5728\u66f4\u65b0\u5b8c\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/mix\/synweibophpmarkdownimgurl.html\" title=\"\">\u300a\u5347\u7ea7\u535a\u5ba2\u6587\u7ae0\u540c\u6b65\u5fae\u535a\u7684\u63d2\u4ef6\uff1aPHP\u6b63\u5219\u63d0\u53d6Markdown\u7684\u56fe\u7247\u5730\u5740\u300b<\/a>\u540e\uff0c\u535a\u5ba2\u7a81\u7136\u65e0\u6cd5\u8bbf\u95ee\u4e86\u3002<\/p>\n<p><img alt=\"MySQL\u7684\u9519\u8bef\u65e5\u5fd7\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/mysql_space_error.png\" title=\"MySQL\u7684\u9519\u8bef\u65e5\u5fd7\"><\/p>\n\n\n<h4>1 \u67e5\u770bNginx\u7684\u9519\u8bef\u65e5\u5fd7error.log<\/h4>\n<p>\u60ca\u6115\u4e4b\u4f59\uff0c\u6362\u4e86\u591a\u4e2a\u6d4f\u89c8\u5668\u6253\u5f00\u535a\u5ba2\u9996\u9875\u65e0\u679c(\u4e00\u76f4\u663e\u793a\u52a0\u8f7d\u72b6\u6001)\uff0c\u6700\u7ec8\u62a5\u5185\u90e8\u670d\u52a1\u5668500\u7684\u9519\u8bef\u3002\u7acb\u5373\u67e5\u770bNginx\u670d\u52a1\u7684\u9519\u8bef\u65e5\u5fd7\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes nginx<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">vim<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">........<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">error<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">19620<\/span><span class=\"n\">#0<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"n\">FastCGI<\/span><span class=\"w\"> <\/span><span class=\"n\">sent<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"nl\">stderr<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;PHP message: SQLSTATE[HY000] [2002] No such file or directory&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"n\">reading<\/span><span class=\"w\"> <\/span><span class=\"n\">response<\/span><span class=\"w\"> <\/span><span class=\"n\">header<\/span><span class=\"w\"> <\/span><span class=\"k\">from<\/span><span class=\"w\"> <\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nl\">sock<\/span><span class=\"p\">:<\/span><span class=\"ss\">&quot;, host: &quot;<\/span><span class=\"n\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"err\">&quot;<\/span>\n<span class=\"p\">........<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"Nginx\u7684\u9519\u8bef\u65e5\u5fd7\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/php_cannot_mysql.png\" title=\"Nginx\u7684\u9519\u8bef\u65e5\u5fd7\"><\/p>\n<h4>2 \u67e5\u770bMySQL\u7684\u9519\u8bef\u65e5\u5fd7error.log<\/h4>\n<p>\u4ece\u4e0a\u9762\u7684Nginx\u9519\u8bef\u65e5\u5fd7\u4e2d\u53ef\u4ee5\u770b\u51fa\uff0c\u53ef\u80fd\u662fMySQL\u7684\u9519\u8bef\u3002\u4e8e\u662f\u67e5\u770bMySQL\u7684\u9519\u8bef\u65e5\u5fd7error.log\uff0c\u4f46\u662f\u5f53\u65f6\u6ca1\u6ce8\u610f\u5230\u4e0b\u9762\u8fd9\u6761\u91cd\u8981\u9519\u8bef\u4fe1\u606f\u63d0\u793a\uff1a<code>No space left on device<\/code>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">####<\/span><span class=\"w\"> <\/span><span class=\"n\">\u67e5\u770bMySQL\u7684\u9519\u8bef\u65e5\u5fd7error<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">ls<\/span>\n<span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"w\">  <\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">pid<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">vim<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">103<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.843790<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Error<\/span><span class=\"w\"> <\/span><span class=\"n\">number<\/span><span class=\"w\"> <\/span><span class=\"mi\">28<\/span><span class=\"w\"> <\/span><span class=\"n\">means<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;No space left on device&#39;<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\">     <\/span><span class=\"n\">es<\/span><span class=\"p\">.<\/span><span class=\"n\">html<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">105<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.843805<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Warning<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Retry<\/span><span class=\"w\"> <\/span><span class=\"n\">attempts<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">writing<\/span><span class=\"w\"> <\/span><span class=\"k\">partial<\/span><span class=\"w\"> <\/span><span class=\"k\">data<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">106<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.843812<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">Write<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">file<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"n\">ibtmp1<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">offset<\/span><span class=\"w\"> <\/span><span class=\"mf\">11534336.<\/span><span class=\"w\"> <\/span><span class=\"mi\">1048576<\/span><span class=\"w\"> <\/span><span class=\"n\">bytes<\/span><span class=\"w\"> <\/span><span class=\"n\">should<\/span><span class=\"w\"> <\/span><span class=\"n\">have<\/span><span class=\"w\"> <\/span><span class=\"n\">been<\/span><span class=\"w\"> <\/span><span class=\"n\">written<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">only<\/span><span class=\"w\"> <\/span><span class=\"mi\">1044480<\/span><span class=\"w\"> <\/span><span class=\"n\">were<\/span><span class=\"w\"> <\/span><span class=\"n\">written<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\">     <\/span><span class=\"k\">Check<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">your<\/span><span class=\"w\"> <\/span><span class=\"n\">OS<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"k\">file<\/span><span class=\"w\"> <\/span><span class=\"k\">system<\/span><span class=\"w\"> <\/span><span class=\"n\">support<\/span><span class=\"w\"> <\/span><span class=\"n\">files<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\">  <\/span><span class=\"n\">this<\/span><span class=\"w\"> <\/span><span class=\"k\">size<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"k\">Check<\/span><span class=\"w\"> <\/span><span class=\"n\">also<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"k\">disk<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"k\">full<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"k\">disk<\/span><span class=\"w\"> <\/span><span class=\"n\">quota<\/span><span class=\"w\">  <\/span><span class=\"n\">exceeded<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">107<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.843821<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Could<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"k\">file<\/span><span class=\"w\"> <\/span><span class=\"k\">size<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;.\/ibtmp1&#39;<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">Probably<\/span><span class=\"w\"> <\/span><span class=\"k\">out<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"k\">disk<\/span><span class=\"w\"> <\/span><span class=\"nf\">space<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">108<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.843828<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Unable<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">create<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">shared<\/span><span class=\"w\"> <\/span><span class=\"n\">innodb_temporary<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">109<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.947045<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Removed<\/span><span class=\"w\"> <\/span><span class=\"k\">temporary<\/span><span class=\"w\"> <\/span><span class=\"n\">tablespace<\/span><span class=\"w\"> <\/span><span class=\"k\">data<\/span><span class=\"w\"> <\/span><span class=\"k\">file<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;ibtmp1&quot;<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">110<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.947081<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Plugin<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;InnoDB&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">init<\/span><span class=\"w\"> <\/span><span class=\"k\">function<\/span><span class=\"w\"> <\/span><span class=\"n\">returned<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">111<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.947089<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Plugin<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;InnoDB&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">registration<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">STORAGE<\/span><span class=\"w\"> <\/span><span class=\"n\">ENGINE<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">112<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.947098<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Failed<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">initialize<\/span><span class=\"w\"> <\/span><span class=\"n\">plugins<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">113<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.947143<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Aborting<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">114<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">115<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.947154<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Binlog<\/span><span class=\"w\"> <\/span><span class=\"k\">end<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">20150816_02:47:34<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">116<\/span><span class=\"w\"> <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">47<\/span><span class=\"err\">:<\/span><span class=\"mf\">11.947598<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"k\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nl\">mysqld<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">Shutdown<\/span><span class=\"w\"> <\/span><span class=\"n\">complete<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7531\u4e8e\u672c\u80fd\u53cd\u5e94\uff08BZ\u7684CentOS7.1\u670d\u52a1\u566820G\u7cfb\u7edf\u76d8+20G\u6570\u636e\u76d8\uff09\uff0c\u670d\u52a1\u5668\u4e0d\u53ef\u80fd\u4f1a\u51fa\u73b0\u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3\u7684\u95ee\u9898\u3002\u7ed3\u679c\u518d\u4e00\u6b21\u5ffd\u7565\u4e86<code>No space left on device<\/code>\u63d0\u793a\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">vim<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">........<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"k\">data<\/span>\n<span class=\"n\">etting<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">valid<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">non<\/span><span class=\"o\">-<\/span><span class=\"n\">empty<\/span><span class=\"w\"> <\/span><span class=\"k\">path<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">rc<\/span><span class=\"o\">-<\/span><span class=\"nf\">log<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">starting<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"mi\">22504<\/span><span class=\"w\"> <\/span><span class=\"p\">...<\/span>\n<span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"n\">builtins<\/span>\n<span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">49<\/span><span class=\"err\">:<\/span><span class=\"mf\">59.921545<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Uses<\/span><span class=\"w\"> <\/span><span class=\"n\">event<\/span><span class=\"w\"> <\/span><span class=\"n\">mutexes<\/span>\n<span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">used<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">memory<\/span><span class=\"w\"> <\/span><span class=\"n\">barrier<\/span>\n<span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">49<\/span><span class=\"err\">:<\/span><span class=\"mf\">59.921559<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Compressed<\/span><span class=\"w\"> <\/span><span class=\"n\">tables<\/span><span class=\"w\"> <\/span><span class=\"k\">use<\/span><span class=\"w\"> <\/span><span class=\"n\">zlib<\/span><span class=\"w\"> <\/span><span class=\"mf\">1.2.3<\/span>\n<span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">49<\/span><span class=\"err\">:<\/span><span class=\"mf\">59.922232<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Number<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"nl\">pools<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">15<\/span><span class=\"nl\">T18<\/span><span class=\"p\">:<\/span><span class=\"mi\">49<\/span><span class=\"err\">:<\/span><span class=\"mf\">59.922362<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">Note<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"nl\">InnoDB<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">Using<\/span><span class=\"w\"> <\/span><span class=\"n\">CPU<\/span><span class=\"w\"> <\/span><span class=\"n\">crc32<\/span><span class=\"w\"> <\/span><span class=\"n\">instructions<\/span>\n<span class=\"n\">ze<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">128<\/span><span class=\"n\">M<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">instances<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">chunk<\/span><span class=\"w\"> <\/span><span class=\"k\">size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">128<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">pool<\/span>\n<span class=\"n\">e<\/span><span class=\"w\"> <\/span><span class=\"n\">distribution<\/span>\n<span class=\"k\">user<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;TypeCodes_test&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">host<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">Got<\/span><span class=\"w\"> <\/span><span class=\"n\">an<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"w\"> <\/span><span class=\"n\">reading<\/span><span class=\"w\"> <\/span><span class=\"n\">communication<\/span><span class=\"w\"> <\/span><span class=\"n\">packets<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">user<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;TypeCodes_test&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">host<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">Got<\/span><span class=\"w\"> <\/span><span class=\"n\">an<\/span><span class=\"w\"> <\/span><span class=\"n\">error<\/span><span class=\"w\"> <\/span><span class=\"n\">reading<\/span><span class=\"w\"> <\/span><span class=\"n\">communication<\/span><span class=\"w\"> <\/span><span class=\"n\">packets<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">pecodes<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nl\">errno<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">28<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"k\">No<\/span><span class=\"w\"> <\/span><span class=\"nf\">space<\/span><span class=\"w\"> <\/span><span class=\"nf\">left<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">device<\/span><span class=\"p\">)<\/span>\n<span class=\"mi\">00<\/span><span class=\"w\"> <\/span><span class=\"n\">secs<\/span>\n<span class=\"n\">s<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">s<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">.......<\/span>\n<span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">08<\/span><span class=\"o\">-<\/span><span class=\"mi\">16<\/span><span class=\"nl\">T14<\/span><span class=\"p\">:<\/span><span class=\"mi\">36<\/span><span class=\"err\">:<\/span><span class=\"mf\">25.977210<\/span><span class=\"n\">Z<\/span><span class=\"w\"> <\/span><span class=\"mi\">831<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">ERROR<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Retry<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"mi\">60<\/span><span class=\"w\"> <\/span><span class=\"n\">secs<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">Message<\/span><span class=\"w\"> <\/span><span class=\"n\">reprinted<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u540e\u9762\u5c1d\u8bd5\u4f7f\u7528\u4e00\u4e2aMySQL\u6d4b\u8bd5\u7528\u6237\u767b\u5f55\u6570\u636e\u5e93\uff0c\u8fd8\u662f\u62a5\u9519\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mysql -u TypeCodes_test -p<\/span>\n<span class=\"p\">[<\/span><span class=\"mi\">02<\/span><span class=\"p\">:<\/span><span class=\"mi\">43<\/span><span class=\"p\">:<\/span><span class=\"mi\">32<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"mi\">20150816<\/span><span class=\"n\">_02<\/span><span class=\"p\">:<\/span><span class=\"mi\">43<\/span><span class=\"p\">:<\/span><span class=\"mi\">32<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Enter<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">[<\/span><span class=\"mi\">02<\/span><span class=\"p\">:<\/span><span class=\"mi\">43<\/span><span class=\"p\">:<\/span><span class=\"mi\">32<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"mi\">20150816<\/span><span class=\"n\">_02<\/span><span class=\"p\">:<\/span><span class=\"mi\">43<\/span><span class=\"p\">:<\/span><span class=\"mi\">32<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">ERROR<\/span><span class=\"w\"> <\/span><span class=\"mi\">2002<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">HY000<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">Can<\/span><span class=\"s1\">&#39;t connect to local MySQL server through socket &#39;<\/span><span class=\"o\">\/<\/span><span class=\"k\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">run<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">.<\/span><span class=\"n\">sock<\/span><span class=\"s1\">&#39; (2)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u627e\u4e0d\u5230\u65b9\u6cd5\uff0c\u53ea\u80fd\u5148\u91cd\u542f\u4e00\u4e0bMySQL\u670d\u52a1\uff0c\u7ed3\u679c\u4e00\u76f4\u62a5<code>The server quit without updating PID file<\/code>\u7684\u9519\u8bef\u3002\u53c8\u4e00\u6b21\u67e5\u770b\u65e5\u5fd7\uff0c\u6700\u7ec8\u786e\u8ba4\u4ece\u95ee\u9898<code>No space left on device<\/code>\u5165\u624b\u3002<\/p>\n<h4>3 \u67e5\u770bLinux\u78c1\u76d8\u7a7a\u95f4\u4fe1\u606f<\/h4>\n<p>\u6839\u636e\u4e0a\u9762MySQL\u7684<code>No space left on device<\/code>\u63d0\u793a\uff0c\u7acb\u9a6c\u4f7f\u7528<code>df -hl<\/code>\u547d\u4ee4\u67e5\u770b\u5f53\u524dCentOS7.1\u670d\u52a1\u5668\u7684\u78c1\u76d8\u7a7a\u95f4\u4fe1\u606f\u3002\u7ed3\u679c\u5f88\u660e\u663e\uff0c\u6302\u8f7d\u5728<code>\/dev\/xvdb2<\/code>\u6570\u636e\u76d8\u4e0b\u9762\u7684\u5206\u533a<code>\/mydata<\/code>\u53ea\u5269\u7684<code>12M<\/code>\u7684\u7a7a\u95f4\u4e86\uff01\u800cmysql\u5f97\u6570\u636e\u6587\u4ef6\u6b63\u597d\u5b58\u653e\u5728mydata\u5206\u533a\u4e2d\uff0c\u60b2\u5267\uff01<\/p>\n<p><img alt=\"CentOS7.1\u670d\u52a1\u5668\u4e0a\u67e5\u770b\u78c1\u76d8\u7a7a\u95f4\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/centos_space.png\" title=\"CentOS7.1\u670d\u52a1\u5668\u4e0a\u67e5\u770b\u78c1\u76d8\u7a7a\u95f4]\"><\/p>\n<p>\u63a5\u7740\u8fdb\u5165\u5230<code>\/mydata<\/code>\u5206\u533a\uff0c\u4f7f\u7528\u547d\u4ee4<code>du -sh<\/code>\u67e5\u770b\u5f53\u524d\u76ee\u5f55\u4e0b\u5404\u4e2a\u5b50\u76ee\u5f55\u6240\u5360\u7528\u7684\u7a7a\u95f4\u5927\u5c0f\u3002\u7ed3\u679c\u592a\u51fa\u4e4e\u610f\u6599\u4e86\uff0c\u7adf\u7136\u662f\u5b58\u653eCore Dump\u6587\u4ef6\u7684corefile\u76ee\u5f55\u5360\u7528\u4e8616G\u7684\u7a7a\u95f4\uff01<\/p>\n<p><img alt=\"Core Dump\u6587\u4ef6\u5360\u7528\u7a7a\u95f4\u8fc7\u5927\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/corefile_too_large.png\" title=\"Core Dump\u6587\u4ef6\u5360\u7528\u7a7a\u95f4\u8fc7\u5927\"><\/p>\n<p>\u8fd9\u624d\u60f3\u8d77\u5728<a href=\"https:\/\/typecodes.com\/linux\/centoscoredumpcfgshell.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aCentOS\u5f00\u542fcoredump\u8f6c\u50a8\u5e76\u751f\u6210core\u6587\u4ef6\u7684\u914d\u7f6e\u300b<\/a>\u6587\u4e2d\uff0c\u8bbe\u7f6e\u4e86Core Dump\u6587\u4ef6\u5927\u5c0f\u4e3a<code>unlimited<\/code>\u3002\u65e5\u79ef\u6708\u7d2f\uff0c\u7ec8\u4e8e\u628aMySQL\u641e\u6302\u6389\u4e86\uff01<\/p>\n<h4>4 \u89e3\u51b3<\/h4>\n<p>\u5148\u5220\u6389corefile\u76ee\u5f55\u4e0b\u9762\u7684\u5927\u90e8\u5206Core Dump\u6587\u4ef6\uff0c\u7136\u540e\u4f7f\u7528\u547d\u4ee4<code>ulimit -c 10240<\/code>\u8bbe\u7f6ecoredump file-size\u4e3a10M\u3002\u6700\u540e\uff0c\u4f7f\u7528\u547d\u4ee4<code>service mysqld start<\/code>\u6210\u529f\u542f\u52a8MySQL\u670d\u52a1\uff01\u770b\u4e86\u4e0b\u65f6\u95f4\uff0c\u4ece\u53d1\u73b0\u95ee\u9898\u5230\u89e3\u51b3\u7528\u4e8640\u591a\u5206\u949f\uff0c\u8fd8\u597d\u53ea\u662f\u4e2a\u4e2a\u4eba\u535a\u5ba2~<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"coredump"}},{"@attributes":{"term":"mysql"}}]},{"title":"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html","rel":"alternate"}},"published":"2015-08-14T20:27:00+08:00","updated":"2015-08-14T20:27:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-08-14:\/cseries\/cppgeneralmakefile.html","summary":"<p>\u6700\u8fd1\u5199\u4e86\u4e00\u4e2a*nix\u73af\u5883\u4e0b\u7684Makefile\u6587\u4ef6\uff0c\u652f\u6301\u7f16\u8bd1C\/C++\uff0c\u540c\u65f6\u80fd\u591f\u901a\u8fc7\u53c2\u6570\u914d\u7f6e\u751f\u6210ELF\u76ee\u6807\u6587\u4ef6\u3001\u52a8\u6001\u94fe\u63a5\u5e93(.so)\u548c\u9759\u6001\u94fe\u63a5\u5e93(.a)\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/linux_general_makefile.png\" title=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\"><\/p>\n","content":"<p>\u6700\u8fd1\u5199\u4e86\u4e00\u4e2a*nix\u73af\u5883\u4e0b\u7684Makefile\u6587\u4ef6\uff0c\u652f\u6301\u7f16\u8bd1C\/C++\uff0c\u540c\u65f6\u80fd\u591f\u901a\u8fc7\u53c2\u6570\u914d\u7f6e\u751f\u6210ELF\u76ee\u6807\u6587\u4ef6\u3001\u52a8\u6001\u94fe\u63a5\u5e93(.so)\u548c\u9759\u6001\u94fe\u63a5\u5e93(.a)\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/linux_general_makefile.png\" title=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\"><\/p>\n\n\n<h4>1 Makefile\u6587\u4ef6\u914d\u7f6e\u8bf4\u660e<\/h4>\n<p>\u9996\u5148\uff0c\u6839\u636e\u751f\u6210\u7684\u76ee\u6807\u6587\u4ef6\u7c7b\u578b\uff08ELF\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u52a8\u6001\u94fe\u63a5\u5e93\u6587\u4ef6\u6216\u9759\u6001\u94fe\u63a5\u5e93\u6587\u4ef6\uff09\uff0c\u914d\u7f6e<code>GEN_LIBS<\/code>\u3001<code>GEN_DYN_LIB<\/code>\u3001<code>EXCUTE_BIN<\/code>\u3001<code>STATIC_LIBS<\/code>\u548c<code>DYNAMIC_LIBS<\/code>\u7b49\u53d8\u91cf\u3002<\/p>\n<p>\u5176\u6b21\uff0c\u5982\u679c\u751f\u6210\u7684\u76ee\u6807\u6587\u4ef6\u4f9d\u8d56\u5176\u5b83\u5e93\u6587\u4ef6\uff0c\u90a3\u4e48\u53ea\u8981\u5c06<code>LD_LIB_DIR<\/code>\u8bbe\u7f6e\u6210\u8be5\u52a8\u6001\u5e93\u6240\u5728\u7684\u76ee\u5f55\uff0c<code>LD_LIBS<\/code>\u8bbe\u7f6e\u6210\u8981\u94fe\u63a5\u7684\u52a8\u6001\u5e93\u6587\u4ef6\u540d\u5373\u53ef\u3002\u66f4\u5efa\u8bae\u7684\u505a\u6cd5\u662f\u5728\u5f53\u524dC\/C++\u5de5\u7a0b\u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u8bbe\u7f6e<code>LIBPATH<\/code>\u53c2\u6570\u4e3a\u52a8\u6001\u5e93\u6240\u5728\u7684\u76ee\u5f55\uff0c\u8fd9\u6837\u5c31\u4e0d\u7528\u5728\u8bbe\u7f6e\u53d8\u91cf<code>LD_LIB_DIR<\/code>\u7684\u503c\u4e86\uff0c\u4f8b\u5982\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"k\">export<\/span><span class=\"w\"> <\/span><span class=\"n\">LIBPATH<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib64<\/span><span class=\"o\">\/<\/span><span class=\"p\">:<\/span><span class=\"o\">$<\/span><span class=\"p\">{<\/span><span class=\"n\">LIBPATH<\/span><span class=\"p\">}:<\/span><span class=\"o\">\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">typecodes<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6700\u540e\u9700\u8981\u8bf4\u660e\u7684\u662f\uff0c\u53d8\u91cf<code>$(PROJECT_DIR)<\/code>\u8868\u793a\u5f53\u524dC\/C++\u5de5\u7a0b\u7684\u6839\u8def\u5f84\uff0c\u53ef\u4ee5\u76f4\u63a5\u5c06\u672cMakefile\u6587\u4ef6\u4e2d\u7684\u547d\u4ee4<code># PROJECT_DIR   := \/home\/typecodes<\/code>\u524d\u9762\u7684<code>#<\/code>\u53f7\u53bb\u6389\uff0c\u7136\u540e\u8bbe\u7f6e\u6210\u81ea\u5df1\u7684\u5de5\u7a0b\u6839\u76ee\u5f55\u5373\u53ef\u3002\u540c\u6837\uff0c\u66f4\u5efa\u8bae\u5728\u5de5\u7a0b\u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\uff0c\u4f8b\u5982\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"k\">export<\/span><span class=\"w\"> <\/span><span class=\"n\">PROJECT_DIR<\/span><span class=\"o\">=\/<\/span><span class=\"n\">home<\/span><span class=\"o\">\/<\/span><span class=\"n\">typecodes<\/span>\n<\/code><\/pre><\/div>\n\n<h4>2 \u4f7f\u7528\u65b9\u6cd5<\/h4>\n<p>\u5728\u914d\u7f6e\u597dMakefile\u6587\u4ef6\u4e2d\u7684\u53d8\u91cf\u5bf9\u5e94\u7684\u503c\u540e\uff0c\u76f4\u63a5\u5c06\u8be5\u6587\u4ef6\u653e\u7f6e\u5728\u9700\u8981\u7f16\u8bd1\u7684C\/C++\u5de5\u7a0b\u76ee\u5f55\u4e0b\u9762\uff0c\u7136\u540e\u6267\u884c<code>make<\/code>\u6216\u8005<code>make all<\/code>\u5c31\u53ef\u4ee5\u4e86\u3002\u4f2a\u76ee\u6807<code>clean<\/code>\u5bf9\u5e94\u7684\u547d\u4ee4<code>make clean<\/code>\u80fd\u591f\u6e05\u9664\u4e0a\u6b21\u6267\u884cmake\u547d\u4ee4\u4ea7\u751f\u7684\u5f71\u54cd\uff1b\u4f2a\u76ee\u6807<code>help<\/code>\u5bf9\u5e94\u7684\u547d\u4ee4<code>make help<\/code>\u80fd\u591f\u5728\u754c\u9762\u4e0a\u8f93\u51faMakefile\u6587\u4ef6\u4e2d\u7684\u91cd\u8981\u53d8\u91cf\u7684\u503c\uff0c\u65b9\u4fbf\u8c03\u8bd5\u3002<\/p>\n<p>\u6267\u884c\u5b8cmake\u547d\u4ee4\u540e\uff0c\u5728\u5f53\u524d\u76ee\u5f55\u4e0b\u4f1a\u751f\u6210.o\u76ee\u6807\u6587\u4ef6\u4ee5\u53ca.d\u4f9d\u8d56\u6587\u4ef6\uff0cELF\u53ef\u6267\u884c\u6587\u4ef6\u653e\u5728\u5de5\u7a0b\u7684bin\u76ee\u5f55\u4e0b\uff0c\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u653e\u5728\u5de5\u7a0b\u7684lib\u76ee\u5f55\u4e0b\u3002<\/p>\n<p><img alt=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/linux_general_makefile_1.png\" title=\"Linux C\/C++\u5de5\u7a0b\u4e2d\u53ef\u751f\u6210ELF\u3001\u52a8\/\u9759\u6001\u5e93\u6587\u4ef6\u7684\u901a\u7528Makefile\"><\/p>\n<h4>3 \u9644\u5f55\uff1aMakefile\u6587\u4ef6\u6e90\u7801<\/h4>\n<p>\u5df2\u5c06\u4e0b\u9762\u7684Makefile\u6e90\u6587\u4ef6\u6258\u7ba1\u5230\u4e24\u4e2a\u4ed3\u5e93\u4e2d\uff1a<\/p>\n<p>1\u3001GitHub\uff1a <a href=\"https:\/\/github.com\/vfhky\/General_Makefile\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/General_Makefile<\/a>\uff1b<\/p>\n<p>2\u3001Coding\uff1a <a href=\"https:\/\/coding.net\/u\/vfhky\/p\/General_Makefile\/git\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/coding.net\/u\/vfhky\/p\/General_Makefile\/git<\/a>\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span>\n<span class=\"normal\">138<\/span>\n<span class=\"normal\">139<\/span>\n<span class=\"normal\">140<\/span>\n<span class=\"normal\">141<\/span>\n<span class=\"normal\">142<\/span>\n<span class=\"normal\">143<\/span>\n<span class=\"normal\">144<\/span>\n<span class=\"normal\">145<\/span>\n<span class=\"normal\">146<\/span>\n<span class=\"normal\">147<\/span>\n<span class=\"normal\">148<\/span>\n<span class=\"normal\">149<\/span>\n<span class=\"normal\">150<\/span>\n<span class=\"normal\">151<\/span>\n<span class=\"normal\">152<\/span>\n<span class=\"normal\">153<\/span>\n<span class=\"normal\">154<\/span>\n<span class=\"normal\">155<\/span>\n<span class=\"normal\">156<\/span>\n<span class=\"normal\">157<\/span>\n<span class=\"normal\">158<\/span>\n<span class=\"normal\">159<\/span>\n<span class=\"normal\">160<\/span>\n<span class=\"normal\">161<\/span>\n<span class=\"normal\">162<\/span>\n<span class=\"normal\">163<\/span>\n<span class=\"normal\">164<\/span>\n<span class=\"normal\">165<\/span>\n<span class=\"normal\">166<\/span>\n<span class=\"normal\">167<\/span>\n<span class=\"normal\">168<\/span>\n<span class=\"normal\">169<\/span>\n<span class=\"normal\">170<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"c\">##################################################################<\/span>\n<span class=\"c\">#<\/span>\n<span class=\"c\"># FILENAME   :  Makefile<\/span>\n<span class=\"c\"># DESCRIPT   :  A general makefile to generate an ELF or a<\/span>\n<span class=\"c\">#                   dynamic or a static library for C\/C++ project.<\/span>\n<span class=\"c\"># AUTHOR     :  vfhky  2015.08.07<\/span>\n<span class=\"c\"># URI        :  https:\/\/typecodes.com\/cseries\/cppgeneralmakefile.html<\/span>\n<span class=\"c\">#<\/span>\n<span class=\"c\">##################################################################<\/span>\n\n<span class=\"nf\">.PHONY<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">all<\/span> <span class=\"n\">clean<\/span> <span class=\"n\">help<\/span>\n<span class=\"nf\">all<\/span><span class=\"o\">:<\/span>\n\n<span class=\"c\"># Some important on-off settings. You can not be too careful about them.<\/span>\n<span class=\"nv\">DEBUG<\/span><span class=\"w\">           <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>y\n<span class=\"c\"># Flag of generate a dynamic lib or a static lib: y means yes. If the target is a excutable file, it should be blank!<\/span>\n<span class=\"nv\">GEN_LIBS<\/span><span class=\"w\">        <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>y\n<span class=\"c\"># Flag of generate a dynamic lib: y means yes. It should be blank unless you want to generate a dynamic lib!<\/span>\n<span class=\"nv\">GEN_DYN_LIB<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>y\n<span class=\"c\"># The name of target bin file.Please let it be blank unless the target is a excutable file. <\/span>\n<span class=\"nv\">EXCUTE_BIN<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>\n<span class=\"c\"># Name of the static lib. It should be blank unless the target is a static lib, then the GEN_LIBS is y and GEN_DYN_LIB is blank.<\/span>\n<span class=\"c\"># STATIC_LIBS       := libsrcpbl.a<\/span>\n<span class=\"c\"># Name of the dynamic lib. It should be blank unless the target is a dynamic lib, then the GEN_LIBS is y and GEN_DYN_LIB is y.<\/span>\n<span class=\"nv\">DYNAMIC_LIBS<\/span><span class=\"w\">    <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>libsrcpbl.so\n\n<span class=\"c\"># Environment settings. The value of PROJECT_DIR shoule be set in the *nix system as the the absolute dir path of your project.<\/span>\n<span class=\"c\"># PROJECT_DIR   := \/home\/typecodes<\/span>\n<span class=\"c\">#CURDIR         := $(PROJECT_DIR)\/src\/pbl<\/span>\n<span class=\"nv\">CURDIR<\/span><span class=\"w\">          <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>shell<span class=\"w\"> <\/span><span class=\"nb\">pwd<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">PRG_BIN_DIR<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PROJECT_DIR<span class=\"k\">)<\/span>\/bin\n<span class=\"nv\">PRG_LIB_DIR<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PROJECT_DIR<span class=\"k\">)<\/span>\/lib\n<span class=\"nv\">PRG_INC_DIR<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PROJECT_DIR<span class=\"k\">)<\/span>\/include\n\n<span class=\"c\"># Cross compile tools defined. You needn&#39;t modify these vars below generally.<\/span>\n<span class=\"nv\">AS<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>as\n<span class=\"nv\">LD<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>ld\n<span class=\"nv\">CC<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>gcc\n<span class=\"nv\">CXX<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>g++\n<span class=\"nv\">CPP<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CC<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-E\n<span class=\"nv\">AR<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>ar<span class=\"w\"> <\/span>rcs\n<span class=\"nv\">NM<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>nm\n<span class=\"nv\">STRIP<\/span><span class=\"w\">   <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>strip\n<span class=\"nv\">RANLIB<\/span><span class=\"w\">  <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>ranlib\n<span class=\"nv\">STD_OPT<\/span><span class=\"w\"> <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>-std<span class=\"o\">=<\/span>c99<span class=\"w\"> <\/span>-D_GNU_SOURCE<span class=\"w\"> <\/span>\n<span class=\"nv\">CC<\/span><span class=\"w\">      <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>STD_OPT<span class=\"k\">)<\/span>\n<span class=\"nv\">CXX<\/span><span class=\"w\">     <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>STD_OPT<span class=\"k\">)<\/span>\n\n<span class=\"c\"># *nix system tools defined. You needn&#39;t modify these vars below generally.<\/span>\n<span class=\"nv\">CP<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>cp\n<span class=\"nv\">SED<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>sed\n<span class=\"nv\">FIND<\/span><span class=\"w\">    <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>find\n<span class=\"nv\">MKDIR<\/span><span class=\"w\">   <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>mkdir<span class=\"w\"> <\/span>-p\n<span class=\"nv\">XARGS<\/span><span class=\"w\">   <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>xargs\n<span class=\"nv\">MV<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>mv\n<span class=\"nv\">RM<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>rm<span class=\"w\"> <\/span>-rf\n\n\n<span class=\"c\"># Get .c, .cpp source files by searching from current directory.<\/span>\n<span class=\"nv\">CUR_SRC_DIR<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>shell<span class=\"w\"> <\/span>ls<span class=\"w\"> <\/span>-AxR<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CURDIR<span class=\"k\">)<\/span><span class=\"p\">|<\/span>grep<span class=\"w\"> <\/span><span class=\"s2\">&quot;:&quot;<\/span><span class=\"p\">|<\/span>tr<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"s1\">&#39;:&#39;<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">CUR_SRC<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>foreach<span class=\"w\"> <\/span>subdir,<span class=\"k\">$(<\/span>CUR_SRC_DIR<span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span>wildcard<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>subdir<span class=\"k\">)<\/span>\/*.c<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>subdir<span class=\"k\">)<\/span>\/*.cpp<span class=\"k\">))<\/span>\n<span class=\"c\">#CUR_SRC    := $(shell find . -name &quot;*.c&quot; -o -name &quot;*.cpp&quot;|sed -e &#39;s,.\/,,&#39;)<\/span>\n<span class=\"nv\">CUR_C<\/span><span class=\"w\">       <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>filter<span class=\"w\"> <\/span>%.c,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_SRC<span class=\"k\">))<\/span>\n<span class=\"nv\">CUR_CPP<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>filter<span class=\"w\"> <\/span>%.cpp,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_SRC<span class=\"k\">))<\/span>\n\n<span class=\"c\"># Get the include files, object files, dependent files by searching from PRG_INC_DIR.<\/span>\n<span class=\"nv\">CUR_INC_DIR<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>shell<span class=\"w\"> <\/span>ls<span class=\"w\"> <\/span>-AxR<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PRG_INC_DIR<span class=\"k\">)<\/span><span class=\"p\">|<\/span>grep<span class=\"w\"> <\/span><span class=\"s2\">&quot;:&quot;<\/span><span class=\"p\">|<\/span>tr<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"s1\">&#39;:&#39;<\/span><span class=\"k\">)<\/span>\n<span class=\"nv\">CUR_INC<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>foreach<span class=\"w\"> <\/span>subdir,<span class=\"k\">$(<\/span>CUR_INC_DIR<span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span>subdir<span class=\"k\">)<\/span>\/*.h<span class=\"k\">)<\/span>\n<span class=\"nv\">SRC_H<\/span><span class=\"w\">       <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>filter<span class=\"w\"> <\/span>%.h,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_INC<span class=\"k\">))<\/span>\n<span class=\"c\">#CUR_OBJ    := $(addprefix $(PRG_BIN_DIR)\/,$(strip $(CUR_CPP:.cpp=.o) $(CUR_C:.c=.o)))<\/span>\n<span class=\"c\">#CUR_OBJ    := $(addprefix $(PRG_BIN_DIR)\/,$(notdir $(CUR_CPP:.cpp=.o) $(CUR_C:.c=.o)))<\/span>\n<span class=\"nv\">CUR_OBJ<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>strip<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_CPP:.cpp<span class=\"o\">=<\/span>.o<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_C:.c<span class=\"o\">=<\/span>.o<span class=\"k\">))<\/span>\n<span class=\"c\">#CUR_DEP    := $(addprefix $(PRG_BIN_DIR)\/,$(notdir $(CUR_CPP:.cpp=.d) $(CUR_C:.c=.d)))<\/span>\n<span class=\"nv\">CUR_DEP<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>strip<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_CPP:.cpp<span class=\"o\">=<\/span>.d<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CUR_C:.c<span class=\"o\">=<\/span>.d<span class=\"k\">))<\/span>\n\n<span class=\"c\"># Create directory in the header files, bin and library directory.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">dirname<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">sort<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">PRG_INC_DIR<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">PRG_BIN_DIR<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">PRG_LIB_DIR<\/span><span class=\"k\">))<\/span>,\\\n  <span class=\"k\">$(<\/span><span class=\"nv\">shell<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">MKDIR<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">dirname<\/span><span class=\"k\">)))<\/span>\n\n<span class=\"c\"># Complie and link variables. LD_LIBS means the dynamic or static library needed for the object file.<\/span>\n<span class=\"nv\">CFLAGS<\/span><span class=\"w\">      <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(if<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>DEBUG<span class=\"k\">)<\/span>,-g<span class=\"w\"> <\/span>-Wall,<span class=\"w\"> <\/span>-O2<span class=\"w\"> <\/span>-Wall<span class=\"k\">)<\/span>\n<span class=\"nv\">CFLAGS<\/span><span class=\"w\">      <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(if<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>GEN_DYN_LIB<span class=\"k\">)<\/span>,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>addprefix<span class=\"w\"> <\/span>-fPIC<span class=\"w\"> <\/span>-I<span class=\"w\"> <\/span>,<span class=\"k\">$(<\/span>sort<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>dir<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>SRC_H<span class=\"k\">))))<\/span>,<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>addprefix<span class=\"w\"> <\/span>-I<span class=\"w\"> <\/span>,<span class=\"k\">$(<\/span>sort<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>dir<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>SRC_H<span class=\"k\">)))))<\/span>\n<span class=\"nv\">CXXFLAGS<\/span><span class=\"w\">    <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CFLAGS<span class=\"k\">)<\/span>\n<span class=\"nv\">LDFLAGS<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>\n<span class=\"nv\">LD_LIB_DIR<\/span><span class=\"w\">  <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"c1\">#-L $(PRG_LIB_DIR)<\/span>\n<span class=\"nv\">LD_LIBS<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span><span class=\"c1\">#-lsrcpbl -lmysqlclient<\/span>\n<span class=\"nv\">XLD_FLG<\/span><span class=\"w\">     <\/span><span class=\"o\">:=<\/span><span class=\"w\"> <\/span>-Xlinker<span class=\"w\"> <\/span><span class=\"s2\">&quot;-(&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LDFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-Xlinker<span class=\"w\"> <\/span><span class=\"s2\">&quot;-)&quot;<\/span>\n\n<span class=\"c\"># Add vpath.<\/span>\n<span class=\"cp\">vpath %.h $(sort $(dir $(SRC_H)))<\/span>\n<span class=\"cp\">vpath %.c $(sort $(dir $(CUR_C)))<\/span>\n<span class=\"cp\">vpath %.cpp $(sort $(dir $(CUR_CPP)))<\/span>\n\n<span class=\"c\"># Generate depend files.<\/span>\n<span class=\"cp\">ifneq &quot;$(MAKECMDGOALS)&quot; &quot;clean&quot;<\/span>\n<span class=\"err\">sinclude<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span><span class=\"nv\">CUR_DEP<\/span><span class=\"k\">)<\/span>\n<span class=\"cp\">endif<\/span>\n\n<span class=\"c\"># Gen_depend(depend-file,source-file,object-file,cc). This command-package is used to generate a depend file with a postfix of .d.<\/span>\n<span class=\"cp\">define gen_depend<\/span>\n<span class=\"w\">  <\/span><span class=\"err\">@set<\/span><span class=\"w\"> <\/span><span class=\"err\">-e;<\/span><span class=\"w\">                                      <\/span><span class=\"err\">\\<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span><span class=\"nv\">RM<\/span><span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"err\">$1;<\/span><span class=\"w\">                                     <\/span><span class=\"err\">\\<\/span>\n<span class=\"w\">  <\/span><span class=\"err\">$4<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span><span class=\"nv\">CFLAGS<\/span><span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"err\">-MM<\/span><span class=\"w\"> <\/span><span class=\"err\">$2<\/span><span class=\"w\"> <\/span><span class=\"err\">|<\/span><span class=\"w\">                         <\/span><span class=\"err\">\\<\/span>\n<span class=\"w\">  <\/span><span class=\"nf\">$(SED) &#39;s,\\($(notdir $3)\\)<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">,<\/span>$3: <span class=\"p\">,<\/span>&#39; &gt; $1.<span class=\"n\">tmp<\/span>; \\\n  <span class=\"k\">$(<\/span><span class=\"nv\">SED<\/span><span class=\"k\">)<\/span> -<span class=\"n\">e<\/span> &#39;<span class=\"n\">s<\/span>\/<span class=\"c\">#.*\/\/&#39;                           \\<\/span>\n<span class=\"w\">         <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/^[^:]*: *\/\/&#39;<\/span><span class=\"w\">                     <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">         <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/ *\\\\$$\/\/&#39;<\/span><span class=\"w\">                        <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">         <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;\/^$$\/ d&#39;<\/span><span class=\"w\">                           <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">         <\/span>-e<span class=\"w\"> <\/span><span class=\"s1\">&#39;s\/$$\/ :\/&#39;<\/span><span class=\"w\"> <\/span>&lt;<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span>.tmp<span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span>.tmp<span class=\"p\">;<\/span><span class=\"w\">      <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span>MV<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"nv\">$1<\/span>.tmp<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span><span class=\"p\">;<\/span>\n<span class=\"cp\">endef<\/span>\n\n<span class=\"c\"># Rules to generate objects file(.o) from .c or .cpp files.<\/span>\n<span class=\"nf\">$(CURDIR)\/%.o<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span>%.<span class=\"n\">c<\/span>\n<span class=\"w\">    <\/span>@<span class=\"k\">$(<\/span>call<span class=\"w\"> <\/span>gen_depend,<span class=\"k\">$(<\/span>patsubst<span class=\"w\"> <\/span>%.o,%.d,<span class=\"nv\">$@<\/span><span class=\"k\">)<\/span>,$&lt;,<span class=\"nv\">$@<\/span>,<span class=\"k\">$(<\/span>CC<span class=\"k\">))<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">$(<\/span>CC<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$@<\/span><span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span>$&lt;\n\n<span class=\"nf\">$(CURDIR)\/%.o<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span>%.<span class=\"n\">cpp<\/span>\n<span class=\"w\">    <\/span>@<span class=\"k\">$(<\/span>call<span class=\"w\"> <\/span>gen_depend,<span class=\"k\">$(<\/span>patsubst<span class=\"w\"> <\/span>%.o,%.d,<span class=\"nv\">$@<\/span><span class=\"k\">)<\/span>,$&lt;,<span class=\"nv\">$@<\/span>,<span class=\"k\">$(<\/span>CXX<span class=\"k\">))<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">$(<\/span>CXX<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CXXFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$@<\/span><span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span>$&lt;\n\n<span class=\"c\"># Gen_excbin(target,CUR_OBJ,cc). This command-package is used to generate a excutable file.<\/span>\n<span class=\"cp\">define gen_excbin<\/span>\n<span class=\"w\">  <\/span><span class=\"nv\">ULT_BIN<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PRG_BIN_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span>PRG_BIN_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>:<span class=\"w\"> <\/span><span class=\"nv\">$2<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">$3<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LDFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>^<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIB_DIR<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIBS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>XLD_FLG<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>@\n<span class=\"cp\">endef<\/span>\n\n<span class=\"c\"># Gen_libs(libs,CUR_OBJ,cc). This command-package is used to generate a dynamic lib or a static lib.<\/span>\n<span class=\"cp\">define gen_libs<\/span>\n<span class=\"w\">  <\/span><span class=\"nv\">ULT_LIBS<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>PRG_LIB_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">$(<\/span>PRG_LIB_DIR<span class=\"k\">)<\/span>\/<span class=\"nv\">$1<\/span>:<span class=\"w\"> <\/span><span class=\"nv\">$2<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">$3<\/span><span class=\"w\"> <\/span><span class=\"k\">$(if<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>GEN_DYN_LIB<span class=\"k\">)<\/span>,-shared<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>^<span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CXXFLAGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIB_DIR<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>LD_LIBS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>XLD_FLG<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>@,<span class=\"nv\">$$<\/span>@<span class=\"w\"> <\/span><span class=\"nv\">$$<\/span>^<span class=\"k\">)<\/span>\n<span class=\"cp\">endef<\/span>\n\n<span class=\"c\"># Call gen_excbin to generate a excutale file.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">bin<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">EXCUTE_BIN<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">eval<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">call<\/span> <span class=\"nv\">gen_excbin<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">bin<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CUR_OBJ<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CXX<\/span><span class=\"k\">))))<\/span>\n\n<span class=\"c\"># Call gen_libs to generate a dynamic lib.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">lib<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">DYNAMIC_LIBS<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">eval<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">call<\/span> <span class=\"nv\">gen_libs<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">lib<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CUR_OBJ<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CXX<\/span><span class=\"k\">))))<\/span>\n\n<span class=\"c\"># Call gen_libs to generate a static lib.<\/span>\n<span class=\"k\">$(<\/span><span class=\"nv\">foreach<\/span> <span class=\"nv\">lib<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">STATIC_LIBS<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">eval<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">call<\/span> <span class=\"nv\">gen_libs<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">lib<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">CUR_OBJ<\/span><span class=\"k\">)<\/span>,<span class=\"k\">$(<\/span><span class=\"nv\">AR<\/span><span class=\"k\">))))<\/span>\n\n\n<span class=\"nf\">all<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span><span class=\"nv\">ULT_BIN<\/span><span class=\"k\">)<\/span> <span class=\"k\">$(<\/span><span class=\"nv\">ULT_LIBS<\/span><span class=\"k\">)<\/span>\n\n\n<span class=\"nf\">clean<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">    <\/span>-<span class=\"k\">$(<\/span>FIND<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>CURDIR<span class=\"k\">)<\/span><span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;*.o&quot;<\/span><span class=\"w\"> <\/span>-o<span class=\"w\"> <\/span>-name<span class=\"w\"> <\/span><span class=\"s2\">&quot;*.d&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>XARGS<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>RM<span class=\"k\">)<\/span>\n<span class=\"w\">    <\/span>-<span class=\"k\">$(<\/span>RM<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>ULT_BIN<span class=\"k\">)<\/span>\n<span class=\"w\">    <\/span>-<span class=\"k\">$(<\/span>RM<span class=\"k\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">$(<\/span>ULT_LIBS<span class=\"k\">)<\/span>\n\n\n<span class=\"nf\">help<\/span><span class=\"o\">:<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">PROJECT_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>PROJECT_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CURDIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CURDIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">PRG_BIN_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>PRG_BIN_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">PRG_LIB_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>PRG_LIB_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">PRG_INC_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>PRG_INC_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_SRC_DIR<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_SRC_DIR<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_SRC<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_SRC<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_C<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_C<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_CPP<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_CPP<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_OBJ<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_OBJ<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CUR_DEP<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CUR_DEP<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">STD_OPT<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>STD_OPT<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">CFLAGS<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>CFLAGS<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">STATIC_LIBS<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>STATIC_LIBS<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<span class=\"w\">    <\/span>@echo<span class=\"w\"> <\/span><span class=\"nv\">DYNAMIC_LIBS<\/span><span class=\"o\">=[<\/span><span class=\"k\">$(<\/span>DYNAMIC_LIBS<span class=\"k\">)<\/span><span class=\"o\">]<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"makefile"}}]},{"title":"\u89e3\u51b3make\u7f16\u8bd1\u94fe\u63a5\u52a8\u6001\u5e93\u9519\u8bef\uff1alibxx.so: undefined reference to xx","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/libraryundefinedref.html","rel":"alternate"}},"published":"2015-08-13T21:05:00+08:00","updated":"2015-08-13T21:05:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-08-13:\/cseries\/libraryundefinedref.html","summary":"<p>\u6700\u8fd1\u5728\u5199\u4e00\u4e2aMakefile\uff0c\u8c03\u8bd5\u65f6\u9047\u5230\u4e86<code>libsrcpbl.so: undefined reference to gcProgramName<\/code>\u7684\u95ee\u9898\u3002\u5728\u8fd9\u4e2aMakefile\u811a\u672c\u91cc\u9762\uff0c\u7ec8\u6781\u76ee\u6807\u662f\u901a\u8fc7\u94fe\u63a5\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684\u52a8\u6001\u5e93<code>libsrcpbl.so<\/code>\u751f\u6210\u4e00\u4e2aELF\u76ee\u6807\u6587\u4ef6\u3002<\/p>\n<p>\u7531\u4e8e\u94fe\u63a5\u751f\u6210libsrcpbl.so\u52a8\u6001\u5e93\u7684.o\u6587\u4ef6\u6bd4\u8f83\u591a\uff0c\u65e0\u6cd5\u5b9a\u4f4d\u5177\u4f53\u7684\u9519\u8bef\u7a0b\u5e8f\u6587\u4ef6\u548c\u4f4d\u7f6e\uff0c\u6240\u4ee5\u6298\u817e\u4e86\u8f83\u957f\u65f6\u95f4\u3002<\/p>\n","content":"<p>\u6700\u8fd1\u5728\u5199\u4e00\u4e2aMakefile\uff0c\u8c03\u8bd5\u65f6\u9047\u5230\u4e86<code>libsrcpbl.so: undefined reference to gcProgramName<\/code>\u7684\u95ee\u9898\u3002\u5728\u8fd9\u4e2aMakefile\u811a\u672c\u91cc\u9762\uff0c\u7ec8\u6781\u76ee\u6807\u662f\u901a\u8fc7\u94fe\u63a5\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684\u52a8\u6001\u5e93<code>libsrcpbl.so<\/code>\u751f\u6210\u4e00\u4e2aELF\u76ee\u6807\u6587\u4ef6\u3002<\/p>\n<p>\u7531\u4e8e\u94fe\u63a5\u751f\u6210libsrcpbl.so\u52a8\u6001\u5e93\u7684.o\u6587\u4ef6\u6bd4\u8f83\u591a\uff0c\u65e0\u6cd5\u5b9a\u4f4d\u5177\u4f53\u7684\u9519\u8bef\u7a0b\u5e8f\u6587\u4ef6\u548c\u4f4d\u7f6e\uff0c\u6240\u4ee5\u6298\u817e\u4e86\u8f83\u957f\u65f6\u95f4\u3002<\/p>\n\n\n<h4>1 \u573a\u666f\u518d\u73b0<\/h4>\n<p>\u4e3a\u4e86\u80fd\u5feb\u901f\u5b9a\u4f4d\u51fa\u9519\u7684\u4f4d\u7f6e\uff0c\u81ea\u5df1\u5199\u4e86\u4e00\u4e2a\u5f88\u7b80\u5355\u7684\u6d4b\u8bd5\u7a0b\u5e8ftest.c\uff0c\u8be5\u7a0b\u5e8f\u8c03\u7528\u4e86libsrcpbl.so\u52a8\u6001\u5e93\u4e2d\u7684\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684\u516c\u5171\u5934\u6587\u4ef6<code>pbl_global.h<\/code>\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    tst.c<\/span>\n<span class=\"cm\"> * @Describe    a simple test program to find out the reason of dynamic library undefined reference.<\/span>\n<span class=\"cm\"> * @Author      vfhky 2015.08.12 https:\/\/typecodes.com\/cseries\/libraryundefinedref.html<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&quot;pbl_global.h&quot;<\/span><span class=\"c1\">     \/\/\u4e3a\u51cf\u5c11\u201c\u5e72\u6270\u201d\uff0c\u8fd8\u53ef\u4ee5\u53bb\u6389\u8fd9\u4e2a\u5934\u6587\u4ef6\u5f15\u7528<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;exit<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u63a5\u7740\u4f7f\u7528<code>make<\/code>\u547d\u4ee4\u7f16\u8bd1\u94fe\u63a5\u751f\u6210\u76ee\u6807ELF\u6587\u4ef6test\uff0c\u4f46\u662f\u5728ld\u94fe\u63a5\u81ea\u5b9a\u4e49\u7684\u52a8\u6001\u5e93libsrcpbl.so\u7684\u65f6\u5019\u62a5\u9519\u3002\u4e3a\u4e86\u51cf\u5c11<code>\u5e72\u6270<\/code>\uff0c\u8fd8\u53ef\u4ee5\u628apbl_global.h\u5934\u6587\u4ef6\u5f15\u7528\u53bb\u6389\u3002\u4e5f\u5c31\u662ftst.c\u4e2d\u662f\u4e00\u4e2a\u53ca\u5176\u666e\u901a\u7684\u7a0b\u5e8f\uff0c\u4e0elibsrcpbl.so\u4e2d\u7684\u6570\u636e\u5b8c\u5168\u6ca1\u5173\u7cfb\uff0c\u4f46\u662f\u8fd8\u662f\u62a5\u51fa\u540c\u6837\u7684\u9519\u8bef\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">test<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span>\n<span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">std<\/span><span class=\"p\">=<\/span><span class=\"nx\">c99<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">D_GNU_SOURCE<\/span><span class=\"w\">  <\/span><span class=\"o\">-<\/span><span class=\"nx\">g<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">Wall<\/span><span class=\"w\">  <\/span><span class=\"o\">-<\/span><span class=\"nx\">I<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">include<\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">I<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">include<\/span><span class=\"o\">\/<\/span><span class=\"nx\">CommAPI<\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">I<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">include<\/span><span class=\"o\">\/<\/span><span class=\"nx\">pbl<\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">src<\/span><span class=\"o\">\/<\/span><span class=\"nx\">test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tst<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">tst<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span>\n<span class=\"nx\">g<\/span><span class=\"o\">++<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">std<\/span><span class=\"p\">=<\/span><span class=\"nx\">c99<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">D_GNU_SOURCE<\/span><span class=\"w\">   <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">src<\/span><span class=\"o\">\/<\/span><span class=\"nx\">test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tst<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">L<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"w\">  <\/span><span class=\"o\">-<\/span><span class=\"nx\">lsrcpbl<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">Xlinker<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;-(&quot;<\/span><span class=\"w\">  <\/span><span class=\"o\">-<\/span><span class=\"nx\">Xlinker<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;-)&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">test<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"o\">\/<\/span><span class=\"nx\">libsrcpbl<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">undefined<\/span><span class=\"w\"> <\/span><span class=\"nx\">reference<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"err\">`<\/span><span class=\"nx\">gcProgramName<\/span><span class=\"err\">&#39;<\/span>\n<span class=\"nx\">collect2<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">error<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">ld<\/span><span class=\"w\"> <\/span><span class=\"k\">returned<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">exit<\/span><span class=\"w\"> <\/span><span class=\"nx\">status<\/span>\n<span class=\"nx\">make<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">***<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">test<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"nx\">Error<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"ld\u94fe\u63a5\u65f6\u62a5\u9519\uff1aundefined reference\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/library_undefined_reference.png\" title=\"ld\u94fe\u63a5\u65f6\u62a5\u9519\uff1aundefined reference\"><\/p>\n<h4>2 \u67e5\u627e libsrcpbl.so: undefined reference to gcProgramName \u7684\u539f\u56e0<\/h4>\n<p>\u901a\u8fc7make\u663e\u793a\u7684\u5185\u5bb9\uff0c\u57fa\u672c\u5224\u65adMakefile\u6587\u4ef6\u662f\u6b63\u786e\u7684\u3002\u7528<code>nm libsrcpbl.so<\/code>\u547d\u4ee4\u67e5\u770b\u4e00\u4e0b\u94fe\u63a5\u7684\u52a8\u6001\u5e93\uff0c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#####<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u4f7f\u7528nm\u67e5\u770b\u52a8\u6001\u5e93<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">test<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">A<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"o\">\/<\/span><span class=\"nx\">libsrcpbl<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"o\">|<\/span><span class=\"nx\">grep<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcProgramName<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">gcc_test<\/span><span class=\"o\">\/<\/span><span class=\"nx\">tcp_msg<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"o\">\/<\/span><span class=\"nx\">libsrcpbl<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"p\">:<\/span><span class=\"w\">                 <\/span><span class=\"nx\">U<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcProgramName<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">test<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"\u4f7f\u7528nm\u67e5\u770b\u52a8\u6001\u5e93\u4e2d\u7684\u7b26\u53f7\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/nm_library_grep.png\" title=\"\u4f7f\u7528nm\u67e5\u770b\u52a8\u6001\u5e93\u4e2d\u7684\u7b26\u53f7\"><\/p>\n<p>\u6839\u636e\u4e0a\u56fe\u4e2d\u7684\u4fe1\u606f\uff0c\u7ed3\u5408\u524d\u6587<a href=\"https:\/\/typecodes.com\/cseries\/nmobjectfilesymbol.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aUnix\u7cfb\u7edf\u4e2dnm\u547d\u4ee4\u5c55\u793a\u76ee\u6807\u6587\u4ef6\u7b26\u53f7\u7684\u65b9\u6cd5\u300b<\/a>nm\u547d\u4ee4\u7684man\u624b\u518c\u5173\u4e8e\u7b26\u53f7<code>U<\/code>\u7684\u8bf4\u660e\uff0c\u63a8\u6d4b\u53ef\u80fd\u539f\u56e0\uff1alibsrcpbl.so\u52a8\u6001\u5e93\u6587\u4ef6\u4e2d\u5b58\u5728gcProgramName\u7b26\u53f7\uff08\u5373\u53d8\u91cf\uff09\uff0c\u9700\u8981\u4ecetest.o\u5bf9\u8c61\u6587\u4ef6\u4e2d\u94fe\u63a5\u8fdb\u6765\uff0c\u4f46\u662ftest.c\u7a0b\u5e8f\u4e2d\u6ca1\u6709\u5b9a\u4e49gcProgramName\u53d8\u91cf\uff0c\u6240\u4ee5\u62a5\u9519\u4e86\u3002<\/p>\n<p>\u4e8e\u662f\u67e5\u770b\u539f\u5de5\u7a0b\u4e2d\u7684\u5934\u6587\u4ef6pbl_global.h\uff0c\u679c\u7136\u53d1\u73b0\u4e86gcProgramName\u662f\u4e00\u4e2a\u5916\u90e8\u5168\u5c40\u53d8\u91cf\uff0c\u5176\u58f0\u660e\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>extern char gcProgramName[20 + 1];\n<\/code><\/pre><\/div>\n\n<p>\u63a5\u7740\u53d1\u73b0\u751f\u6210\u8fd9\u4e2alibsrcpbl.so\u52a8\u6001\u5e93\u7684\u4e00\u4e2a\u6e90\u7a0b\u5e8f\u4e2d\uff0c\u901a\u8fc7\u5f15\u7528\u5934\u6587\u4ef6pbl_global.h\uff0c\u7136\u540e\u76f4\u63a5\u4f7f\u7528\u4e86\u8fd9\u4e2a\u5916\u90e8\u5168\u5c40\u53d8\u91cfgcProgramName\uff0c\u56e0\u6b64\u9700\u8981\u5728tst.c\u5bf9\u8fd9\u4e2a\u53d8\u91cf\u8fdb\u884c\u5b9a\u4e49\u3002<\/p>\n<h5>2 \u89e3\u51b3\u65b9\u6cd5<\/h5>\n<p>\u627e\u5230\u539f\u56e0\u540e\uff0c\u89e3\u51b3\u5c31\u5f88\u7b80\u5355\u4e86\uff1a\u53ea\u8981\u5728test.c\u7a0b\u5e8f\u4e2d\u5b9a\u4e49\u8fd9\u4e2a\u5916\u90e8\u5168\u5c40\u53d8\u91cfgcProgramName\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n\n<span class=\"c1\">\/\/\u5b9a\u4e49\u5916\u90e8\u5168\u5c40\u53d8\u91cf\uff0c\u89e3\u51b3libsrcpbl.so: undefined reference to gcProgramName\u7684\u95ee\u9898<\/span>\n<span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">gcProgramName<\/span><span class=\"p\">[<\/span><span class=\"mi\">20<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"mh\">0x00<\/span><span class=\"p\">};<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5728\u8fd9\u91cc\u5c31\u53ef\u4ee5\u968f\u4fbf\u8d4b\u503c\u4f7f\u7528\u4e86<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memcpy<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">gcProgramName<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;TestPrg&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;TestPrg&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;exit<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u6700\u540e\u91cd\u65b0make\u4e00\u4e0b\uff0c\u94fe\u63a5\u751f\u6210ELF\u6587\u4ef6\u6210\u529f\uff01<\/p>\n<p><img alt=\"\u4f7f\u7528nm\u67e5\u770b\u52a8\u6001\u5e93\u4e2d\u7684\u7b26\u53f7\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/make_link_library_sucess.png\" title=\"\u4f7f\u7528nm\u67e5\u770b\u52a8\u6001\u5e93\u4e2d\u7684\u7b26\u53f7\"><\/p>\n<h5>4 \u603b\u7ed3<\/h5>\n<p>\u5728make\u7f16\u8bd1\u94fe\u63a5\u67d0\u4e2a\u52a8\u6001\u5e93lxx.so\u65f6\uff0c\u5982\u679c\u62a5<code>libxx.so: undefined reference to xx<\/code>\u7684\u8bdd\uff0c\u5f88\u53ef\u80fd\u662f\u7531\u4e0b\u9762\u4e24\u79cd\u539f\u56e0\u5f15\u8d77\u7684\u3002Unix\/Linux\u7cfb\u7edf\u4e2d\u4f7f\u7528<code>nm<\/code>\u3001<code>objdump<\/code>\u548c<code>readelf<\/code>\u547d\u4ee4\u53ef\u4ee5\u8f85\u52a9\u8c03\u8bd5\u76ee\u6807\u6587\u4ef6\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u94fe\u63a5\u7684\u52a8\u6001\u5e93\u4e2d\u5b58\u5728\u53ea\u505a\u4e86\u58f0\u660e\u7684\u81ea\u5b9a\u4e49\u7684\u51fd\u6570<\/span><span class=\"o\">\/<\/span><span class=\"n\">\u5168\u5c40\u53d8\u91cf<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f46\u662f\u5728\u5176\u5b83\u5bf9\u8c61\u6587\u4ef6\u4e2d\u6ca1\u6709\u5b9e\u73b0\u5b9a\u4e49<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u94fe\u63a5\u751f\u6210\u7684\u76ee\u6807\u6587\u4ef6\u4e2d\u5f15\u7528\u4e86\u67d0\u52a8\u6001\u5e93\u7684\u81ea\u5b9a\u4e49\u51fd\u6570<\/span><span class=\"o\">\/<\/span><span class=\"n\">\u5168\u5c40\u53d8\u91cf<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4f46\u662f\u6ca1\u6709\u901a\u8fc7<\/span><span class=\"err\">`<\/span><span class=\"o\">-<\/span><span class=\"n\">lXX<\/span><span class=\"err\">`<\/span><span class=\"n\">\u9009\u9879\u94fe\u63a5\u8fdb\u6765<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"nm"}},{"@attributes":{"term":"undefined reference"}}]},{"title":"Unix\u7cfb\u7edf\u4e2dnm\u547d\u4ee4\u5c55\u793a\u76ee\u6807\u6587\u4ef6\u7b26\u53f7\u7684\u65b9\u6cd5","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/nmobjectfilesymbol.html","rel":"alternate"}},"published":"2015-08-12T00:07:00+08:00","updated":"2015-08-12T00:07:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-08-12:\/cseries\/nmobjectfilesymbol.html","summary":"<p>\u5728unix\u7cfb\u7edf\u4e2d\uff0c\u901a\u8fc7gnu\u5f00\u6e90gcc\u6216\u8005g++\u5de5\u5177\u751f\u6210\u7684\u76ee\u6807\u6587\u4ef6\uff08object file\uff09\uff0c\u53ef\u4ee5\u7528<code>nm<\/code>\u3001<code>objdump<\/code>\u548c<code>readelf<\/code>\u8fd9\u4e09\u4e2a\u547d\u4ee4\u6765\u67e5\u770b\u3002<\/p>\nnm\uff1a\u663e\u793a\u76ee\u6807\u6587\u4ef6\u4e2d\u7684\u7b26\u53f7\uff1b\nobjdump\uff1a\u6253\u5370\u76ee\u6807\u6587\u4ef6\u4e2d\u7684\u8be6\u7ec6\u4fe1\u606f\uff1b\nreadelf\uff1a\u663e\u793a\u5173\u4e8e ELF \u76ee\u6807\u6587\u4ef6\u7684\u4fe1\u606f\u3002\n<\/code><\/pre>\n\n<p>\u4e4b\u524d\u5728<a href=\"https:\/\/typecodes.com\/cseries\/libraryundefinedref.html\" title=\"\u300a\u89e3\u51b3make\u7f16\u8bd1\u94fe\u63a5\u52a8\u6001\u5e93\u9519\u8bef\uff1alibxx.so: undefined reference to xx\u300b\">\u8c03\u8bd5makefile\u6587\u4ef6<\/a>\u7684\u65f6\u5019\uff0c\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\uff1a<code>libsrcpbl.so: undefined reference to 'gcProgramName'<\/code>\u3002\u4e5f\u5c31\u662f\u53d8\u91cfgcProgramName\u6ca1\u5b9a\u4e49\uff0c\u540e\u6765\u901a\u8fc7<code>nm -u libsrcpbl.so<\/code>\u547d\u4ee4\u8f85\u52a9\u6392\u67e5\u89e3\u51b3\u4e86\u3002<\/p>\n","content":"<p>\u5728unix\u7cfb\u7edf\u4e2d\uff0c\u901a\u8fc7gnu\u5f00\u6e90gcc\u6216\u8005g++\u5de5\u5177\u751f\u6210\u7684\u76ee\u6807\u6587\u4ef6\uff08object file\uff09\uff0c\u53ef\u4ee5\u7528<code>nm<\/code>\u3001<code>objdump<\/code>\u548c<code>readelf<\/code>\u8fd9\u4e09\u4e2a\u547d\u4ee4\u6765\u67e5\u770b\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>nm\uff1a\u663e\u793a\u76ee\u6807\u6587\u4ef6\u4e2d\u7684\u7b26\u53f7\uff1b\nobjdump\uff1a\u6253\u5370\u76ee\u6807\u6587\u4ef6\u4e2d\u7684\u8be6\u7ec6\u4fe1\u606f\uff1b\nreadelf\uff1a\u663e\u793a\u5173\u4e8e ELF \u76ee\u6807\u6587\u4ef6\u7684\u4fe1\u606f\u3002\n<\/code><\/pre><\/div>\n\n<p>\u4e4b\u524d\u5728<a href=\"https:\/\/typecodes.com\/cseries\/libraryundefinedref.html\" title=\"\u300a\u89e3\u51b3make\u7f16\u8bd1\u94fe\u63a5\u52a8\u6001\u5e93\u9519\u8bef\uff1alibxx.so: undefined reference to xx\u300b\">\u8c03\u8bd5makefile\u6587\u4ef6<\/a>\u7684\u65f6\u5019\uff0c\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\uff1a<code>libsrcpbl.so: undefined reference to 'gcProgramName'<\/code>\u3002\u4e5f\u5c31\u662f\u53d8\u91cfgcProgramName\u6ca1\u5b9a\u4e49\uff0c\u540e\u6765\u901a\u8fc7<code>nm -u libsrcpbl.so<\/code>\u547d\u4ee4\u8f85\u52a9\u6392\u67e5\u89e3\u51b3\u4e86\u3002<\/p>\n\n\n<p>\u4e3a\u4e86\u66f4\u5168\u9762\u7684\u4e86\u89e3\u4e00\u4e0b\u8fd9\u4e2a\u547d\u4ee4\uff0c\u5728\u81ea\u5df1\u7684CentOS7.1\u673a\u5668\u4e0a\u901a\u8fc7<code>man nm<\/code>\u64cd\u4f5c\u67e5\u770bgnu\u5b98\u65b9\u8bf4\u660e\u624b\u518c\u3002\u540c\u65f6\uff0c\u5bf9\u91cc\u9762\u6d89\u53ca\u7684\u4e00\u4e9bopinion\u9009\u9879\u548cnm\u547d\u4ee4\u663e\u793a\u7684\u7b26\u53f7\u505a\u4e86DESCRIPTION\u8bf4\u660e\uff0c\u4f9b\u4ee5\u540e\u53c2\u8003\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">######<\/span><span class=\"w\"> <\/span><span class=\"nx\">CentOS7<\/span><span class=\"m m-Double\">.1<\/span><span class=\"nx\">\u4e0a\u67e5\u770bnm\u547d\u4ee4\u7684man\u624b\u518c<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u90e8\u5206\u9009\u9879\u4ecd\u672a\u80fd\u7406\u89e3<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u5982\u6709\u719f\u6089\u8005\u8bf7\u6307\u6559<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u8c22\u8c22<\/span><span class=\"err\">\uff01<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">man<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span>\n<span class=\"nx\">NM<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\">                                                                  <\/span><span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">Development<\/span><span class=\"w\"> <\/span><span class=\"nx\">Tools<\/span><span class=\"w\">                                                                 <\/span><span class=\"nx\">NM<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n\n<span class=\"nx\">NAME<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"nx\">list<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">from<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">files<\/span>\n\n<span class=\"nx\">SYNOPSIS<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u7eb2\u8981<\/span><span class=\"err\">\u3011<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">A<\/span><span class=\"o\">|-<\/span><span class=\"nx\">o<\/span><span class=\"o\">|--<\/span><span class=\"nx\">print<\/span><span class=\"o\">-<\/span><span class=\"nx\">file<\/span><span class=\"o\">-<\/span><span class=\"nx\">name<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">a<\/span><span class=\"o\">|--<\/span><span class=\"nx\">debug<\/span><span class=\"o\">-<\/span><span class=\"nx\">syms<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">B<\/span><span class=\"o\">|--<\/span><span class=\"nx\">format<\/span><span class=\"p\">=<\/span><span class=\"nx\">bsd<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">C<\/span><span class=\"o\">|--<\/span><span class=\"nx\">demangle<\/span><span class=\"p\">[=<\/span><span class=\"nx\">style<\/span><span class=\"p\">]]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">D<\/span><span class=\"o\">|--<\/span><span class=\"nx\">dynamic<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">fformat<\/span><span class=\"o\">|--<\/span><span class=\"nx\">format<\/span><span class=\"p\">=<\/span><span class=\"nx\">format<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">g<\/span><span class=\"o\">|--<\/span><span class=\"nx\">extern<\/span><span class=\"o\">-<\/span><span class=\"nx\">only<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">h<\/span><span class=\"o\">|--<\/span><span class=\"nx\">help<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">l<\/span><span class=\"o\">|--<\/span><span class=\"nx\">line<\/span><span class=\"o\">-<\/span><span class=\"nx\">numbers<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">n<\/span><span class=\"o\">|-<\/span><span class=\"nx\">v<\/span><span class=\"o\">|--<\/span><span class=\"nx\">numeric<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">P<\/span><span class=\"o\">|--<\/span><span class=\"nx\">portability<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">p<\/span><span class=\"o\">|--<\/span><span class=\"nx\">no<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">r<\/span><span class=\"o\">|--<\/span><span class=\"nx\">reverse<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">S<\/span><span class=\"o\">|--<\/span><span class=\"nx\">print<\/span><span class=\"o\">-<\/span><span class=\"nx\">size<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">s<\/span><span class=\"o\">|--<\/span><span class=\"nx\">print<\/span><span class=\"o\">-<\/span><span class=\"nx\">armap<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">radix<\/span><span class=\"o\">|--<\/span><span class=\"nx\">radix<\/span><span class=\"p\">=<\/span><span class=\"nx\">radix<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">u<\/span><span class=\"o\">|--<\/span><span class=\"nx\">undefined<\/span><span class=\"o\">-<\/span><span class=\"nx\">only<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">V<\/span><span class=\"o\">|--<\/span><span class=\"nx\">version<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">-<\/span><span class=\"nx\">X<\/span><span class=\"w\"> <\/span><span class=\"mi\">32<\/span><span class=\"nx\">_64<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">--<\/span><span class=\"nx\">defined<\/span><span class=\"o\">-<\/span><span class=\"nx\">only<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">--<\/span><span class=\"nx\">no<\/span><span class=\"o\">-<\/span><span class=\"nx\">demangle<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">--<\/span><span class=\"nx\">plugin<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">--<\/span><span class=\"nx\">size<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">--<\/span><span class=\"nx\">special<\/span><span class=\"o\">-<\/span><span class=\"nx\">syms<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"o\">--<\/span><span class=\"nx\">synthetic<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"o\">--<\/span><span class=\"nx\">target<\/span><span class=\"p\">=<\/span><span class=\"nx\">bfdname<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"nx\">objfile<\/span><span class=\"o\">...<\/span><span class=\"p\">]<\/span>\n\n<span class=\"nx\">DESCRIPTION<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"nx\">lists<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">from<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">files<\/span><span class=\"w\"> <\/span><span class=\"nx\">objfile<\/span><span class=\"o\">...<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">If<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">files<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">listed<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">arguments<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"nx\">assumes<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"p\">.<\/span><span class=\"nx\">out<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm\u547d\u4ee4\u5c55\u793anm\u53c2\u6570\u4e2d\u7684\u6240\u6709\u76ee\u6807\u6587\u4ef6\u4e2d\u7684\u7b26\u53f7<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u9ed8\u8ba4\u76ee\u6807\u6587\u4ef6\u662fa<\/span><span class=\"p\">.<\/span><span class=\"nx\">out<\/span><span class=\"err\">\uff09\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">each<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"nx\">shows<\/span><span class=\"p\">:<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">o<\/span><span class=\"w\">   <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">radix<\/span><span class=\"w\"> <\/span><span class=\"nx\">selected<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">options<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">see<\/span><span class=\"w\"> <\/span><span class=\"nx\">below<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">hexadecimal<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u7b26\u53f7\u662f\u6309\u7167\u4e0b\u9762radix\u8fdb\u5236<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u9ed8\u8ba4\u5341\u516d\u8fdb\u5236<\/span><span class=\"err\">\uff09<\/span><span class=\"nx\">\u663e\u793a<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">o<\/span><span class=\"w\">   <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">type<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">At<\/span><span class=\"w\"> <\/span><span class=\"nx\">least<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">following<\/span><span class=\"w\"> <\/span><span class=\"nx\">types<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"nx\">others<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">well<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">depending<\/span><span class=\"w\"> <\/span><span class=\"nx\">on<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">If<\/span><span class=\"w\"> <\/span><span class=\"nx\">lowercase<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">usually<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">local<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"nx\">uppercase<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">global<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kd\">external<\/span><span class=\"p\">).<\/span><span class=\"w\">  <\/span><span class=\"nx\">There<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">however<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">few<\/span><span class=\"w\"> <\/span><span class=\"nx\">lowercase<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">shown<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">special<\/span><span class=\"w\"> <\/span><span class=\"nx\">global<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;u&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;v&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;w&quot;<\/span><span class=\"p\">).<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u5c0f\u5199\u7b26\u53f7\u901a\u5e38\u8868\u793a\u503c\u662f\u5c40\u90e8\u7684<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5927\u5199\u8868\u793a\u5168\u5c40\u6216\u5916\u90e8\u7684<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u5c0f\u5199u<\/span><span class=\"p\">,<\/span><span class=\"nx\">v<\/span><span class=\"p\">,<\/span><span class=\"nx\">w\u9664\u5916<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;A&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">absolute<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">will<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">changed<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">further<\/span><span class=\"w\"> <\/span><span class=\"nx\">linking<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u7b26\u53f7\u7684\u503c\u662f\u7edd\u5bf9\u56fa\u5b9a\u7684<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5728\u540e\u9762\u7684\u94fe\u63a5\u4e2d\u4e5f\u4e0d\u4f1a\u6539\u53d8<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;B&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"s\">&quot;b&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">uninitialized<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">known<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">BSS<\/span><span class=\"p\">).<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u7b26\u53f7\u4f4d\u4e8e\u5185\u5b58\u4e2d\u672a\u521d\u59cb\u5316\u7684\u533a\u57df<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5373BSS\u6bb5<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;C&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">common<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Common<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">uninitialized<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">When<\/span><span class=\"w\"> <\/span><span class=\"nx\">linking<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">multiple<\/span><span class=\"w\"> <\/span><span class=\"nx\">common<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">may<\/span><span class=\"w\"> <\/span><span class=\"nx\">appear<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">same<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">If<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span>\n<span class=\"w\">               <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">anywhere<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">common<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">treated<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">undefined<\/span><span class=\"w\"> <\/span><span class=\"nx\">references<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">C\u8868\u793a\u7b26\u53f7\u7c7b\u578b\u662f\u672a\u521d\u59cb\u5316\u7684<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u5f53\u94fe\u63a5\u65f6<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u53ef\u80fd\u51fa\u73b0\u591a\u4e2a\u5e38\u7528\u7b26\u53f7\u540c\u540d<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u8fd9\u65f6\u5982\u679c\u8be5\u7b26\u53f7\u503c\u90fd\u88ab\u5b9a\u4e49\u4e86<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u90a3\u4e48\u4f1a\u88ab\u5f53\u4f5c\u672a\u5b9a\u4e49\u7684\u5f15\u7528<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u91cd\u5b9a\u4e49\u9519\u8bef<\/span><span class=\"err\">\uff09\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;D&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"s\">&quot;d&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">initialized<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u5df2\u7ecf\u521d\u59cb\u5316\u7684\u6570\u636e\u6bb5<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u5168\u5c40\u53d8\u91cf<\/span><span class=\"err\">\uff09\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;G&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"s\">&quot;g&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">an<\/span><span class=\"w\"> <\/span><span class=\"nx\">initialized<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">small<\/span><span class=\"w\"> <\/span><span class=\"nx\">objects<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Some<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">formats<\/span><span class=\"w\"> <\/span><span class=\"nx\">permit<\/span><span class=\"w\"> <\/span><span class=\"nx\">more<\/span><span class=\"w\"> <\/span><span class=\"nx\">efficient<\/span><span class=\"w\"> <\/span><span class=\"nx\">access<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">small<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"w\"> <\/span><span class=\"nx\">objects<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">such<\/span>\n<span class=\"w\">               <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">global<\/span><span class=\"w\"> <\/span><span class=\"nx\">int<\/span><span class=\"w\"> <\/span><span class=\"nx\">variable<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">opposed<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">large<\/span><span class=\"w\"> <\/span><span class=\"nx\">global<\/span><span class=\"w\"> <\/span><span class=\"nx\">array<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u5c0f\u76ee\u6807\u6587\u4ef6\u4e2d\u7684\u672a\u521d\u59cb\u5316\u7684\u6570\u636e\u6bb5\u7684\u7b26\u53f7<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;i&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">PE<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"nx\">files<\/span><span class=\"w\"> <\/span><span class=\"nx\">this<\/span><span class=\"w\"> <\/span><span class=\"nx\">indicates<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"w\"> <\/span><span class=\"nx\">specific<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">implementation<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">DLLs<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">ELF<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"nx\">files<\/span><span class=\"w\"> <\/span><span class=\"nx\">this<\/span><span class=\"w\"> <\/span><span class=\"nx\">indicates<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">an<\/span><span class=\"w\"> <\/span><span class=\"nx\">indirect<\/span><span class=\"w\"> <\/span><span class=\"nx\">function<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">extension<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">standard<\/span><span class=\"w\"> <\/span><span class=\"nx\">set<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">ELF<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">types<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">It<\/span><span class=\"w\"> <\/span><span class=\"nx\">indicates<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">referenced<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">relocation<\/span><span class=\"w\"> <\/span><span class=\"nx\">does<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">evaluate<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">its<\/span><span class=\"w\"> <\/span><span class=\"nx\">address<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">but<\/span><span class=\"w\"> <\/span><span class=\"nx\">instead<\/span><span class=\"w\"> <\/span><span class=\"nx\">must<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">invoked<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"nx\">runtime<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">runtime<\/span><span class=\"w\"> <\/span><span class=\"nx\">execution<\/span><span class=\"w\"> <\/span><span class=\"nx\">will<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span><span class=\"w\"> <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">relocation<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;N&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">debugging<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">N\u4ee3\u8868\u8c03\u8bd5\u7b26\u53f7<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;p&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">stack<\/span><span class=\"w\"> <\/span><span class=\"nx\">unwind<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u975e\u91cd\u5b9a\u5411\u7684\u6808\u533a<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;R&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"s\">&quot;r&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">read<\/span><span class=\"w\"> <\/span><span class=\"nx\">only<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u53ea\u8bfb\u6570\u636e\u533a<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;S&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"s\">&quot;s&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">an<\/span><span class=\"w\"> <\/span><span class=\"nx\">uninitialized<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">small<\/span><span class=\"w\"> <\/span><span class=\"nx\">objects<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u672a\u521d\u59cb\u5316\u7684\u6570\u636e\u533a\u57df<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;T&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"s\">&quot;t&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">text<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">code<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u5185\u5b58\u4e2d\u4ee3\u7801\u6587\u672c\u6bb5<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u901a\u5e38\u662f\u5168\u5c40\u975e\u9759\u6001\u51fd\u6570\u7b49<\/span><span class=\"err\">\uff09\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;U&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">undefined<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u672a\u5b9a\u4e49\u7684\u7b26\u53f7<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u9700\u8981\u4ece\u5176\u5b83\u5bf9\u8c61\u6587\u4ef6\u4e2d\u94fe\u63a5\u8fdb\u6765<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;u&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">unique<\/span><span class=\"w\"> <\/span><span class=\"nx\">global<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">extension<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">standard<\/span><span class=\"w\"> <\/span><span class=\"nx\">set<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">ELF<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">bindings<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">such<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">dynamic<\/span><span class=\"w\"> <\/span><span class=\"nx\">linker<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">will<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">sure<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">entire<\/span><span class=\"w\"> <\/span><span class=\"nx\">process<\/span><span class=\"w\"> <\/span><span class=\"nx\">there<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">just<\/span><span class=\"w\"> <\/span><span class=\"nx\">one<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">this<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"k\">type<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">use<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u94fe\u63a5\u5668\u4fdd\u8bc1\u552f\u4e00\u6027\u7684\u7b26\u53f7<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;V&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"s\">&quot;v&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">weak<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">When<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">weak<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">linked<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">normal<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">normal<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">error<\/span><span class=\"p\">.<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">When<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">weak<\/span><span class=\"w\"> <\/span><span class=\"nx\">undefined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">linked<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">weak<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">becomes<\/span><span class=\"w\"> <\/span><span class=\"nx\">zero<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">error<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">On<\/span><span class=\"w\"> <\/span><span class=\"nx\">some<\/span><span class=\"w\"> <\/span><span class=\"nx\">systems<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">uppercase<\/span><span class=\"w\"> <\/span><span class=\"nx\">indicates<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"nx\">has<\/span><span class=\"w\"> <\/span><span class=\"nx\">been<\/span><span class=\"w\"> <\/span><span class=\"nx\">specified<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;W&quot;<\/span>\n<span class=\"w\">           <\/span><span class=\"s\">&quot;w&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">weak<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">has<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">been<\/span><span class=\"w\"> <\/span><span class=\"nx\">specifically<\/span><span class=\"w\"> <\/span><span class=\"nx\">tagged<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">weak<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">When<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">weak<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">linked<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">normal<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">normal<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">error<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">When<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">weak<\/span><span class=\"w\"> <\/span><span class=\"nx\">undefined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">linked<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">determined<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">system<\/span><span class=\"o\">-<\/span><span class=\"nx\">specific<\/span><span class=\"w\"> <\/span><span class=\"nx\">manner<\/span><span class=\"w\"> <\/span><span class=\"nx\">without<\/span><span class=\"w\"> <\/span><span class=\"nx\">error<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">On<\/span><span class=\"w\"> <\/span><span class=\"nx\">some<\/span><span class=\"w\"> <\/span><span class=\"nx\">systems<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">uppercase<\/span><span class=\"w\"> <\/span><span class=\"nx\">indicates<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"nx\">has<\/span><span class=\"w\"> <\/span><span class=\"nx\">been<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">specified<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u8868\u793a\u5982\u679c\u5176\u4ed6\u51fd\u6570\u5e93\u4e2d\u4e5f\u6709\u5bf9\u8fd9\u4e2a\u7b26\u53f7\u7684\u5b9a\u4e49<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5219\u5176\u4ed6\u7b26\u53f7\u7684\u5b9a\u4e49\u53ef\u4ee5\u8986\u76d6\u8fd9\u4e2a\u5b9a\u4e49<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;-&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">stabs<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">an<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"p\">.<\/span><span class=\"nx\">out<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">In<\/span><span class=\"w\"> <\/span><span class=\"nx\">this<\/span><span class=\"w\"> <\/span><span class=\"k\">case<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">next<\/span><span class=\"w\"> <\/span><span class=\"nx\">values<\/span><span class=\"w\"> <\/span><span class=\"nx\">printed<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">stabs<\/span><span class=\"w\"> <\/span><span class=\"nx\">other<\/span><span class=\"w\"> <\/span><span class=\"nx\">field<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">stabs<\/span><span class=\"w\"> <\/span><span class=\"nx\">desc<\/span><span class=\"w\"> <\/span><span class=\"nx\">field<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span>\n<span class=\"w\">               <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">stab<\/span><span class=\"w\"> <\/span><span class=\"k\">type<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Stabs<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">hold<\/span><span class=\"w\"> <\/span><span class=\"nx\">debugging<\/span><span class=\"w\"> <\/span><span class=\"nx\">information<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">           <\/span><span class=\"s\">&quot;?&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">type<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">unknown<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"nx\">specific<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">o<\/span><span class=\"w\">   <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">OPTIONS<\/span><span class=\"w\">     <\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u53ef\u4ee5\u4f7f\u7528\u7684\u53c2\u6570<\/span><span class=\"err\">\u3011<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">long<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">short<\/span><span class=\"w\"> <\/span><span class=\"nx\">forms<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">options<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">shown<\/span><span class=\"w\"> <\/span><span class=\"nx\">here<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">alternatives<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">equivalent<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u4e0b\u9762\u5c55\u793a\u7684\u5206\u522b\u4ee5\u957f<\/span><span class=\"err\">\u3001<\/span><span class=\"nx\">\u77ed\u5f62\u5f0f\u7684\u9009\u9879\u90fd\u662f\u7b49\u6548\u7684<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">A<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">print<\/span><span class=\"o\">-<\/span><span class=\"nx\">file<\/span><span class=\"o\">-<\/span><span class=\"nx\">name<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Precede<\/span><span class=\"w\"> <\/span><span class=\"nx\">each<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">input<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">archive<\/span><span class=\"w\"> <\/span><span class=\"nx\">member<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"nx\">was<\/span><span class=\"w\"> <\/span><span class=\"nx\">found<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">rather<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">identifying<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">input<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">once<\/span><span class=\"w\"> <\/span><span class=\"nx\">only<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">before<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">all<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">its<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u8f93\u51fa\u7b26\u53f7\u6240\u5bf9\u5e94\u7684\u5e93\u7684\u540d\u5b57<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u4fbf\u4e8e\u67e5\u627e\u7b26\u53f7\u5bf9\u5e94\u7684\u88ab\u5b9a\u4e49\u7684\u5e93<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">a<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">debug<\/span><span class=\"o\">-<\/span><span class=\"nx\">syms<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Display<\/span><span class=\"w\"> <\/span><span class=\"nx\">all<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">even<\/span><span class=\"w\"> <\/span><span class=\"nx\">debugger<\/span><span class=\"o\">-<\/span><span class=\"nx\">only<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"nx\">normally<\/span><span class=\"w\"> <\/span><span class=\"nx\">these<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">listed<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u5c55\u793a\u6240\u6709\u7684\u7b26\u53f7<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u5305\u62ec\u9ed8\u8ba4\u4e0d\u5c55\u793a\u7684\u8c03\u8bd5\u7b26\u53f7<\/span><span class=\"err\">\uff09\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">B<\/span><span class=\"w\">  <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">same<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">format<\/span><span class=\"p\">=<\/span><span class=\"nx\">bsd<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">compatibility<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">MIPS<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"p\">).<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">C<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">demangle<\/span><span class=\"p\">[=<\/span><span class=\"nx\">style<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Decode<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">demangle<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">low<\/span><span class=\"o\">-<\/span><span class=\"nx\">level<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">names<\/span><span class=\"w\"> <\/span><span class=\"nx\">into<\/span><span class=\"w\"> <\/span><span class=\"nx\">user<\/span><span class=\"o\">-<\/span><span class=\"nx\">level<\/span><span class=\"w\"> <\/span><span class=\"nx\">names<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Besides<\/span><span class=\"w\"> <\/span><span class=\"nx\">removing<\/span><span class=\"w\"> <\/span><span class=\"nx\">any<\/span><span class=\"w\"> <\/span><span class=\"nx\">initial<\/span><span class=\"w\"> <\/span><span class=\"nx\">underscore<\/span><span class=\"w\"> <\/span><span class=\"nx\">prepended<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">system<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">this<\/span><span class=\"w\"> <\/span><span class=\"nx\">makes<\/span><span class=\"w\"> <\/span><span class=\"nx\">C<\/span><span class=\"o\">++<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">function<\/span><span class=\"w\"> <\/span><span class=\"nx\">names<\/span><span class=\"w\"> <\/span><span class=\"nx\">readable<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"nx\">Different<\/span><span class=\"w\"> <\/span><span class=\"nx\">compilers<\/span><span class=\"w\"> <\/span><span class=\"nx\">have<\/span><span class=\"w\"> <\/span><span class=\"nx\">different<\/span><span class=\"w\"> <\/span><span class=\"nx\">mangling<\/span><span class=\"w\"> <\/span><span class=\"nx\">styles<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">optional<\/span><span class=\"w\"> <\/span><span class=\"nx\">demangling<\/span><span class=\"w\"> <\/span><span class=\"nx\">style<\/span><span class=\"w\"> <\/span><span class=\"nx\">argument<\/span><span class=\"w\"> <\/span><span class=\"nx\">can<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">choose<\/span><span class=\"w\"> <\/span><span class=\"nx\">an<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">appropriate<\/span><span class=\"w\"> <\/span><span class=\"nx\">demangling<\/span><span class=\"w\"> <\/span><span class=\"nx\">style<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"nx\">compiler<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u5c06\u4f4e\u7ea7\u7b26\u53f7\u540d\u89e3\u7801<\/span><span class=\"p\">(<\/span><span class=\"nx\">demangle<\/span><span class=\"p\">)<\/span><span class=\"nx\">\u6210\u7528\u6237\u7ea7\u7684\u540d\u5b57<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u4f7f\u5f97C<\/span><span class=\"o\">++<\/span><span class=\"nx\">\u51fd\u6570\u540d\u5177\u6709\u53ef\u8bfb\u6027<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u4e3a\u4e86\u533a\u5206\u91cd\u8f7d\u51fd\u6570<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">c<\/span><span class=\"o\">++<\/span><span class=\"nx\">\u7f16\u8bd1\u5668\u4f1a\u5c06\u51fd\u6570\u8fd4\u56de\u503c<\/span><span class=\"o\">\/<\/span><span class=\"nx\">\u53c2\u6570\u7b49\u4fe1\u606f\u9644\u52a0\u5230\u51fd\u6570\u540d\u79f0\u4e2d\u53bb\u7ec4\u6210\u4e00\u4e2amangle\u8fc7\u7684\u7b26\u53f7<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u8fd9\u91cc\u7684<\/span><span class=\"o\">-<\/span><span class=\"nx\">C\u9009\u9879\u5c31\u662f\u505a\u4e00\u4e2a\u9006\u64cd\u4f5c<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u8f93\u51fa\u5176\u539f\u59cb\u53ef\u7406\u89e3\u7684\u7b26\u53f7\u540d\u79f0<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">no<\/span><span class=\"o\">-<\/span><span class=\"nx\">demangle<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Do<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">demangle<\/span><span class=\"w\"> <\/span><span class=\"nx\">low<\/span><span class=\"o\">-<\/span><span class=\"nx\">level<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">names<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">D<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">dynamic<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Display<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">dynamic<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">rather<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">normal<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">only<\/span><span class=\"w\"> <\/span><span class=\"nx\">meaningful<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">dynamic<\/span><span class=\"w\"> <\/span><span class=\"nx\">objects<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">such<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">certain<\/span><span class=\"w\"> <\/span><span class=\"nx\">types<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">shared<\/span><span class=\"w\"> <\/span><span class=\"nx\">libraries<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u663e\u793a\u52a8\u6001\u7b26\u53f7<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u53ea\u5bf9\u52a8\u6001\u76ee\u6807\u6709\u6548<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5982\u7279\u5b9a\u7c7b\u578b\u7684\u5171\u4eab\u5e93<\/span><span class=\"err\">\uff09\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">format<\/span><span class=\"p\">=<\/span><span class=\"nx\">format<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Use<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">output<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">can<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;bsd&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;sysv&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;posix&quot;<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;bsd&quot;<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Only<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">first<\/span><span class=\"w\"> <\/span><span class=\"nx\">character<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">significant<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"nx\">can<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">either<\/span><span class=\"w\"> <\/span><span class=\"nx\">upper<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">lower<\/span><span class=\"w\"> <\/span><span class=\"k\">case<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u4f7f\u7528format\u683c\u5f0f\u8f93\u51fa<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">g<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">extern<\/span><span class=\"o\">-<\/span><span class=\"nx\">only<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Display<\/span><span class=\"w\"> <\/span><span class=\"nx\">only<\/span><span class=\"w\"> <\/span><span class=\"kd\">external<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u4ec5\u663e\u793a\u5916\u90e8\u7b26\u53f7<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">h<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">help<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Show<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">summary<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">options<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">exit<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">l<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">line<\/span><span class=\"o\">-<\/span><span class=\"nx\">numbers<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">each<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">use<\/span><span class=\"w\"> <\/span><span class=\"nx\">debugging<\/span><span class=\"w\"> <\/span><span class=\"nx\">information<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">try<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">find<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">filename<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">line<\/span><span class=\"w\"> <\/span><span class=\"nx\">number<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">look<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">line<\/span><span class=\"w\"> <\/span><span class=\"nx\">number<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">address<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">an<\/span><span class=\"w\"> <\/span><span class=\"nx\">undefined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">look<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">line<\/span><span class=\"w\"> <\/span><span class=\"nx\">number<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">relocation<\/span><span class=\"w\"> <\/span><span class=\"nx\">entry<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">refers<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">If<\/span><span class=\"w\"> <\/span><span class=\"nx\">line<\/span><span class=\"w\"> <\/span><span class=\"nx\">number<\/span><span class=\"w\"> <\/span><span class=\"nx\">information<\/span><span class=\"w\"> <\/span><span class=\"nx\">can<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">found<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">print<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"nx\">after<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">other<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">information<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u5bf9\u6bcf\u4e2a\u7b26\u53f7<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u4f7f\u7528\u8c03\u8bd5\u4fe1\u606f<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u5bf9\u8c61\u6587\u4ef6\u7f16\u8bd1\u65f6\u589e\u52a0<\/span><span class=\"o\">-<\/span><span class=\"nx\">g\u9009\u9879<\/span><span class=\"err\">\uff09<\/span><span class=\"nx\">\u4ee5\u4fbf\u627e\u5230\u6587\u4ef6\u540d\u548c\u884c\u53f7<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u5bf9\u4e8e\u5df2\u5b9a\u4e49\u7684\u7b26\u53f7<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u67e5\u627e\u7b26\u53f7\u5730\u5740\u7684\u884c\u53f7<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u5bf9\u4e8e\u672a\u5b9a\u4e49\u7b26\u53f7<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u67e5\u627e\u6307\u5411\u7b26\u53f7\u91cd\u5b9a\u4f4d\u5165\u53e3\u7684\u884c\u53f7<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u5982\u679c\u53ef\u4ee5\u627e\u5230\u884c\u53f7\u4fe1\u606f<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u663e\u793a\u5728\u7b26\u53f7\u4fe1\u606f\u4e4b\u540e<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">n<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">v<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">numeric<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Sort<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">numerically<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">their<\/span><span class=\"w\"> <\/span><span class=\"nx\">addresses<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">rather<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">alphabetically<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">their<\/span><span class=\"w\"> <\/span><span class=\"nx\">names<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u6309\u7167\u7b26\u53f7\u5bf9\u5e94\u7684\u5730\u5740\u6392\u5e8f\u800c\u4e0d\u662f\u5b57\u6bcd<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">p<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">no<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Do<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">bother<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">sort<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">any<\/span><span class=\"w\"> <\/span><span class=\"nx\">order<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"nx\">print<\/span><span class=\"w\"> <\/span><span class=\"nx\">them<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">order<\/span><span class=\"w\"> <\/span><span class=\"nx\">encountered<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u6309\u76ee\u6807\u6587\u4ef6\u4e2d\u9047\u5230\u7684\u7b26\u53f7\u987a\u5e8f\u663e\u793a<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">P<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">portability<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Use<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">POSIX<\/span><span class=\"m m-Double\">.2<\/span><span class=\"w\"> <\/span><span class=\"nx\">standard<\/span><span class=\"w\"> <\/span><span class=\"nx\">output<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"nx\">instead<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Equivalent<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">posix<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u4f7f\u7528POSIX<\/span><span class=\"m m-Double\">.2<\/span><span class=\"nx\">\u6807\u51c6\u8f93\u51fa\u683c\u5f0f\u4ee3\u66ff\u9ed8\u8ba4\u7684\u8f93\u51fa\u683c\u5f0f<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u7b49\u540c\u4e8e\u4f7f\u7528\u4efb\u9009\u9879<\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"p\">?<\/span><span class=\"nx\">posix<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">r<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">reverse<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Reverse<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">order<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">sort<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">whether<\/span><span class=\"w\"> <\/span><span class=\"nx\">numeric<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">alphabetic<\/span><span class=\"p\">);<\/span><span class=\"w\"> <\/span><span class=\"kd\">let<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">last<\/span><span class=\"w\"> <\/span><span class=\"nx\">come<\/span><span class=\"w\"> <\/span><span class=\"nx\">first<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u4e0d\u7ba1\u4ee5\u6570\u5b57\u6216\u5b57\u6bcd\u4e3a\u57fa\u672c<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u90fd\u53cd\u8f6c\u6392\u5e8f<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">S<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">print<\/span><span class=\"o\">-<\/span><span class=\"nx\">size<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Print<\/span><span class=\"w\"> <\/span><span class=\"nx\">both<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;bsd&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">output<\/span><span class=\"w\"> <\/span><span class=\"nx\">style<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"nx\">option<\/span><span class=\"w\"> <\/span><span class=\"nx\">has<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">effect<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">formats<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">do<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">record<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">sizes<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">unless<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">size<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">also<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"k\">case<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">calculated<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">displayed<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">s<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">print<\/span><span class=\"o\">-<\/span><span class=\"nx\">armap<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">When<\/span><span class=\"w\"> <\/span><span class=\"nx\">listing<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">from<\/span><span class=\"w\"> <\/span><span class=\"nx\">archive<\/span><span class=\"w\"> <\/span><span class=\"nx\">members<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">include<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">index<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">mapping<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">stored<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">archive<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">ar<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">ranlib<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">modules<\/span><span class=\"w\"> <\/span><span class=\"nx\">contain<\/span><span class=\"w\"> <\/span><span class=\"nx\">definitions<\/span>\n<span class=\"w\">           <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">names<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u5f53\u5217\u51fa\u5e93\u4e2d\u6210\u5458\u7684\u7b26\u53f7\u65f6<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5305\u542b\u7d22\u5f15<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u5373\u54ea\u4e9b\u6a21\u5757\u5305\u542b\u54ea\u4e9b\u540d\u5b57\u7684\u6620\u5c04<\/span><span class=\"err\">\uff09\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">radix<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">radix<\/span><span class=\"p\">=<\/span><span class=\"nx\">radix<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Use<\/span><span class=\"w\"> <\/span><span class=\"nx\">radix<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">radix<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">printing<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">values<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">It<\/span><span class=\"w\"> <\/span><span class=\"nx\">must<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">d<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">decimal<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">octal<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">x<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">hexadecimal<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u4f7f\u7528radix\u8fdb\u5236\u663e\u793a\u7b26\u53f7\u503c<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">radix\u53ea\u80fd\u4e3a<\/span><span class=\"err\">\u2015<\/span><span class=\"nx\">d<\/span><span class=\"p\">(<\/span><span class=\"nx\">\u5341\u8fdb\u5236<\/span><span class=\"p\">)<\/span><span class=\"err\">\u3001\u2015<\/span><span class=\"nx\">o<\/span><span class=\"p\">(<\/span><span class=\"nx\">\u516b\u8fdb\u5236<\/span><span class=\"p\">)<\/span><span class=\"nx\">\u6216<\/span><span class=\"err\">\u2015<\/span><span class=\"nx\">x<\/span><span class=\"p\">(<\/span><span class=\"nx\">\u5341\u516d\u8fdb\u5236<\/span><span class=\"p\">)<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">u<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">undefined<\/span><span class=\"o\">-<\/span><span class=\"nx\">only<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Display<\/span><span class=\"w\"> <\/span><span class=\"nx\">only<\/span><span class=\"w\"> <\/span><span class=\"nx\">undefined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">those<\/span><span class=\"w\"> <\/span><span class=\"kd\">external<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">each<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"p\">).<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u4ec5\u663e\u793a\u672a\u5b9a\u4e49\u7684\u7b26\u53f7<\/span><span class=\"err\">\uff08<\/span><span class=\"nx\">\u5b83\u4eec\u5bf9\u76ee\u6807\u6587\u4ef6\u90fd\u662f\u5916\u90e8\u7684<\/span><span class=\"err\">\uff09\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">V<\/span>\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">version<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Show<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"nx\">number<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">exit<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u663e\u793anm\u7248\u672c\u5e76\u9000\u51fa<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"nx\">X<\/span><span class=\"w\">  <\/span><span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"nx\">option<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">ignored<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">compatibility<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">AIX<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">It<\/span><span class=\"w\"> <\/span><span class=\"nx\">takes<\/span><span class=\"w\"> <\/span><span class=\"nx\">one<\/span><span class=\"w\"> <\/span><span class=\"nx\">parameter<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">must<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"kt\">string<\/span><span class=\"w\"> <\/span><span class=\"mi\">32<\/span><span class=\"nx\">_64<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"nx\">mode<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">AIX<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">nm<\/span><span class=\"w\"> <\/span><span class=\"nx\">corresponds<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">X<\/span><span class=\"w\"> <\/span><span class=\"mi\">32<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">supported<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">defined<\/span><span class=\"o\">-<\/span><span class=\"nx\">only<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Display<\/span><span class=\"w\"> <\/span><span class=\"nx\">only<\/span><span class=\"w\"> <\/span><span class=\"nx\">defined<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">each<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u4ec5\u663e\u793a\u6bcf\u4e2a\u76ee\u6807\u6587\u4ef6\u4e2d\u5df2\u5b9a\u4e49\u7684\u7b26\u53f7<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">plugin<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Load<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">plugin<\/span><span class=\"w\"> <\/span><span class=\"nx\">called<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">add<\/span><span class=\"w\"> <\/span><span class=\"nx\">support<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">extra<\/span><span class=\"w\"> <\/span><span class=\"nx\">target<\/span><span class=\"w\"> <\/span><span class=\"nx\">types<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">This<\/span><span class=\"w\"> <\/span><span class=\"nx\">option<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">only<\/span><span class=\"w\"> <\/span><span class=\"nx\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">toolchain<\/span><span class=\"w\"> <\/span><span class=\"nx\">has<\/span><span class=\"w\"> <\/span><span class=\"nx\">been<\/span><span class=\"w\"> <\/span><span class=\"nx\">built<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">plugin<\/span><span class=\"w\"> <\/span><span class=\"nx\">support<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">enabled<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">size<\/span><span class=\"o\">-<\/span><span class=\"nx\">sort<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Sort<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">computed<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">difference<\/span><span class=\"w\"> <\/span><span class=\"nx\">between<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">next<\/span><span class=\"w\"> <\/span><span class=\"nx\">higher<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">If<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;bsd&quot;<\/span><span class=\"w\"> <\/span><span class=\"nx\">output<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">printed<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">rather<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">S<\/span><span class=\"w\"> <\/span><span class=\"nx\">must<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">order<\/span><span class=\"w\"> <\/span><span class=\"nx\">both<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">printed<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u6309\u5927\u5c0f\u6392\u5217\u7b26\u53f7\u987a\u5e8f<\/span><span class=\"err\">\u3002<\/span><span class=\"nx\">\u8be5\u5927\u5c0f\u662f\u6309\u7167\u4e00\u4e2a\u7b26\u53f7\u7684\u503c\u4e0e\u5b83\u4e0b\u4e00\u4e2a\u7b26\u53f7\u7684\u503c\u8fdb\u884c\u8ba1\u7b97\u7684<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">special<\/span><span class=\"o\">-<\/span><span class=\"nx\">syms<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Display<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">which<\/span><span class=\"w\"> <\/span><span class=\"nx\">have<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">target<\/span><span class=\"o\">-<\/span><span class=\"nx\">specific<\/span><span class=\"w\"> <\/span><span class=\"nx\">special<\/span><span class=\"w\"> <\/span><span class=\"nx\">meaning<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">These<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">usually<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">target<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">some<\/span><span class=\"w\"> <\/span><span class=\"nx\">special<\/span><span class=\"w\"> <\/span><span class=\"nx\">processing<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">normally<\/span><span class=\"w\"> <\/span><span class=\"nx\">helpful<\/span><span class=\"w\"> <\/span><span class=\"nx\">when<\/span><span class=\"w\"> <\/span><span class=\"nx\">included<\/span><span class=\"w\"> <\/span><span class=\"nx\">included<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">normal<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbol<\/span><span class=\"w\"> <\/span><span class=\"nx\">lists<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">For<\/span><span class=\"w\"> <\/span><span class=\"nx\">example<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">ARM<\/span><span class=\"w\"> <\/span><span class=\"nx\">targets<\/span><span class=\"w\"> <\/span><span class=\"nx\">this<\/span><span class=\"w\"> <\/span><span class=\"nx\">option<\/span><span class=\"w\"> <\/span><span class=\"nx\">would<\/span><span class=\"w\"> <\/span><span class=\"nx\">skip<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">mapping<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">mark<\/span><span class=\"w\"> <\/span><span class=\"nx\">transitions<\/span><span class=\"w\"> <\/span><span class=\"nx\">between<\/span><span class=\"w\"> <\/span><span class=\"nx\">ARM<\/span><span class=\"w\"> <\/span><span class=\"nx\">code<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">THUMB<\/span><span class=\"w\"> <\/span><span class=\"nx\">code<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">synthetic<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Include<\/span><span class=\"w\"> <\/span><span class=\"nx\">synthetic<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">output<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">These<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">special<\/span><span class=\"w\"> <\/span><span class=\"nx\">symbols<\/span><span class=\"w\"> <\/span><span class=\"nx\">created<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">linker<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">various<\/span><span class=\"w\"> <\/span><span class=\"nx\">purposes<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">They<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">shown<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"nx\">since<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">they<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">part<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">binary<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"nx\">original<\/span><span class=\"w\"> <\/span><span class=\"nx\">source<\/span><span class=\"w\"> <\/span><span class=\"nx\">code<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"o\">--<\/span><span class=\"nx\">target<\/span><span class=\"p\">=<\/span><span class=\"nx\">bfdname<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Specify<\/span><span class=\"w\"> <\/span><span class=\"nx\">an<\/span><span class=\"w\"> <\/span><span class=\"nx\">object<\/span><span class=\"w\"> <\/span><span class=\"nx\">code<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"w\"> <\/span><span class=\"nx\">other<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"nx\">system<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"nx\">format<\/span><span class=\"p\">.<\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u6307\u5b9a\u4e00\u4e2a\u76ee\u6807\u4ee3\u7801\u7684\u683c\u5f0f<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u800c\u975e\u7cfb\u7edf\u9ed8\u8ba4\u7684\u683c\u5f0f<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"w\">       <\/span><span class=\"err\">@<\/span><span class=\"nx\">file<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">Read<\/span><span class=\"w\"> <\/span><span class=\"nx\">command<\/span><span class=\"o\">-<\/span><span class=\"nx\">line<\/span><span class=\"w\"> <\/span><span class=\"nx\">options<\/span><span class=\"w\"> <\/span><span class=\"nx\">from<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">options<\/span><span class=\"w\"> <\/span><span class=\"nx\">read<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">inserted<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">place<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">original<\/span><span class=\"w\"> <\/span><span class=\"err\">@<\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">option<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">If<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">does<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">exist<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">cannot<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">read<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">           <\/span><span class=\"k\">then<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">option<\/span><span class=\"w\"> <\/span><span class=\"nx\">will<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">treated<\/span><span class=\"w\"> <\/span><span class=\"nx\">literally<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">removed<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">           <\/span><span class=\"nx\">Options<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">separated<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">whitespace<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">A<\/span><span class=\"w\"> <\/span><span class=\"nx\">whitespace<\/span><span class=\"w\"> <\/span><span class=\"nx\">character<\/span><span class=\"w\"> <\/span><span class=\"nx\">may<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">included<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">an<\/span><span class=\"w\"> <\/span><span class=\"nx\">option<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">surrounding<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">entire<\/span><span class=\"w\"> <\/span><span class=\"nx\">option<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">either<\/span><span class=\"w\"> <\/span><span class=\"nx\">single<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">double<\/span><span class=\"w\"> <\/span><span class=\"nx\">quotes<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Any<\/span><span class=\"w\"> <\/span><span class=\"nx\">character<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">including<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">backslash<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">may<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">included<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">prefixing<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">character<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">included<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">backslash<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">may<\/span><span class=\"w\"> <\/span><span class=\"nx\">itself<\/span>\n<span class=\"w\">           <\/span><span class=\"nx\">contain<\/span><span class=\"w\"> <\/span><span class=\"nx\">additional<\/span><span class=\"w\"> <\/span><span class=\"err\">@<\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"nx\">options<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"nx\">any<\/span><span class=\"w\"> <\/span><span class=\"nx\">such<\/span><span class=\"w\"> <\/span><span class=\"nx\">options<\/span><span class=\"w\"> <\/span><span class=\"nx\">will<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">processed<\/span><span class=\"w\"> <\/span><span class=\"nx\">recursively<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">SEE<\/span><span class=\"w\"> <\/span><span class=\"nx\">ALSO<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">ar<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"nx\">objdump<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"nx\">ranlib<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">),<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">Info<\/span><span class=\"w\"> <\/span><span class=\"nx\">entries<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">binutils<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">COPYRIGHT<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">Copyright<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">c<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"mi\">1991<\/span><span class=\"o\">-<\/span><span class=\"mi\">2013<\/span><span class=\"w\"> <\/span><span class=\"nx\">Free<\/span><span class=\"w\"> <\/span><span class=\"nx\">Software<\/span><span class=\"w\"> <\/span><span class=\"nx\">Foundation<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">Inc<\/span><span class=\"p\">.<\/span>\n\n<span class=\"w\">       <\/span><span class=\"nx\">Permission<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">granted<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">copy<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">distribute<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"o\">\/<\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">modify<\/span><span class=\"w\"> <\/span><span class=\"nx\">this<\/span><span class=\"w\"> <\/span><span class=\"nx\">document<\/span><span class=\"w\"> <\/span><span class=\"nx\">under<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">terms<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">GNU<\/span><span class=\"w\"> <\/span><span class=\"nx\">Free<\/span><span class=\"w\"> <\/span><span class=\"nx\">Documentation<\/span><span class=\"w\"> <\/span><span class=\"nx\">License<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">Version<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">1.3<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">any<\/span><span class=\"w\"> <\/span><span class=\"nx\">later<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"nx\">published<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">Free<\/span><span class=\"w\"> <\/span><span class=\"nx\">Software<\/span><span class=\"w\"> <\/span><span class=\"nx\">Foundation<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">Invariant<\/span><span class=\"w\"> <\/span><span class=\"nx\">Sections<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">Front<\/span><span class=\"o\">-<\/span><span class=\"nx\">Cover<\/span><span class=\"w\"> <\/span><span class=\"nx\">Texts<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">Back<\/span><span class=\"o\">-<\/span><span class=\"nx\">Cover<\/span><span class=\"w\"> <\/span><span class=\"nx\">Texts<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">A<\/span><span class=\"w\"> <\/span><span class=\"nx\">copy<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span>\n<span class=\"w\">       <\/span><span class=\"nx\">license<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">included<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">section<\/span><span class=\"w\"> <\/span><span class=\"nx\">entitled<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;GNU Free Documentation License&quot;<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">binutils<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">2.23.52.0.1<\/span><span class=\"w\">                                                        <\/span><span class=\"mi\">2015<\/span><span class=\"o\">-<\/span><span class=\"mi\">05<\/span><span class=\"o\">-<\/span><span class=\"mi\">12<\/span><span class=\"w\">                                                                       <\/span><span class=\"nx\">NM<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\"> <\/span><span class=\"nx\">Manual<\/span><span class=\"w\"> <\/span><span class=\"nx\">page<\/span><span class=\"w\"> <\/span><span class=\"nx\">nm<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">line<\/span><span class=\"w\"> <\/span><span class=\"mi\">178<\/span><span class=\"o\">\/<\/span><span class=\"mi\">223<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">END<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">press<\/span><span class=\"w\"> <\/span><span class=\"nx\">h<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">help<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">q<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">quit<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"nm"}}]},{"title":"Linux gcc\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\uff1aLIBRARY_PATH\u548cLD_LIBRARY_PATH\u7684\u533a\u522b","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/gcclderrlibrarypath.html","rel":"alternate"}},"published":"2015-08-08T22:51:00+08:00","updated":"2015-08-08T22:51:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-08-08:\/cseries\/gcclderrlibrarypath.html","summary":"<p>\u6628\u5929\u5728\u81ea\u5df1\u7684CentOs7.1\u4e0a\u5199makefile\u7684\u65f6\u5019\uff0c\u53d1\u73b0\u5728\u4e00\u4e2aC\u7a0b\u5e8f\u5728\u7f16\u8bd1\u5e76\u94fe\u63a5\u4e00\u4e2a\u5df2\u751f\u6210\u597d\u7684lib\u52a8\u6001\u5e93\u7684\u65f6\u5019\u51fa\u9519\u3002\u94fe\u63a5\u547d\u4ee4\u5927\u6982\u662f\u8fd9\u6837\u7684\uff1a<\/p>\n\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">ld<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">cannot<\/span><span class=\"w\"> <\/span><span class=\"nx\">find<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmyhello<\/span>\n<span class=\"nx\">collect2<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">error<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">ld<\/span><span class=\"w\"> <\/span><span class=\"k\">returned<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">exit<\/span><span class=\"w\"> <\/span><span class=\"nx\">status<\/span>\n<\/code><\/pre>\n\n<p><img alt=\"Linux gcc\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/gcc_linux.png\" title=\"Linux gcc\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\"><\/p>\n","content":"<p>\u6628\u5929\u5728\u81ea\u5df1\u7684CentOs7.1\u4e0a\u5199makefile\u7684\u65f6\u5019\uff0c\u53d1\u73b0\u5728\u4e00\u4e2aC\u7a0b\u5e8f\u5728\u7f16\u8bd1\u5e76\u94fe\u63a5\u4e00\u4e2a\u5df2\u751f\u6210\u597d\u7684lib\u52a8\u6001\u5e93\u7684\u65f6\u5019\u51fa\u9519\u3002\u94fe\u63a5\u547d\u4ee4\u5927\u6982\u662f\u8fd9\u6837\u7684\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">tcpmsg<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"nx\">hello<\/span><span class=\"w\"> <\/span><span class=\"nx\">main<\/span><span class=\"p\">.<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmyhello<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"nx\">ld<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">cannot<\/span><span class=\"w\"> <\/span><span class=\"nx\">find<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">lmyhello<\/span>\n<span class=\"nx\">collect2<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">error<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">ld<\/span><span class=\"w\"> <\/span><span class=\"k\">returned<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">exit<\/span><span class=\"w\"> <\/span><span class=\"nx\">status<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"Linux gcc\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/gcc_linux.png\" title=\"Linux gcc\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\"><\/p>\n\n\n<h4>1 gcc\u94fe\u63a5\u52a8\u6001\u5e93\u65f6\u7684\u641c\u7d22\u8def\u5f84<\/h4>\n<p>\u81ea\u4ee5\u4e3a\u5728\u5f53\u524d\u5de5\u7a0b\u4e2d\u8bbe\u7f6e\u597d\u4e86\u73af\u5883\u53d8\u91cf<code>LD_LIBRARY_PATH<\/code>\u5305\u542b\u4e86\u5de5\u7a0b\u4e2d\u7684lib\u5e93\u8def\u5f84\uff0c\u5e76\u4e14\u8fd8\u5728<code>\/etc\/ld.so.conf\/apphome.conf<\/code>\u4e2d\u914d\u7f6e\u4e86lib\u5e93\u7684\u8def\u5f84\u3002\u90a3\u4e48\u5728\u8c03\u7528\u52a8\u6001\u5e93\u7684\u65f6\u5019\uff0cgcc\u5c31\u5e94\u8be5\u80fd\u81ea\u52a8\u53bb\u641c\u7d22\u8be5\u76ee\u5f55\u3002<\/p>\n<p><img alt=\"gcc\u94fe\u63a5\u52a8\u6001\u5e93\u65f6\u7684\u641c\u7d22\u8def\u5f84\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/centos7_gcc_cannot_find_library.png\" title=\"gcc\u94fe\u63a5\u52a8\u6001\u5e93\u65f6\u7684\u641c\u7d22\u8def\u5f84\"><\/p>\n<p>\u5f88\u9057\u61beld\u94fe\u63a5\u5668\u62a5\u4e86\u5982\u4e0a\u7684\u9519\u8bef\uff0c\u4f46\u662f\u5982\u679c\u5728\u4e0a\u9762\u7684gcc\u547d\u4ee4\u4e2d\u6dfb\u52a0\u4e0a<code>-L \/root\/gcc_test\/tcp_msg\/lib\/<\/code>\u53c2\u6570\uff0c\u5373\u660e\u786e\u52a8\u6001\u5e93\u7684\u7edd\u5bf9\u8def\u5f84\uff0c\u662f\u80fd\u591f\u94fe\u63a5\u6210\u529f\u7684\u3002<\/p>\n<h4>2 Google\u4e0a\u67e5\u627e \/usr\/bin\/ld: cannot find -l* \u7684\u51fa\u9519\u539f\u56e0<\/h4>\n<p>gg\u4e86\u5f88\u4e45gcc ld\u94fe\u63a5\u52a8\u6001\u5e93\u51fa\u9519\u7684\u539f\u56e0\uff0c\u7ed3\u679c\u8fd8\u662f\u6ca1\u627e\u5230\u7406\u60f3\u7684\u7b54\u6848\u3002\u540e\u6765\u731c\u60f3\u662f\u4e0d\u662f\u5728CentOs7\u4e2dLD_LIBRARY_PATH\u4e0d\u8d77\u4f5c\u7528\u7684\u7f18\u6545\uff0c\u4f46\u662f\u4e5f\u4e0d\u5e94\u8be5\uff0c\u56e0\u4e3a\u81ea\u5df1\u7528\u7684GCC\uff08version 4.8.3\uff09\u8ddf\u64cd\u4f5c\u7cfb\u7edf\u6ca1\u5173\u7cfb\u3002\u4e8e\u662f\u91cd\u65b0\u641c\u7d22\u4e86gcc LD_LIBRARY_PATH\u7684\u4f5c\u7528\uff0c\u7adf\u7136\u53d1\u73b0gcc\u5728\u7f16\u8bd1\u94fe\u63a5\u65f6\u94fe\u63a5\u7684\u52a8\u6001\u5e93\u8ddf<code>LIBRARY_PATH<\/code>\u6709\u5173\u800c\u8ddf<code>LD_LIBRARY_PATH<\/code>\u6ca1\u5173\u7cfb\uff01<\/p>\n<h4>3 \u5173\u4e8eLinux gcc\u4e2d\u7684<code>LIBRARY_PATH<\/code>\u548c<code>LD_LIBRARY_PATH<\/code>\u53c2\u6570\u8bf4\u660e<\/h4>\n<p>\u4e0b\u9762\u6458\u53d6\u4e86\u4e24\u7bc7\u8f83\u6743\u5a01\u7684\u8bf4\u660e\u8d44\u6599\uff1a <\/p>\n<p>1\u3001<a href=\"https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Environment-Variables.html\" title=\"\u67e5\u770b\u539f\u6587\">GNU<\/a>\u4e0a\u5173\u4e8eLIBRARY_PATH\u7684\u8bf4\u660e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>LIBRARY_PATH\nThe value of LIBRARY_PATH is a colon-separated list of directories, much like PATH.\nWhen configured as a native compiler, GCC tries the directories thus specified when searching for special linker files, if it can&#39;t find them using GCC_EXEC_PREFIX.\nLinking using GCC also uses these directories when searching for ordinary libraries for the -l option (but directories specified with -L come first).\n<\/code><\/pre><\/div>\n\n<p>2\u3001<a href=\"http:\/\/man7.org\/linux\/man-pages\/man8\/ld.so.8.html\" title=\"\u67e5\u770b\u539f\u6587\">man7<\/a>\u4e0a\u5173\u4e8eLD_LIBRARY_PATH\u7684\u8bf4\u660e\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">LD_LIBRARY_PATH<\/span>\n<span class=\"n\">A<\/span><span class=\"w\"> <\/span><span class=\"n\">colon<\/span><span class=\"o\">-<\/span><span class=\"n\">separated<\/span><span class=\"w\"> <\/span><span class=\"n\">list<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">directories<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">which<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">search<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span>\n<span class=\"n\">ELF<\/span><span class=\"w\"> <\/span><span class=\"n\">libraries<\/span><span class=\"w\"> <\/span><span class=\"n\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">execution<\/span><span class=\"o\">-<\/span><span class=\"n\">time<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">Similar<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">PATH<\/span>\n<span class=\"n\">environment<\/span><span class=\"w\"> <\/span><span class=\"n\">variable<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">Ignored<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">set<\/span><span class=\"o\">-<\/span><span class=\"n\">user<\/span><span class=\"o\">-<\/span><span class=\"n\">ID<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">set<\/span><span class=\"o\">-<\/span><span class=\"n\">group<\/span><span class=\"o\">-<\/span><span class=\"n\">ID<\/span>\n<span class=\"n\">programs<\/span><span class=\"o\">.<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u540e\u9762\u53d1\u73b0<a href=\"http:\/\/stackoverflow.com\/questions\/4250624\/ld-library-path-vs-library-path\" title=\"\u67e5\u770b\u8be6\u60c5\">StackOverflow<\/a>\u4e0a\u5173\u4e8e<code>LIBRARY_PATH<\/code>\u548c<code>LD_LIBRARY_PATH<\/code>\u7684\u89e3\u91ca\u66f4\u76f4\u767d\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nx\">LIBRARY_PATH<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"nx\">before<\/span><span class=\"w\"> <\/span><span class=\"nx\">compilation<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">search<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">directories<\/span><span class=\"w\"> <\/span><span class=\"nx\">containing<\/span><span class=\"w\"> <\/span><span class=\"nx\">libraries<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"w\"> <\/span><span class=\"nx\">need<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">linked<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"nx\">program<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">LD_LIBRARY_PATH<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">used<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"nx\">program<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">search<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">directories<\/span><span class=\"w\"> <\/span><span class=\"nx\">containing<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">libraries<\/span><span class=\"w\"> <\/span><span class=\"nx\">after<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"nx\">has<\/span><span class=\"w\"> <\/span><span class=\"nx\">been<\/span><span class=\"w\"> <\/span><span class=\"nx\">successfully<\/span><span class=\"w\"> <\/span><span class=\"nx\">compiled<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">linked<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">EDIT<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">As<\/span><span class=\"w\"> <\/span><span class=\"nx\">pointed<\/span><span class=\"w\"> <\/span><span class=\"nx\">below<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"nx\">libraries<\/span><span class=\"w\"> <\/span><span class=\"nx\">can<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">shared<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">If<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">static<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">code<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">copied<\/span><span class=\"w\"> <\/span><span class=\"nx\">over<\/span><span class=\"w\"> <\/span><span class=\"nx\">into<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"nx\">program<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">you<\/span><span class=\"w\"> <\/span><span class=\"nx\">don<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">need<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">search<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"nx\">after<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"nx\">program<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">compiled<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">linked<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">If<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">shared<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"nx\">needs<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">be<\/span><span class=\"w\"> <\/span><span class=\"nx\">dynamically<\/span><span class=\"w\"> <\/span><span class=\"nx\">linked<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">your<\/span><span class=\"w\"> <\/span><span class=\"nx\">program<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">that<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"nx\">when<\/span><span class=\"w\"> <\/span><span class=\"nx\">LD_LIBRARY_PATH<\/span><span class=\"w\"> <\/span><span class=\"nx\">comes<\/span><span class=\"w\"> <\/span><span class=\"nx\">into<\/span><span class=\"w\"> <\/span><span class=\"nx\">play<\/span><span class=\"p\">.<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u901a\u8fc7\u8fd9\u4e09\u7bc7\u8d44\u6599\u7684\u8bf4\u660e\uff0c\u5f88\u5feb\u660e\u767d\u4e86<code>LIBRARY_PATH<\/code>\u548c<code>LD_LIBRARY_PATH<\/code>\u7684\u4f5c\u7528\u3002\u4e8e\u662f\uff0c\u81ea\u5df1\u5728\u9879\u76ee\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0<code>export LIBRARY_PATH=${LIBRARY_PATH}:${APPHOME}\/lib<\/code>\u3002\u63a5\u7740\u5c06\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6\u52a0\u8f7d\u5230CentOs\u7684\u73af\u5883\u53d8\u91cf\u4e2d\uff0c\u8fd9\u6837\u5c31\u5728gcc\u7f16\u8bd1\u4e0d\u7528\u52a0<code>-L<\/code>\u53c2\u6570\u751f\u6210\u76ee\u6807\u6587\u4ef6CommuTcp\u4e86\u3002<\/p>\n<h4>4 \u603b\u7ed3<\/h4>\n<p>\u5173\u4e8e<code>LIBRARY_PATH<\/code>\u548c<code>LD_LIBRARY_PATH<\/code>\u7684\u5173\u7cfb\uff0c\u8fd9\u91cc\u81ea\u5df1\u518d\u603b\u7ed3\u4e00\u4e0b\u3002<\/p>\n<h5>4.1 Linux gcc\u7f16\u8bd1\u94fe\u63a5\u65f6\u7684\u52a8\u6001\u5e93\u641c\u7d22\u8def\u5f84<\/h5>\n<p>GCC\u7f16\u8bd1\u3001\u94fe\u63a5\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6\u65f6\uff0c\u52a8\u6001\u5e93\u7684\u641c\u7d22\u8def\u5f84\u5c31\u5305\u542b<code>LIBRARY_PATH<\/code>\uff0c\u5177\u4f53\u7684\u641c\u7d22\u8def\u5f84\u987a\u5e8f\u5982\u4e0b\uff08\u6ce8\u610f\u4e0d\u4f1a\u9012\u5f52\u6027\u5730\u5728\u5176\u5b50\u76ee\u5f55\u4e0b\u641c\u7d22\uff09\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">gcc\u7f16\u8bd1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u94fe\u63a5\u547d\u4ee4\u4e2d\u7684<\/span><span class=\"o\">-<\/span><span class=\"n\">L\u9009\u9879<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">gcc\u7684\u73af\u5883\u53d8\u91cf\u7684LIBRARY_PATH<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u591a\u4e2a\u8def\u5f84\u7528\u5192\u53f7\u5206\u5272<\/span><span class=\"err\">\uff09\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">gcc\u9ed8\u8ba4\u52a8\u6001\u5e93\u76ee\u5f55<\/span><span class=\"err\">\uff1a<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"p\">:<\/span><span class=\"o\">\/<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"p\">:<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib64<\/span><span class=\"p\">:<\/span><span class=\"o\">\/<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h5>4.2 \u6267\u884c\u4e8c\u8fdb\u5236\u6587\u4ef6\u65f6\u7684\u52a8\u6001\u5e93\u641c\u7d22\u8def\u5f84<\/h5>\n<p>\u94fe\u63a5\u751f\u6210\u4e8c\u8fdb\u5236\u53ef\u6267\u884c\u6587\u4ef6\u540e\uff0c\u8fd0\u884c\u8be5\u7a0b\u5e8f\u52a0\u8f7d\u52a8\u6001\u5e93\u6587\u4ef6\u65f6\u5c31\u4f1a\u641c\u7d22\u5305\u542b<code>LD_LIBRARY_PATH<\/code>\u8def\u5f84\u4e0b\u7684\u52a8\u6001\u5e93\uff0c\u5177\u4f53\u987a\u5e8f\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u7f16\u8bd1\u76ee\u6807\u4ee3\u7801\u65f6\u6307\u5b9a\u7684\u52a8\u6001\u5e93\u641c\u7d22\u8def\u5f84<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">\u7528\u9009\u9879<\/span><span class=\"o\">-<\/span><span class=\"n\">Wl<\/span><span class=\"p\">,<\/span><span class=\"n\">rpath\u548cinclude\u6307\u5b9a\u7684\u52a8\u6001\u5e93\u7684\u641c\u7d22\u8def\u5f84<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u6bd4\u5982gcc<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">Wl<\/span><span class=\"p\">,<\/span><span class=\"o\">-<\/span><span class=\"n\">rpath<\/span><span class=\"p\">,<\/span><span class=\"n\">include<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">L<\/span><span class=\"mf\">.<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">ldltest<\/span><span class=\"w\"> <\/span><span class=\"n\">hello<\/span><span class=\"mf\">.<\/span><span class=\"n\">c<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u5728\u6267\u884c\u6587\u4ef6\u65f6\u4f1a\u641c\u7d22\u8def\u5f84<\/span><span class=\"err\">`<\/span><span class=\"mf\">.<\/span><span class=\"o\">\/<\/span><span class=\"n\">include<\/span><span class=\"err\">`\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u73af\u5883\u53d8\u91cfLD_LIBRARY_PATH<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u591a\u4e2a\u8def\u5f84\u7528\u5192\u53f7\u5206\u5272<\/span><span class=\"err\">\uff09\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5728<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">ld<\/span><span class=\"mf\">.<\/span><span class=\"n\">so<\/span><span class=\"mf\">.<\/span><span class=\"n\">conf<\/span><span class=\"mf\">.<\/span><span class=\"n\">d<\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"n\">\u76ee\u5f55\u4e0b\u7684\u914d\u7f6e\u6587\u4ef6\u6307\u5b9a\u7684\u52a8\u6001\u5e93\u7edd\u5bf9\u8def\u5f84<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u901a\u8fc7ldconfig\u751f\u6548<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4e00\u822c\u662f\u975eroot\u7528\u6237\u65f6\u4f7f\u7528<\/span><span class=\"err\">\uff09\uff1b<\/span>\n<span class=\"mf\">4<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">gcc\u9ed8\u8ba4\u52a8\u6001\u5e93\u76ee\u5f55<\/span><span class=\"err\">\uff1a<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"p\">:<\/span><span class=\"o\">\/<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"p\">:<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib64<\/span><span class=\"p\">:<\/span><span class=\"o\">\/<\/span><span class=\"nb\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib\u7b49<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5176\u4e2d\uff0cLinux GCC\u9ed8\u8ba4\u7684\u52a8\u6001\u5e93\u641c\u7d22\u8def\u5f84\u53ef\u4ee5\u901a\u8fc7<code>ld --verbose<\/code>\u547d\u4ee4\u67e5\u770b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">tcpmsg<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ld<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">verbose<\/span>\n<span class=\"w\">    <\/span><span class=\"o\">............<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">SEARCH_DIR<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/usr\/x86_64-redhat-linux\/lib64&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">SEARCH_DIR<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/usr\/local\/lib64&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">SEARCH_DIR<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/lib64&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">SEARCH_DIR<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/usr\/lib64&quot;<\/span><span class=\"p\">);<\/span><span class=\"w\">               <\/span><span class=\"err\">#####<\/span><span class=\"w\"> <\/span><span class=\"mi\">64<\/span><span class=\"nx\">\u4f4d\u7cfb\u7edf<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">SEARCH_DIR<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/usr\/x86_64-redhat-linux\/lib&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">SEARCH_DIR<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/usr\/local\/lib&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">SEARCH_DIR<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/lib&quot;<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">SEARCH_DIR<\/span><span class=\"p\">(<\/span><span class=\"s\">&quot;\/usr\/lib&quot;<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre><\/div>\n\n<p><img alt=\"Linux GCC\u4e2dld --verbose\u547d\u4ee4\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/gcc_ld_verbose.png\" title=\"Linux GCC\u4e2dld --verbose\u547d\u4ee4\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"gcc"}},{"@attributes":{"term":"library_path"}},{"@attributes":{"term":"ld_library_path"}}]},{"title":"Unix\u7cfb\u7edf\u8fdb\u7a0b\u5bf9SIGTERM\u3001SIGUSR1\u548cSIGUSR2\u4fe1\u53f7\u5904\u7406","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/unixsigtermkill.html","rel":"alternate"}},"published":"2015-08-05T17:41:00+08:00","updated":"2015-08-05T17:41:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-08-05:\/cseries\/unixsigtermkill.html","summary":"<p>\u597d\u4e45\u6ca1\u66f4\u65b0\u535a\u5ba2\u4e86\uff0c\u5199\u7bc7\u6587\u7ae0\u9664\u9664\u8349\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u7b80\u5355\u7684\u4f8b\u5b50\u8bf4\u660e\u4e00\u4e0bUnix\/Linux\u8fdb\u7a0b\u4e2d\u5982\u679c\u6355\u6349\u548c\u5904\u7406<code>SIGTERM<\/code>\u3001<code>SIGUSR1<\/code>\u548c<code>SIGUSR2<\/code>\u4fe1\u53f7\u3002<\/p>\n<p>\u5148\u8bf4\u660e\u4e00\u4e0b\u8fd9\u4e09\u4e2a\u4fe1\u53f7\uff1a<\/p>\n\n<span class=\"n\">SIGTERM<\/span><span class=\"err\">\uff1a\u8fdb\u7a0b\u7ec8\u6b62\u4fe1\u53f7\uff0c\u6548\u679c\u7b49\u540c\u4e8e<\/span><span class=\"o\">*<\/span><span class=\"n\">nix<\/span><span class=\"w\"> <\/span><span class=\"n\">shell\u4e2d\u4e0d\u5e26<\/span><span class=\"o\">-<\/span><span class=\"mi\">9<\/span><span class=\"err\">\u7684<\/span><span class=\"n\">kill\u547d\u4ee4<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"n\">SIGUSR1<\/span><span class=\"err\">\uff1a\u4fdd\u7559\u7ed9\u7528\u6237\u4f7f\u7528\u7684\u4fe1\u53f7\uff1b<\/span>\n<span class=\"n\">SIGUSR2<\/span><span class=\"err\">\uff1a\u540c<\/span><span class=\"n\">SIGUSR1<\/span><span class=\"err\">\uff0c\u4fdd\u7559\u7ed9\u7528\u6237\u4f7f\u7528\u7684\u4fe1\u53f7\u3002<\/span>\n<\/code><\/pre>\n\n","content":"<p>\u597d\u4e45\u6ca1\u66f4\u65b0\u535a\u5ba2\u4e86\uff0c\u5199\u7bc7\u6587\u7ae0\u9664\u9664\u8349\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u901a\u8fc7\u7b80\u5355\u7684\u4f8b\u5b50\u8bf4\u660e\u4e00\u4e0bUnix\/Linux\u8fdb\u7a0b\u4e2d\u5982\u679c\u6355\u6349\u548c\u5904\u7406<code>SIGTERM<\/code>\u3001<code>SIGUSR1<\/code>\u548c<code>SIGUSR2<\/code>\u4fe1\u53f7\u3002<\/p>\n<p>\u5148\u8bf4\u660e\u4e00\u4e0b\u8fd9\u4e09\u4e2a\u4fe1\u53f7\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">\u4fe1\u53f7<\/span><span class=\"p\">(<\/span><span class=\"k\">signal<\/span><span class=\"p\">)<\/span><span class=\"err\">\u662f<\/span><span class=\"o\">*<\/span><span class=\"n\">nix\u7cfb\u7edf\u4e2d\u8fdb\u7a0b\u4e4b\u95f4\u901a\u4fe1<\/span><span class=\"p\">(<\/span><span class=\"n\">IPC<\/span><span class=\"p\">)<\/span><span class=\"err\">\u7684\u4e00\u79cd\u5e38\u89c1\u65b9\u5f0f\u3002<\/span>\n<span class=\"n\">SIGTERM<\/span><span class=\"err\">\uff1a\u8fdb\u7a0b\u7ec8\u6b62\u4fe1\u53f7\uff0c\u6548\u679c\u7b49\u540c\u4e8e<\/span><span class=\"o\">*<\/span><span class=\"n\">nix<\/span><span class=\"w\"> <\/span><span class=\"n\">shell\u4e2d\u4e0d\u5e26<\/span><span class=\"o\">-<\/span><span class=\"mi\">9<\/span><span class=\"err\">\u7684<\/span><span class=\"n\">kill\u547d\u4ee4<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"n\">SIGUSR1<\/span><span class=\"err\">\uff1a\u4fdd\u7559\u7ed9\u7528\u6237\u4f7f\u7528\u7684\u4fe1\u53f7\uff1b<\/span>\n<span class=\"n\">SIGUSR2<\/span><span class=\"err\">\uff1a\u540c<\/span><span class=\"n\">SIGUSR1<\/span><span class=\"err\">\uff0c\u4fdd\u7559\u7ed9\u7528\u6237\u4f7f\u7528\u7684\u4fe1\u53f7\u3002<\/span>\n<\/code><\/pre><\/div>\n\n\n\n<h4>1 \u4fe1\u53f7\u7684\u5904\u7406\u65b9\u5f0f<\/h4>\n<p>\u5bf9\u4e8e<code>SIGTERM<\/code>\u3001<code>SIGUSR1<\/code>\u548c<code>SIGUSR2<\/code>\u8fd9\u4e09\u79cd\u4fe1\u53f7\uff0c\u5982\u679c\u5728\u5f53\u524d\u8fdb\u7a0b\u4e2d\u4e0d\u8fdb\u884c\u6355\u83b7\u6216\u8005\u5ffd\u7565\uff08sighold\uff09\u7684\u8bdd\uff0c*nix\u7cfb\u7edf\u5185\u6838\u4f1a\u81ea\u52a8\u4f7f\u8fdb\u7a0b\u9000\u51fa\u7136\u540e\u56de\u6536\u8fdb\u7a0b\u8d44\u6e90\u3002\u90a3\u4e48\u8fdb\u7a0b\u5982\u4f55<code>\u4f18\u96c5<\/code>\u5730\u5904\u7406\u4fe1\u53f7\u5462\uff1f\u901a\u5e38\u9700\u8981\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u5904\u7406\uff1a\u4f8b\u5982\u5ffd\u7565\uff0c<code>sigset( SIGCLD, SIG_IGN )<\/code>\u7236\u8fdb\u7a0b\u5ffd\u7565\u5b50\u8fdb\u7a0b\u9000\u51fa\u4fe1\u53f7\uff0c\u4ea4\u7531\u5185\u6838init\u8fdb\u7a0b\u56de\u6536\u5904\u7406\uff1b\u4f8b\u5982\u963b\u585e\uff0c<code>sighold( SIGCLD )<\/code>\u6682\u65f6\u628a\u5b50\u8fdb\u7a0b\u9000\u51fa\u4fe1\u53f7\u52a0\u5165\u5230\u4fe1\u53f7\u63a9\u7801\u4e2d\uff0c\u7136\u540e\u901a\u8fc7<code>sigrelse( SIGCLD )<\/code>\u5220\u9664\u5e76\u91cd\u65b0\u63a5\u6536\u8be5\u4fe1\u53f7\u3002<\/p>\n<h4>2 \u7a0b\u5e8f\u6f14\u793a<\/h4>\n<p>\u4e0b\u9762\u901a\u8fc7\u4e24\u4e2a\u7a0b\u5e8f\u7b80\u5355\u6f14\u793a\u4e00\u4e2a\u8fdb\u7a0b\u5982\u4f55\u5bf9SIGTERM\u4fe1\u53f7\u8fdb\u884c\u5904\u7406\u3002<\/p>\n<h5>2.1 SIGTERM\u4fe1\u53f7\u5904\u7406\u8fdb\u7a0b\uff1asigterm.c<\/h5>\n<p>\u5148\u4e3a\u4fe1\u53f7SIGTERM\u6ce8\u518c\u4e00\u4e2a\u5904\u7406\u51fd\u6570sTerminate\uff0c\u7136\u540e<code>pause()<\/code>\u51fd\u6570\u4f7f\u5f53\u524d\u8fdb\u7a0b\u4e00\u76f4\u5904\u4e8e\u6302\u8d77\u72b6\u6001\uff0c\u76f4\u5230\u63a5\u6536\u5230\u4e00\u4e2a\u4fe1\u53f7\u624d\u8fd4\u56de\u3002\u901a\u8fc7\u9759\u6001\u53d8\u91cfiExtFlag\u51b3\u5b9a\u662f\u5426\u76f4\u63a5\u5728SIGTERM\u4fe1\u53f7\u5904\u7406\u51fd\u6570sTerminate\u4e2d\u4f7f\u8fdb\u7a0b\u9000\u51fa\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    sigterm.c<\/span>\n<span class=\"cm\"> * @Describe    Use kill function to send a signal to a process with the pid coming from argv[1]<\/span>\n<span class=\"cm\"> * @Author      vfhky 2015.08.03 https:\/\/typecodes.com\/cseries\/unixsigtermkill.html<\/span>\n<span class=\"cm\"> * @Excute      .\/sigterm means sTerminate() do not exit before;  .\/sigterm 1 means sTerminate() containing exit function.<\/span>\n<span class=\"cm\"> * @Return      0<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdlib.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;signal.h&gt;<\/span>\n\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">sTerminate<\/span><span class=\"p\">();<\/span>\n<span class=\"k\">static<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iExtFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sigset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGTERM<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">sTerminate<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Main process_pid=[%d] will sleep!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">getpid<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x31<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">iExtFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/the process will be hung up forever if not receving a signal.<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">pause<\/span><span class=\"p\">();<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/if there is a signal coming, this code will keep going. <\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Main process begin to work!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/let the process being sleeping 10 sec, and exit then.<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">sleep<\/span><span class=\"p\">(<\/span><span class=\"mi\">10<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Main process exit!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * functions to handle the signal of SIGTERM.<\/span>\n<span class=\"cm\"> * if the value of static variable iExtFlag is not equal zero, this func will exit without waiting for the main function to do to other things.<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">void<\/span><span class=\"w\"> <\/span><span class=\"nf\">sTerminate<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Get a SIGTERM signal!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iExtFlag<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Making process exit!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">exit<\/span><span class=\"p\">(<\/span><span class=\"n\">EXIT_SUCCESS<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>2.2 SIGTERM\u4fe1\u53f7\u53d1\u9001\u8fdb\u7a0b\uff1asigkill.c<\/h5>\n<p>\u7a0b\u5e8f\u529f\u80fd\u5f88\u7b80\u5355\uff1a\u901a\u8fc7<code>kill<\/code>\u51fd\u6570\u628a<code>SIGTERM<\/code>\u4fe1\u53f7\u53d1\u9001\u7ed9\u524d\u9762\u7684sigterm\u8fdb\u7a0b\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName    sigkill.c<\/span>\n<span class=\"cm\"> * @Describe    Use kill function to send a signal to a process with the pid from argv[1]<\/span>\n<span class=\"cm\"> * @Author      vfhky 2015.08.03 https:\/\/typecodes.com\/cseries\/unixsigtermkill.html<\/span>\n<span class=\"cm\"> * @Return      success:0    failure: -1<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdlib.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;signal.h&gt;<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">**<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Usage: .\/sigkill process_pid&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;You will send a signal to the process=[%s]!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">kill<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">atoi<\/span><span class=\"p\">(<\/span><span class=\"n\">argv<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]),<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGTERM<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Send over!<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h4>3 \u6267\u884c\u7ed3\u679c<\/h4>\n<p>\u4f7f\u7528GCC\u547d\u4ee4<code>gcc -Wall sigterm.c -o sigterm<\/code>\u548c<code>gcc -Wall sigkill.c -o sigkill<\/code>\u7f16\u8bd1\u751f\u6210\u53ef\u6267\u884c\u6587\u4ef6sigterm\u548csigkill\u3002\n<img alt=\"\u4f7f\u7528gcc\u7f16\u8bd1\u7a0b\u5e8f\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/nixsigtermkill_compile.png\" title=\"\u4f7f\u7528gcc\u7f16\u8bd1\u7a0b\u5e8f\"><\/p>\n<p>\u7136\u540e\u8f93\u5165.\/sigterm\u5f00\u542fSIGTERM\u4fe1\u53f7\u5904\u7406\u8fdb\u7a0bsigterm\uff0c\u754c\u9762\u5728\u663e\u793a\u5982\u4e0b\u6240\u793a\u7684\u5f53\u524d\u8fdb\u7a0bPID\u540e\uff0c\u7531\u4e8e<code>pause<\/code>\u8fdb\u5165hung up\u72b6\u6001\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>Main process_pid=[27346] will sleep!\n<\/code><\/pre><\/div>\n\n<p>\u8fd9\u65f6\uff0c\u5728\u53e6\u4e00\u4e2ashell\u7ec8\u7aef\u4e0a\u8f93\u5165\u5982\u4e0b\u547d\u4ee4\uff0csigkill\u8fdb\u7a0b\u5411sigterm\u8fdb\u7a0b(27346)\u53d1\u9001SIGTERM\u4fe1\u53f7\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"k\">signal<\/span><span class=\"p\">]<\/span><span class=\"c1\"># .\/sigkill 27346<\/span>\n<span class=\"c1\">##### \u4f5c\u7528\u76f8\u5f53\u4e8e\u76f4\u63a5\u901a\u8fc7Linux shell\u7684kill\u547d\u4ee4:<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"k\">signal<\/span><span class=\"p\">]<\/span><span class=\"c1\"># kill 27346<\/span>\n<\/code><\/pre><\/div>\n\n<p>sigterm\u8fdb\u7a0b(27346)\u5728\u63a5\u6536\u5230\u4fe1\u53f7\u540e\uff0c\u4ecepause\u51fd\u6570\u4e2d\u8fd4\u56de\uff0c\u5e76\u8c03\u7528sTerminate\u51fd\u6570\u8fdb\u884c\u5904\u7406\u3002\u51fd\u6570\u5904\u7406\u5b8c\u540e\uff0c\u7ee7\u7eed\u6267\u884cpause\u51fd\u6570\u540e\u9762\u7684\u4ee3\u7801\u3002\u4e8e\u662f\uff0c\u5728sleep 10\u79d2\u540e\uff0c\u6574\u4e2a\u8fdb\u7a0b\u9000\u51fa\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"k\">signal<\/span><span class=\"p\">]<\/span><span class=\"c1\"># .\/sigterm <\/span>\n<span class=\"n\">Main<\/span><span class=\"w\"> <\/span><span class=\"n\">process_pid<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"mi\">27346<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">sleep<\/span><span class=\"o\">!<\/span>\n<span class=\"n\">Get<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">SIGTERM<\/span><span class=\"w\"> <\/span><span class=\"k\">signal<\/span><span class=\"o\">!<\/span>\n<span class=\"n\">Main<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"n\">begin<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">work<\/span><span class=\"o\">!<\/span>\n<span class=\"n\">Main<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"n\">exit<\/span><span class=\"o\">!<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"k\">signal<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6548\u679c\u5982\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"sigterm\u8fdb\u7a0b\u7684\u5bf9SIGTERM\u4fe1\u53f7\u7684\u5904\u7406\u8fc7\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2015\/08\/signalkill_excute.png\" title=\"sigterm\u8fdb\u7a0b\u7684\u5bf9SIGTERM\u4fe1\u53f7\u7684\u5904\u7406\u8fc7\u7a0b\"><\/p>\n<h4>4 \u5176\u5b83\u8bf4\u660e<\/h4>\n<p>\u5bf9\u4e8e\u901a\u8fc7\u6267\u884c<code>.\/sigterm 1<\/code>\u4f7fsigterm\u8fdb\u7a0b\u5728\u63a5\u6536\u5230sigkill\u8fdb\u7a0b\u53d1\u9001\u7684\u4fe1\u53f7\u540e\uff0c\u8fd9\u6837sigterm\u8fdb\u7a0b\u5c31\u4e0d\u4f1a\u8fdb\u5165\u4f11\u7720\u72b6\u6001\u800c\u662f\u76f4\u63a5\u5728sTerminate\u51fd\u6570\u4e2d\u9000\u51fa\u4e86\u3002<\/p>\n<p>\u7531\u4e8e\u8fdb\u7a0b\u5bf9<code>SIGUSR1<\/code>\u548c<code>SIGUSR2<\/code>\u7b49\u5176\u5b83\u4fe1\u53f7\u7684\u5904\u7406\u65b9\u6cd5\u548c<code>SIGTERM<\/code>\u53ef\u4ee5\u5b8c\u5168\u4e00\u6837\uff0c\u8fd9\u91cc\u5c31\u4e0d\u518d\u6f14\u793a\u4e86\uff08\u53ea\u9700\u8981\u628a\u4e24\u4e2a\u7a0b\u5e8f\u4e2d\u7684SIGTERM\u66ff\u6362\u5373\u53ef\uff09\u3002<\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"\u4fe1\u53f7"}},{"@attributes":{"term":"sigterm"}},{"@attributes":{"term":"sigusr1 sigusr2"}}]},{"title":"CentOS\u4e2d\u5c06\u5907\u4efd\u6587\u4ef6\u540c\u6b65\u5230BitBucket\u3001GitHub\u548cCoding\u7684shell\u811a\u672c","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/gitsynbackupshell.html","rel":"alternate"}},"published":"2015-07-07T00:30:00+08:00","updated":"2015-07-07T00:30:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-07-07:\/linux\/gitsynbackupshell.html","summary":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/gitaccountconfig.html\" title=\"\u300aCentOS\u7cfb\u7edfBitBucket\u3001GitHub\u548cCoding\u7b49\u591agit\u8d26\u6237\u7684\u914d\u7f6e\u300b\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u8bb2\u8ff0\u4e86\u5982\u4f55\u5728Linux\u7cfb\u7edf\u4e2d\u914d\u7f6eBitBucket\u3001GitHub\u548cCoding\u8fd9\u4e09\u4e2a\u5e73\u53f0\u7684git\u8d26\u6237\uff0c\u8fd9\u7bc7\u6587\u7ae0\u5c31\u5206\u4eab\u5982\u4f55\u901a\u8fc7shell\u811a\u672c\u5b9a\u65f6\u83b7\u53d6\u81ea\u5df1\u7684CentOS7.1\u670d\u52a1\u5668\u4e0a\u7684\u5907\u4efd\u6587\u4ef6\uff0c\u7136\u540e\u4f7f\u7528git\u547d\u4ee4\u540c\u6b65\u5230\u8fd9\u4e09\u4e2a\u5e73\u53f0\u4ed3\u5e93\u4e0a\u3002<\/p>\n<p><img alt=\"CentOS\u4e2dgit\u540c\u6b65\u7684shell\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/linux_git.png\" title=\"CentOS\u4e2dgit\u540c\u6b65\u7684shell\u811a\u672c\"><\/p>\n","content":"<p>\u5728<a href=\"https:\/\/typecodes.com\/linux\/gitaccountconfig.html\" title=\"\u300aCentOS\u7cfb\u7edfBitBucket\u3001GitHub\u548cCoding\u7b49\u591agit\u8d26\u6237\u7684\u914d\u7f6e\u300b\">\u4e0a\u4e00\u7bc7\u6587\u7ae0<\/a>\u8bb2\u8ff0\u4e86\u5982\u4f55\u5728Linux\u7cfb\u7edf\u4e2d\u914d\u7f6eBitBucket\u3001GitHub\u548cCoding\u8fd9\u4e09\u4e2a\u5e73\u53f0\u7684git\u8d26\u6237\uff0c\u8fd9\u7bc7\u6587\u7ae0\u5c31\u5206\u4eab\u5982\u4f55\u901a\u8fc7shell\u811a\u672c\u5b9a\u65f6\u83b7\u53d6\u81ea\u5df1\u7684CentOS7.1\u670d\u52a1\u5668\u4e0a\u7684\u5907\u4efd\u6587\u4ef6\uff0c\u7136\u540e\u4f7f\u7528git\u547d\u4ee4\u540c\u6b65\u5230\u8fd9\u4e09\u4e2a\u5e73\u53f0\u4ed3\u5e93\u4e0a\u3002<\/p>\n<p><img alt=\"CentOS\u4e2dgit\u540c\u6b65\u7684shell\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/linux_git.png\" title=\"CentOS\u4e2dgit\u540c\u6b65\u7684shell\u811a\u672c\"><\/p>\n\n\n<h5>1 \u529f\u80fd\u9700\u6c42\u63cf\u8ff0<\/h5>\n<p>\u6211\u81ea\u5df1\u4e3a\u8fd9\u4e2ashell\u540c\u6b65\u811a\u672c\u8bbe\u5b9a\u4e86\u4ee5\u4e0b\u4e09\u4e2a\u9700\u6c42\u529f\u80fd\u70b9\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"mf\">1<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u81ea\u52a8\u83b7\u53d6\u6570\u636e\u5e93\u5907\u4efd\u76ee\u548c\u7a0b\u5e8f\u5907\u4efd\u76ee\u5f55\u4e0b\u81ea\u52a8\u751f\u6210\u7684\u6700\u65b0\u7684\u5907\u4efd\u6587\u4ef6<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">2<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u5c06\u83b7\u53d6\u5230\u7684\u6700\u65b0\u7684\u5907\u4efd\u6570\u636e\u5e93\u548c\u7a0b\u5e8f\u6587\u4ef6\u81ea\u52a8\u540c\u6b65\u5230BitBucket<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">GitHub\u548cCoding\u8fd9\u4e09\u4e2aGit\u5e73\u53f0<\/span><span class=\"err\">\uff1b<\/span>\n<span class=\"mf\">3<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u751f\u6210\u76f8\u5e94\u7684\u6267\u884c\u65e5\u5fd7\u6587\u4ef6<\/span><span class=\"err\">\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 shell\u811a\u672c\u7684\u601d\u8def\u548c\u6d41\u7a0b<\/h5>\n<p>\u6839\u636e\u4e0a\u9762\u7684\u9700\u6c42\uff0c\u6574\u7406\u51fa\u811a\u672c\u601d\u8def\uff1a\u5148\u83b7\u53d6\u6700\u65b0\u7684\u5907\u4efd\u6587\u4ef6\uff0c\u7136\u540e\u590d\u5236\u5230\u672c\u5730\u7684BitBucket\u3001GitHub\u548cCoding\u4ed3\u5e93\u76ee\u5f55\u4e0b\uff0c\u7136\u540e\u901a\u8fc7Git\u547d\u4ee4\u540c\u6b65\u5230\u8fdc\u7aef\u4ed3\u5e93\u5373\u53ef\uff0c\u6574\u4e2a\u8fc7\u7a0b\u6267\u884c\u7684\u547d\u4ee4\u4ee5\u8ffd\u52a0\u7684\u65b9\u5f0f\u4fdd\u5b58\u5230\u540c\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\u4e2d\u3002<\/p>\n<p>\u811a\u672c\u7684\u4e3b\u8981\u6d41\u7a0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">1\u3001\u5148\u58f0\u660e\u53d8\u91cf<\/span><span class=\"n n-Quoted\">`Source_DB_Dir`<\/span><span class=\"n\">\u3001<\/span><span class=\"n n-Quoted\">`Source_PRG_Dir`<\/span><span class=\"n\">\u8868\u793a\u81ea\u5df1\u7684CentOS\u670d\u52a1\u5668\u4e0a\u7684\u6570\u636e\u5e93\u548c\u7a0b\u5e8f\u5907\u4efd\u76ee\u5f55\uff0c\u7136\u540e<\/span><span class=\"n n-Quoted\">`Git_Err_Log_Dir`<\/span><span class=\"n\">\u662f\u751f\u6210\u7684\u6267\u884c\u65e5\u5fd7\u76ee\u5f55\u3002<\/span>\n\n<span class=\"n\">2\u3001\u63a5\u7740\u58f0\u660eBitBucket\u3001GitHub\u548cCoding\u8fd93\u4e2aGit\u5e73\u53f0\u7684\u672c\u5730\u4ed3\u5e93\u6240\u5728\u76ee\u5f55\uff08\u4e3b\u8981\u662f\u6570\u636e\u5e93DB\u76ee\u5f55\u548c\u7a0b\u5e8fPRG\u76ee\u5f55\uff09\uff1b<\/span>\n\n<span class=\"n\">3\u3001\u540e\u9762\u7684\u4e09\u4e2a\u51fd\u6570<\/span><span class=\"n n-Quoted\">`ERROR`<\/span><span class=\"n\">\u3001<\/span><span class=\"n n-Quoted\">`NOTICE`<\/span><span class=\"n\">\u548c<\/span><span class=\"n n-Quoted\">`RUNCMD`<\/span><span class=\"n\">\u5bf9\u5e94\u7740\u4e0d\u540c\u7684\u64cd\u4f5c\u547d\u4ee4\u7ea7\u522b\u5e76\u751f\u6210\u76f8\u5e94\u7684\u65e5\u5fd7\u6587\u4ef6\uff1b<\/span>\n\n<span class=\"n\">4\u3001\u51fd\u6570<\/span><span class=\"n n-Quoted\">`Get_last_file`<\/span><span class=\"n\">\u529f\u80fd\u662f\u83b7\u53d6\u8be5\u76ee\u5f55\u4e0b\u9762\u6700\u65b0\u7684\u6587\u4ef6\uff1b<\/span>\n\n<span class=\"n\">5\u3001<\/span><span class=\"n n-Quoted\">`Git_Commit`<\/span><span class=\"n\">\u51fd\u6570\u4e3b\u8981\u4f1a\u5148\u901a\u8fc7<\/span><span class=\"n n-Quoted\">`git pull`<\/span><span class=\"n\">\u83b7\u53d6\u8fdc\u7aef\u4ed3\u5e93\u7684\u6700\u65b0\u5185\u5bb9\u5230\u672c\u5730\u4ed3\u5e93\uff0c\u7136\u540e\u518d\u5c06\u672c\u5730\u4ed3\u5e93\u66f4\u65b0\u7684\u5907\u4efd\u6587\u4ef6\u540c\u6b65\u5230\u8fdc\u7aef\u4ed3\u5e93\u4e2d\u3002<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3 \u5b8c\u6574\u7684\u811a\u672c\u5185\u5bb9<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span>\n<span class=\"normal\">138<\/span>\n<span class=\"normal\">139<\/span>\n<span class=\"normal\">140<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># TypeCodes Git Synchronous Script v1.0.0<\/span>\n<span class=\"c1\"># (c) 2015 vfhky https:\/\/typecodes.com\/linux\/gitsynbackupshell.html<\/span>\n\n\n<span class=\"nv\">Source_DB_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/backups\/data\/mysql\n<span class=\"nv\">Source_PRG_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/backups\/data\/typecodes\n<span class=\"nv\">Git_Err_Log_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/backups\/logs\/git\n\n<span class=\"c1\"># Coding.net<\/span>\n<span class=\"nv\">CodingNet_DB_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/CodingNet\/myblog\/db\n<span class=\"nv\">CodingNet_PRG_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/CodingNet\/myblog\/program\n\n<span class=\"c1\"># BitBucket.org<\/span>\n<span class=\"nv\">BitBucket_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/BitBucket\/myblog\/db\n<span class=\"nv\">BitBucket_PRG_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/BitBucket\/myblog\/program\n\n<span class=\"c1\"># GitHub.com<\/span>\n<span class=\"nv\">GitHub_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/GitHub\/myblog\/db\n<span class=\"nv\">GitHub_PRG_Dir<\/span><span class=\"o\">=<\/span>\/mydata\/GitBang\/GitHub\/myblog\/program\n\n<span class=\"c1\"># Get the newest file name<\/span>\n<span class=\"c1\">#Newest_File=&quot;ls -lrt| tail -n 1 | awk &#39;{print $9}&#39;&quot;<\/span>\n\n<span class=\"c1\"># Space separated list of databases<\/span>\n<span class=\"nv\">PRGNAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;Git_Synchronous&quot;<\/span>\n\n<span class=\"c1\"># Current date format: e.g 20150505_2015<\/span>\n<span class=\"nv\">Current_Date<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span>date<span class=\"w\"> <\/span>+%Y%m%d_%H%M<span class=\"sb\">`<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>USAGE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\ncat<span class=\"w\"> <\/span><span class=\"s\">&lt;&lt; EOF<\/span>\n<span class=\"s\">usage: $0 options<\/span>\n\n<span class=\"s\">This script synchronize the backup files to BitBucket, GitHub and Coding.<\/span>\n\n<span class=\"s\">OPTIONS:<\/span>\n<span class=\"s\">  -h    Show this message<\/span>\n<span class=\"s\">  -n    Number of days to keep backups<\/span>\n<span class=\"s\">EOF<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"nb\">getopts<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;hal:n:&quot;<\/span><span class=\"w\"> <\/span>opt<span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">do<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">case<\/span><span class=\"w\"> <\/span><span class=\"nv\">$opt<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span>\n<span class=\"w\">    <\/span>a<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">PRGNAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;&quot;<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>h<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span>USAGE\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>l<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">PRGNAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$OPTARG<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>n<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">NUMDAYS<\/span><span class=\"o\">=<\/span><span class=\"nv\">$OPTARG<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span><span class=\"se\">\\?<\/span><span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span>USAGE\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>:<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Option -<\/span><span class=\"nv\">$OPTARG<\/span><span class=\"s2\"> requires an argument.&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"p\">&amp;<\/span><span class=\"m\">2<\/span>\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">esac<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>ERROR<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[error] <\/span><span class=\"nv\">$@<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"nv\">$Git_Err_Log_Dir<\/span>\/Git_<span class=\"nv\">$Current_Date<\/span>.log\n<span class=\"w\">  <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>NOTICE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[notice] <\/span><span class=\"nv\">$@<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"nv\">$Git_Err_Log_Dir<\/span>\/Git_<span class=\"nv\">$Current_Date<\/span>.log\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>RUNCMD<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span><span class=\"nv\">$Git_Err_Log_Dir<\/span>\/Git_<span class=\"nv\">$Current_Date<\/span>.log\n<span class=\"w\">  <\/span><span class=\"nb\">eval<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Git commit command function<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>Git_Commit<span class=\"o\">(){<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span>-a<span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Usage: Git_Commit or Git_Commit file_path!&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">elif<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-lt<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>pull<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>add<span class=\"w\"> <\/span>--all<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>commit<span class=\"w\"> <\/span>-m<span class=\"w\"> <\/span><span class=\"s2\">&quot;Backup from TypeCodes.com [Time:<\/span><span class=\"nv\">$Current_Date<\/span><span class=\"s2\">]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>push<span class=\"w\"> <\/span>origin<span class=\"w\"> <\/span>master\n<span class=\"w\">  <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span>RUNCMD<span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>pull<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>add<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>commit<span class=\"w\"> <\/span>-m<span class=\"w\"> <\/span><span class=\"s2\">&quot;Backup from TypeCodes.com [Time:<\/span><span class=\"nv\">$Current_Date<\/span><span class=\"s2\">]&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>git<span class=\"w\"> <\/span>push<span class=\"w\"> <\/span>origin<span class=\"w\"> <\/span>master\n<span class=\"w\">  <\/span><span class=\"k\">fi<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># $1:path  $2:filter file-type<\/span>\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>Get_last_file<span class=\"o\">(){<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span>-a<span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-ne<span class=\"w\"> <\/span><span class=\"m\">2<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Usage: Get_last_file file_path or Get_last_file file_path file_type!&quot;<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">elif<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$#<\/span><span class=\"w\"> <\/span>-lt<span class=\"w\"> <\/span><span class=\"m\">2<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ls<span class=\"w\"> <\/span>-lrt<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span><span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>tail<span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>awk<span class=\"w\"> <\/span><span class=\"s1\">&#39;{print $9}&#39;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">    <\/span>ls<span class=\"w\"> <\/span>-lrt<span class=\"w\"> <\/span><span class=\"nv\">$1<\/span><span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>awk<span class=\"w\"> <\/span><span class=\"s2\">&quot;\/<\/span><span class=\"nv\">$2<\/span><span class=\"s2\">\/&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>tail<span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"m\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>awk<span class=\"w\"> <\/span><span class=\"s1\">&#39;{print $9}&#39;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">fi<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"nv\">$Git_Err_Log_Dir<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>mkdir<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span><span class=\"nv\">$Git_Err_Log_Dir<\/span>\n<span class=\"k\">fi<\/span>\n\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Start copy the db_file to git index&quot;<\/span>\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"m\">0<\/span>\n<span class=\"nv\">Last_Source_DB_File<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>Get_last_file<span class=\"w\"> <\/span><span class=\"nv\">$Source_DB_Dir<\/span><span class=\"k\">)<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"nv\">$Source_DB_Dir<\/span><span class=\"s2\"> &amp;&amp; \\cp -rf <\/span><span class=\"nv\">$Last_Source_DB_File<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$CodingNet_DB_Dir<\/span><span class=\"s2\"> &amp;&amp; \\cp -rf <\/span><span class=\"nv\">$Last_Source_DB_File<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$BitBucket_Dir<\/span><span class=\"s2\"> &amp;&amp; \\cp -rf <\/span><span class=\"nv\">$Last_Source_DB_File<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$GitHub_Dir<\/span><span class=\"s2\">&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Copy db_file failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Start copy the program_file to git index&quot;<\/span>\n<span class=\"nv\">Last_Program_DB_File<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>Get_last_file<span class=\"w\"> <\/span><span class=\"nv\">$Source_PRG_Dir<\/span><span class=\"k\">)<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"nv\">$Source_PRG_Dir<\/span><span class=\"s2\"> &amp;&amp; \\cp -rf <\/span><span class=\"nv\">$Last_Program_DB_File<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$CodingNet_PRG_Dir<\/span><span class=\"s2\"> &amp;&amp; \\cp -rf <\/span><span class=\"nv\">$Last_Program_DB_File<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$BitBucket_PRG_Dir<\/span><span class=\"s2\"> &amp;&amp; \\cp -rf <\/span><span class=\"nv\">$Last_Program_DB_File<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$GitHub_PRG_Dir<\/span><span class=\"s2\">&quot;<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Copy program_file failed!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Start push to CodingNet&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"nv\">$CodingNet_PRG_Dir<\/span><span class=\"s2\"> &amp;&amp; tar -zxf <\/span><span class=\"k\">$(<\/span>Get_last_file<span class=\"w\"> <\/span><span class=\"nv\">$CodingNet_PRG_Dir<\/span><span class=\"w\"> <\/span>.tar.gz<span class=\"k\">)<\/span><span class=\"s2\"> &amp;&amp; cd ..\/ &amp;&amp; Git_Commit&quot;<\/span>\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Start push to BitBucket&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"nv\">$BitBucket_PRG_Dir<\/span><span class=\"s2\"> &amp;&amp; tar -zxf <\/span><span class=\"k\">$(<\/span>Get_last_file<span class=\"w\"> <\/span><span class=\"nv\">$BitBucket_PRG_Dir<\/span><span class=\"w\"> <\/span>.tar.gz<span class=\"k\">)<\/span><span class=\"s2\"> &amp;&amp; cd ..\/ &amp;&amp; Git_Commit&quot;<\/span>\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Start push to GitHub&quot;<\/span>\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"nv\">$GitHub_PRG_Dir<\/span><span class=\"s2\"> &amp;&amp; tar -zxf <\/span><span class=\"k\">$(<\/span>Get_last_file<span class=\"w\"> <\/span><span class=\"nv\">$GitHub_PRG_Dir<\/span><span class=\"w\"> <\/span>.tar.gz<span class=\"k\">)<\/span><span class=\"s2\"> &amp;&amp; cd ..\/ &amp;&amp; Git_Commit&quot;<\/span>\n\n<span class=\"c1\"># exit 0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>4 \u5355\u72ec\u6267\u884c\u8be5shell\u811a\u672c<\/h5>\n<p>\u53ef\u4ee5\u5c06\u8fd9\u4e2a\u811a\u672c\u4fdd\u5b58\u4e3agit.sh\uff0c\u7136\u540e\u4f7f\u7528\u65f6\u901a\u8fc7<code>chmod +x git.sh<\/code>\u547d\u4ee4\u6dfb\u52a0\u6267\u884c\u6743\u9650\uff0c\u6700\u540e\u901a\u8fc7<code>.\/git.sh<\/code>\u6267\u884c\u8be5\u811a\u672c\u5373\u53ef\u3002\u9644\u56fe\u5982\u4e0b\uff1a<\/p>\n<p>\u540c\u6b65\u5230BitBucket\u4ed3\u5e93\u65f6\u7684\u622a\u56fe\uff1a\n<img alt=\"\u540c\u6b65\u5230BitBucket\u4ed3\u5e93\u65f6\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/git_shell_bitbucket_syn.png\" title=\"\u540c\u6b65\u5230BitBucket\u4ed3\u5e93\u65f6\"><\/p>\n<p>\u540c\u6b65\u5230GitHub\u4ed3\u5e93\u65f6\u7684\u622a\u56fe\uff1a\n<img alt=\"\u540c\u6b65\u5230GitHub\u4ed3\u5e93\u65f6\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/git_shell_github_syn.png\" title=\"\u540c\u6b65\u5230GitHub\u4ed3\u5e93\u65f6\"><\/p>\n<h5>5 \u5b9a\u65f6\u6267\u884c\u8be5shell\u811a\u672c<\/h5>\n<p>\u5229\u7528Linux\u7cfb\u7edf\u7684crontab\u5b9a\u65f6\u4efb\u52a1\u5de5\u5177\u6267\u884c\u8be5\u811a\u672c\uff0c\u4f8b\u5982\u4e0b\u9762\u8fd9\u4e2a\u914d\u7f6e\u5c31\u662f\u6bcf\u5929\u51cc\u66681\u70b9\u7684\u65f6\u5019\u6267\u884c\u8be5shell\u811a\u672c\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bak_list<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">crontab<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">e<\/span>\n<span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"nx\">backups<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bak_list<\/span><span class=\"o\">\/<\/span><span class=\"nx\">git<\/span><span class=\"p\">.<\/span><span class=\"nx\">sh<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6839\u636e\u811a\u672c\u4e2d\u7684\u914d\u7f6e\uff0c\u751f\u6210\u7684\u65e5\u5fd7\u7c7b\u4f3c\u4e8e<code>\/mydata\/backups\/logs\/git\/Git_20150706_0100.log<\/code>\uff1a<\/p>\n<p><img alt=\"git\u540c\u6b65\u7684shell\u811a\u672c\u6267\u884c\u751f\u6210\u7684\u65e5\u5fd7\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/git_syn_log.png\" title=\"git\u540c\u6b65\u7684shell\u811a\u672c\u6267\u884c\u751f\u6210\u7684\u65e5\u5fd7\"><\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"git"}},{"@attributes":{"term":"shell"}}]},{"title":"CentOS\u7cfb\u7edfBitBucket\u3001GitHub\u548cCoding\u7b49\u591agit\u8d26\u6237\u7684\u914d\u7f6e","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/gitaccountconfig.html","rel":"alternate"}},"published":"2015-07-05T22:22:00+08:00","updated":"2015-07-05T22:22:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-07-05:\/linux\/gitaccountconfig.html","summary":"<p>\u76ee\u524d\u81ea\u5df1\u4e3b\u8981\u5728BitBucket\u3001GitHub\u548cCoding\u8fd9\u4e09\u4e2aGit\u5e73\u53f0\u521b\u5efa\u4e86\u4e00\u4e9b\u9879\u76ee\uff0c\u6240\u4ee5\u8fd9\u7bc7\u6587\u7ae0\u4ee5\u81ea\u5df1\u7684CentOS7.1\u670d\u52a1\u5668\u4f5c\u4e3a\u793a\u4f8b\uff0c\u8bf4\u8bf4\u5982\u4f55\u5728Linux\u7cfb\u7edf\u4e2d\u914d\u7f6e\u4e0d\u540c\u5e73\u53f0\u7684Git\u4ed3\u5e93\uff0c\u4e5f\u5373\u591agit\u8d26\u6237\u7684\u914d\u7f6e\u3002<\/p>\n<p>\u7c7b\u4f3c\u4e8eWindows\u673a\u5668\u4e0a\u7684git\u914d\u7f6e\u65b9\u6cd5\uff0c\u5728CentOS\u4e0a\u4e5f\u662f\u4e00\u6837\u7684\u3002\u901a\u8fc7\u8bbe\u7f6eGit\u5168\u90e8\u53d8\u91cf\u7684\u914d\u7f6e\u6587\u4ef6<code>~\/.ssh\/config<\/code>\u548c\u5f53\u524d\u5de5\u4f5c\u4ed3\u5e93\u7684\u914d\u7f6e\u6587\u4ef6<code>your_git_project_root\/.git\/config<\/code>\u5373\u53ef\u3002<\/p>\n<p><img alt=\"\u5f53\u524dgit\u5de5\u4f5c\u4ed3\u5e93\u7684.git\u76ee\u5f55\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/project_git_config_dir.png\" title=\"\u5f53\u524dgit\u5de5\u4f5c\u4ed3\u5e93\u7684.git\u76ee\u5f55\"><\/p>\n","content":"<p>\u76ee\u524d\u81ea\u5df1\u4e3b\u8981\u5728BitBucket\u3001GitHub\u548cCoding\u8fd9\u4e09\u4e2aGit\u5e73\u53f0\u521b\u5efa\u4e86\u4e00\u4e9b\u9879\u76ee\uff0c\u6240\u4ee5\u8fd9\u7bc7\u6587\u7ae0\u4ee5\u81ea\u5df1\u7684CentOS7.1\u670d\u52a1\u5668\u4f5c\u4e3a\u793a\u4f8b\uff0c\u8bf4\u8bf4\u5982\u4f55\u5728Linux\u7cfb\u7edf\u4e2d\u914d\u7f6e\u4e0d\u540c\u5e73\u53f0\u7684Git\u4ed3\u5e93\uff0c\u4e5f\u5373\u591agit\u8d26\u6237\u7684\u914d\u7f6e\u3002<\/p>\n<p>\u7c7b\u4f3c\u4e8eWindows\u673a\u5668\u4e0a\u7684git\u914d\u7f6e\u65b9\u6cd5\uff0c\u5728CentOS\u4e0a\u4e5f\u662f\u4e00\u6837\u7684\u3002\u901a\u8fc7\u8bbe\u7f6eGit\u5168\u90e8\u53d8\u91cf\u7684\u914d\u7f6e\u6587\u4ef6<code>~\/.ssh\/config<\/code>\u548c\u5f53\u524d\u5de5\u4f5c\u4ed3\u5e93\u7684\u914d\u7f6e\u6587\u4ef6<code>your_git_project_root\/.git\/config<\/code>\u5373\u53ef\u3002<\/p>\n<p><img alt=\"\u5f53\u524dgit\u5de5\u4f5c\u4ed3\u5e93\u7684.git\u76ee\u5f55\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/project_git_config_dir.png\" title=\"\u5f53\u524dgit\u5de5\u4f5c\u4ed3\u5e93\u7684.git\u76ee\u5f55\"><\/p>\n\n\n<h5>1 Git\u5168\u90e8\u53d8\u91cf\u7684\u914d\u7f6e\u6587\u4ef6\uff1a~\/.ssh\/config<\/h5>\n<p>\u5982\u4e0a\u56fe\u6240\u793a\uff0cgit\u5168\u90e8\u53d8\u91cf\u7684\u914d\u7f6e\u6587\u4ef6<code>~\/.ssh\/config<\/code>\u5728\u5f53\u524d\u7528\u6237\u7684.ssh\u76ee\u5f55\u4e0b\u9762\uff0c\u901a\u8fc7\u914d\u7f6e\u8fd9\u4e2a\u6587\u4ef6\u53ef\u4ee5\u5b9e\u73b0\u5bf9\u591a\u4e2a\u4e0d\u540c\u5e73\u53f0\u7684Git\u8d26\u6237\u8fdb\u884c\u6574\u4f53\u63a7\u5236\u3002\u4f8b\u5982\uff0c\u4f7f\u7528ssh\u8eab\u4efd\u8ba4\u8bc1\u7684RSA\u5bc6\u94a5\u5bf9\u7684\u5b58\u653e\u4f4d\u7f6e\uff1b\u4f7f\u7528<code>git push<\/code>\u7684\u65f6\u5019\uff0c\u5230\u5e95\u662f\u63a8\u9001\u5230BitBucket\u8fd8\u662fGitHub\u6d3b\u7740Coding\u5462\uff1f\u8fd9\u4e9b\u90fd\u662f\u7531\u8fd9\u4e2a\u6587\u4ef6\u63a7\u5236\u7684\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">vim<\/span><span class=\"w\"> <\/span><span class=\"nx\">config<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">Host<\/span><span class=\"w\"> <\/span><span class=\"nx\">github<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">HostName<\/span><span class=\"w\">        <\/span><span class=\"nx\">github<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">User<\/span><span class=\"w\">            <\/span><span class=\"nx\">vfhky<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">IdentityFile<\/span><span class=\"w\">    <\/span><span class=\"o\">~\/<\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"o\">\/<\/span><span class=\"nx\">github_rsa<\/span>\n\n<span class=\"nx\">Host<\/span><span class=\"w\"> <\/span><span class=\"nx\">git<\/span><span class=\"p\">.<\/span><span class=\"nx\">coding<\/span><span class=\"p\">.<\/span><span class=\"nx\">net<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">HostName<\/span><span class=\"w\">        <\/span><span class=\"nx\">git<\/span><span class=\"p\">.<\/span><span class=\"nx\">coding<\/span><span class=\"p\">.<\/span><span class=\"nx\">net<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">User<\/span><span class=\"w\">            <\/span><span class=\"nx\">vfhky<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">IdentityFile<\/span><span class=\"w\">    <\/span><span class=\"o\">~\/<\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"o\">\/<\/span><span class=\"nx\">coding_rsa<\/span>\n\n<span class=\"nx\">Host<\/span><span class=\"w\"> <\/span><span class=\"nx\">bitbucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">org<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">HostName<\/span><span class=\"w\">        <\/span><span class=\"nx\">bitbucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">org<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">User<\/span><span class=\"w\">            <\/span><span class=\"nx\">vfhky<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">IdentityFile<\/span><span class=\"w\">    <\/span><span class=\"o\">~\/<\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bitbucket_rsa<\/span>\n\n<span class=\"nx\">Host<\/span><span class=\"w\"> <\/span><span class=\"nx\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">HostName<\/span><span class=\"w\">        <\/span><span class=\"nx\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">Port<\/span><span class=\"w\">            <\/span><span class=\"mi\">8866<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">User<\/span><span class=\"w\">            <\/span><span class=\"nx\">root<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">IdentityFile<\/span><span class=\"w\">    <\/span><span class=\"o\">~\/<\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"o\">\/<\/span><span class=\"nx\">typecodes_rsa<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u914d\u7f6e\u8981\u70b9\uff1a\n1\u3001<code>Host<\/code>\u8868\u793a\u4e3b\u673a\u540d\uff0c\u5f53\u5728\u6bcf\u4e2a\u5177\u4f53\u7684git\u9879\u76ee\u4e2d\u6267\u884c\u4e86git\u64cd\u4f5c\uff0c\u90a3\u4e48\u4f1a\u5148\u5728\u8fd9\u4e2a\u6587\u4ef6\u91cc\u9762\u6240\u6709\u7684HOST\u540d\u5b57\u4e2d\u8fdb\u884c\u67e5\u627e\u5339\u914d\u51fa\u5bf9\u5e94\u7684SSH\u6216\u8005HTTPS\u5730\u5740\u3002\u901a\u8fc7Host\u522b\u540d\u548c<code>User<\/code>\u7684\u914d\u7f6e\uff0c\u53ef\u4ee5\u5c06\u4e0d\u540c\u7684Git\u8d26\u6237\uff08\u5373\u4f7f\u662f\u540c\u4e00\u5e73\u53f0\u7684\uff09\u7684\u533a\u5206\u5f00\u6765\uff1b2\u3001<code>IdentityFile<\/code>\u8868\u793a\u4f7f\u7528SSH\u767b\u5f55\u8ba4\u8bc1\u65f6\u7684\u79c1\u94a5\u8def\u5f84\uff08\u4e00\u822c\u5728.ssh\u76ee\u5f55\u4e0b\u9762\uff09\uff0c\u5bf9\u5e94\u7684\u516c\u94a5\u590d\u5236\u5230\u5bf9\u5e94\u7684Git\u5e73\u53f0\u4e0a\u3002<\/p>\n<p><img alt=\"Git\u7684ssh\u8eab\u4efd\u8ba4\u8bc1\u7684RSA\u5bc6\u94a5\u5bf9\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/git_ssh_rsa_key.png\" title=\"Git\u7684ssh\u8eab\u4efd\u8ba4\u8bc1\u7684RSA\u5bc6\u94a5\u5bf9\"><\/p>\n<p>\u6ce8\u610f\uff1a\u5982\u524d\u6587<a href=\"https:\/\/typecodes.com\/mix\/codinggitsshbug.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aCoding.net\u4e0agit\u4ed3\u5e93ssh\u5730\u5740\u7684\"bug\"\u300b<\/a>\u6240\u8ff0\uff0c\u5982\u679c\u9519\u8bef\u7684\u914d\u7f6e\u4e86Host\uff0c\u90a3\u4e48\u4f1a\u9020\u6210<code>Permission denied<\/code>\u7684\u9519\u8bef\u3002<\/p>\n<h5>2 \u5f53\u524dGit\u9879\u76ee\u7684\u914d\u7f6e\u6587\u4ef6\uff1ayour_git_project_root\/.git\/config<\/h5>\n<p>\u5c0f\u82821\u4e2d\u662f\u5168\u90e8\u53d8\u91cf\u7684\u914d\u7f6e\uff0c\u90a3\u4e48\u5728\u5bf9\u5e94\u6bcf\u4e2a\u5177\u4f53\u7684Git\u9879\u76ee\u4e2d\uff0c\u8fd8\u9700\u8981\u505a\u4e00\u4e9b\u914d\u7f6e\u3002<\/p>\n<p>vim\u7f16\u8f91\u5f53\u524dGit\u9879\u76ee\u7684\u9690\u85cf\u76ee\u5f55<code>.git<\/code>\u4e0b\u9762\u7684config\u6587\u4ef6\uff08\u4ee5bitbucket\u4e3a\u4f8b\uff09\uff0c\u8fd9\u91cc\u5f88\u5bb9\u6613\u731c\u5230<code>git push origin master<\/code>\u547d\u4ee4\u7684\u542b\u4e49\u548c\u6765\u6e90\u3002\u6211\u4eec\u5728\u672b\u5c3e\u6dfb\u52a0<code>[user]<\/code>\u4fe1\u606f\uff0c\u5305\u62ecname\u548cemail\u3002\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7\u547d\u4ee4<code>git config --global user.name \"your git-account-name\"<\/code>\u548c<code>git config --global user.email \"your git-account-email\"<\/code>\u914d\u7f6e\u3002<\/p>\n<p><img alt=\"\u5f53\u524dGit\u9879\u76ee\u7684\u914d\u7f6e\u6587\u4ef6\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/project_git_config_file.png\" title=\"\u5f53\u524dGit\u9879\u76ee\u7684\u914d\u7f6e\u6587\u4ef6\"><\/p>\n<p>\u5982\u679c<code>[user]<\/code>\u4fe1\u606f\u672a\u914d\u7f6e\uff0c\u5f88\u53ef\u80fd\u5728\u6267\u884cgit\u547d\u4ee4\u65f6\u62a5\u9519\uff1a<\/p>\n<p><img alt=\"[user]\u4fe1\u606f\u672a\u914d\u7f6e\u65f6\u62a5\u9519\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/git_commit_error.png\" title=\"[user]\u4fe1\u606f\u672a\u914d\u7f6e\u65f6\u62a5\u9519\"><\/p>\n<h5>3 \u7ed3\u675f\uff1a\u5173\u4e8eSSH\u767b\u5f55\u8ba4\u8bc1\u7684RSA\u516c\u79c1\u94a5\u7684\u6743\u9650\u8bbe\u7f6e<\/h5>\n<p>\u5c0f\u82821\u4e2d\u5df2\u7ecf\u8bf4\u4e86\uff0cgit\u7684SSH\u767b\u5f55\u8ba4\u8bc1\u7684RSA\u79c1\u94a5\u5b58\u653e\u5728\u5f53\u524d\u7528\u7684<code>.ssh<\/code>\u76ee\u5f55\u4e0b\u9762\u3002\u6211\u4eec\u9700\u8981\u5c3d\u91cf\u964d\u4f4e\u8be5\u79c1\u94a5\u6587\u4ef6\u7684\u6743\u9650\uff0c\u5426\u5219\u4f1a\u62a5<code>Permissions 0644 for '~\/.ssh\/bitbucket_rsa' are too open.<\/code>\u7684\u9519\u8bef\u3002<\/p>\n<p><img alt=\"\u8bbe\u7f6egit\u7684SSH\u767b\u5f55\u8ba4\u8bc1\u7684RSA\u79c1\u94a5\u6743\u9650\u4e3a0600\" src=\"https:\/\/cdn.typecodes.com\/2015\/07\/git_permissions_0644_too_open.png\" title=\"\u8bbe\u7f6egit\u7684SSH\u767b\u5f55\u8ba4\u8bc1\u7684RSA\u79c1\u94a5\u6743\u9650\u4e3a0600\"><\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"git"}}]},{"title":"2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u516b)\uff1aCentOS7\u5b9a\u65f6\u5907\u4efd\u535a\u5ba2\u7a0b\u5e8f\u7684shell\u811a\u672c","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/centos7blogregularbackup.html","rel":"alternate"}},"published":"2015-06-30T22:24:00+08:00","updated":"2015-06-30T22:24:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-30:\/linux\/centos7blogregularbackup.html","summary":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u516b\u7bc7\uff0c\u540c\u65f6\u4e5f\u662f\u8fd9\u4e00\u7cfb\u5217\u6587\u7ae0\u7684\u6700\u540e\u4e00\u7bc7\uff0c\u5185\u5bb9\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u4f7f\u7528shell\u811a\u672c\u5907\u4efd\u670d\u52a1\u5668\u4e0a\u7684\u535a\u5ba2\u7a0b\u5e8f\uff08\u5f53\u7136\u4e5f\u53ef\u4ee5\u662f\u4e3b\u673a\u4e0a\u7684\u4efb\u4f55\u76ee\u5f55\u6216\u8005\u6587\u4ef6\uff09\u3002<\/p>\n<p><img alt=\"CentOS7\u5b9a\u65f6\u5907\u4efd\u535a\u5ba2\u7a0b\u5e8f\u7684shell\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/centos_files_backup_shell.png\" title=\"CentOS7\u5b9a\u65f6\u5907\u4efd\u535a\u5ba2\u7a0b\u5e8f\u7684shell\u811a\u672c\"><\/p>\n","content":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u516b\u7bc7\uff0c\u540c\u65f6\u4e5f\u662f\u8fd9\u4e00\u7cfb\u5217\u6587\u7ae0\u7684\u6700\u540e\u4e00\u7bc7\uff0c\u5185\u5bb9\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u4f7f\u7528shell\u811a\u672c\u5907\u4efd\u670d\u52a1\u5668\u4e0a\u7684\u535a\u5ba2\u7a0b\u5e8f\uff08\u5f53\u7136\u4e5f\u53ef\u4ee5\u662f\u4e3b\u673a\u4e0a\u7684\u4efb\u4f55\u76ee\u5f55\u6216\u8005\u6587\u4ef6\uff09\u3002<\/p>\n<p><img alt=\"CentOS7\u5b9a\u65f6\u5907\u4efd\u535a\u5ba2\u7a0b\u5e8f\u7684shell\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/centos_files_backup_shell.png\" title=\"CentOS7\u5b9a\u65f6\u5907\u4efd\u535a\u5ba2\u7a0b\u5e8f\u7684shell\u811a\u672c\"><\/p>\n\n\n<h5>1 \u4f7f\u7528\u8bf4\u660e<\/h5>\n<p>\u4e0b\u9762\u662fLinux\u7cfb\u7edf\u6587\u4ef6\u7684shell\u5907\u4efd\u811a\u672c\uff0c\u5176\u4e2d\u53c2\u6570<code>BACKUPDIR<\/code>\u8868\u793a\u5907\u4efd\u6587\u4ef6\u7684\u5b58\u50a8\u8def\u5f84\u3001<code>ORGDIR<\/code>\u662f\u5f85\u5907\u4efd\u7684Linux\u6587\u4ef6\u8def\u5f84\u3001<code>NUMDAYS<\/code>\u8868\u793a\u4fdd\u7559\u591a\u5c11\u5929\u4ee5\u5185\u7684\u5907\u4efd\u6587\u4ef6\u3002\u6700\u7ec8\uff0c\u6bcf\u6b21\u6267\u884c\u8fd9\u4e2a\u811a\u672c\u751f\u6210\u7684\u5907\u4efd\u6587\u4ef6\u540d\u7c7b\u4f3c\u4e8e<code>\u7cfb\u7edf\u65e5\u671f\u65f6\u95f4+.tar.gz<\/code>\uff0c\u4f8b\u598220150606.tar.gz\u3002<\/p>\n<p>\u4f7f\u7528\u65f6\u901a\u8fc7<code>chmod +x typecodes_backup.sh<\/code>\u547d\u4ee4\u6dfb\u52a0\u6267\u884c\u6743\u9650\uff0c\u7136\u540e\u53ef\u4ee5\u5229\u7528Linux\u7cfb\u7edf\u7684crontab\u5b9a\u65f6\u4efb\u52a1\u5de5\u5177\u6267\u884c\u8be5\u811a\u672c\u3002\u4f8b\u5982\u4e0b\u9762\u8fd9\u4e2a\u914d\u7f6e\u5c31\u662f\u6bcf\u5929\u51cc\u66681\u70b9\u7684\u65f6\u5019\u6267\u884c\u8be5shell\u811a\u672c\uff0c\u751f\u6210\u535a\u5ba2\u7a0b\u5e8f\u7684\u5907\u4efd\u6587\u4ef6\u3002\u5f53\u7136\u4e5f\u53ef\u4ee5\u624b\u52a8\u6267\u884c\u547d\u4ee4<code>.\/typecodes_backup.sh<\/code>\u5373\u53ef\u7acb\u5373\u751f\u6210\u5907\u4efd\u6587\u4ef6\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bak_list<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">crontab<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">e<\/span>\n<span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"nx\">backups<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bak_list<\/span><span class=\"o\">\/<\/span><span class=\"nx\">typecodes_backup<\/span><span class=\"p\">.<\/span><span class=\"nx\">sh<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 \u811a\u672cmysql_backup.sh\u7684\u5168\u90e8\u5185\u5bb9<\/h5>\n<p>\u5229\u7528<a href=\"https:\/\/typecodes.com\/linux\/centos7mysqlregularbackup.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e03)\uff1aCentOS7\u5b9a\u65f6\u5907\u4efdMySql\u7684shell\u811a\u672c\u300b\">\u524d\u6587<\/a>mysql\u5907\u4efd\u811a\u672c\u7684\u6846\u67b6\uff0c\u5199\u4e86\u53ef\u4ee5\u5907\u4efdLinux\u4e3b\u673a\u4e0a\u7684\u4efb\u610f\u76ee\u5f55\u6216\u8005\u6587\u4ef6\u7684shell\u811a\u672c\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># Blog Program Backup Script v1.0.0(applying to backup any linux directory or files)<\/span>\n<span class=\"c1\"># (c) 2015 vfhky https:\/\/typecodes.com\/linux\/centos7blogregularbackup.html<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/backup\/typcodes-backup.sh<\/span>\n<span class=\"c1\"># https:\/\/coding.net\/u\/vfhky\/p\/shell-tools\/git\/blob\/master\/backup\/typcodes-backup.sh<\/span>\n\n<span class=\"c1\"># Shell Script Alias Name<\/span>\n<span class=\"nv\">PRGNAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;typecodes&quot;<\/span>\n\n<span class=\"c1\"># Backup to this directory<\/span>\n<span class=\"nv\">BACKUPDIR<\/span><span class=\"o\">=<\/span>\/mydata\/backups\/data\/typecodes\n<span class=\"c1\"># The blog programs dir<\/span>\n<span class=\"nv\">ORGDIR<\/span><span class=\"o\">=<\/span>\/usr\/share\/nginx\/html\n\n<span class=\"c1\"># Number of days to keep<\/span>\n<span class=\"nv\">NUMDAYS<\/span><span class=\"o\">=<\/span><span class=\"m\">60<\/span>\n\n<span class=\"c1\"># Some linux command<\/span>\n<span class=\"nv\">FINDCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;find&quot;<\/span>\n<span class=\"nv\">TARCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;tar -zcf&quot;<\/span>\n\n<span class=\"c1\"># Backup date format,e.g 20150505_2010<\/span>\n<span class=\"nv\">BACKUPDATE<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span>date<span class=\"w\"> <\/span>+%Y%m%d_%H%M<span class=\"sb\">`<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>USAGE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\ncat<span class=\"w\"> <\/span><span class=\"s\">&lt;&lt; EOF<\/span>\n<span class=\"s\">usage: $0 options<\/span>\n\n<span class=\"s\">This script backs up the blog programs(or other files you want).<\/span>\n\n<span class=\"s\">OPTIONS:<\/span>\n<span class=\"s\">  -h    Show this message<\/span>\n<span class=\"s\">  -a    Backup all files<\/span>\n<span class=\"s\">  -l    Databases to backup (space seperated)<\/span>\n<span class=\"s\">  -n    Number of days to keep backups<\/span>\n<span class=\"s\">EOF<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"nb\">getopts<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;hal:n:&quot;<\/span><span class=\"w\"> <\/span>opt<span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">do<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">case<\/span><span class=\"w\"> <\/span><span class=\"nv\">$opt<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span>\n<span class=\"w\">    <\/span>a<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">PRGNAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;&quot;<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>h<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span>USAGE\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>l<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">PRGNAME<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$OPTARG<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>n<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">NUMDAYS<\/span><span class=\"o\">=<\/span><span class=\"nv\">$OPTARG<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span><span class=\"se\">\\?<\/span><span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span>USAGE\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>:<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Option -<\/span><span class=\"nv\">$OPTARG<\/span><span class=\"s2\"> requires an argument.&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"p\">&amp;<\/span><span class=\"m\">2<\/span>\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">esac<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>ERROR<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[error] <\/span><span class=\"nv\">$@<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>NOTICE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[notice] <\/span><span class=\"nv\">$@<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>RUNCMD<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">eval<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Sanity checks<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Invalid backup directory&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span>~<span class=\"w\"> <\/span>^<span class=\"o\">[<\/span><span class=\"m\">0<\/span>-9<span class=\"o\">]<\/span>+$<span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Invalid number of days: <\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">elif<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>-eq<span class=\"w\"> <\/span><span class=\"s2\">&quot;0&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Number of days must be greater than zero&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># Lock down permissions<\/span>\n<span class=\"nb\">umask<\/span><span class=\"w\"> <\/span><span class=\"m\">077<\/span>\n\n<span class=\"c1\"># Create directory if needed<\/span>\nRUNCMD<span class=\"w\"> <\/span>mkdir<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span>-v<span class=\"w\"> <\/span><span class=\"nv\">$BACKUPDIR<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Invalid directory: <\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"m\">0<\/span>\n\nRUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;cd <\/span><span class=\"nv\">$ORGDIR<\/span><span class=\"s2\"> &amp;&amp; <\/span><span class=\"nv\">$TARCMD<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$BACKUPDATE<\/span><span class=\"s2\">.tar.gz .\/ || mv <\/span><span class=\"nv\">$BACKUPDATE<\/span><span class=\"s2\">.tar.gz <\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;TypeCodesDump failed!&quot;<\/span>\n\n<span class=\"k\">else<\/span>\n<span class=\"w\">  <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Removing dumps older than <\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\"> days...&quot;<\/span>\n<span class=\"w\">  <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$FINDCMD<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"s2\"> -name \\&quot;*.tar.gz\\&quot; -type f -mtime +<\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\"> -print0 | xargs -0 rm -fv&quot;<\/span>\n\n<span class=\"w\">  <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Listing backup directory contents...&quot;<\/span>\n<span class=\"w\">  <\/span>RUNCMD<span class=\"w\"> <\/span>ls<span class=\"w\"> <\/span>-la<span class=\"w\"> <\/span><span class=\"nv\">$BACKUPDIR<\/span>\n\n<span class=\"w\">  <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Dumping TypeCodes Programs is complete!&quot;<\/span>\n\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># exit 0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>3 Shell Script\u5de5\u5177\u96c6\u5408<\/h5>\n<p>\u540c<a href=\"https:\/\/typecodes.com\/linux\/centos7mysqlregularbackup.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e03)\uff1aCentOS7\u5b9a\u65f6\u5907\u4efdMySql\u7684shell\u811a\u672c\u300b\">\u524d\u6587<\/a>\u7684mysql\u5907\u4efd\u811a\u672c\u4e00\u6837\uff0c\u8fd9\u4e2a\u535a\u5ba2\u7a0b\u5e8f\u5907\u4efd\u811a\u672c\u4e5f\u6258\u7ba1\u5728\u81ea\u5df1\u7684Coding.net\u548cGitHub\u4e0a\uff1a<\/p>\n<p>Coding.net\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/vfhky\/shell-tools\/\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools\/<\/a>\uff1b<\/p>\n<p>GitHub\u5730\u5740\uff1a<a href=\"https:\/\/coding.net\/u\/vfhky\/p\/shell-tools\/git\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/coding.net\/u\/vfhky\/p\/shell-tools\/git<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"shell"}}]},{"title":"2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e03)\uff1aCentOS7\u5b9a\u65f6\u5907\u4efdMySql\u7684shell\u811a\u672c","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/centos7mysqlregularbackup.html","rel":"alternate"}},"published":"2015-06-29T22:41:00+08:00","updated":"2015-06-29T22:41:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-29:\/linux\/centos7mysqlregularbackup.html","summary":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e03\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u4f7f\u7528shell\u811a\u672c\u5907\u4efd\u670d\u52a1\u5668\u4e0a\u7684mysql\u6570\u636e\u5e93\u3002<\/p>\n<p><img alt=\"CentOS7\u5b9a\u65f6\u5907\u4efdMySql\u7684shell\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/centos_mysql_backup.png\" title=\"CentOS7\u5b9a\u65f6\u5907\u4efdMySql\u7684shell\u811a\u672c\"><\/p>\n","content":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e03\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u4f7f\u7528shell\u811a\u672c\u5907\u4efd\u670d\u52a1\u5668\u4e0a\u7684mysql\u6570\u636e\u5e93\u3002<\/p>\n<p><img alt=\"CentOS7\u5b9a\u65f6\u5907\u4efdMySql\u7684shell\u811a\u672c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/centos_mysql_backup.png\" title=\"CentOS7\u5b9a\u65f6\u5907\u4efdMySql\u7684shell\u811a\u672c\"><\/p>\n\n\n<h5>1 \u4f7f\u7528\u8bf4\u660e<\/h5>\n<p>\u4e0b\u9762\u662fMySql\u6570\u636e\u5e93\u7684shell\u5907\u4efd\u811a\u672c\uff0c\u5176\u4e2d\u53c2\u6570<code>DBLIST<\/code>\u8868\u793a\u8981\u5907\u4efd\u7684mysql\u6570\u636e\u5e93\u540d\u79f0\u3001<code>NUMDAYS<\/code>\u8868\u793a\u4fdd\u7559\u591a\u5c11\u5929\u4ee5\u5185\u7684\u5907\u4efd\u6587\u4ef6\u3001<code>MyUSER<\/code>\u548c<code>MyPASS<\/code>\u8868\u793amysql\u6570\u636e\u5e93\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002\u6700\u7ec8\uff0c\u6bcf\u6b21\u6267\u884c\u8fd9\u4e2a\u811a\u672c\u751f\u6210\u7684\u5907\u4efd\u6587\u4ef6\u540d\u7c7b\u4f3c\u4e8e<code>\u7cfb\u7edf\u65e5\u671f\u65f6\u95f4+.sql.gz<\/code>\uff0c\u4f8b\u598220150606.sql.gz\u3002<\/p>\n<p>\u4f7f\u7528\u65f6\u901a\u8fc7<code>chmod +x mysql_backup.sh<\/code>\u547d\u4ee4\u6dfb\u52a0\u6267\u884c\u6743\u9650\uff0c\u7136\u540e\u53ef\u4ee5\u5229\u7528Linux\u7cfb\u7edf\u7684crontab\u5b9a\u65f6\u4efb\u52a1\u5de5\u5177\u6267\u884c\u8be5\u811a\u672c\u3002\u4f8b\u5982\u4e0b\u9762\u8fd9\u4e2a\u914d\u7f6e\u5c31\u662f\u6bcf\u5929\u51cc\u66681\u70b9\u7684\u65f6\u5019\u6267\u884c\u8be5shell\u811a\u672c\uff0c\u751f\u6210mysql\u6570\u636e\u5e93\u7684\u5907\u4efd\u6587\u4ef6\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bak_list<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">crontab<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">e<\/span>\n<span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"nx\">backups<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bak_list<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql_backup<\/span><span class=\"p\">.<\/span><span class=\"nx\">sh<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 \u811a\u672cmysql_backup.sh\u7684\u5168\u90e8\u5185\u5bb9<\/h5>\n<p>\u4ee5\u540e\u7684\u66f4\u65b0\u90fd\u4f1a\u63d0\u4ea4\u5230\u672c\u6587\u5c0f\u82823\u4e2d\u7684\u4e24\u4e2agit\u4ed3\u5e93\u4e2d\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># MySQL Backup Script v1.0.0<\/span>\n<span class=\"c1\"># (c) 2015 vfhky https:\/\/typecodes.com\/linux\/centos7mysqlregularbackup.html<\/span>\n<span class=\"c1\"># Reference: https:\/\/github.com\/chekolyn\/bash-scripts\/blob\/master\/mysql-dbs-backup.sh<\/span>\n<span class=\"c1\"># https:\/\/github.com\/vfhky\/shell-tools\/blob\/master\/backup\/mysql_backup.sh<\/span>\n<span class=\"c1\"># https:\/\/coding.net\/u\/vfhky\/p\/shell-tools\/git\/blob\/master\/backup\/mysql_backup.sh<\/span>\n\n<span class=\"c1\"># Space separated list of databases<\/span>\n<span class=\"nv\">DBLIST<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;your mysql database name witch you want to backup&quot;<\/span>\n\n<span class=\"c1\"># Backup to this directory<\/span>\n<span class=\"nv\">BACKUPDIR<\/span><span class=\"o\">=<\/span>\/mydata\/backups\/data\/mysql\n\n<span class=\"c1\"># Number of days to keep<\/span>\n<span class=\"nv\">NUMDAYS<\/span><span class=\"o\">=<\/span><span class=\"m\">60<\/span>\n\n<span class=\"c1\"># Some linux command and your mysql configure<\/span>\n<span class=\"nv\">FINDCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;find&quot;<\/span>\n<span class=\"nv\">MYSQLCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;mysql&quot;<\/span>\n<span class=\"nv\">MyUSER<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;your mysql user name&quot;<\/span><span class=\"w\">                   <\/span><span class=\"c1\"># USERNAME<\/span>\n<span class=\"nv\">MyPASS<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;your mysql password&quot;<\/span><span class=\"w\">                   <\/span><span class=\"c1\"># PASSWORD <\/span>\n<span class=\"nv\">MyHOST<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;localhost&quot;<\/span><span class=\"w\">          <\/span><span class=\"c1\"># Hostname<\/span>\n<span class=\"nv\">DUMPCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;mysqldump -u<\/span><span class=\"nv\">$MyUSER<\/span><span class=\"s2\"> -h <\/span><span class=\"nv\">$MyHOST<\/span><span class=\"s2\"> -p<\/span><span class=\"nv\">$MyPASS<\/span><span class=\"s2\"> --lock-tables --databases &quot;<\/span>\n<span class=\"nv\">GZIPCMD<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;gzip&quot;<\/span>\n\n<span class=\"c1\"># Backup date format,e.g 20150505_2010<\/span>\n<span class=\"nv\">BACKUPDATE<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span>date<span class=\"w\"> <\/span>+%Y%m%d_%H%M<span class=\"sb\">`<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>USAGE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\ncat<span class=\"w\"> <\/span><span class=\"s\">&lt;&lt; EOF<\/span>\n<span class=\"s\">usage: $0 options<\/span>\n\n<span class=\"s\">This script backs up a list of MySQL databases.<\/span>\n\n<span class=\"s\">OPTIONS:<\/span>\n<span class=\"s\">  -h    Show this message<\/span>\n<span class=\"s\">  -a    Backup all databases<\/span>\n<span class=\"s\">  -l    Databases to backup (space seperated)<\/span>\n<span class=\"s\">  -n    Number of days to keep backups<\/span>\n<span class=\"s\">EOF<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">while<\/span><span class=\"w\"> <\/span><span class=\"nb\">getopts<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;hal:n:&quot;<\/span><span class=\"w\"> <\/span>opt<span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">do<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">case<\/span><span class=\"w\"> <\/span><span class=\"nv\">$opt<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span>\n<span class=\"w\">    <\/span>a<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">DBLIST<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;&quot;<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>h<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span>USAGE\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>l<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">DBLIST<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$OPTARG<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>n<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nv\">NUMDAYS<\/span><span class=\"o\">=<\/span><span class=\"nv\">$OPTARG<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span><span class=\"se\">\\?<\/span><span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span>USAGE\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>:<span class=\"o\">)<\/span>\n<span class=\"w\">      <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;Option -<\/span><span class=\"nv\">$OPTARG<\/span><span class=\"s2\"> requires an argument.&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"p\">&amp;<\/span><span class=\"m\">2<\/span>\n<span class=\"w\">      <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"w\">      <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">esac<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>ERROR<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[error] <\/span><span class=\"nv\">$@<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>NOTICE<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;[notice] <\/span><span class=\"nv\">$@<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">function<\/span><span class=\"w\"> <\/span>RUNCMD<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span>\n<span class=\"w\">  <\/span><span class=\"nb\">eval<\/span><span class=\"w\"> <\/span><span class=\"nv\">$@<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"c1\"># Sanity checks<\/span>\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$DBLIST<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span><span class=\"nv\">DBLIST<\/span><span class=\"o\">=<\/span><span class=\"sb\">`<\/span><span class=\"nv\">$MYSQLCMD<\/span><span class=\"w\"> <\/span>-N<span class=\"w\"> <\/span>-s<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;show databases&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">|<\/span><span class=\"w\"> <\/span>grep<span class=\"w\"> <\/span>-viE<span class=\"w\"> <\/span><span class=\"s1\">&#39;(information_schema|performance_schema|mysql|test)&#39;<\/span><span class=\"sb\">`<\/span>\n\n<span class=\"w\">  <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$DBLIST<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Invalid database list&quot;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">fi<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Invalid backup directory&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span>~<span class=\"w\"> <\/span>^<span class=\"o\">[<\/span><span class=\"m\">0<\/span>-9<span class=\"o\">]<\/span>+$<span class=\"w\"> <\/span><span class=\"o\">]]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Invalid number of days: <\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">elif<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span>-eq<span class=\"w\"> <\/span><span class=\"s2\">&quot;0&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Number of days must be greater than zero&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># Lock down permissions<\/span>\n<span class=\"nb\">umask<\/span><span class=\"w\"> <\/span><span class=\"m\">077<\/span>\n\n<span class=\"c1\"># Create directory if needed<\/span>\nRUNCMD<span class=\"w\"> <\/span>mkdir<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span>-v<span class=\"w\"> <\/span><span class=\"nv\">$BACKUPDIR<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>!<span class=\"w\"> <\/span>-d<span class=\"w\"> <\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;Invalid directory: <\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"s2\">&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\nNOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Dumping MySQL databases...&quot;<\/span>\n<span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"m\">0<\/span>\n\n<span class=\"k\">for<\/span><span class=\"w\"> <\/span>database<span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nv\">$DBLIST<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">do<\/span>\n<span class=\"w\">  <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Dumping <\/span><span class=\"nv\">$database<\/span><span class=\"s2\">...&quot;<\/span>\n<span class=\"w\">  <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$DUMPCMD<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$database<\/span><span class=\"s2\"> | <\/span><span class=\"nv\">$GZIPCMD<\/span><span class=\"s2\"> &gt; <\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"s2\">\/<\/span><span class=\"nv\">$BACKUPDATE<\/span><span class=\"s2\">.sql.gz&quot;<\/span>\n\n<span class=\"w\">  <\/span><span class=\"nv\">RC<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">continue<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">  <\/span><span class=\"k\">fi<\/span>\n<span class=\"k\">done<\/span>\n\n<span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$RC<\/span><span class=\"w\"> <\/span>-gt<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"k\">then<\/span>\n<span class=\"w\">  <\/span>ERROR<span class=\"w\"> <\/span><span class=\"s2\">&quot;MySQLDump failed!&quot;<\/span>\n<span class=\"k\">else<\/span>\n<span class=\"w\">  <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Removing dumps older than <\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\"> days...&quot;<\/span>\n<span class=\"w\">  <\/span>RUNCMD<span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$FINDCMD<\/span><span class=\"s2\"> <\/span><span class=\"nv\">$BACKUPDIR<\/span><span class=\"s2\"> -name \\&quot;*.sql.gz\\&quot; -type f -mtime +<\/span><span class=\"nv\">$NUMDAYS<\/span><span class=\"s2\"> -print0 | xargs -0 rm -fv&quot;<\/span>\n\n<span class=\"w\">  <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;Listing backup directory contents...&quot;<\/span>\n<span class=\"w\">  <\/span>RUNCMD<span class=\"w\"> <\/span>ls<span class=\"w\"> <\/span>-la<span class=\"w\"> <\/span><span class=\"nv\">$BACKUPDIR<\/span>\n\n<span class=\"w\">  <\/span>NOTICE<span class=\"w\"> <\/span><span class=\"s2\">&quot;MySQLDump is complete!&quot;<\/span>\n<span class=\"k\">fi<\/span>\n\n<span class=\"c1\"># exit 0<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>3 Shell Script\u5de5\u5177\u96c6\u5408<\/h5>\n<p>\u76ee\u524d\u628a\u8fd9\u4e2a\u811a\u672c\u6258\u7ba1\u5728\u81ea\u5df1\u7684Coding.net\u548cGitHub\u7684\u4e0a\u4e00\u4e2ashell script\u5de5\u5177\u96c6\u5408\uff0c\u5730\u5740\u5982\u4e0b\uff1a<\/p>\n<p>Coding.net\u5730\u5740\uff1a<a href=\"https:\/\/coding.net\/u\/vfhky\/p\/shell-tools\/git\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/coding.net\/u\/vfhky\/p\/shell-tools\/git<\/a>\u3002<\/p>\n<p>GitHub\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/vfhky\/shell-tools\/\" title=\"\u70b9\u51fb\u67e5\u770b\">https:\/\/github.com\/vfhky\/shell-tools\/<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"mysql"}},{"@attributes":{"term":"shell"}}]},{"title":"Coding.net\u4e0agit\u4ed3\u5e93ssh\u5730\u5740\u7684\"bug\"","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/codinggitsshbug.html","rel":"alternate"}},"published":"2015-06-28T19:34:00+08:00","updated":"2015-06-28T19:34:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-28:\/mix\/codinggitsshbug.html","summary":"<p>\u524d\u6bb5\u65f6\u95f4\u5728\u7528Coding.net\u540c\u6b65git\u4ed3\u5e93\u65f6\uff0c\u80fd\u6b63\u5e38\u4f7f\u7528\u975ehttps\u7684ssh\u534f\u8bae\uff0c\u4f46\u662f\u8fd9\u4e24\u5929\u5728\u81ea\u5df1\u7684Windows\u673a\u5668\u4e0apush\u5185\u5bb9\u65f6\uff0c\u62a5\u5982\u4e0b\u56fe\u4e2d\u7684\u9519\u8bef<code>Permission denied (publickey).<\/code>\uff1a<\/p>\n<p><img alt=\"Coding.net\u62a5\u9519Permission denied (publickey)\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/git_push_error.png\" title=\"Coding.net\u62a5\u9519Permission denied (publickey)\"><\/p>\n","content":"<p>\u524d\u6bb5\u65f6\u95f4\u5728\u7528Coding.net\u540c\u6b65git\u4ed3\u5e93\u65f6\uff0c\u80fd\u6b63\u5e38\u4f7f\u7528\u975ehttps\u7684ssh\u534f\u8bae\uff0c\u4f46\u662f\u8fd9\u4e24\u5929\u5728\u81ea\u5df1\u7684Windows\u673a\u5668\u4e0apush\u5185\u5bb9\u65f6\uff0c\u62a5\u5982\u4e0b\u56fe\u4e2d\u7684\u9519\u8bef<code>Permission denied (publickey).<\/code>\uff1a<\/p>\n<p><img alt=\"Coding.net\u62a5\u9519Permission denied (publickey)\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/git_push_error.png\" title=\"Coding.net\u62a5\u9519Permission denied (publickey)\"><\/p>\n\n\n<h5>1 \u67e5\u627e\u539f\u56e0<\/h5>\n<p>\u67e5\u4e86\u4e0bCoding.net\u4e0a\u8fd9\u4e2a\u9879\u76ee\u7684ssh\u5730\u5740\u5982\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"Coding.net\u4e0a\u8fd9\u4e2a\u9879\u76ee\u7684ssh\u5730\u5740\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/coding_net_ssh_bug.png\" title=\"Coding.net\u4e0a\u8fd9\u4e2a\u9879\u76ee\u7684ssh\u5730\u5740\"><\/p>\n<p>\u5b83\u548c\u6211\u7684Windows\u673a\u5668\u4e0a\u8be5\u9879\u76ee\u7684<code>G:\\php\\htdocs\\CodingNet\\mylnmp\\.git\\config<\/code>\u6587\u4ef6\u4e2d\u7684\u914d\u7f6e\u662f\u4e00\u6837\u7684\uff08<code>url = git@git.coding.net:vfhky\/mylnmp.git<\/code>\uff09\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u672c\u5730git\u9879\u76ee\u7684ssh\u5730\u5740\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/git_client_config.png\" title=\"\u672c\u5730git\u9879\u76ee\u7684ssh\u5730\u5740\"><\/p>\n<p>\u5bf9\u4e8e<code>Permission denied<\/code>\u9519\u8bef\uff0c\u6309\u7406\u8bf4git\u9879\u76ee\u5730\u5740\u6ca1\u95ee\u9898\uff0c\u90a3\u53ea\u80fd\u662fssh\u516c\u79c1\u94a5\u4e0d\u5bf9\u4e86\u3002\u4e8e\u662f\u53c8\u7528Git Bash\u91cd\u65b0\u751f\u6210\u4e86\u4e00\u5bf9SSH\u516c\u79c1\u94a5\uff0c\u5e76\u628a\u516c\u94a5\u653e\u5230Coding.net\u4e0a\u3002\u7ed3\u679c\u6267\u884c<code>git push origin master<\/code>\u63a8\u9001\u547d\u4ee4\u65f6\uff0c\u8fd8\u662f\u62a5\u4e00\u6837\u7684\u9519\u8bef\u3002<\/p>\n<p>\u5728Google\u4e0a\u627e\u4e86\u597d\u4e45\u90fd\u6ca1\u627e\u5230\u539f\u56e0\u6240\u5728\uff0c\u6ca1\u529e\u6cd5\u5c31\u53ea\u80fd\u5c06\u4ed3\u5e93\u5207\u6362\u5230https\u534f\u8bae\u3002\u8fd9\u6837\u6bcf\u6b21push\u6216\u8005pull\u7684\u65f6\u5019\uff0c\u90fd\u9700\u8981\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801\uff0c\u6bd4\u8f83\u9ebb\u70e6\u3002<\/p>\n<h5>2 \u5bf9\u6bd4GitHub\u7684ssh\u5730\u5740\u53d1\u73b0Coding.net\u7684\u201cbug\u201d    \u3010\uff01\uff01\uff01\u7ecf\u6307\u6b63\uff0c\u5176\u5b9e\u662f\u6211\u81ea\u5df1\u5f04\u9519\u4e86\uff01\uff01\uff01\u3011<\/h5>\n<p>\u4e0b\u5348\u65e0\u610f\u4e4b\u95f4\u770b\u5230\u4e86\u81ea\u5df1GitHub\u4e0a\u4e00\u4e2a\u4ed3\u5e93\u7684ssh\u547d\u540d<code>git@github.com:vfhky\/mylnmp.git<\/code>\uff0c\u5b83\u548c\u4e0a\u9762Coding.net\u7684ssh\u5730\u5740\u662f\u6709\u533a\u522b\u7684\u3002Github\u7684ssh\u5730\u5740\u4e2d\u662f\u76f4\u63a5<code>@\u57df\u540d<\/code>\u7684\uff0c\u800cCoding.net\u7684ssh\u5730\u5740\u662f<code>@git.\u57df\u540d<\/code>\u3002<\/p>\n<h5>3 \u89e3\u51b3\u65b9\u6cd5 \u3010\uff01\uff01\uff01\u7ecf\u6307\u6b63\uff0c\u8be5\u65b9\u6cd5\u662f\u9519\u8bef\u7684\uff01\uff01\uff01\u3011<\/h5>\n<p>\u4e8e\u662f\uff0c\u7acb\u9a6c\u5c1d\u8bd5\u628a\u672c\u5730Coding.net\u9879\u76ee\u4e2d\u7684ssh\u5730\u5740\u6539\u6210\u7c7b\u4f3c\u4e8eGitHub\u7684ssh\u5730\u5740\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">####<\/span><span class=\"n\">##Coding<\/span><span class=\"p\">.<\/span><span class=\"n\">net\u4e0agit\u4ed3\u5e93ssh\u5730\u5740\u7684bug<\/span>\n<span class=\"n\">url<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"nv\">@git<\/span><span class=\"p\">.<\/span><span class=\"n\">coding<\/span><span class=\"p\">.<\/span><span class=\"nl\">net<\/span><span class=\"p\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">mylnmp<\/span><span class=\"p\">.<\/span><span class=\"n\">git<\/span>\n<span class=\"n\">\u6539\u6210\u6b63\u786e\u7684ssh\u5730\u5740<\/span>\n<span class=\"n\">url<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"nv\">@coding<\/span><span class=\"p\">.<\/span><span class=\"nl\">net<\/span><span class=\"p\">:<\/span><span class=\"n\">vfhky<\/span><span class=\"o\">\/<\/span><span class=\"n\">mylnmp<\/span><span class=\"p\">.<\/span><span class=\"n\">git<\/span>\n<\/code><\/pre><\/div>\n\n<h5>4 \u7ed3\u675f<\/h5>\n<p>\u6539\u5b8c\u4e4b\u540e\uff0c\u91cd\u65b0\u6267\u884cgit push\u547d\u4ee4\uff0c\u5c31\u6b63\u5e38\u4e86\u3002\u5728\u9047\u5230\u5230\u5982\u4e0b\u9519\u8bef\u65f6\uff0c\u57fa\u672c\u53ef\u4ee5\u4ecegit\u5730\u5740\u548cssh\u516c\u79c1\u94a5\u662f\u5426\u90fd\u6b63\u786e\u8fd9\u4e24\u65b9\u9762\u6765\u89e3\u51b3\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">vfhky<\/span><span class=\"nv\">@VFHKY<\/span><span class=\"o\">-<\/span><span class=\"n\">PC<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">g<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">\/<\/span><span class=\"n\">htdocs<\/span><span class=\"o\">\/<\/span><span class=\"n\">CodingNet<\/span><span class=\"o\">\/<\/span><span class=\"n\">mylnmp<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span><span class=\"w\"> <\/span><span class=\"n\">git<\/span><span class=\"w\"> <\/span><span class=\"n\">push<\/span><span class=\"w\"> <\/span><span class=\"n\">origin<\/span><span class=\"w\"> <\/span><span class=\"n\">master<\/span>\n<span class=\"n\">Permission<\/span><span class=\"w\"> <\/span><span class=\"n\">denied<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">publickey<\/span><span class=\"p\">).<\/span>\n<span class=\"nl\">fatal<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Could<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"k\">read<\/span><span class=\"w\"> <\/span><span class=\"k\">from<\/span><span class=\"w\"> <\/span><span class=\"n\">remote<\/span><span class=\"w\"> <\/span><span class=\"n\">repository<\/span><span class=\"p\">.<\/span>\n\n<span class=\"n\">Please<\/span><span class=\"w\"> <\/span><span class=\"n\">make<\/span><span class=\"w\"> <\/span><span class=\"n\">sure<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"w\"> <\/span><span class=\"n\">have<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">correct<\/span><span class=\"w\"> <\/span><span class=\"n\">access<\/span><span class=\"w\"> <\/span><span class=\"n\">rights<\/span>\n<span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">repository<\/span><span class=\"w\"> <\/span><span class=\"ow\">exists<\/span><span class=\"p\">.<\/span>\n\n<span class=\"n\">vfhky<\/span><span class=\"nv\">@VFHKY<\/span><span class=\"o\">-<\/span><span class=\"n\">PC<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">g<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">\/<\/span><span class=\"n\">htdocs<\/span><span class=\"o\">\/<\/span><span class=\"n\">CodingNet<\/span><span class=\"o\">\/<\/span><span class=\"n\">mylnmp<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">master<\/span><span class=\"p\">)<\/span>\n<span class=\"err\">$<\/span>\n<\/code><\/pre><\/div>\n\n<h5>4 update 2015.07.01 15:12    \u3010\u6b63\u786e\u7684\u89e3\u51b3\u65b9\u6cd5\u3011<\/h5>\n<p>\u7ecf\u8fc7 @yucong sun \u7684\u6307\u6b63\uff0c\u4e4b\u524d\u662f\u7531\u4e8e\u672c\u5730Win\u673a\u4e0a\u7684~\/.ssh\/config\u6587\u4ef6\u914d\u7f6e\u7684\u4e3b\u673a\u540d\u662f<code>Host coding.net<\/code>\u800c\u4e0d\u662f<code>Host git.coding.net<\/code>\uff0c\u6240\u4ee5git\u9879\u76ee\u4e2d\u914d\u7f6e\u7684<code>url = git@git.coding.net:vfhky\/mylnmp.git<\/code>\uff0c\u65e0\u6cd5\u5339\u914d\u5230\u8fd9\u4e2a\u4e3b\u673a\u540dHost\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u53ea\u8981\u628a<code>~\/.ssh\/config<\/code>\u7684<code>Host coding.net<\/code>\u6539\u6210<code>Host git.coding.net<\/code>\u5c31\u884c\u4e86\uff0c\u5982\u4e0b\u56fe\u6240\u793a\u3002\u8fd9\u91cc\u7531\u4e8e\u81ea\u5df1\u7684\u8003\u8651\u4e0d\u5468\uff0c\u8bef\u4f1a\u201c\u5c0f\u7334\u5b50\u201d\u4e86\uff0c\u62b1\u6b49\u62b1\u6b49\uff01<\/p>\n<p><img alt=\"Win\u673a\u4e0a\u7684~\/.ssh\/config\u6587\u4ef6\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/coding_net_git_config.png\" title=\"Win\u673a\u4e0a\u7684~\/.ssh\/config\u6587\u4ef6\u914d\u7f6e\"><\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"git"}},{"@attributes":{"term":"coding"}}]},{"title":"PHP7\u4e2dphp.ini\u3001php-fpm\u548cwww.conf\u7684\u914d\u7f6e","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/php7configure.html","rel":"alternate"}},"published":"2015-06-27T19:05:00+08:00","updated":"2015-06-27T19:05:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-27:\/web\/php7configure.html","summary":"<p>\u6839\u636e\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilephp7.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e94)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5PHP7\u300b<\/a>\u7684<code>configure<\/code>\u7f16\u8bd1\u53c2\u6570\u8bbe\u5b9a\uff0c\u5b89\u88c5\u540e\u7684PHP7\u914d\u7f6e\u6587\u4ef6\u6240\u5728\u8def\u5f84\u662f<code>\/usr\/local\/php7\/etc<\/code>\u3002\u8be5\u76ee\u5f55\u4e0b\u4f1a\u6709\u4e24\u4e2a\u914d\u7f6e\u6587\u4ef6\uff1a<code>php-fpm.conf<\/code>\u548c<code>php.ini<\/code>\uff0c\u4ee5\u53ca\u4e00\u4e2a\u6587\u4ef6\u5939<code>php-fpm.d<\/code>\uff08\u5305\u542b<code>www.conf<\/code>\u6587\u4ef6\uff09\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u5bf9\u8fd9\u4e09\u4e2aPHP\u914d\u7f6e\u6587\u4ef6\u7684\u8fdb\u884c\u7b80\u5355\u8bf4\u660e\uff0c\u5177\u4f53\u7684\u914d\u7f6e\u8fc7\u7a0b\u89c1\u672c\u6587\u672b\u5c3e\u7684<code>\u9644\u5f55<\/code>\u90e8\u5206\u3002<\/p>\n","content":"<p>\u6839\u636e\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilephp7.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e94)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5PHP7\u300b<\/a>\u7684<code>configure<\/code>\u7f16\u8bd1\u53c2\u6570\u8bbe\u5b9a\uff0c\u5b89\u88c5\u540e\u7684PHP7\u914d\u7f6e\u6587\u4ef6\u6240\u5728\u8def\u5f84\u662f<code>\/usr\/local\/php7\/etc<\/code>\u3002\u8be5\u76ee\u5f55\u4e0b\u4f1a\u6709\u4e24\u4e2a\u914d\u7f6e\u6587\u4ef6\uff1a<code>php-fpm.conf<\/code>\u548c<code>php.ini<\/code>\uff0c\u4ee5\u53ca\u4e00\u4e2a\u6587\u4ef6\u5939<code>php-fpm.d<\/code>\uff08\u5305\u542b<code>www.conf<\/code>\u6587\u4ef6\uff09\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u5bf9\u8fd9\u4e09\u4e2aPHP\u914d\u7f6e\u6587\u4ef6\u7684\u8fdb\u884c\u7b80\u5355\u8bf4\u660e\uff0c\u5177\u4f53\u7684\u914d\u7f6e\u8fc7\u7a0b\u89c1\u672c\u6587\u672b\u5c3e\u7684<code>\u9644\u5f55<\/code>\u90e8\u5206\u3002<\/p>\n\n\n<h5>1 \u914d\u7f6ephp.ini<\/h5>\n<p>php.ini\u662fphp\u8fd0\u884c\u6838\u5fc3\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">####<\/span><span class=\"n\">##\u907f\u514dPHP\u4fe1\u606f\u66b4\u9732\u5728http\u5934\u4e2d<\/span>\n<span class=\"n\">expose_php<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">Off<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u907f\u514d\u66b4\u9732php\u8c03\u7528mysql\u7684\u9519\u8bef\u4fe1\u606f<\/span>\n<span class=\"n\">display_errors<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">Off<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u5728\u5173\u95eddisplay_errors\u540e\u5f00\u542fPHP\u9519\u8bef\u65e5\u5fd7<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u8def\u5f84\u5728php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"p\">.<\/span><span class=\"n\">conf\u4e2d\u914d\u7f6e<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"n\">log_errors<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"k\">On<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u8bbe\u7f6ePHP\u7684\u6269\u5c55\u5e93\u8def\u5f84<\/span>\n<span class=\"n\">extension_dir<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;\/usr\/local\/php7\/lib\/php\/extensions\/no-debug-non-zts-20141001\/&quot;<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u8bbe\u7f6ePHP\u7684opcache\u548cmysql\u52a8\u6001\u5e93<\/span>\n<span class=\"n\">zend_extension<\/span><span class=\"o\">=<\/span><span class=\"n\">opcache<\/span><span class=\"p\">.<\/span><span class=\"n\">so<\/span>\n<span class=\"n\">extension<\/span><span class=\"o\">=<\/span><span class=\"n\">mysqli<\/span><span class=\"p\">.<\/span><span class=\"n\">so<\/span>\n<span class=\"n\">extension<\/span><span class=\"o\">=<\/span><span class=\"n\">pdo_mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">so<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u8bbe\u7f6ePHP\u7684\u65f6\u533a<\/span>\n<span class=\"nc\">date<\/span><span class=\"p\">.<\/span><span class=\"n\">timezone<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">PRC<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u5f00\u542fopcache<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">opcache<\/span><span class=\"o\">]<\/span>\n<span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">Determines<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"n\">Zend<\/span><span class=\"w\"> <\/span><span class=\"n\">OPCache<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">enabled<\/span>\n<span class=\"n\">opcache<\/span><span class=\"p\">.<\/span><span class=\"n\">enable<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u8bbe\u7f6ePHP\u811a\u672c\u5141\u8bb8\u8bbf\u95ee\u7684\u76ee\u5f55<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u9700\u8981\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u914d\u7f6e<\/span><span class=\"err\">\uff09<\/span>\n<span class=\"p\">;<\/span><span class=\"n\">open_basedir<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">share<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">html<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 \u914d\u7f6ephp-fpm.conf<\/h5>\n<p>php-fpm.conf\u662f<code>php-fpm<\/code>\u8fdb\u7a0b\u670d\u52a1\u7684\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">######\u8bbe\u7f6e\u9519\u8bef\u65e5\u5fd7\u7684\u8def\u5f84<\/span>\n<span class=\"n\">error_log<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"k\">var<\/span><span class=\"o\">\/<\/span><span class=\"nb\">log<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"o\">\/<\/span><span class=\"n\">error<\/span><span class=\"o\">.<\/span><span class=\"n\">log<\/span>\n<span class=\"c1\">######\u5f15\u5165www.conf\u6587\u4ef6\u4e2d\u7684\u914d\u7f6e<\/span>\n<span class=\"n\">include<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"o\">.<\/span><span class=\"n\">d<\/span><span class=\"o\">\/*.<\/span><span class=\"n\">conf<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3 \u914d\u7f6ewww.conf\uff08\u5728php-fpm.d\u76ee\u5f55\u4e0b\uff09<\/h5>\n<p>www.conf\u8fd9\u662f<code>php-fpm<\/code>\u8fdb\u7a0b\u670d\u52a1\u7684\u6269\u5c55\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">######\u8bbe\u7f6e\u7528\u6237\u548c\u7528\u6237\u7ec4<\/span>\n<span class=\"n\">user<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span>\n<span class=\"n\">group<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span>\n\n<span class=\"c1\">######\u6839\u636enginx.conf\u4e2d\u7684\u914d\u7f6efastcgi_pass unix:\/var\/run\/php-fpm\/php-fpm.sock;\u8bbe\u7f6ePHP\u76d1\u542c<\/span>\n<span class=\"p\">;<\/span><span class=\"w\"> <\/span><span class=\"n\">listen<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mf\">127.0<\/span><span class=\"o\">.<\/span><span class=\"mf\">0.1<\/span><span class=\"p\">:<\/span><span class=\"mi\">9000<\/span><span class=\"w\">   <\/span><span class=\"c1\">#####\u4e0d\u5efa\u8bae\u4f7f\u7528<\/span>\n<span class=\"n\">listen<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"k\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">run<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"o\">.<\/span><span class=\"n\">sock<\/span>\n\n<span class=\"c1\">######\u5f00\u542f\u6162\u65e5\u5fd7<\/span>\n<span class=\"n\">slowlog<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"k\">var<\/span><span class=\"o\">\/<\/span><span class=\"nb\">log<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"o\">\/$<\/span><span class=\"n\">pool<\/span><span class=\"o\">-<\/span><span class=\"n\">slow<\/span><span class=\"o\">.<\/span><span class=\"n\">log<\/span>\n<span class=\"n\">request_slowlog_timeout<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"n\">s<\/span>\n\n<span class=\"c1\">######\u8bbe\u7f6ephp\u7684session\u76ee\u5f55\uff08\u6240\u5c5e\u7528\u6237\u548c\u7528\u6237\u7ec4\u90fd\u662fnginx\uff09<\/span>\n<span class=\"n\">php_value<\/span><span class=\"p\">[<\/span><span class=\"n\">session<\/span><span class=\"o\">.<\/span><span class=\"n\">save_handler<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">files<\/span>\n<span class=\"n\">php_value<\/span><span class=\"p\">[<\/span><span class=\"n\">session<\/span><span class=\"o\">.<\/span><span class=\"n\">save_path<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"k\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">\/<\/span><span class=\"n\">session<\/span>\n<\/code><\/pre><\/div>\n\n<h5>4 \u9644\u5f55<\/h5>\n<p>\u5728\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7nginxhttpsspdy.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u516d)\uff1aNginx\u914d\u7f6eHTTPS\u548cSPDY\u5b9e\u6218\u300b<\/a>\u548c<a href=\"https:\/\/typecodes.com\/web\/centosmysqlconfig.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aCentOS\u7cfb\u7edfMySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf\u300b<\/a>\u5df2\u7ecf\u8bf4\u660e\u4e86\uff0c\u76ee\u524d\u5df2\u7ecf\u628a\u8fd9\u4e2a\u5173\u4e8eNginx\u3001MySQL\u548cPHP\u914d\u7f6e\u7684\u5168\u90e8\u6258\u7ba1\u5728GitHub\u548ccoding.net\u4e0a\uff0c\u5730\u5740\u5982\u4e0b\uff1a<\/p>\n<p>GitHub\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/vfhky\/mylnmp\" title=\"\u70b9\u51fb\u8fdb\u5165\">https:\/\/github.com\/vfhky\/mylnmp<\/a>\uff1b<\/p>\n<p>Coding\u5730\u5740\uff1a<a href=\"https:\/\/coding.net\/u\/vfhky\/p\/mylnmp\/git\" title=\"\u70b9\u51fb\u8fdb\u5165\">https:\/\/coding.net\/u\/vfhky\/p\/mylnmp\/git<\/a>\u3002<\/p>\n<p>\u6700\u540e\uff0c\u9644\u4e0a\u5de5\u7a0b\u7684\u622a\u56fe\uff1a<\/p>\n<p><img alt=\"GitHub\u4e0a\u5173\u4e8eLNMP\u7684\u5e38\u7528\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/github_vfhky_mylnp.png\" title=\"GitHub\u4e0a\u5173\u4e8eLNMP\u7684\u5e38\u7528\u914d\u7f6e\"><\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"php7"}}]},{"title":"2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e94)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5PHP7","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/centos7compilephp7.html","rel":"alternate"}},"published":"2015-06-26T19:16:00+08:00","updated":"2015-06-26T19:16:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-26:\/web\/centos7compilephp7.html","summary":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e94\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u7f16\u8bd1\u5b89\u88c5PHP7\u3002<\/p>\n<h5>1 \u521b\u5efaphp\u7528\u6237\u548c\u7528\u6237\u7ec4\uff0c\u5e76\u5728github\u4e0b\u8f7dphp7\u6e90\u7801<\/h5>\n<p>\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aphp\u4e14<code>\u6ca1\u6709\u767b\u5f55\u6743\u9650<\/code>\u7684\u7528\u6237\u548c\u4e00\u4e2a\u540d\u4e3aphp\u7684\u7528\u6237\u7ec4\uff0c\u7136\u540e\u53bbGitHub\u4e0b\u8f7dphp7\u6e90\u7801\u5305\u3002<\/p>\n\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">groupadd<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">r<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">useradd<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">r<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">g<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"kc\">false<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">d<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">M<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span>\n<span class=\"err\">######<\/span><span class=\"nx\">\u4eceGitHub\u4e0b\u8f7dphp7\u5b89\u88c5\u5305<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">no<\/span><span class=\"o\">-<\/span><span class=\"nx\">check<\/span><span class=\"o\">-<\/span><span class=\"nx\">certificate<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">O<\/span><span class=\"w\"> <\/span><span class=\"nx\">php7<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">.<\/span><span class=\"nx\">zip<\/span><span class=\"w\"> <\/span><span class=\"nx\">https<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/github.com\/php\/php-src\/archive\/master.zip<\/span>\n<span class=\"err\">######<\/span><span class=\"nx\">\u5f00\u59cb\u89e3\u538bphp7\u5305<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">unzip<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">q<\/span><span class=\"w\"> <\/span><span class=\"nx\">php7<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">.<\/span><span class=\"nx\">zip<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span>\n<span class=\"err\">#####<\/span><span class=\"nx\">\u5b89\u88c5\u7f16\u8bd1php7\u65f6\u9700\u8981\u7684\u4f9d\u8d56\u5305<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">libxml2<\/span><span class=\"w\"> <\/span><span class=\"nx\">libxml2<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">openssl<\/span><span class=\"w\"> <\/span><span class=\"nx\">openssl<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">curl<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">libjpeg<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">libpng<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">freetype<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmcrypt<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span>\n<\/code><\/pre>\n\n","content":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e94\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u7f16\u8bd1\u5b89\u88c5PHP7\u3002<\/p>\n<h5>1 \u521b\u5efaphp\u7528\u6237\u548c\u7528\u6237\u7ec4\uff0c\u5e76\u5728github\u4e0b\u8f7dphp7\u6e90\u7801<\/h5>\n<p>\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aphp\u4e14<code>\u6ca1\u6709\u767b\u5f55\u6743\u9650<\/code>\u7684\u7528\u6237\u548c\u4e00\u4e2a\u540d\u4e3aphp\u7684\u7528\u6237\u7ec4\uff0c\u7136\u540e\u53bbGitHub\u4e0b\u8f7dphp7\u6e90\u7801\u5305\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"nx\">\u65b0\u5efaphp\u7528\u6237\u548cphp\u7ec4<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">groupadd<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">r<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">useradd<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">r<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">g<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"o\">\/<\/span><span class=\"kc\">false<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">d<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">M<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span>\n<span class=\"err\">######<\/span><span class=\"nx\">\u4eceGitHub\u4e0b\u8f7dphp7\u5b89\u88c5\u5305<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">no<\/span><span class=\"o\">-<\/span><span class=\"nx\">check<\/span><span class=\"o\">-<\/span><span class=\"nx\">certificate<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">O<\/span><span class=\"w\"> <\/span><span class=\"nx\">php7<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">.<\/span><span class=\"nx\">zip<\/span><span class=\"w\"> <\/span><span class=\"nx\">https<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/github.com\/php\/php-src\/archive\/master.zip<\/span>\n<span class=\"err\">######<\/span><span class=\"nx\">\u5f00\u59cb\u89e3\u538bphp7\u5305<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">unzip<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">q<\/span><span class=\"w\"> <\/span><span class=\"nx\">php7<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">.<\/span><span class=\"nx\">zip<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span>\n<span class=\"err\">#####<\/span><span class=\"nx\">\u5b89\u88c5\u7f16\u8bd1php7\u65f6\u9700\u8981\u7684\u4f9d\u8d56\u5305<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">libxml2<\/span><span class=\"w\"> <\/span><span class=\"nx\">libxml2<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">openssl<\/span><span class=\"w\"> <\/span><span class=\"nx\">openssl<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">curl<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">libjpeg<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">libpng<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">freetype<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmcrypt<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span>\n<\/code><\/pre><\/div>\n\n\n\n<h5>2 PHP7\u7f16\u8bd1\u53c2\u6570\u7684\u914d\u7f6e<\/h5>\n<p>\u51c6\u5907\u5de5\u4f5c\u505a\u597d\u540e\uff0c\u5c31\u5f00\u59cb\u6b63\u5f0f\u914d\u7f6ephp7\u7684\u5b89\u88c5\u660e\u7ec6\u4e86\u3002\u6ce8\u610f\uff0c\u64cd\u4f5c\u65f6\u4e00\u5b9a\u8981\u5148\u628a\u4e0b\u9762\u53cd\u659c\u6760\u201c\\\u201d\u540e\u9762\u6dfb\u52a0\u7684\u6ce8\u91ca\u6587\u5b57\u53bb\u6389\uff01\uff01\uff01<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"cp\">######\u5f00\u59cb\u751f\u6210\u914d\u7f6e\u6587\u4ef6<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"p\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"o\">-<\/span><span class=\"n\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"n\">buildconf<\/span>\n<span class=\"nl\">buildconf<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">checking<\/span><span class=\"w\"> <\/span><span class=\"n\">installation<\/span><span class=\"p\">...<\/span>\n<span class=\"nl\">buildconf<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">autoconf<\/span><span class=\"w\"> <\/span><span class=\"n\">version<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.69<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">ok<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">rebuilding<\/span><span class=\"w\"> <\/span><span class=\"n\">aclocal<\/span><span class=\"p\">.<\/span><span class=\"n\">m4<\/span>\n<span class=\"n\">rebuilding<\/span><span class=\"w\"> <\/span><span class=\"n\">configure<\/span>\n<span class=\"n\">rebuilding<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span><span class=\"o\">\/<\/span><span class=\"n\">php_config<\/span><span class=\"p\">.<\/span><span class=\"n\">h<\/span><span class=\"p\">.<\/span><span class=\"k\">in<\/span>\n<span class=\"cp\">######\u5f00\u59cb\u914d\u7f6e<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"p\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">src<\/span><span class=\"o\">-<\/span><span class=\"n\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"n\">configure<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">prefix<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                              <\/span><span class=\"p\">[<\/span><span class=\"n\">PHP7\u5b89\u88c5\u7684\u6839\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">exec<\/span><span class=\"o\">-<\/span><span class=\"n\">prefix<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">bindir<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">sbindir<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"o\">\/<\/span><span class=\"n\">sbin<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">includedir<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"o\">\/<\/span><span class=\"n\">include<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">libdir<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"o\">\/<\/span><span class=\"n\">lib<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">mandir<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"o\">\/<\/span><span class=\"n\">php<\/span><span class=\"o\">\/<\/span><span class=\"n\">man<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">config<\/span><span class=\"o\">-<\/span><span class=\"n\">file<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">php7<\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">           <\/span><span class=\"p\">[<\/span><span class=\"n\">PHP7\u7684\u914d\u7f6e\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">sock<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">run<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">sock<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">           <\/span><span class=\"p\">[<\/span><span class=\"n\">PHP7\u7684Unix<\/span><span class=\"w\"> <\/span><span class=\"n\">socket\u901a\u4fe1\u6587\u4ef6<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">mcrypt<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">include<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">mhash<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">openssl<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">mysql<\/span><span class=\"o\">=<\/span><span class=\"n\">shared<\/span><span class=\"p\">,<\/span><span class=\"n\">mysqlnd<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                           <\/span><span class=\"p\">[<\/span><span class=\"n\">PHP7\u4f9d\u8d56mysql\u5e93<\/span><span class=\"p\">]<\/span><span class=\"w\">              <\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">mysqli<\/span><span class=\"o\">=<\/span><span class=\"n\">shared<\/span><span class=\"p\">,<\/span><span class=\"n\">mysqlnd<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                          <\/span><span class=\"p\">[<\/span><span class=\"n\">PHP7\u4f9d\u8d56mysql\u5e93<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">pdo<\/span><span class=\"o\">-<\/span><span class=\"n\">mysql<\/span><span class=\"o\">=<\/span><span class=\"n\">shared<\/span><span class=\"p\">,<\/span><span class=\"n\">mysqlnd<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                       <\/span><span class=\"p\">[<\/span><span class=\"n\">PHP7\u4f9d\u8d56mysql\u5e93<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">gd<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">iconv<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">zlib<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">zip<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"kr\">inline<\/span><span class=\"o\">-<\/span><span class=\"n\">optimization<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">disable<\/span><span class=\"o\">-<\/span><span class=\"n\">debug<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">disable<\/span><span class=\"o\">-<\/span><span class=\"n\">rpath<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">shared<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">xml<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">bcmath<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">shmop<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">sysvsem<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">mbregex<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">mbstring<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">ftp<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">gd<\/span><span class=\"o\">-<\/span><span class=\"n\">native<\/span><span class=\"o\">-<\/span><span class=\"n\">ttf<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">pcntl<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">sockets<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">xmlrpc<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">soap<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">without<\/span><span class=\"o\">-<\/span><span class=\"n\">pear<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">gettext<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">session<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                      <\/span><span class=\"p\">[<\/span><span class=\"n\">\u5141\u8bb8php\u4f1a\u8bddsession<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">curl<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                           <\/span><span class=\"p\">[<\/span><span class=\"n\">\u5141\u8bb8curl\u6269\u5c55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">jpeg<\/span><span class=\"o\">-<\/span><span class=\"n\">dir<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">freetype<\/span><span class=\"o\">-<\/span><span class=\"n\">dir<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">opcache<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                      <\/span><span class=\"p\">[<\/span><span class=\"n\">\u4f7f\u7528opcache\u7f13\u5b58<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">enable<\/span><span class=\"o\">-<\/span><span class=\"n\">fastcgi<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"o\">-<\/span><span class=\"n\">user<\/span><span class=\"o\">=<\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                 <\/span><span class=\"p\">[<\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm\u7684\u7528\u6237<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm<\/span><span class=\"o\">-<\/span><span class=\"n\">group<\/span><span class=\"o\">=<\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                <\/span><span class=\"p\">[<\/span><span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">fpm\u7684\u7528\u6237\u7ec4<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">without<\/span><span class=\"o\">-<\/span><span class=\"n\">gdbm<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">disable<\/span><span class=\"o\">-<\/span><span class=\"n\">fileinfo<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6267\u884c\u4e0a\u9762\u7684\u914d\u7f6e\u547d\u4ee4\u7684\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"PHP7\u7f16\u8bd1\u53c2\u6570\u7684\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/compile_php7_config.png\" title=\"PHP7\u7f16\u8bd1\u53c2\u6570\u7684\u914d\u7f6e\"><\/p>\n<h5>3 \u5f00\u59cb\u7f16\u8bd1\u548c\u5b89\u88c5PHP7<\/h5>\n<p>\u76f8\u5bf9\u7f16\u8bd1\u5b89\u88c5MySQL\u7684\u5927\u91cfCPU\u548c\u5185\u5b58\u6d88\u8017\uff0cPHP7\u7684\u7f16\u8bd1\u5b89\u88c5\u8f7b\u677e\u591a\u4e86\uff0c\u6574\u4e2a\u8fc7\u7a0b\u5927\u7ea61\u4e2a\u5c0f\u65f6\u5de6\u53f3\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">clean<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u770b\u5230\u4e0b\u56fe\u5c31\u4ee3\u8868\u5df2\u7ecf\u7f16\u8bd1\u5b89\u88c5\u597d\u4e86PHP7\uff01<\/p>\n<p><img alt=\"\u5b89\u88c5php5.7.7rc\u7684make install\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/compile_php7_sucess.png\" title=\"\u5b89\u88c5php5.7.7rc\u7684make install\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<h5>4 \u9009\u505a\u6b65\u9aa4\uff1a\u6267\u884cmake test\u547d\u4ee4\u8fdb\u884c\u6d4b\u8bd5<\/h5>\n<p>\u8fd9\u662f\u4e00\u4e2a\u975e\u5fc5\u9700\u7684\u64cd\u4f5c\u6b65\u9aa4\uff0c\u6267\u884c<code>make test<\/code>\u547d\u4ee4\u3002<\/p>\n<p><img alt=\"\u5f00\u59cb\u6267\u884cmake test\u547d\u4ee4\u8fdb\u884c\u6d4b\u8bd5\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/php7_make_test.png\" title=\"\u5f00\u59cb\u6267\u884cmake test\u547d\u4ee4\u8fdb\u884c\u6d4b\u8bd5\"><\/p>\n<p>\u6709\u8da3\u7684\u4e00\u4ef6\u4e8b\u5c31\u662f\uff1a\u5728test\u671f\u95f4\uff0c\u4f1a\u548c\u4e00\u4e2aIP\u5730\u574072.52.91.14\u5efa\u7acbtcp\u8fde\u63a5\uff0c\u5b83\u5bf9\u5e94\u7740php\u5b98\u7f51http:\/\/www.php.net\u3002<\/p>\n<p><img alt=\"\u548cPHP\u5b98\u7f51\u4ea4\u4e92\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/php7_make_test_tcp.png\" title=\"\u548cPHP\u5b98\u7f51\u4ea4\u4e92\"><\/p>\n<p>\u6267\u884c\u5b8c<code>make test<\/code>\u547d\u4ee4\u540e\uff0c\u6700\u7ec8\u7684\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"make test\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/php7_make_test_result.png\" title=\"make test\u7ed3\u679c\"><\/p>\n<h5>5  \u67e5\u770b\u7f16\u8bd1\u6210\u529f\u540e\u7684PHP7\u5b89\u88c5\u76ee\u5f55<\/h5>\n<p>\u7531\u4e8e\u9700\u8981\u548cMySQL\u8fdb\u884c\u901a\u4fe1\uff0c\u6240\u4ee5\u9700\u8981\u7279\u522b\u67e5\u770bPHP7\u5b89\u88c5\u540e\u7684lib\u6269\u5c55\u5e93\u76ee\u5f55\uff08\/usr\/local\/php7\/lib\/php\/extensions\/no-debug-non-zts-20141001\/\uff09\u3002\u9700\u8981\u786e\u4fdd\u81f3\u5c11\u5b58\u5728<code>mysqli.so<\/code>\u3001<code>pdo_mysql.so<\/code>\u8fd9\u4e24\u4e2a\u52a8\u6001\u5e93\u6587\u4ef6\uff0c\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n<p><img alt=\"PHP7\u7684lib\u6269\u5c55\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/php7_mysql_lib.png\" title=\"PHP7\u7684lib\u6269\u5c55\u5e93\"><\/p>\n<h5>6 \u5f00\u59cb\u8bbe\u7f6ePHP7\u7684\u914d\u7f6e\u6587\u4ef6php.ini\u3001php-fpm.conf\u3001www.conf\u548cphp-fpm\u811a\u672c<\/h5>\n<p>\u53ef\u4ee5\u7528\u7f16\u8bd1\u540e\u7684\u914d\u7f6e\u6587\u4ef6\u590d\u5236\u5230PHP7\u7684\u914d\u7f6e\u76ee\u5f55\uff08\/usr\/local\/php7\/etc\/\uff09\uff0c\u63a8\u8350\u4f7f\u7528<a href=\"https:\/\/typecodes.com\/web\/php7configure.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aPHP7\u4e2dphp.ini\u3001php-fpm\u548cwww.conf\u7684\u914d\u7f6e\u300b<\/a>\u6587\u4e2d\u6574\u7406\u76843\u4e2aPHP7\u914d\u7f6e\u6587\u4ef6\u548cphp-fpm\u670d\u52a1\u63a7\u5236\u811a\u672c\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"nx\">\u65b9\u6cd5\u4e00<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u76f4\u63a5\u4f7f\u7528\u7f16\u8bd1\u540e\u672a\u7ecf\u4f18\u5316\u5904\u7406\u7684\u914d\u7f6e<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cp<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"p\">.<\/span><span class=\"nx\">ini<\/span><span class=\"o\">-<\/span><span class=\"nx\">production<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"p\">.<\/span><span class=\"nx\">ini<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cp<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">root<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sapi<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fpm<\/span><span class=\"o\">\/<\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"p\">.<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cp<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span><span class=\"p\">.<\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cp<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">www<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span><span class=\"p\">.<\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">www<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span>\n<span class=\"err\">#######<\/span><span class=\"nx\">\u65b9\u6cd5\u4e8c<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u4f7f\u7528https<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/typecodes.com\/web\/php7configure.html\u6587\u4e2d\u7684\u914d\u7f6e <\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">php<\/span><span class=\"p\">.<\/span><span class=\"nx\">ini<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"p\">.<\/span><span class=\"nx\">ini<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">www<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">www<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span>\n<\/code><\/pre><\/div>\n\n<h5>7 \u6dfb\u52a0php\u7684\u73af\u5883\u53d8\u91cf<\/h5>\n<p>\u5c06php\u7f16\u8bd1\u751f\u6210\u7684bin\u76ee\u5f55\u6dfb\u52a0\u5230\u5f53\u524dLinux\u7cfb\u7edf\u7684\u73af\u5883\u53d8\u91cf\u4e2d<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># echo -e &#39;\\nexport PATH=\/usr\/local\/php7\/bin:\/usr\/local\/php7\/sbin:$PATH\\n&#39; &gt;&gt; \/etc\/profile &amp;&amp; source \/etc\/profile<\/span>\n<\/code><\/pre><\/div>\n\n<h5>8 \u8bbe\u7f6ePHP\u65e5\u5fd7\u76ee\u5f55\u548cphp-fpm\u8fdb\u7a0b\u6587\u4ef6\uff08php-fpm.sock\uff09\u76ee\u5f55<\/h5>\n<p>\u5176\u4e2d\uff0c\u8bbe\u7f6ephp-fpm\u8fdb\u7a0b\u76ee\u5f55\u7684\u7528\u6237\u548c\u7528\u6237\u7ec4\u4e3a<code>nginx<\/code>\uff0c\u5e76\u521b\u5efaphp\u4f1a\u8bddsession\u76ee\u5f55\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">#######\u8bbe\u7f6ePHP\u65e5\u5fd7\u76ee\u5f55\u548cphp-fpm\u7684\u8fd0\u884c\u8fdb\u7a0bID\u6587\u4ef6\uff08php-fpm.sock\uff09\u76ee\u5f55<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mkdir -p \/var\/log\/php-fpm\/ &amp;&amp; mkdir -p \/var\/run\/php-fpm &amp;&amp; cd \/var\/run\/ &amp;&amp; chown -R nginx:nginx php-fpm<\/span>\n<span class=\"c1\">#######\u4fee\u6539session\u7684\u76ee\u5f55\u914d\u7f6e<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">etc<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mkdir -p \/var\/lib\/php\/session<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">etc<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chown -R nginx:nginx \/var\/lib\/php<\/span>\n<\/code><\/pre><\/div>\n\n<h5>9 \u8bbe\u7f6ePHP\u5f00\u673a\u542f\u52a8\u4ee5\u53ca\u6d4b\u8bd5\u914d\u7f6e\u6587\u4ef6\u662f\u5426\u6b63\u786e<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">######<\/span><span class=\"nx\">\u914d\u7f6e\u5f00\u673a\u81ea\u542f\u52a8<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u589e\u52a0\u5230\u4e3b\u673asysV\u670d\u52a1<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">chmod<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"nx\">x<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">chkconfig<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">add<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">src<\/span><span class=\"o\">-<\/span><span class=\"nx\">master<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">chkconfig<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"w\"> <\/span><span class=\"nx\">on<\/span>\n<span class=\"err\">######<\/span><span class=\"nx\">\u6d4b\u8bd5PHP\u7684\u914d\u7f6e\u6587\u4ef6\u662f\u5426\u6b63\u786e\u5408\u6cd5<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">sbin<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">t<\/span>\n<span class=\"p\">[<\/span><span class=\"mi\">03<\/span><span class=\"o\">-<\/span><span class=\"nx\">May<\/span><span class=\"o\">-<\/span><span class=\"mi\">2015<\/span><span class=\"w\"> <\/span><span class=\"mi\">17<\/span><span class=\"p\">:<\/span><span class=\"mi\">50<\/span><span class=\"p\">:<\/span><span class=\"mi\">04<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"nx\">NOTICE<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">configuration<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php7<\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span><span class=\"w\"> <\/span><span class=\"nx\">test<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">successful<\/span>\n<\/code><\/pre><\/div>\n\n<h5>10 \u542f\u52a8php\u670d\u52a1<\/h5>\n<p>\u5728\u5b8c\u6210\u4e0a\u9762\u7684\u64cd\u4f5c\u540e\uff0c\u5c31\u53ef\u4ee5\u6b63\u5f0f\u4f7f\u7528php\u670d\u52a1\u4e86\u3002\u542f\u52a8php\u8fdb\u7a0b\u670d\u52a1\u7684\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">sbin<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">service<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"w\"> <\/span><span class=\"nx\">start<\/span>\n<span class=\"nx\">Starting<\/span><span class=\"w\"> <\/span><span class=\"nx\">php<\/span><span class=\"o\">-<\/span><span class=\"nx\">fpm<\/span><span class=\"w\">  <\/span><span class=\"nx\">done<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7136\u540e\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4<code>ps -aux|grep php<\/code>\u67e5\u770b\u662f\u5426\u6210\u529f\uff08\u56fe\u4e2d\u7684php-fpm\u8fdb\u7a0b\u6570\u548c\u8fdb\u7a0b\u7528\u6237nginx\u90fd\u662f\u7531www.conf\u4e2dpm.start_servers\u548cuser\u7684\u503c\u5206\u522b\u51b3\u5b9a\u7684\uff09\uff1a<\/p>\n<p><img alt=\"\u67e5\u770bphp\u670d\u52a1\u8fdb\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/php_process.png\" title=\"\u67e5\u770bphp\u670d\u52a1\u8fdb\u7a0b\"><\/p>\n<h5>11 \u67e5\u770bPHP7\u7248\u672c\u4fe1\u606f<\/h5>\n<p>\u6700\u540e\uff0c\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4<code>php -v<\/code>\u67e5\u770b\u5f53\u524dPHP\u7248\u672c\u4fe1\u606f\uff0c\u56fe\u4e2d\u53ef\u4ee5\u770b\u5230\u5f53\u524dPHP7\u8fd8\u4f7f\u7528\u4e86Zend OPcache\u7f13\u5b58\uff0c\u662f\u56e0\u4e3a\u5728php.ini\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4e86<code>zend_extension=opcache.so<\/code>\u914d\u7f6e\u3002<\/p>\n<p><img alt=\"\u67e5\u770bPHP7\u7248\u672c\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/php7_version_info.png\" title=\"\u67e5\u770bPHP7\u7248\u672c\u4fe1\u606f\"><\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"php7"}}]},{"title":"\u963f\u91cc\u4e91CentOS 7.1\u4f7f\u7528yum\u5b89\u88c5MySql5.6.24","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/centos7yuminstallmysql5.html","rel":"alternate"}},"published":"2015-06-25T09:43:00+08:00","updated":"2015-06-25T09:43:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-25:\/web\/centos7yuminstallmysql5.html","summary":"<p>\u5728\u524d\u9762\u4e24\u7bc7\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u548c<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql5.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySql5.6.24\u300b<\/a>\u4e2d\uff0c\u90fd\u662f\u91c7\u7528\u7f16\u8bd1MySQL\u6e90\u7801\u7684\u65b9\u5f0f\u5b89\u88c5\u7684\uff0c\u8fc7\u7a0b\u76f8\u5bf9\u6bd4\u8f83\u590d\u6742\u3002\u6240\u4ee5\uff0c\u8fd9\u7bc7\u6587\u7ae0\u6f14\u793a\u5982\u4f55\u4f7f\u7528yum\u7684\u65b9\u5f0f\u5b89\u88c5MySql5.6.24\u3002<\/p>\n","content":"<p>\u5728\u524d\u9762\u4e24\u7bc7\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u548c<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql5.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySql5.6.24\u300b<\/a>\u4e2d\uff0c\u90fd\u662f\u91c7\u7528\u7f16\u8bd1MySQL\u6e90\u7801\u7684\u65b9\u5f0f\u5b89\u88c5\u7684\uff0c\u8fc7\u7a0b\u76f8\u5bf9\u6bd4\u8f83\u590d\u6742\u3002\u6240\u4ee5\uff0c\u8fd9\u7bc7\u6587\u7ae0\u6f14\u793a\u5982\u4f55\u4f7f\u7528yum\u7684\u65b9\u5f0f\u5b89\u88c5MySql5.6.24\u3002<\/p>\n\n\n<h5>1 \u5e38\u89c4\u9519\u8bef\u7684yum\u5b89\u88c5\u65b9\u6cd5\uff1a<\/h5>\n<p>\u5728<a href=\"https:\/\/typecodes.com\/web\/aliyuncentos6creatlnmp.html\" title=\"\u300a\u963f\u91cc\u4e91CentOS 6.5\u642d\u5efaLNMP\u73af\u5883\uff08\u975e\u4e00\u952e\u811a\u672c\uff09\u300b\">\u524d\u6587<\/a>\u4e2d\u8bb0\u8ff0\u4e86CentOS 6.5\u7cfb\u7edf\u4e2d\u901a\u8fc7yum\u65b9\u5f0f\u5feb\u901f\u5730\u642d\u5efa\u4e86LNMP\u73af\u5883\uff0c\u90a3\u4e48\u662f\u5426\u4e5f\u80fd\u5728CentOS 7\u6216CentOS 7.1\u7cfb\u7edf\u4e2d\u4f9d\u846b\u82a6\u753b\u74e2\u5b89\u88c5MySql5.6.24\u5462\uff1f\u7b54\u6848\u662f\u5426\u5b9a\u7684\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"o\">-<\/span><span class=\"nx\">server<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span>\n<span class=\"o\">.....................<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"o\">...<\/span><span class=\"p\">.<\/span><span class=\"nx\">\u7701\u7565\u90e8\u5206\u5b89\u88c5\u8fc7\u7a0b<\/span><span class=\"o\">...<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">.....................<\/span><span class=\"err\">\u3002<\/span>\n\n<span class=\"nx\">Installed<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">mariadb<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">5.5.41<\/span><span class=\"o\">-<\/span><span class=\"mi\">2<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7_0<\/span><span class=\"w\">                                                 <\/span><span class=\"nx\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">5.5.41<\/span><span class=\"o\">-<\/span><span class=\"mi\">2<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7_0<\/span>\n\n<span class=\"nx\">Dependency<\/span><span class=\"w\"> <\/span><span class=\"nx\">Installed<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">keyutils<\/span><span class=\"o\">-<\/span><span class=\"nx\">libs<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">1.5.8<\/span><span class=\"o\">-<\/span><span class=\"mi\">3<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"w\">    <\/span><span class=\"nx\">krb5<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">1.12.2<\/span><span class=\"o\">-<\/span><span class=\"mi\">14<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"w\">      <\/span><span class=\"nx\">libcom_err<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">1.42.9<\/span><span class=\"o\">-<\/span><span class=\"mi\">7<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"w\">    <\/span><span class=\"nx\">libselinux<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">2.2.2<\/span><span class=\"o\">-<\/span><span class=\"mi\">6<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"w\">   <\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">libsepol<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">2.1.9<\/span><span class=\"o\">-<\/span><span class=\"mi\">3<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"w\">         <\/span><span class=\"nx\">libverto<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">0.2.5<\/span><span class=\"o\">-<\/span><span class=\"mi\">4<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"w\">    <\/span><span class=\"nx\">openssl<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">1.0.1<\/span><span class=\"nx\">e<\/span><span class=\"o\">-<\/span><span class=\"mi\">42<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"m m-Double\">.4<\/span><span class=\"w\">    <\/span><span class=\"nx\">pcre<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">8.32<\/span><span class=\"o\">-<\/span><span class=\"mi\">14<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"w\">         <\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">zlib<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"m m-Double\">1.2.7<\/span><span class=\"o\">-<\/span><span class=\"mi\">13<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span>\n\n<span class=\"nx\">Complete<\/span><span class=\"p\">!<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u4ece\u4e0a\u9762\u7684\u5b89\u88c5\u7ed3\u679c\u53ef\u4ee5\u770b\u51fa\uff0c\u6ca1\u6709\u5b89\u88c5mysql\u6570\u636e\u5e93\uff0c\u800c\u662f\u5b89\u88c5\u4e86mariadb\u6570\u636e\uff01\u56e0\u4e3a\u5728CentOS 7\u548cCentOS 7.1\u7cfb\u7edf\u4e2d\uff0c\u9ed8\u8ba4\u5b89\u88c5\u7684mysql\u662f\u5b83\u7684\u5206\u652fmariadb\u3002\u8fd9\u91cc\u5f15\u7528\u4e0b\u767e\u5ea6\u767e\u79d1\u5173\u4e8emariadb\u7684\u63cf\u8ff0\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>MariaDB\u6570\u636e\u5e93\u7ba1\u7406\u7cfb\u7edf\u662fMySQL\u7684\u4e00\u4e2a\u5206\u652f\uff0c\u4e3b\u8981\u7531\u5f00\u6e90\u793e\u533a\u5728\u7ef4\u62a4\uff0c\u91c7\u7528GPL\u6388\u6743\u8bb8\u53ef MariaDB\u7684\u76ee\u7684\u662f\u5b8c\u5168\u517c\u5bb9MySQL\uff0c\u5305\u62ecAPI\u548c\u547d\u4ee4\u884c\uff0c\u4f7f\u4e4b\u80fd\u8f7b\u677e\u6210\u4e3aMySQL\u7684\u4ee3\u66ff\u54c1\u3002\n<\/code><\/pre><\/div>\n\n<p>\u56e0\u6b64\uff0c\u4e0b\u9762\u8fd9\u4e9b\u6b63\u5e38\u7684MySQL\u64cd\u4f5c\u90fd\u662f\u65e0\u6548\u7684\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">#######\u65e0\u6cd5\u628amysql\u670d\u52a1\u52a0\u5165\u7cfb\u7edf\u542f\u52a8<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chkconfig mysqld on<\/span>\n<span class=\"n\">error<\/span><span class=\"w\"> <\/span><span class=\"n\">reading<\/span><span class=\"w\"> <\/span><span class=\"n\">information<\/span><span class=\"w\"> <\/span><span class=\"n\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">service<\/span><span class=\"w\"> <\/span><span class=\"n\">mysqld<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">such<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"n\">directory<\/span>\n<span class=\"c1\">#######\u542f\u52a8\u4e0d\u4e86mysql<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service mysqld start<\/span>\n<span class=\"n\">Redirecting<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"n\">systemctl<\/span><span class=\"w\"> <\/span><span class=\"n\">start<\/span><span class=\"w\">  <\/span><span class=\"n\">mysqld<\/span><span class=\"o\">.<\/span><span class=\"n\">service<\/span>\n<span class=\"n\">Failed<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">issue<\/span><span class=\"w\"> <\/span><span class=\"n\">method<\/span><span class=\"w\"> <\/span><span class=\"n\">call<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Unit<\/span><span class=\"w\"> <\/span><span class=\"n\">mysqld<\/span><span class=\"o\">.<\/span><span class=\"n\">service<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"nb\">load<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">such<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"n\">directory<\/span><span class=\"o\">.<\/span>\n<span class=\"c1\">#######\u6ca1\u6709\u5b89\u88c5mysql\u76f8\u5173\u5305<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># rpm -qa |grep mysql<\/span>\n<span class=\"n\">php<\/span><span class=\"o\">-<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.4<\/span><span class=\"o\">.<\/span><span class=\"mi\">16<\/span><span class=\"o\">-<\/span><span class=\"mf\">23.<\/span><span class=\"n\">el7_0<\/span><span class=\"o\">.<\/span><span class=\"mf\">3.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 \u6b63\u786e\u7684\u5b89\u88c5\u65b9\u6cd5\uff1a<\/h5>\n<p>\u4f17\u6240\u5468\u77e5\uff0cLinux\u7cfb\u7edf\u81ea\u5e26\u7684repo\u662f\u4e0d\u4f1a\u81ea\u52a8\u66f4\u65b0\u6bcf\u4e2a\u8f6f\u4ef6\u7684\u6700\u65b0\u7248\u672c\uff08\u57fa\u672c\u90fd\u662f\u6bd4\u8f83\u9760\u540e\u7684\u7a33\u5b9a\u7248\uff09\uff0c\u6240\u4ee5\u65e0\u6cd5\u901a\u8fc7yum\u65b9\u5f0f\u5b89\u88c5MySQL\u7684\u9ad8\u7ea7\u7248\u672c\u3002\u6240\u4ee5\u6211\u4eec\u9700\u8981\u5148\u5b89\u88c5\u5e26\u6709\u5f53\u524d\u53ef\u7528\u7684mysql5\u7cfb\u5217\u793e\u533a\u7248\u8d44\u6e90\u7684rpm\u5305\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"nx\">\u5b89\u88c5rpm\u5305<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">rpm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">Uvh<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/dev.mysql.com\/get\/mysql-community-release-el7-5.noarch.rpm<\/span>\n<span class=\"nx\">Retrieving<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/dev.mysql.com\/get\/mysql-community-release-el7-5.noarch.rpm<\/span>\n<span class=\"nx\">Preparing<\/span><span class=\"o\">...<\/span><span class=\"w\">                          <\/span><span class=\"err\">#################################<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Updating<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"nx\">installing<\/span><span class=\"o\">...<\/span>\n<span class=\"w\">   <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"nx\">mysql<\/span><span class=\"o\">-<\/span><span class=\"nx\">community<\/span><span class=\"o\">-<\/span><span class=\"nx\">release<\/span><span class=\"o\">-<\/span><span class=\"nx\">el7<\/span><span class=\"o\">-<\/span><span class=\"mi\">5<\/span><span class=\"w\">    <\/span><span class=\"err\">#################################<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"mi\">100<\/span><span class=\"o\">%<\/span><span class=\"p\">]<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8fd9\u65f6\u67e5\u770b\u5f53\u524d\u53ef\u7528\u7684mysql\u5b89\u88c5\u8d44\u6e90\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># yum repolist enabled | grep &quot;mysql.*-community.*&quot;<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">connectors<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">Connectors<\/span><span class=\"w\"> <\/span><span class=\"n\">Community<\/span><span class=\"w\">                 <\/span><span class=\"mi\">14<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">      <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">Tools<\/span><span class=\"w\"> <\/span><span class=\"n\">Community<\/span><span class=\"w\">                      <\/span><span class=\"mi\">17<\/span>\n<span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">          <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.6<\/span><span class=\"w\"> <\/span><span class=\"n\">Community<\/span><span class=\"w\"> <\/span><span class=\"n\">Server<\/span><span class=\"w\">                <\/span><span class=\"mi\">139<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u4ece\u4e0a\u9762\u7684\u5217\u8868\u53ef\u4ee5\u770b\u51fa\uff0c<code>mysql56-community\/x86_64<\/code>\u548c<code>MySQL 5.6 Community Server<\/code>\u53ef\u4ee5\u4f7f\u7528\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u76f4\u63a5\u7528yum\u65b9\u5f0f\u5b89\u88c5\u4e86MySQL5.6\u7248\u672c\u4e86\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># yum -y install mysql-community-server<\/span>\n<span class=\"n\">Loaded<\/span><span class=\"w\"> <\/span><span class=\"n\">plugins<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">axelget<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">langpacks<\/span>\n<span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">base<\/span>\n<span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">epel<\/span>\n<span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">extras<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">Failed<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"nb\">load<\/span><span class=\"w\"> <\/span><span class=\"n\">module<\/span><span class=\"w\"> <\/span><span class=\"n\">fastestmirror<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">module<\/span><span class=\"w\"> <\/span><span class=\"n\">named<\/span><span class=\"w\"> <\/span><span class=\"n\">fastestmirror<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">repomd<\/span><span class=\"o\">.<\/span><span class=\"n\">xml<\/span><span class=\"w\">                                                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">update<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">connectors<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">successfully<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">Failed<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"nb\">load<\/span><span class=\"w\"> <\/span><span class=\"n\">module<\/span><span class=\"w\"> <\/span><span class=\"n\">fastestmirror<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">module<\/span><span class=\"w\"> <\/span><span class=\"n\">named<\/span><span class=\"w\"> <\/span><span class=\"n\">fastestmirror<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">repomd<\/span><span class=\"o\">.<\/span><span class=\"n\">xml<\/span><span class=\"w\">                                                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">update<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">successfully<\/span>\n<span class=\"p\">(<\/span><span class=\"n\">Failed<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"nb\">load<\/span><span class=\"w\"> <\/span><span class=\"n\">module<\/span><span class=\"w\"> <\/span><span class=\"n\">fastestmirror<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">module<\/span><span class=\"w\"> <\/span><span class=\"n\">named<\/span><span class=\"w\"> <\/span><span class=\"n\">fastestmirror<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">repomd<\/span><span class=\"o\">.<\/span><span class=\"n\">xml<\/span><span class=\"w\">                                                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">update<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">successfully<\/span>\n<span class=\"n\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">metadata<\/span><span class=\"w\"> <\/span><span class=\"n\">available<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">updates<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">connectors<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                                                                                                                           <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                                                                                                                               <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.5<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">connectors<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">primary_db<\/span><span class=\"w\">                                                                                             <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">7.3<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">primary_db<\/span><span class=\"w\">                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">83<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">01<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"n\">FAILED<\/span><span class=\"w\">                                          <\/span><span class=\"o\">==============================================<\/span><span class=\"w\">        <\/span><span class=\"p\">]<\/span><span class=\"w\">  <\/span><span class=\"mi\">19<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"o\">\/<\/span><span class=\"n\">s<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">92<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\"> <\/span><span class=\"n\">ETA<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">repo<\/span><span class=\"o\">.<\/span><span class=\"n\">mysql<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">yum<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">el<\/span><span class=\"o\">\/<\/span><span class=\"mi\">7<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">repodata<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3301<\/span><span class=\"n\">d2eb425f300dec5a46c4201d08f2cf9232a6<\/span><span class=\"o\">-<\/span><span class=\"n\">primary<\/span><span class=\"o\">.<\/span><span class=\"n\">sqlite<\/span><span class=\"o\">.<\/span><span class=\"n\">bz2<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">Errno<\/span><span class=\"w\"> <\/span><span class=\"mi\">12<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">Timeout<\/span><span class=\"w\"> <\/span><span class=\"n\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">repo<\/span><span class=\"o\">.<\/span><span class=\"n\">mysql<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">yum<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">el<\/span><span class=\"o\">\/<\/span><span class=\"mi\">7<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">repodata<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3301<\/span><span class=\"n\">d2eb425f300dec5a46c4201d08f2cf9232a6<\/span><span class=\"o\">-<\/span><span class=\"n\">primary<\/span><span class=\"o\">.<\/span><span class=\"n\">sqlite<\/span><span class=\"o\">.<\/span><span class=\"n\">bz2<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">28<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;Operation too slow. Less than 1000 bytes\/sec transferred the last 3 seconds&#39;<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">Trying<\/span><span class=\"w\"> <\/span><span class=\"n\">other<\/span><span class=\"w\"> <\/span><span class=\"n\">mirror<\/span><span class=\"o\">.<\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">3<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">tools<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"n\">primary_db<\/span><span class=\"w\">                                                                                                  <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">15<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">Resolving<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependencies<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"p\">(<\/span><span class=\"n\">x86<\/span><span class=\"o\">-<\/span><span class=\"mi\">64<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"p\">(<\/span><span class=\"n\">x86<\/span><span class=\"o\">-<\/span><span class=\"mi\">64<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">DBI<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleted<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleting<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"p\">(<\/span><span class=\"n\">x86<\/span><span class=\"o\">-<\/span><span class=\"mi\">64<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">RPC<\/span><span class=\"p\">::<\/span><span class=\"n\">PlServer<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mf\">0.2001<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">RPC<\/span><span class=\"p\">::<\/span><span class=\"n\">PlClient<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mf\">0.2000<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleted<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"p\">(<\/span><span class=\"n\">x86<\/span><span class=\"o\">-<\/span><span class=\"mi\">64<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleting<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">Net<\/span><span class=\"p\">::<\/span><span class=\"n\">Daemon<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mf\">0.13<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">Net<\/span><span class=\"p\">::<\/span><span class=\"n\">Daemon<\/span><span class=\"p\">::<\/span><span class=\"n\">Test<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">Net<\/span><span class=\"p\">::<\/span><span class=\"n\">Daemon<\/span><span class=\"p\">::<\/span><span class=\"n\">Log<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">Compress<\/span><span class=\"p\">::<\/span><span class=\"n\">Zlib<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleted<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">obsoleting<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">IO<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">Compress<\/span><span class=\"p\">::<\/span><span class=\"n\">Raw<\/span><span class=\"p\">::<\/span><span class=\"n\">Zlib<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.061<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">IO<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Processing<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"p\">(<\/span><span class=\"n\">Compress<\/span><span class=\"p\">::<\/span><span class=\"n\">Raw<\/span><span class=\"p\">::<\/span><span class=\"n\">Bzip2<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.061<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">package<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">IO<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Net<\/span><span class=\"o\">-<\/span><span class=\"n\">Daemon<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">0.48<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Bzip2<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">---&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Zlib<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"o\">--&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">Finished<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependency<\/span><span class=\"w\"> <\/span><span class=\"n\">Resolution<\/span>\n\n<span class=\"n\">Dependencies<\/span><span class=\"w\"> <\/span><span class=\"n\">Resolved<\/span>\n\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\">                                         <\/span><span class=\"n\">Arch<\/span><span class=\"w\">                           <\/span><span class=\"n\">Version<\/span><span class=\"w\">                                <\/span><span class=\"n\">Repository<\/span><span class=\"w\">                                 <\/span><span class=\"n\">Size<\/span>\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"n\">Installing<\/span><span class=\"p\">:<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"w\">                          <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                         <\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                           <\/span><span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                          <\/span><span class=\"mi\">19<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"w\">     <\/span><span class=\"n\">replacing<\/span><span class=\"w\">  <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"w\">                           <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                         <\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                           <\/span><span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                         <\/span><span class=\"mf\">3.4<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"w\">     <\/span><span class=\"n\">replacing<\/span><span class=\"w\">  <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"w\">                            <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                         <\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                           <\/span><span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                         <\/span><span class=\"mf\">2.0<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"w\">     <\/span><span class=\"n\">replacing<\/span><span class=\"w\">  <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"w\">                          <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                         <\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                           <\/span><span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                          <\/span><span class=\"mi\">58<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">dependencies<\/span><span class=\"p\">:<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"w\">                          <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                         <\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                           <\/span><span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"w\">                         <\/span><span class=\"mi\">256<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Bzip2<\/span><span class=\"w\">                         <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                         <\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                            <\/span><span class=\"n\">base<\/span><span class=\"w\">                                       <\/span><span class=\"mi\">32<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Zlib<\/span><span class=\"w\">                          <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                         <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                          <\/span><span class=\"n\">base<\/span><span class=\"w\">                                       <\/span><span class=\"mi\">57<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"w\">                                        <\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                         <\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                            <\/span><span class=\"n\">base<\/span><span class=\"w\">                                      <\/span><span class=\"mi\">802<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">IO<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"w\">                                <\/span><span class=\"n\">noarch<\/span><span class=\"w\">                         <\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                            <\/span><span class=\"n\">base<\/span><span class=\"w\">                                      <\/span><span class=\"mi\">260<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Net<\/span><span class=\"o\">-<\/span><span class=\"n\">Daemon<\/span><span class=\"w\">                                 <\/span><span class=\"n\">noarch<\/span><span class=\"w\">                         <\/span><span class=\"mf\">0.48<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                             <\/span><span class=\"n\">base<\/span><span class=\"w\">                                       <\/span><span class=\"mi\">51<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"w\">                                      <\/span><span class=\"n\">noarch<\/span><span class=\"w\">                         <\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"w\">                          <\/span><span class=\"n\">base<\/span><span class=\"w\">                                       <\/span><span class=\"mi\">36<\/span><span class=\"w\"> <\/span><span class=\"n\">k<\/span>\n\n<span class=\"n\">Transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">Summary<\/span>\n<span class=\"o\">=======================================================================================================================================================================<\/span>\n<span class=\"n\">Install<\/span><span class=\"w\">  <\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"n\">Packages<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"o\">+<\/span><span class=\"mi\">7<\/span><span class=\"w\"> <\/span><span class=\"n\">Dependent<\/span><span class=\"w\"> <\/span><span class=\"n\">packages<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">Total<\/span><span class=\"w\"> <\/span><span class=\"n\">download<\/span><span class=\"w\"> <\/span><span class=\"n\">size<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">83<\/span><span class=\"w\"> <\/span><span class=\"n\">M<\/span>\n<span class=\"n\">Downloading<\/span><span class=\"w\"> <\/span><span class=\"n\">packages<\/span><span class=\"p\">:<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                   <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">3.4<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">03<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                  <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">19<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">05<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                  <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">58<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">11<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                    <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mf\">2.0<\/span><span class=\"w\"> <\/span><span class=\"n\">MB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">02<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                                 <\/span><span class=\"o\">|<\/span><span class=\"w\">    <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"n\">B<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">01<\/span><span class=\"w\"> <\/span><span class=\"o\">...<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                                 <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mi\">802<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Zlib<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                            <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">57<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Net<\/span><span class=\"o\">-<\/span><span class=\"n\">Daemon<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.48<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                    <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">51<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                      <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">36<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">4<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Bzip2<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                           <\/span><span class=\"o\">|<\/span><span class=\"w\">  <\/span><span class=\"mi\">32<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">IO<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                                  <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mi\">260<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"k\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">cache<\/span><span class=\"o\">\/<\/span><span class=\"n\">yum<\/span><span class=\"o\">\/<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">\/<\/span><span class=\"mi\">7<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql56<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">\/<\/span><span class=\"n\">packages<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">V3<\/span><span class=\"w\"> <\/span><span class=\"n\">DSA<\/span><span class=\"o\">\/<\/span><span class=\"n\">SHA1<\/span><span class=\"w\"> <\/span><span class=\"n\">Signature<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">key<\/span><span class=\"w\"> <\/span><span class=\"n\">ID<\/span><span class=\"w\"> <\/span><span class=\"mf\">5072e1<\/span><span class=\"n\">f5<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">NOKEY<\/span><span class=\"w\"> <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">01<\/span><span class=\"w\"> <\/span><span class=\"n\">ETA<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">Public<\/span><span class=\"w\"> <\/span><span class=\"n\">key<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">installed<\/span>\n<span class=\"p\">(<\/span><span class=\"mi\">6<\/span><span class=\"o\">\/<\/span><span class=\"mi\">6<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"o\">.<\/span><span class=\"n\">rpm<\/span><span class=\"w\">                                                                                           <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mi\">256<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">01<\/span><span class=\"w\">     <\/span>\n<span class=\"o\">-----------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span>\n<span class=\"n\">Total<\/span><span class=\"w\">                                                                                                                                  <\/span><span class=\"mi\">388<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"o\">\/<\/span><span class=\"n\">s<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"w\"> <\/span><span class=\"mi\">692<\/span><span class=\"w\"> <\/span><span class=\"n\">kB<\/span><span class=\"w\">  <\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"p\">:<\/span><span class=\"mi\">01<\/span><span class=\"w\">     <\/span>\n<span class=\"n\">Retrieving<\/span><span class=\"w\"> <\/span><span class=\"n\">key<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"p\">:<\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">pki<\/span><span class=\"o\">\/<\/span><span class=\"n\">rpm<\/span><span class=\"o\">-<\/span><span class=\"n\">gpg<\/span><span class=\"o\">\/<\/span><span class=\"n\">RPM<\/span><span class=\"o\">-<\/span><span class=\"n\">GPG<\/span><span class=\"o\">-<\/span><span class=\"n\">KEY<\/span><span class=\"o\">-<\/span><span class=\"n\">mysql<\/span>\n<span class=\"n\">Importing<\/span><span class=\"w\"> <\/span><span class=\"n\">GPG<\/span><span class=\"w\"> <\/span><span class=\"n\">key<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x5072E1F5<\/span><span class=\"p\">:<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Userid<\/span><span class=\"w\">     <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;MySQL Release Engineering &lt;mysql-build@oss.oracle.com&gt;&quot;<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Fingerprint<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">a4a9<\/span><span class=\"w\"> <\/span><span class=\"mi\">4068<\/span><span class=\"w\"> <\/span><span class=\"mi\">76<\/span><span class=\"n\">fc<\/span><span class=\"w\"> <\/span><span class=\"n\">bd3c<\/span><span class=\"w\"> <\/span><span class=\"mi\">4567<\/span><span class=\"w\"> <\/span><span class=\"mi\">70<\/span><span class=\"n\">c8<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">c71<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">d3b<\/span><span class=\"w\"> <\/span><span class=\"mi\">5072<\/span><span class=\"w\"> <\/span><span class=\"n\">e1f5<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">Package<\/span><span class=\"w\">    <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">release<\/span><span class=\"o\">-<\/span><span class=\"n\">el7<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">installed<\/span><span class=\"p\">)<\/span>\n<span class=\"w\"> <\/span><span class=\"n\">From<\/span><span class=\"w\">       <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"p\">:<\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">pki<\/span><span class=\"o\">\/<\/span><span class=\"n\">rpm<\/span><span class=\"o\">-<\/span><span class=\"n\">gpg<\/span><span class=\"o\">\/<\/span><span class=\"n\">RPM<\/span><span class=\"o\">-<\/span><span class=\"n\">GPG<\/span><span class=\"o\">-<\/span><span class=\"n\">KEY<\/span><span class=\"o\">-<\/span><span class=\"n\">mysql<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">check<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span>\n<span class=\"n\">Transaction<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"w\"> <\/span><span class=\"n\">succeeded<\/span>\n<span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">transaction<\/span>\n<span class=\"n\">Warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">RPMDB<\/span><span class=\"w\"> <\/span><span class=\"n\">altered<\/span><span class=\"w\"> <\/span><span class=\"n\">outside<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">yum<\/span><span class=\"o\">.<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                         <\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                           <\/span><span class=\"mi\">2<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                         <\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Net<\/span><span class=\"o\">-<\/span><span class=\"n\">Daemon<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.48<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                                                                                                                  <\/span><span class=\"mi\">4<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Zlib<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                        <\/span><span class=\"mi\">5<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Bzip2<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                         <\/span><span class=\"mi\">6<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">IO<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                                                                                                                <\/span><span class=\"mi\">7<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                                                                                                                    <\/span><span class=\"mi\">8<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                                        <\/span><span class=\"mi\">9<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                        <\/span><span class=\"mi\">10<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Installing<\/span><span class=\"w\"> <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                         <\/span><span class=\"mi\">11<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Erasing<\/span><span class=\"w\">    <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                             <\/span><span class=\"mi\">12<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Erasing<\/span><span class=\"w\">    <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                                   <\/span><span class=\"mi\">13<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Erasing<\/span><span class=\"w\">    <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                              <\/span><span class=\"mi\">14<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Bzip2<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                         <\/span><span class=\"mi\">1<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                         <\/span><span class=\"mi\">2<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                          <\/span><span class=\"mi\">3<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                         <\/span><span class=\"mi\">4<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                                                                                                                    <\/span><span class=\"mi\">5<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                         <\/span><span class=\"mi\">6<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Zlib<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                        <\/span><span class=\"mi\">7<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                           <\/span><span class=\"mi\">8<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Net<\/span><span class=\"o\">-<\/span><span class=\"n\">Daemon<\/span><span class=\"o\">-<\/span><span class=\"mf\">0.48<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                                                                                                                  <\/span><span class=\"mi\">9<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                                       <\/span><span class=\"mi\">10<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">IO<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\">                                                                                                               <\/span><span class=\"mi\">11<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                                   <\/span><span class=\"mi\">12<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                             <\/span><span class=\"mi\">13<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">Verifying<\/span><span class=\"w\">  <\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\">                                                                                                              <\/span><span class=\"mi\">14<\/span><span class=\"o\">\/<\/span><span class=\"mi\">14<\/span>\n\n<span class=\"n\">Installed<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">            <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">            <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\">           <\/span>\n<span class=\"w\">  <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span>\n\n<span class=\"n\">Dependency<\/span><span class=\"w\"> <\/span><span class=\"n\">Installed<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">community<\/span><span class=\"o\">-<\/span><span class=\"n\">common<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Bzip2<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">3.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">-<\/span><span class=\"n\">Raw<\/span><span class=\"o\">-<\/span><span class=\"n\">Zlib<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span><span class=\"w\"> <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">DBI<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">1.627<\/span><span class=\"o\">-<\/span><span class=\"mf\">4.<\/span><span class=\"n\">el7<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">IO<\/span><span class=\"o\">-<\/span><span class=\"n\">Compress<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">2.061<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7<\/span><span class=\"w\">        <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">Net<\/span><span class=\"o\">-<\/span><span class=\"n\">Daemon<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">0.48<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.<\/span><span class=\"n\">el7<\/span><span class=\"w\">          <\/span><span class=\"n\">perl<\/span><span class=\"o\">-<\/span><span class=\"n\">PlRPC<\/span><span class=\"o\">.<\/span><span class=\"n\">noarch<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mf\">0.2020<\/span><span class=\"o\">-<\/span><span class=\"mf\">14.<\/span><span class=\"n\">el7<\/span>\n\n<span class=\"n\">Replaced<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"w\">                    <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">devel<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span><span class=\"w\">                    <\/span><span class=\"n\">mariadb<\/span><span class=\"o\">-<\/span><span class=\"n\">libs<\/span><span class=\"o\">.<\/span><span class=\"n\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"mf\">5.5<\/span><span class=\"o\">.<\/span><span class=\"mi\">41<\/span><span class=\"o\">-<\/span><span class=\"mf\">2.<\/span><span class=\"n\">el7_0<\/span>\n\n<span class=\"n\">Complete<\/span><span class=\"o\">!<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3 MySQL\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u8fdb\u884c\u76f8\u5173\u914d\u7f6e<\/h5>\n<p>\u5b89\u88c5\u5b8cMySQL\u540e\uff0c\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u57fa\u7840\u914d\u7f6e\u5de5\u4f5c\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">#######\u5b89\u88c5\u6210\u529f\u540e\uff0c\u5c06\u5176\u52a0\u5165\u5f00\u673a\u542f\u52a8<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># systemctl enable mysqld<\/span>\n\n<span class=\"c1\">#######\u542f\u52a8mysql\u670d\u52a1\u8fdb\u7a0b<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># systemctl start mysqld<\/span>\n\n<span class=\"c1\">#######\u914d\u7f6emysql\uff08\u8bbe\u7f6e\u5bc6\u7801\u7b49\uff09<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mysql_secure_installation<\/span>\n\n<span class=\"n\">NOTE<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">RUNNING<\/span><span class=\"w\"> <\/span><span class=\"n\">ALL<\/span><span class=\"w\"> <\/span><span class=\"n\">PARTS<\/span><span class=\"w\"> <\/span><span class=\"n\">OF<\/span><span class=\"w\"> <\/span><span class=\"n\">THIS<\/span><span class=\"w\"> <\/span><span class=\"n\">SCRIPT<\/span><span class=\"w\"> <\/span><span class=\"n\">IS<\/span><span class=\"w\"> <\/span><span class=\"n\">RECOMMENDED<\/span><span class=\"w\"> <\/span><span class=\"n\">FOR<\/span><span class=\"w\"> <\/span><span class=\"n\">ALL<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span>\n<span class=\"w\">      <\/span><span class=\"n\">SERVERS<\/span><span class=\"w\"> <\/span><span class=\"n\">IN<\/span><span class=\"w\"> <\/span><span class=\"n\">PRODUCTION<\/span><span class=\"w\"> <\/span><span class=\"n\">USE<\/span><span class=\"o\">!<\/span><span class=\"w\">  <\/span><span class=\"n\">PLEASE<\/span><span class=\"w\"> <\/span><span class=\"n\">READ<\/span><span class=\"w\"> <\/span><span class=\"n\">EACH<\/span><span class=\"w\"> <\/span><span class=\"n\">STEP<\/span><span class=\"w\"> <\/span><span class=\"n\">CAREFULLY<\/span><span class=\"o\">!<\/span>\n\n<span class=\"n\">In<\/span><span class=\"w\"> <\/span><span class=\"n\">order<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"nb\">log<\/span><span class=\"w\"> <\/span><span class=\"n\">into<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">secure<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">we<\/span><span class=\"s1\">&#39;ll need the current<\/span>\n<span class=\"n\">password<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">root<\/span><span class=\"w\"> <\/span><span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">If<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"s1\">&#39;ve just installed MySQL, and<\/span>\n<span class=\"n\">you<\/span><span class=\"w\"> <\/span><span class=\"n\">haven<\/span><span class=\"s1\">&#39;t set the root password yet, the password will be blank,<\/span>\n<span class=\"n\">so<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"w\"> <\/span><span class=\"n\">should<\/span><span class=\"w\"> <\/span><span class=\"n\">just<\/span><span class=\"w\"> <\/span><span class=\"n\">press<\/span><span class=\"w\"> <\/span><span class=\"n\">enter<\/span><span class=\"w\"> <\/span><span class=\"n\">here<\/span><span class=\"o\">.<\/span>\n\n<span class=\"n\">Enter<\/span><span class=\"w\"> <\/span><span class=\"n\">current<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">root<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">enter<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">none<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">OK<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">successfully<\/span><span class=\"w\"> <\/span><span class=\"n\">used<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">moving<\/span><span class=\"w\"> <\/span><span class=\"n\">on<\/span><span class=\"o\">...<\/span>\n\n<span class=\"n\">Setting<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">root<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"w\"> <\/span><span class=\"n\">ensures<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">nobody<\/span><span class=\"w\"> <\/span><span class=\"n\">can<\/span><span class=\"w\"> <\/span><span class=\"nb\">log<\/span><span class=\"w\"> <\/span><span class=\"n\">into<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span>\n<span class=\"n\">root<\/span><span class=\"w\"> <\/span><span class=\"n\">user<\/span><span class=\"w\"> <\/span><span class=\"n\">without<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">proper<\/span><span class=\"w\"> <\/span><span class=\"n\">authorisation<\/span><span class=\"o\">.<\/span>\n\n<span class=\"n\">Set<\/span><span class=\"w\"> <\/span><span class=\"n\">root<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"err\">?<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">Y<\/span><span class=\"o\">\/<\/span><span class=\"n\">n<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span><span class=\"w\">                  <\/span><span class=\"p\">[<\/span><span class=\"err\">\u8bbe\u7f6e<\/span><span class=\"n\">root\u7528\u6237\u5bc6\u7801<\/span><span class=\"p\">]<\/span>\n<span class=\"n\">New<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">Re<\/span><span class=\"o\">-<\/span><span class=\"n\">enter<\/span><span class=\"w\"> <\/span><span class=\"n\">new<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">Password<\/span><span class=\"w\"> <\/span><span class=\"n\">updated<\/span><span class=\"w\"> <\/span><span class=\"n\">successfully<\/span><span class=\"o\">!<\/span>\n<span class=\"n\">Reloading<\/span><span class=\"w\"> <\/span><span class=\"n\">privilege<\/span><span class=\"w\"> <\/span><span class=\"n\">tables<\/span><span class=\"o\">..<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">...<\/span><span class=\"w\"> <\/span><span class=\"n\">Success<\/span><span class=\"o\">!<\/span>\n\n\n<span class=\"n\">By<\/span><span class=\"w\"> <\/span><span class=\"n\">default<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">installation<\/span><span class=\"w\"> <\/span><span class=\"n\">has<\/span><span class=\"w\"> <\/span><span class=\"n\">an<\/span><span class=\"w\"> <\/span><span class=\"n\">anonymous<\/span><span class=\"w\"> <\/span><span class=\"n\">user<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">allowing<\/span><span class=\"w\"> <\/span><span class=\"n\">anyone<\/span>\n<span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"nb\">log<\/span><span class=\"w\"> <\/span><span class=\"n\">into<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">without<\/span><span class=\"w\"> <\/span><span class=\"n\">having<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">have<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">user<\/span><span class=\"w\"> <\/span><span class=\"n\">account<\/span><span class=\"w\"> <\/span><span class=\"n\">created<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span>\n<span class=\"n\">them<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">This<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">intended<\/span><span class=\"w\"> <\/span><span class=\"n\">only<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">testing<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">make<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">installation<\/span>\n<span class=\"n\">go<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">bit<\/span><span class=\"w\"> <\/span><span class=\"n\">smoother<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">You<\/span><span class=\"w\"> <\/span><span class=\"n\">should<\/span><span class=\"w\"> <\/span><span class=\"n\">remove<\/span><span class=\"w\"> <\/span><span class=\"n\">them<\/span><span class=\"w\"> <\/span><span class=\"n\">before<\/span><span class=\"w\"> <\/span><span class=\"n\">moving<\/span><span class=\"w\"> <\/span><span class=\"n\">into<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span>\n<span class=\"n\">production<\/span><span class=\"w\"> <\/span><span class=\"n\">environment<\/span><span class=\"o\">.<\/span>\n\n<span class=\"n\">Remove<\/span><span class=\"w\"> <\/span><span class=\"n\">anonymous<\/span><span class=\"w\"> <\/span><span class=\"n\">users<\/span><span class=\"err\">?<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">Y<\/span><span class=\"o\">\/<\/span><span class=\"n\">n<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span><span class=\"w\">                 <\/span><span class=\"p\">[<\/span><span class=\"err\">\u5220\u9664\u533f\u540d\u7528\u6237<\/span><span class=\"p\">]<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">...<\/span><span class=\"w\"> <\/span><span class=\"n\">Success<\/span><span class=\"o\">!<\/span>\n\n<span class=\"n\">Normally<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">root<\/span><span class=\"w\"> <\/span><span class=\"n\">should<\/span><span class=\"w\"> <\/span><span class=\"n\">only<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">allowed<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">connect<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">This<\/span>\n<span class=\"n\">ensures<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">someone<\/span><span class=\"w\"> <\/span><span class=\"n\">cannot<\/span><span class=\"w\"> <\/span><span class=\"n\">guess<\/span><span class=\"w\"> <\/span><span class=\"n\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">root<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">network<\/span><span class=\"o\">.<\/span>\n\n<span class=\"n\">Disallow<\/span><span class=\"w\"> <\/span><span class=\"n\">root<\/span><span class=\"w\"> <\/span><span class=\"n\">login<\/span><span class=\"w\"> <\/span><span class=\"n\">remotely<\/span><span class=\"err\">?<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">Y<\/span><span class=\"o\">\/<\/span><span class=\"n\">n<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span><span class=\"w\">       <\/span><span class=\"p\">[<\/span><span class=\"err\">\u7981\u6b62<\/span><span class=\"n\">root\u8fdc\u7a0b\u767b\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">...<\/span><span class=\"w\"> <\/span><span class=\"n\">Success<\/span><span class=\"o\">!<\/span>\n\n<span class=\"n\">By<\/span><span class=\"w\"> <\/span><span class=\"n\">default<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">comes<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">database<\/span><span class=\"w\"> <\/span><span class=\"n\">named<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;test&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">anyone<\/span><span class=\"w\"> <\/span><span class=\"n\">can<\/span>\n<span class=\"n\">access<\/span><span class=\"o\">.<\/span><span class=\"w\">  <\/span><span class=\"n\">This<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">also<\/span><span class=\"w\"> <\/span><span class=\"n\">intended<\/span><span class=\"w\"> <\/span><span class=\"n\">only<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">testing<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">should<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">removed<\/span>\n<span class=\"n\">before<\/span><span class=\"w\"> <\/span><span class=\"n\">moving<\/span><span class=\"w\"> <\/span><span class=\"n\">into<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">production<\/span><span class=\"w\"> <\/span><span class=\"n\">environment<\/span><span class=\"o\">.<\/span>\n\n<span class=\"n\">Remove<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"w\"> <\/span><span class=\"n\">database<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">access<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"err\">?<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">Y<\/span><span class=\"o\">\/<\/span><span class=\"n\">n<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span><span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"err\">\u5220\u9664<\/span><span class=\"n\">test\u6570\u636e\u5e93<\/span><span class=\"p\">]<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"n\">Dropping<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"w\"> <\/span><span class=\"n\">database<\/span><span class=\"o\">...<\/span>\n<span class=\"n\">ERROR<\/span><span class=\"w\"> <\/span><span class=\"mi\">1008<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">HY000<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">line<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Can<\/span><span class=\"s1\">&#39;t drop database &#39;<\/span><span class=\"n\">test<\/span><span class=\"s1\">&#39;; database doesn&#39;<\/span><span class=\"n\">t<\/span><span class=\"w\"> <\/span><span class=\"n\">exist<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">...<\/span><span class=\"w\"> <\/span><span class=\"n\">Failed<\/span><span class=\"o\">!<\/span><span class=\"w\">  <\/span><span class=\"n\">Not<\/span><span class=\"w\"> <\/span><span class=\"n\">critical<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">keep<\/span><span class=\"w\"> <\/span><span class=\"n\">moving<\/span><span class=\"o\">...<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"n\">Removing<\/span><span class=\"w\"> <\/span><span class=\"n\">privileges<\/span><span class=\"w\"> <\/span><span class=\"n\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"w\"> <\/span><span class=\"n\">database<\/span><span class=\"o\">...<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">...<\/span><span class=\"w\"> <\/span><span class=\"n\">Success<\/span><span class=\"o\">!<\/span>\n\n<span class=\"n\">Reloading<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">privilege<\/span><span class=\"w\"> <\/span><span class=\"n\">tables<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">ensure<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">all<\/span><span class=\"w\"> <\/span><span class=\"n\">changes<\/span><span class=\"w\"> <\/span><span class=\"n\">made<\/span><span class=\"w\"> <\/span><span class=\"n\">so<\/span><span class=\"w\"> <\/span><span class=\"n\">far<\/span>\n<span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">take<\/span><span class=\"w\"> <\/span><span class=\"n\">effect<\/span><span class=\"w\"> <\/span><span class=\"n\">immediately<\/span><span class=\"o\">.<\/span>\n\n<span class=\"n\">Reload<\/span><span class=\"w\"> <\/span><span class=\"n\">privilege<\/span><span class=\"w\"> <\/span><span class=\"n\">tables<\/span><span class=\"w\"> <\/span><span class=\"n\">now<\/span><span class=\"err\">?<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"n\">Y<\/span><span class=\"o\">\/<\/span><span class=\"n\">n<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span><span class=\"w\">            <\/span><span class=\"p\">[<\/span><span class=\"err\">\u5237\u65b0\u6743\u9650<\/span><span class=\"p\">]<\/span>\n<span class=\"w\"> <\/span><span class=\"o\">...<\/span><span class=\"w\"> <\/span><span class=\"n\">Success<\/span><span class=\"o\">!<\/span>\n\n\n\n\n<span class=\"n\">All<\/span><span class=\"w\"> <\/span><span class=\"n\">done<\/span><span class=\"o\">!<\/span><span class=\"w\">  <\/span><span class=\"n\">If<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"s1\">&#39;ve completed all of the above steps, your MySQL<\/span>\n<span class=\"n\">installation<\/span><span class=\"w\"> <\/span><span class=\"n\">should<\/span><span class=\"w\"> <\/span><span class=\"n\">now<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">secure<\/span><span class=\"o\">.<\/span>\n\n<span class=\"n\">Thanks<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">using<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"o\">!<\/span>\n\n\n<span class=\"n\">Cleaning<\/span><span class=\"w\"> <\/span><span class=\"n\">up<\/span><span class=\"o\">...<\/span>\n<\/code><\/pre><\/div>\n\n<h5>4 \u5176\u5b83\u8bf4\u660e<\/h5>\n<p>\u81f3\u4e8e\u5176\u5b83\u8bf8\u5982\u4f7f\u7528root\u7528\u6237\u521b\u5efa\u5176\u5b83mysql\u7528\u6237\u6216\u8005\u5bfc\u5165sql\u6587\u4ef6\u5230\u6570\u636e\u5e93\u4e2d\u7684\u64cd\u4f5c\uff0c\u8fd9\u91cc\u5c31\u4e0d\u8bf4\u4e86\uff0c\u53ef\u4ee5\u53c2\u8003\u524d\u9762\u7684\u4e24\u7bc7\u6587\u7ae0\u3002<\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"mysql"}}]},{"title":"\u963f\u91cc\u4e91CentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySql5.6.24","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/centos7compilemysql5.html","rel":"alternate"}},"published":"2015-06-25T09:42:00+08:00","updated":"2015-06-25T09:42:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-25:\/web\/centos7compilemysql5.html","summary":"<p>\u7ee7<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b\">\u524d\u6587<\/a>\u8bb0\u8ff0\u4e86\u5982\u4f55\u5728Linux\u7cfb\u7edf\u4e2d\uff0c\u901a\u8fc7\u6e90\u7801\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7 Release Candidate\u7248\u672c\u7684\u8fc7\u7a0b\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u8bb0\u5f55\u6e90\u7801\u7f16\u8bd1\u5b89\u88c5MySql5.6.24\u7684\u8fc7\u7a0b\u3002<\/p>\n<p>\u9274\u4e8e\u5b98\u65b9MySql5.6.24\u76f8\u5bf9\u662f\u4e00\u4e2a\u6bd4\u8f83\u7a33\u5b9a\u7684\u7248\u672c\uff0c\u6240\u4ee5\u535a\u4e3b\u4e4b\u524d\u4e5f\u5728\u81ea\u5df1\u7684\u53e6\u4e00\u53f0CentOS7.1\u4e3b\u673a\u4e0a\u5b89\u88c5\u4e86\u4e00\u904d\u3002\u4e0d\u8fc7\u6700\u540e\u8fd8\u662f\u56fe\u65b0\u9c9c\uff0c\u9009\u62e9\u4e86MySQL5.7.7rc\u7248\u672c\u3002\u4e0b\u9762\u662f\u5177\u4f53\u7684\u5b89\u88c5\u8fc7\u7a0b\uff0c\u7531\u4e8e\u548cMySQL5.7.7rc\u7684\u7f16\u8bd1\u5b89\u88c5\u8fc7\u7a0b\u5f88\u7c7b\u4f3c\uff0c\u6240\u4ee5\u8fd9\u91cc\u5c3d\u53ef\u80fd\u7cbe\u7b80\u6587\u5b57\uff1a<\/p>\n","content":"<p>\u7ee7<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b\">\u524d\u6587<\/a>\u8bb0\u8ff0\u4e86\u5982\u4f55\u5728Linux\u7cfb\u7edf\u4e2d\uff0c\u901a\u8fc7\u6e90\u7801\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7 Release Candidate\u7248\u672c\u7684\u8fc7\u7a0b\uff0c\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u8bb0\u5f55\u6e90\u7801\u7f16\u8bd1\u5b89\u88c5MySql5.6.24\u7684\u8fc7\u7a0b\u3002<\/p>\n<p>\u9274\u4e8e\u5b98\u65b9MySql5.6.24\u76f8\u5bf9\u662f\u4e00\u4e2a\u6bd4\u8f83\u7a33\u5b9a\u7684\u7248\u672c\uff0c\u6240\u4ee5\u535a\u4e3b\u4e4b\u524d\u4e5f\u5728\u81ea\u5df1\u7684\u53e6\u4e00\u53f0CentOS7.1\u4e3b\u673a\u4e0a\u5b89\u88c5\u4e86\u4e00\u904d\u3002\u4e0d\u8fc7\u6700\u540e\u8fd8\u662f\u56fe\u65b0\u9c9c\uff0c\u9009\u62e9\u4e86MySQL5.7.7rc\u7248\u672c\u3002\u4e0b\u9762\u662f\u5177\u4f53\u7684\u5b89\u88c5\u8fc7\u7a0b\uff0c\u7531\u4e8e\u548cMySQL5.7.7rc\u7684\u7f16\u8bd1\u5b89\u88c5\u8fc7\u7a0b\u5f88\u7c7b\u4f3c\uff0c\u6240\u4ee5\u8fd9\u91cc\u5c3d\u53ef\u80fd\u7cbe\u7b80\u6587\u5b57\uff1a<\/p>\n\n\n<h5>1 \u521b\u5efamysql\u7528\u6237\u548c\u7528\u6237\u7ec4\uff0c\u5e76\u4e0b\u8f7dMySql5.6.24\u7248\u672c<\/h5>\n<p>\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u540d\u4e3amysql\u4e14<code>\u6ca1\u6709\u767b\u5f55\u6743\u9650<\/code>\u7684\u7528\u6237\u548c\u4e00\u4e2a\u540d\u4e3amysql\u7684\u7528\u6237\u7ec4\uff0c\u7136\u540e\u53bbmysql\u5b98\u7f51\u4e0b\u8f7dMySql5.6.24\u7248\u672c\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">#######\u65b0\u5efamysql\u7528\u6237\u548cmysql\u7ec4<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># groupadd -r mysql &amp;&amp; useradd -r -g mysql -s \/bin\/false -M mysql<\/span>\n\n<span class=\"c1\">######\u4ece\u5b98\u7f51\u6216\u8005\u535a\u5ba2\u5907\u4efd\u5730\u5740\u4e0b\u8f7dMySql5.6.24\u7248\u672c<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/cdn.mysql.com\/Downloads\/MySQL-5.6\/mysql-5.6.24.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/git.typecodes.com\/libs\/mysql\/mysql-5.6.24.tar.gz<\/span>\n\n<span class=\"c1\">######\u5f00\u59cb\u89e3\u538bMySql5.6.24<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># tar -zxvf mysql-5.6.24.tar.gz &amp;&amp; cd mysql-5.6.24\/<\/span>\n<span class=\"c1\">######\u4e0b\u8f7dgmock\uff1agoogle\u7684c++mock\u6846\u67b6\uff0c\u4ecemysql 5.6\u5f00\u59cb\u652f\u6301<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c https:\/\/googlemock.googlecode.com\/files\/gmock-1.6.0.zip<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/git.typecodes.com\/libs\/ccpp\/gmock-1.6.0.zip<\/span>\n<span class=\"c1\">######\u5c06\u5176\u89e3\u538b\u5230MySQL5.6.24\u7684source_downloads\u76ee\u5f55\u4e0b<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.6<\/span><span class=\"o\">.<\/span><span class=\"mi\">24<\/span><span class=\"p\">]<\/span><span class=\"c1\"># unzip gmock-1.6.0.zip -d source_downloads<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 \u4e0b\u8f7d\u7f16\u8bd1MySql5.6.24\u65f6\u9700\u8981\u7684\u5de5\u5177\uff08\u5b89\u88c5\u8fc7\u7a0b\u540c\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u5b8c\u5168\u4e00\u81f4\uff09<\/h5>\n<p>\u548c\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u7248\u672c\u4e00\u6837\uff0c\u8fd9\u91cc\u4e5f\u9700\u8981\u5b89\u88c5CMake\u3001Ncurses\u3001bison\u548cBoost\u5e93\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"nx\">CMake\u7f16\u8bd1\u5de5\u5177<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/git.typecodes.com\/libs\/ccpp\/cmake-3.2.1.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">zxf<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">gz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">configure<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\">  <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u9ed8\u8ba4\u5b89\u88c5\u8def\u5f84\u662f<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"p\">]<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">version<\/span><span class=\"w\">       <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u67e5\u770bcmake\u7248\u672c<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">cmake<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">3.2.1<\/span>\n\n<span class=\"nx\">CMake<\/span><span class=\"w\"> <\/span><span class=\"nx\">suite<\/span><span class=\"w\"> <\/span><span class=\"nx\">maintained<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">supported<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">Kitware<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">kitware<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span><span class=\"o\">\/<\/span><span class=\"nx\">cmake<\/span><span class=\"p\">).<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"o\">*<\/span>\n\n<span class=\"err\">#######<\/span><span class=\"nx\">Ncurses<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u63d0\u4f9b\u529f\u80fd\u952e\u5b9a\u4e49<\/span><span class=\"p\">(<\/span><span class=\"nx\">\u5feb\u6377\u952e<\/span><span class=\"p\">),<\/span><span class=\"nx\">\u5c4f\u5e55\u7ed8\u5236\u4ee5\u53ca\u57fa\u4e8e\u6587\u672c\u7ec8\u7aef\u7684\u56fe\u5f62\u4e92\u52a8\u529f\u80fd\u7684\u52a8\u6001\u5e93<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">ncurses<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span>\n\n<span class=\"err\">#######<\/span><span class=\"nx\">bison<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">GNU\u5206\u6790\u5668\u751f\u6210\u5668<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/git.typecodes.com\/libs\/ccpp\/bison-3.0.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">zxf<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">gz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">configure<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"o\">*<\/span>\n\n<span class=\"err\">#######<\/span><span class=\"nx\">Boost\u5e93<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u4e00\u4e2a\u5f00\u6e90\u53ef\u79fb\u690d\u7684C<\/span><span class=\"o\">++<\/span><span class=\"nx\">\u5e93<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u662fC<\/span><span class=\"o\">++<\/span><span class=\"nx\">\u6807\u51c6\u5316\u8fdb\u7a0b\u7684\u5f00\u53d1\u5f15\u64ce\u4e4b\u4e00<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/git.typecodes.com\/libs\/ccpp\/boost_1_57_0.tar.bz2<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">jxf<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">bz2<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"o\">\/<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bootstrap<\/span><span class=\"p\">.<\/span><span class=\"nx\">sh<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">b2<\/span><span class=\"w\"> <\/span><span class=\"nx\">stage<\/span><span class=\"w\"> <\/span><span class=\"nx\">threading<\/span><span class=\"p\">=<\/span><span class=\"nx\">multi<\/span><span class=\"w\"> <\/span><span class=\"nx\">link<\/span><span class=\"p\">=<\/span><span class=\"nx\">shared<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">b2<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">threading<\/span><span class=\"p\">=<\/span><span class=\"nx\">multi<\/span><span class=\"w\"> <\/span><span class=\"nx\">link<\/span><span class=\"p\">=<\/span><span class=\"nx\">shared<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"o\">*<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3 \u89e3\u51b3MySQL5.6.24\u7684bug<\/h5>\n<p>\u5728MySQL5.6.24\u6e90\u7801\u5305\u4e2d\u7684<code>\/cmd-line-utils\/libedit\/terminal.c<\/code>\u6587\u4ef6\u6709bug\uff0c\u4f1a\u5bfc\u81f4\u5728\u5b89\u88c5\u5b8c\u540e\uff0c\u4f7f\u7528\u547d\u4ee4\u62a5<code>Segmentation fault<\/code>\u7684\u9519\u8bef\u3002<\/p>\n<p><img alt=\"MySQL5.6.24\u7684bug\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql5.6.24_bug.png\" title=\"MySQL5.6.24\u7684bug\"><\/p>\n<p>\u8c37\u6b4c\u5230<a href=\"https:\/\/bugs.launchpad.net\/percona-server\/+bug\/1201123\" title=\"\u300aconnect using mysql client gives a segmentation fault\u300b\">\u8fd9\u7bc7\u6587\u7ae0<\/a>\u89e3\u51b3\uff1a\u6ce8\u9500\u7b2c869\u884c\u7684 <code>\/\/char buf[TC_BUFSIZE];<\/code>\u5e76\u5c06\u7b2c879\u884c\u7684<code>area = buf;<\/code>\u6539\u6210<code>area = NULL;<\/code>\u3002<\/p>\n<p><img alt=\"MySQL5.6.24\u7684bug\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/solve_mysql5.6.24_bug.png\" title=\"MySQL5.6.24\u7684bug\"><\/p>\n<h5>4 \u5f00\u59cb\u8fdb\u884cMySql5.6.24\u7f16\u8bd1\u524d\u7684\u914d\u7f6e<\/h5>\n<p>\u8fd9\u91cc\u548c\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u65f6\u7684\u64cd\u4f5c\u4e5f\u5b8c\u5168\u76f8\u540c\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"cp\">######\u4f7f\u7528cmake\u547d\u4ee4\uff0c\u5f00\u59cb\u7f16\u8bd1MySql5.6.24<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"p\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"mf\">-5.6.24<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">cmake<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">-<\/span><span class=\"n\">DCMAKE_INSTALL_PREFIX<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"w\">  <\/span><span class=\"err\">\\<\/span><span class=\"w\">              <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u5b89\u88c5\u7684\u6839\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_DATADIR<\/span><span class=\"o\">=\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">data<\/span><span class=\"w\">  <\/span><span class=\"err\">\\<\/span><span class=\"w\">                   <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u6570\u636e\u5e93\u6587\u4ef6\u5b58\u653e\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DSYSCONFDIR<\/span><span class=\"o\">=\/<\/span><span class=\"n\">etc<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                     <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u914d\u7f6e\u6587\u4ef6\u6240\u5728\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_USER<\/span><span class=\"o\">=<\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                    <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7528\u6237\u540d<\/span><span class=\"p\">]<\/span><span class=\"w\">      <\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_MYISAM_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                        <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u6570\u636e\u5e93\u5f15\u64ce<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_INNOBASE_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                      <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u6570\u636e\u5e93\u5f15\u64ce<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_ARCHIVE_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                       <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u6570\u636e\u5e93\u5f15\u64ce<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_MEMORY_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                        <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u6570\u636e\u5e93\u5f15\u64ce<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_READLINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                     <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684readline<\/span><span class=\"w\"> <\/span><span class=\"n\">library<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_UNIX_ADDR<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">run<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">sock<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">           <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u901a\u8baf\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_TCP_PORT<\/span><span class=\"o\">=<\/span><span class=\"mi\">3306<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                 <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u76d1\u542c\u7aef\u53e3<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DENABLED_LOCAL_INFILE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                              <\/span><span class=\"p\">[<\/span><span class=\"n\">\u542f\u7528\u52a0\u8f7d\u672c\u5730\u6570\u636e<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DENABLE_DOWNLOADS<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                  <\/span><span class=\"p\">[<\/span><span class=\"n\">\u7f16\u8bd1\u65f6\u5141\u8bb8\u81ea\u4e3b\u4e0b\u8f7d\u76f8\u5173\u6587\u4ef6<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_PARTITION_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\">  <\/span>\\\n<span class=\"o\">-<\/span><span class=\"n\">DEXTRA_CHARSETS<\/span><span class=\"o\">=<\/span><span class=\"n\">all<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                  <\/span><span class=\"p\">[<\/span><span class=\"n\">\u4f7fMySQL\u652f\u6301\u6240\u6709\u7684\u6269\u5c55\u5b57\u7b26<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DDEFAULT_CHARSET<\/span><span class=\"o\">=<\/span><span class=\"n\">utf8<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                <\/span><span class=\"p\">[<\/span><span class=\"n\">\u8bbe\u7f6e\u9ed8\u8ba4\u5b57\u7b26\u96c6\u4e3autf8<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DDEFAULT_COLLATION<\/span><span class=\"o\">=<\/span><span class=\"n\">utf8_general_ci<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                   <\/span><span class=\"p\">[<\/span><span class=\"n\">\u8bbe\u7f6e\u9ed8\u8ba4\u5b57\u7b26\u6821\u5bf9<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_DEBUG<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                        <\/span><span class=\"p\">[<\/span><span class=\"n\">\u7981\u7528\u8c03\u8bd5\u6a21\u5f0f<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_MAINTAINER_MODE<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_SSL<\/span><span class=\"o\">:<\/span><span class=\"n\">STRING<\/span><span class=\"o\">=<\/span><span class=\"n\">bundled<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                             <\/span><span class=\"p\">[<\/span><span class=\"n\">\u901a\u8baf\u65f6\u652f\u6301ssl\u534f\u8bae<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_ZLIB<\/span><span class=\"o\">:<\/span><span class=\"n\">STRING<\/span><span class=\"o\">=<\/span><span class=\"n\">bundled<\/span><span class=\"w\">                              <\/span><span class=\"p\">[<\/span><span class=\"n\">\u5141\u8bb8\u4f7f\u7528zlib<\/span><span class=\"w\"> <\/span><span class=\"n\">library<\/span><span class=\"p\">]<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6267\u884c\u4e0a\u9762\u7684\u914d\u7f6e\u547d\u4ee4\u7684\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"MySQL5.7.7rc\u7f16\u8bd1\u524d\u7684\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/compile_mysql5.6.24_config.png\" title=\"MySQL5.7.7rc\u7f16\u8bd1\u524d\u7684\u914d\u7f6e\"><\/p>\n<h5>5 \u5f00\u59cb\u7f16\u8bd1\u548c\u5b89\u88c5MySQL5.6.24<\/h5>\n<p>\u76f8\u5bf9\u7f16\u8bd1MySQL5.7.7rc\u6765\u8bf4\uff0c\u7f16\u8bd1MySQL5.6.24\u5bf9\u4e3b\u673a\u8d44\u6e90\u7684\u6d88\u8017\u4f4e\u5f88\u591a\uff0c\u800c\u4e14\u8017\u65f6\u4e5f\u5c11\uff08\u7ea61\u5c0f\u65f6\uff09\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">5.6.24<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u4e0b\u56fe\u5c55\u793a\u7684\u662f<code>make<\/code>\u547d\u4ee4\u6267\u884c\u5b8c\u6bd5\u7684\u60c5\u51b5\uff1a<\/p>\n<p><img alt=\"\u7f16\u8bd1MySQL5.6.24\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/make_mysql5.6.24_step1.png\" title=\"\u7f16\u8bd1MySQL5.6.24\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<p><img alt=\"\u7f16\u8bd1MySQL5.6.24\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/make_mysql5.6.24_step2.png\" title=\"\u7f16\u8bd1MySQL5.6.24\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<p><code>make<\/code>\u547d\u4ee4\u6267\u884c\u5b8c\u540e\uff0c\u5f00\u59cb\u6267\u884c<code>make install<\/code>\u547d\u4ee4\uff1a<\/p>\n<p><img alt=\"\u7f16\u8bd1MySQL5.6.24\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/make_mysql5.6.24_step3.png\" title=\"\u7f16\u8bd1MySQL5.6.24\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<p><img alt=\"\u7f16\u8bd1MySQL5.6.24\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/make_mysql5.6.24_step4.png\" title=\"\u7f16\u8bd1MySQL5.6.24\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<p>\u6700\u540e\uff0c\u6fc0\u52a8\u4eba\u5fc3\u7684\u65f6\u523b\uff0c\u770b\u5230\u4e0b\u56fe\u5c31\u4ee3\u8868\u5df2\u7ecf\u7f16\u8bd1\u5b89\u88c5\u597d\u4e86MySQL5.6.24\uff01<\/p>\n<p><img alt=\"\u5b89\u88c5MySQL5.6.24\u7684make install\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/make_mysql5.6.24_step5.png\" title=\"\u5b89\u88c5MySQL5.7.7rc\u7684MySQL5.6.24\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<h5>6 \u67e5\u770b\u7f16\u8bd1\u6210\u529f\u540e\u7684MySQL\u5b89\u88c5\u76ee\u5f55<\/h5>\n<p>\u540cMySQL5.7.7rc\u4e00\u6837\uff0c\u9700\u8981\u67e5\u770bMySQL5.6.24\u7684<code>\/usr\/local\/mysql\/lib\/<\/code>\u76ee\u5f55\u4e0b\u662f\u5426\u5b58\u5728\u4e0b\u9762\u7684\u5e93\u6587\u4ef6\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ls<\/span>\n<span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span><span class=\"w\">    <\/span><span class=\"nx\">libmysqlclient_r<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"w\">     <\/span><span class=\"nx\">libmysqlclient_r<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18.1.0<\/span><span class=\"w\">  <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18<\/span><span class=\"w\">      <\/span><span class=\"nx\">libmysqld<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span><span class=\"w\">         <\/span><span class=\"nx\">plugin<\/span>\n<span class=\"nx\">libmysqlclient_r<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span><span class=\"w\">  <\/span><span class=\"nx\">libmysqlclient_r<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18<\/span><span class=\"w\">  <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"w\">           <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18.1.0<\/span><span class=\"w\">  <\/span><span class=\"nx\">libmysqlservices<\/span><span class=\"p\">.<\/span><span class=\"nx\">a<\/span>\n<\/code><\/pre><\/div>\n\n<h5>7 \u5f00\u59cb\u8bbe\u7f6eMySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf<\/h5>\n<p>\u540cMySQL5.7.7rc\u7684\u914d\u7f6e\u6587\u4ef6my.cnf\u4e00\u6837\uff0c\u76f4\u63a5\u628a<a href=\"https:\/\/typecodes.com\/web\/centosmysqlconfig.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aCentOS\u7cfb\u7edfMySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf\u300b<\/a>\u6587\u4e2d\u6574\u7406\u7684my.cnf\u6587\u4ef6\u8986\u76d6\u670d\u52a1\u5668\u4e0a\u7684<code>\/etc\/my.cnf<\/code>\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">my<\/span><span class=\"p\">.<\/span><span class=\"nx\">cnf<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">my<\/span><span class=\"p\">.<\/span><span class=\"nx\">cnfbak<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\">  <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">my<\/span><span class=\"p\">.<\/span><span class=\"nx\">cnf<\/span><span class=\"w\">  <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">my<\/span><span class=\"p\">.<\/span><span class=\"nx\">cnf<\/span>\n<\/code><\/pre><\/div>\n\n<h5>8 \u6dfb\u52a0mysql\u7684\u73af\u5883\u53d8\u91cf<\/h5>\n<p>\u540cMySQL5.7.7rc\uff0c\u6dfb\u52a0MySQL\u7684bin\u76ee\u5f55\u5230Linux\u73af\u5883\u53d8\u91cf\u4e2d\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># echo -e &#39;\\n\\nexport PATH=\/usr\/local\/mysql\/bin:$PATH\\n&#39; &gt;&gt; \/etc\/profile &amp;&amp; source \/etc\/profile<\/span>\n<\/code><\/pre><\/div>\n\n<h5>9 \u521b\u5efaMySQL\u6570\u636e\u5e93\u6587\u4ef6\u7684\u5b58\u653e\u8def\u5f84\u4ee5\u53ca\u76f8\u5173\u5b89\u5168\u914d\u7f6e<\/h5>\n<p>\u540cMySQL5.7.7rc\uff0c\u521b\u5efa<code>\/mydata\/mysql\/data<\/code>\u4f5c\u4e3aMySQL\u7684\u6570\u636e\u5e93\u76ee\u5f55\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">mkdir<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"k\">data<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">chown<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">R<\/span><span class=\"w\"> <\/span><span class=\"nl\">root<\/span><span class=\"p\">:<\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"k\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">chown<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">R<\/span><span class=\"w\"> <\/span><span class=\"nl\">mysql<\/span><span class=\"p\">:<\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"k\">data<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">chmod<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">R<\/span><span class=\"w\"> <\/span><span class=\"k\">go<\/span><span class=\"o\">-<\/span><span class=\"n\">rwx<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"k\">data<\/span>\n<\/code><\/pre><\/div>\n\n<h5>10 \u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93<\/h5>\n<p>\u540cMySQL5.7.7rc\uff0c\u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">######<\/span><span class=\"nx\">\u53c2\u6570user\u8868\u793a\u7528\u6237<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">basedir\u8868\u793amysql\u7684\u5b89\u88c5\u8def\u5f84<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">datadir\u8868\u793a\u6570\u636e\u5e93\u6587\u4ef6\u5b58\u653e\u8def\u5f84<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bin<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysqld<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">initialize<\/span><span class=\"o\">-<\/span><span class=\"nx\">insecure<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">user<\/span><span class=\"p\">=<\/span><span class=\"nx\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">basedir<\/span><span class=\"p\">=<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">datadir<\/span><span class=\"p\">=<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"nx\">data<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6267\u884c\u5b8c\u540e\uff0c\u53ef\u4ee5\u901a\u8fc7<code>[root@typecodes mysql]# ls -lrt \/mydata\/mysql\/data\/<\/code>\u547d\u4ee4\u67e5\u770b\u662f\u5426\u751f\u6210\u4e86MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"\u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_ini_dir.png\" title=\"\u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\"><\/p>\n<h5>11 \u521b\u5efaMySQL\u65e5\u5fd7\u5b58\u653e\u76ee\u5f55\u4ee5\u53ca\u8bbe\u7f6e\u5f00\u673a\u542f\u52a8<\/h5>\n<p>\u540cMySQL5.7.7rc\uff0c\u5c06\u542f\u52a8MySQL\u670d\u52a1\u8fdb\u7a0b\u7684\u811a\u672c\u6dfb\u52a0\u5230\u5f00\u673a\u542f\u52a8\u9879\u4e2d\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mkdir -p \/var\/run\/mysql &amp;&amp; mkdir -p \/var\/log\/mysql<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chown -R mysql:mysql \/var\/log\/mysql &amp;&amp; chown -R mysql:mysql \/var\/run\/mysql<\/span>\n<span class=\"c1\">######\u914d\u7f6e\u5f00\u673a\u81ea\u542f\u52a8<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cp \/usr\/local\/mysql\/support-files\/mysql.server  \/etc\/init.d\/mysqld<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chmod +x \/etc\/init.d\/mysqld     #\u589e\u52a0\u53ef\u6267\u884c\u6743\u9650<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chkconfig --add mysql       #\u6dfb\u52a0\u5230sysV\u670d\u52a1<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chkconfig mysqld on<\/span>\n<\/code><\/pre><\/div>\n\n<h5>12 \u542f\u52a8MySQL\u670d\u52a1<\/h5>\n<p>\u540cMySQL5.7.7rc\uff0c\u542f\u52a8MySQL\u670d\u52a1\u8fdb\u7a0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mysqld_safe --user=mysql --datadir=\/mydata\/mysql\/data --log-error=\/var\/log\/mysql\/error.log &amp;<\/span>\n<span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">10274<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># 150513 21:28:16 mysqld_safe Logging to &#39;\/var\/log\/mysql\/error.log&#39;.<\/span>\n<span class=\"mi\">150513<\/span><span class=\"w\"> <\/span><span class=\"mi\">21<\/span><span class=\"p\">:<\/span><span class=\"mi\">28<\/span><span class=\"p\">:<\/span><span class=\"mi\">16<\/span><span class=\"w\"> <\/span><span class=\"n\">mysqld_safe<\/span><span class=\"w\"> <\/span><span class=\"n\">Starting<\/span><span class=\"w\"> <\/span><span class=\"n\">mysqld<\/span><span class=\"w\"> <\/span><span class=\"n\">daemon<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"n\">databases<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">data<\/span>\n\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service mysqld start<\/span>\n<span class=\"n\">Starting<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"o\">.<\/span><span class=\"p\">[<\/span><span class=\"w\">  <\/span><span class=\"n\">OK<\/span><span class=\"w\">  <\/span><span class=\"p\">]<\/span><span class=\"w\">                 <\/span><span class=\"p\">[<\/span><span class=\"err\">\u542f\u52a8\u6210\u529f<\/span><span class=\"p\">]<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\">#<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7136\u540e\u4f7f\u7528\u4e0b\u9762\u8fd9\u547d\u4ee4<code>ps -ef | grep mysql<\/code>\u548c<code>netstat -tunpl | grep 3306<\/code>\u67e5\u770bMySQL\u670d\u52a1\u8fdb\u7a0b\u548c\u7aef\u53e3\u76d1\u542c\u60c5\u51b5\uff1a<\/p>\n<p><img alt=\"\u67e5\u770bMySQL\u670d\u52a1\u8fdb\u7a0b\u548c\u7aef\u53e3\u76d1\u542c\u60c5\u51b5\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_process_litsen_port.png\" title=\"\u67e5\u770bMySQL\u670d\u52a1\u8fdb\u7a0b\u548c\u7aef\u53e3\u76d1\u542c\u60c5\u51b5\"><\/p>\n<h5>13 \u521d\u59cb\u5316MySQL\u6570\u636e\u5e93\u7684root\u7528\u6237\u5bc6\u7801<\/h5>\n<p>MySQL5.6.24\u548cMySQL5.7.7rc\u7684\u7528\u6237\u5bc6\u7801\u7b56\u7565\u662f\u4e0d\u540c\u7684\uff0cMySQL5.6.24\u6ca1\u6709\u63d0\u793a\u7528\u6237\u5bc6\u7801\u7684\u5f3a\u5ea6\u7b49\u7ea7\uff0c\u6240\u4ee5\u4e5f\u5c31\u4e0d\u4f1a\u53bb\u6821\u9a8c\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u53ea\u9700\u8981\u4e00\u8def\u8f93\u5165<code>y<\/code>\u548c\u81ea\u5df1\u559c\u6b22\u7684\u5bc6\u7801\u5373\u53ef\u3002<\/p>\n<p><img alt=\"MySQL5.6.24\u8bbe\u7f6e\u5bc6\u7801\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_set_password.png\" title=\"MySQL5.6.24\u8bbe\u7f6e\u5bc6\u7801\"><\/p>\n<h5>14 \u5c06MySQL\u6570\u636e\u5e93\u7684\u52a8\u6001\u94fe\u63a5\u5e93\u5171\u4eab\u81f3\u7cfb\u7edf\u94fe\u63a5\u5e93<\/h5>\n<p>\u540cMySQL5.7.7rc\uff0c\u5c06MySQL5.6.24\u7684lib\u5e93\u6587\u4ef6\u6dfb\u52a0\u5230\u5f53\u524dLinux\u4e3b\u673a\u94fe\u63a5\u5e93<code>\/etc\/ld.so.conf.d\/<\/code>\u4e0b\uff0c\u65b9\u4fbf\u5176\u5b83\u7a0b\u5e8f\u5b89\u88c5\u8c03\u7528\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">echo<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\/usr\/local\/mysql\/lib&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">ld<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ldconfig<\/span><span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u4f7f\u751f\u6548<\/span><span class=\"p\">]<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ldconfig<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">v<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"nx\">grep<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"w\">       <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u67e5\u770b\u6548\u679c<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">ldconfig<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Can<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">stat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">libx32<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">No<\/span><span class=\"w\"> <\/span><span class=\"nx\">such<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">directory<\/span>\n<span class=\"nx\">ldconfig<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Path<\/span><span class=\"w\"> <\/span><span class=\"err\">`<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"nx\">given<\/span><span class=\"w\"> <\/span><span class=\"nx\">more<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">once<\/span>\n<span class=\"nx\">ldconfig<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Path<\/span><span class=\"w\"> <\/span><span class=\"err\">`<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib64<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"nx\">given<\/span><span class=\"w\"> <\/span><span class=\"nx\">more<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">once<\/span>\n<span class=\"nx\">ldconfig<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Can<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">stat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">libx32<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">No<\/span><span class=\"w\"> <\/span><span class=\"nx\">such<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">directory<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib64<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18<\/span><span class=\"w\"> <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18.0.0<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18<\/span><span class=\"w\"> <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmysqlclient_r<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18.1.0<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">    <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18<\/span><span class=\"w\"> <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmysqlclient_r<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18.1.0<\/span>\n<\/code><\/pre><\/div>\n\n<h5>15 \u521b\u5efa\u5176\u5b83MySQL\u6570\u636e\u5e93\u7528\u6237<\/h5>\n<p>\u64cd\u4f5c\u540cMySQL5.7.7rc\uff0c\u8fd9\u91cc\u5c31\u4e0d\u518d\u6f14\u793a\u4e86\u3002<\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"mysql"}}]},{"title":"MySQL\u7f16\u8bd1\u5b89\u88c5\u65f6\u5e38\u89c1\u9519\u8bef\u5206\u6790","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/solvemysqlcompileerror.html","rel":"alternate"}},"published":"2015-06-23T19:20:00+08:00","updated":"2015-06-23T19:20:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-23:\/web\/solvemysqlcompileerror.html","summary":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u5173\u4e8eMySQL\u5728\u7f16\u8bd1\u5b89\u88c5\u65f6\uff0c\u53ef\u80fd\u51fa\u73b0\u7684\u9519\u8bef\u7684\u89e3\u51b3\u65b9\u6cd5\u3002MySQL\u6b63\u786e\u7684\u7f16\u8bd1\u5b89\u88c5\u64cd\u4f5c\u89c1\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u3002<\/p>\n","content":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u5173\u4e8eMySQL\u5728\u7f16\u8bd1\u5b89\u88c5\u65f6\uff0c\u53ef\u80fd\u51fa\u73b0\u7684\u9519\u8bef\u7684\u89e3\u51b3\u65b9\u6cd5\u3002MySQL\u6b63\u786e\u7684\u7f16\u8bd1\u5b89\u88c5\u64cd\u4f5c\u89c1\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u3002<\/p>\n\n\n<h5>1 \u6ca1\u6709\u5b89\u88c5MySQL\u6240\u9700\u8981\u7684boost\u5e93<\/h5>\n<p>\u6d4b\u8bd5\u53d1\u73b0\u7f16\u8bd1MySQL5.7\u4ee5\u53ca\u66f4\u9ad8\u7684\u7248\u672c\u65f6\uff0c\u90fd\u9700\u8981\u4e0b\u8f7d\u5e76\u5f15\u7528\u6216\u8005\u76f4\u63a5\u5b89\u88c5boost\u5e93\uff0c\u5426\u5219\u5728\u6267\u884c<code>cmake<\/code>\u547d\u4ee4\u65f6\u4f1a\u62a5\u5982\u4e0b\u9519\u8bef\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">Running<\/span><span class=\"w\"> <\/span><span class=\"n\">cmake<\/span><span class=\"w\"> <\/span><span class=\"n\">version<\/span><span class=\"w\"> <\/span><span class=\"mf\">3.2<\/span><span class=\"o\">.<\/span><span class=\"mi\">1<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">Configuring<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"n\">MAX_INDEXES<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">64<\/span><span class=\"n\">U<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">SIZEOF_VOIDP<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">6<\/span><span class=\"o\">-<\/span><span class=\"n\">m16<\/span><span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7248\u672c<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">Packaging<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">.<\/span><span class=\"mi\">6<\/span><span class=\"o\">-<\/span><span class=\"n\">m16<\/span><span class=\"o\">-<\/span><span class=\"n\">Linux<\/span><span class=\"o\">-<\/span><span class=\"n\">x86_64<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">Looked<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">boost<\/span><span class=\"o\">\/<\/span><span class=\"n\">version<\/span><span class=\"o\">.<\/span><span class=\"n\">hpp<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\">  <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">BOOST_INCLUDE_DIR<\/span><span class=\"w\"> <\/span><span class=\"n\">BOOST_INCLUDE_DIR<\/span><span class=\"o\">-<\/span><span class=\"n\">NOTFOUND<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">LOCAL_BOOST_DIR<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">LOCAL_BOOST_ZIP<\/span><span class=\"w\"> <\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">Could<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">find<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">correct<\/span><span class=\"w\"> <\/span><span class=\"n\">version<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"n\">boost<\/span><span class=\"o\">.<\/span><span class=\"w\">       <\/span><span class=\"p\">[<\/span><span class=\"err\">\u5173\u952e\u9519\u8bef\u4fe1\u606f<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">currently<\/span><span class=\"w\"> <\/span><span class=\"n\">requires<\/span><span class=\"w\"> <\/span><span class=\"n\">boost_1_57_0<\/span><span class=\"w\">                    <\/span><span class=\"p\">[<\/span><span class=\"err\">\u89e3\u51b3\u529e\u6cd5<\/span><span class=\"p\">]<\/span>\n\n<span class=\"n\">CMake<\/span><span class=\"w\"> <\/span><span class=\"n\">Error<\/span><span class=\"w\"> <\/span><span class=\"n\">at<\/span><span class=\"w\"> <\/span><span class=\"n\">cmake<\/span><span class=\"o\">\/<\/span><span class=\"n\">boost<\/span><span class=\"o\">.<\/span><span class=\"n\">cmake<\/span><span class=\"p\">:<\/span><span class=\"mi\">76<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">MESSAGE<\/span><span class=\"p\">):<\/span><span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"err\">\u5177\u4f53\u9519\u8bef\u548c\u89e3\u51b3\u65b9\u6cd5<\/span><span class=\"p\">]<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">You<\/span><span class=\"w\"> <\/span><span class=\"n\">can<\/span><span class=\"w\"> <\/span><span class=\"n\">download<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">DDOWNLOAD_BOOST<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">DWITH_BOOST<\/span><span class=\"o\">=&lt;<\/span><span class=\"n\">directory<\/span><span class=\"o\">&gt;<\/span>\n\n<span class=\"w\">  <\/span><span class=\"n\">This<\/span><span class=\"w\"> <\/span><span class=\"n\">CMake<\/span><span class=\"w\"> <\/span><span class=\"n\">script<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">look<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">boost<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;<\/span><span class=\"n\">directory<\/span><span class=\"o\">&gt;.<\/span><span class=\"w\">  <\/span><span class=\"n\">If<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"ow\">not<\/span><span class=\"w\"> <\/span><span class=\"n\">there<\/span><span class=\"p\">,<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">it<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">download<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">unpack<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">that<\/span><span class=\"w\"> <\/span><span class=\"n\">directory<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"o\">.<\/span>\n\n<span class=\"w\">  <\/span><span class=\"n\">If<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"w\"> <\/span><span class=\"n\">are<\/span><span class=\"w\"> <\/span><span class=\"n\">inside<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">firewall<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span><span class=\"w\"> <\/span><span class=\"n\">may<\/span><span class=\"w\"> <\/span><span class=\"n\">need<\/span><span class=\"w\"> <\/span><span class=\"n\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">use<\/span><span class=\"w\"> <\/span><span class=\"n\">an<\/span><span class=\"w\"> <\/span><span class=\"n\">http<\/span><span class=\"w\"> <\/span><span class=\"n\">proxy<\/span><span class=\"p\">:<\/span>\n\n<span class=\"w\">  <\/span><span class=\"k\">export<\/span><span class=\"w\"> <\/span><span class=\"n\">http_proxy<\/span><span class=\"o\">=<\/span><span class=\"n\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">example<\/span><span class=\"o\">.<\/span><span class=\"n\">com<\/span><span class=\"p\">:<\/span><span class=\"mi\">80<\/span>\n\n<span class=\"n\">Call<\/span><span class=\"w\"> <\/span><span class=\"n\">Stack<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">most<\/span><span class=\"w\"> <\/span><span class=\"n\">recent<\/span><span class=\"w\"> <\/span><span class=\"n\">call<\/span><span class=\"w\"> <\/span><span class=\"n\">first<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">cmake<\/span><span class=\"o\">\/<\/span><span class=\"n\">boost<\/span><span class=\"o\">.<\/span><span class=\"n\">cmake<\/span><span class=\"p\">:<\/span><span class=\"mi\">228<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">COULD_NOT_FIND_BOOST<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">  <\/span><span class=\"n\">CMakeLists<\/span><span class=\"o\">.<\/span><span class=\"n\">txt<\/span><span class=\"p\">:<\/span><span class=\"mi\">452<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">INCLUDE<\/span><span class=\"p\">)<\/span>\n\n\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"n\">Configuring<\/span><span class=\"w\"> <\/span><span class=\"n\">incomplete<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">errors<\/span><span class=\"w\"> <\/span><span class=\"n\">occurred<\/span><span class=\"o\">!<\/span>\n<span class=\"n\">See<\/span><span class=\"w\"> <\/span><span class=\"n\">also<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;\/mydata\/mysql-5.7.6-m16\/CMakeFiles\/CMakeOutput.log&quot;<\/span><span class=\"o\">.<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u76f4\u63a5\u6309\u7167\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u5c0f\u82822\u4e2d\u7684\u65b9\u6cd5\u5b89\u88c5Boost\u5e93\u5373\u53ef\u3002\u6216\u8005\u5148\u4e0b\u8f7dBoost\u5e93\uff0c\u7136\u540e\u901a\u8fc7\u5728cmake\u547d\u4ee4\u540e\u9762\u6dfb\u52a0\u53c2\u6570<code>-DDOWNLOAD_BOOST=1 -DWITH_BOOST=Boost\u5e93\u8def\u5f84<\/code>\u5373\u53ef\u3002<\/p>\n<h5>2 \u6267\u884ccmake\u65f6\u7f3a\u5c11Ncurses\u5e93\u7684\u652f\u6301<\/h5>\n<p>Ncurses\u63d0\u4f9b\u529f\u80fd\u952e\u5b9a\u4e49(\u5feb\u6377\u952e)\uff0c\u5c4f\u5e55\u7ed8\u5236\u4ee5\u53ca\u57fa\u4e8e\u6587\u672c\u7ec8\u7aef\u7684\u56fe\u5f62\u4e92\u52a8\u529f\u80fd\u7684\u52a8\u6001\u5e93\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">ncurses<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span>\n\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"nx\">Could<\/span><span class=\"w\"> <\/span><span class=\"nx\">NOT<\/span><span class=\"w\"> <\/span><span class=\"nx\">find<\/span><span class=\"w\"> <\/span><span class=\"nx\">Curses<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">missing<\/span><span class=\"p\">:<\/span><span class=\"w\">  <\/span><span class=\"nx\">CURSES_LIBRARY<\/span><span class=\"w\"> <\/span><span class=\"nx\">CURSES_INCLUDE_PATH<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">CMake<\/span><span class=\"w\"> <\/span><span class=\"nx\">Error<\/span><span class=\"w\"> <\/span><span class=\"nx\">at<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">\/<\/span><span class=\"nx\">readline<\/span><span class=\"p\">.<\/span><span class=\"nx\">cmake<\/span><span class=\"p\">:<\/span><span class=\"mi\">64<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">MESSAGE<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">Curses<\/span><span class=\"w\"> <\/span><span class=\"kn\">library<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">found<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Please<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">appropriate<\/span><span class=\"w\"> <\/span><span class=\"kn\">package<\/span><span class=\"p\">,<\/span>\n\n<span class=\"w\">      <\/span><span class=\"nx\">remove<\/span><span class=\"w\"> <\/span><span class=\"nx\">CMakeCache<\/span><span class=\"p\">.<\/span><span class=\"nx\">txt<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">rerun<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"p\">.<\/span><span class=\"nx\">On<\/span><span class=\"w\"> <\/span><span class=\"nx\">Debian<\/span><span class=\"o\">\/<\/span><span class=\"nx\">Ubuntu<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kn\">package<\/span><span class=\"w\"> <\/span><span class=\"nx\">name<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">libncurses5<\/span><span class=\"o\">-<\/span><span class=\"nx\">dev<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">on<\/span><span class=\"w\"> <\/span><span class=\"nx\">Redhat<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">derivates<\/span><span class=\"w\"> <\/span><span class=\"nx\">it<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">ncurses<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Call<\/span><span class=\"w\"> <\/span><span class=\"nx\">Stack<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">most<\/span><span class=\"w\"> <\/span><span class=\"nx\">recent<\/span><span class=\"w\"> <\/span><span class=\"nx\">call<\/span><span class=\"w\"> <\/span><span class=\"nx\">first<\/span><span class=\"p\">):<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">\/<\/span><span class=\"nx\">readline<\/span><span class=\"p\">.<\/span><span class=\"nx\">cmake<\/span><span class=\"p\">:<\/span><span class=\"mi\">107<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">FIND_CURSES<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">\/<\/span><span class=\"nx\">readline<\/span><span class=\"p\">.<\/span><span class=\"nx\">cmake<\/span><span class=\"p\">:<\/span><span class=\"mi\">181<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">MYSQL_USE_BUNDLED_EDITLINE<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">  <\/span><span class=\"nx\">CMakeLists<\/span><span class=\"p\">.<\/span><span class=\"nx\">txt<\/span><span class=\"p\">:<\/span><span class=\"mi\">480<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">MYSQL_CHECK_EDITLINE<\/span><span class=\"p\">)<\/span>\n\n\n<span class=\"o\">--<\/span><span class=\"w\"> <\/span><span class=\"nx\">Configuring<\/span><span class=\"w\"> <\/span><span class=\"nx\">incomplete<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">errors<\/span><span class=\"w\"> <\/span><span class=\"nx\">occurred<\/span><span class=\"p\">!<\/span>\n<span class=\"nx\">See<\/span><span class=\"w\"> <\/span><span class=\"nx\">also<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\/mydata\/mysql-5.7.6-m16\/CMakeFiles\/CMakeOutput.log&quot;<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">See<\/span><span class=\"w\"> <\/span><span class=\"nx\">also<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\/mydata\/mysql-5.7.6-m16\/CMakeFiles\/CMakeError.log&quot;<\/span><span class=\"p\">.<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u76f4\u63a5\u6267\u884c\u547d\u4ee4<code>yum -y install ncurses-devel<\/code>\u5b89\u88c5Ncurses\u5373\u53ef\u3002<\/p>\n<h5>3 \u5b89\u88c5MySQL\u5b8c\u540e\uff0c\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8\u670d\u52a1<\/h5>\n<p>\u5728\u5b89\u88c5\u5b8cMySQL\u540e\uff0c\u6267\u884c\u547d\u4ee4<code>service mysqld start<\/code>\u5931\u8d25\uff0c\u4e5f\u5373\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8MySQL\u670d\u52a1\u3002<\/p>\n<p><img alt=\"\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8MySQL\u670d\u52a1\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_start_error.png\" title=\"\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8MySQL\u670d\u52a1\"><\/p>\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u4e3b\u8981\u901a\u8fc7\u547d\u4ee4<code>systemctl status mysqld.service<\/code>\u548cMySQL\u7684\u65e5\u5fd7\u6765\u5206\u6790\u3002\u5982\u4e0a\u56fe\u6240\u793a\uff0c\u5728\u65e5\u5fd7\u6587\u4ef6<code>\/var\/log\/mysql\/error.log<\/code>\u4e2d\u53ef\u4ee5\u770b\u5230\u5177\u4f53\u7684<code>ERROR<\/code>\u4fe1\u606f\uff1aCould not create unix socket lock file \/var\/run\/mysql\/mysql.sock.lock\u3002\u8fd9\u79cd\u9519\u8bef\u4e00\u822c\u90fd\u662f\u76ee\u5f55\u4e0d\u5b58\u5728\u6216\u8005\u6743\u9650\u4e0d\u8db3\uff0c\u6240\u4ee5\u6211\u4eec\u76f4\u63a5\u4f7f\u7528\u547d\u4ee4<code>mkdir -p \/var\/log\/mysql\/<\/code>\u521b\u5efa\u8be5\u76ee\u5f55\u5373\u53ef\uff0c\u7136\u540e\u53ef\u4ee5\u8bbe\u7f6e\u76ee\u5f55\u6743\u9650<code>chown -R mysql:mysql \/var\/log\/mysql\/<\/code>\u3002<\/p>\n<h5>4 \u64cd\u4f5cMySQL\u65f6\uff0c\u62a5\u9519You must SET PASSWORD before executing this statement<\/h5>\n<p>\u7528MySQL\u7684root\u7528\u6237\u767b\u5f55\u6570\u636e\u5e93\u540e\uff0c\u5982\u679c\u4e4b\u524d\u6ca1\u6709\u8bbe\u7f6e\u5bc6\u7801\uff0c\u90a3\u4e48\u6267\u884c\u4efb\u4f55\u64cd\u4f5c\u547d\u4ee4\u65f6\uff0c\u4f1a\u63d0\u793a\u5982\u4e0b\u9519\u8bef\u4fe1\u606f\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">CREATE<\/span><span class=\"w\"> <\/span><span class=\"k\">DATABASE<\/span><span class=\"w\"> <\/span><span class=\"n n-Quoted\">`testmysqldatabase`<\/span><span class=\"w\"> <\/span><span class=\"k\">DEFAULT<\/span><span class=\"w\"> <\/span><span class=\"k\">CHARACTER<\/span><span class=\"w\"> <\/span><span class=\"k\">SET<\/span><span class=\"w\"> <\/span><span class=\"n\">utf8<\/span><span class=\"w\"> <\/span><span class=\"k\">COLLATE<\/span><span class=\"w\"> <\/span><span class=\"n\">utf8_general_ci<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">ERROR<\/span><span class=\"w\"> <\/span><span class=\"mi\">1820<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">HY000<\/span><span class=\"p\">)<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">You<\/span><span class=\"w\"> <\/span><span class=\"n\">must<\/span><span class=\"w\"> <\/span><span class=\"k\">SET<\/span><span class=\"w\"> <\/span><span class=\"k\">PASSWORD<\/span><span class=\"w\"> <\/span><span class=\"k\">before<\/span><span class=\"w\"> <\/span><span class=\"n\">executing<\/span><span class=\"w\"> <\/span><span class=\"n\">this<\/span><span class=\"w\"> <\/span><span class=\"n\">statement<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5e38\u89c4\u7684\u4f7f\u7528MySQL\u5b89\u5168\u6a21\u5f0f\u7684\u89e3\u51b3\u65b9\u6cd5\u5982\u4e0b\uff0c\u4f46\u662f\u5728MySQL5.7\u4ee5\u53ca\u66f4\u9ad8\u7248\u672c\u4e0b\u662f\u884c\u4e0d\u901a\u7684\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service mysqld stop<\/span>\n<span class=\"n\">Shutting<\/span><span class=\"w\"> <\/span><span class=\"n\">down<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"o\">..<\/span><span class=\"p\">[<\/span><span class=\"w\">  <\/span><span class=\"n\">OK<\/span><span class=\"w\">  <\/span><span class=\"p\">]<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># \/mydata\/mysql\/bin\/mysqld_safe --user=mysql --skip-networking --skip-grant-tables &amp;<\/span>\n<span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span><span class=\"w\"> <\/span><span class=\"mi\">3688<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># 150409 23:02:02 mysqld_safe Logging to &#39;\/var\/log\/mysql\/error.log&#39;.<\/span>\n<span class=\"mi\">150409<\/span><span class=\"w\"> <\/span><span class=\"mi\">23<\/span><span class=\"p\">:<\/span><span class=\"mi\">02<\/span><span class=\"p\">:<\/span><span class=\"mi\">02<\/span><span class=\"w\"> <\/span><span class=\"n\">mysqld_safe<\/span><span class=\"w\"> <\/span><span class=\"n\">Starting<\/span><span class=\"w\"> <\/span><span class=\"n\">mysqld<\/span><span class=\"w\"> <\/span><span class=\"n\">daemon<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"n\">databases<\/span><span class=\"w\"> <\/span><span class=\"n\">from<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">data<\/span>\n<span class=\"c1\">######\u91cd\u65b0\u767b\u5f55mysql\u540e\uff0c\u8bbe\u7f6eroot\u5bc6\u7801<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"n\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">password<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;this is a password sample&#39;<\/span><span class=\"p\">;<\/span>\n<span class=\"n\">ERROR<\/span><span class=\"w\"> <\/span><span class=\"mi\">1290<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">HY000<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">server<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">running<\/span><span class=\"w\"> <\/span><span class=\"n\">with<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">skip<\/span><span class=\"o\">-<\/span><span class=\"n\">grant<\/span><span class=\"o\">-<\/span><span class=\"n\">tables<\/span><span class=\"w\"> <\/span><span class=\"n\">option<\/span><span class=\"w\"> <\/span><span class=\"n\">so<\/span><span class=\"w\"> <\/span><span class=\"n\">it<\/span><span class=\"w\"> <\/span><span class=\"n\">cannot<\/span><span class=\"w\"> <\/span><span class=\"n\">execute<\/span><span class=\"w\"> <\/span><span class=\"n\">this<\/span><span class=\"w\"> <\/span><span class=\"n\">statement<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6709\u6548\u7684\u89e3\u51b3\u65b9\u6cd5\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"k\">[root@typecodes ~]# mysql -u root -p            [\u4f7f\u7528root\u7528\u6237\u767b\u5f55]<\/span>\n<span class=\"na\">Enter password<\/span><span class=\"o\">:<\/span><span class=\"w\">                             <\/span><span class=\"s\">[\u65e0\u5bc6\u7801\uff0c\u76f4\u63a5\u56de\u8f66]<\/span>\n<span class=\"na\">Welcome to the MySQL monitor.  Commands end with ; or \\g.<\/span>\n<span class=\"na\">Your MySQL connection id is 3<\/span>\n<span class=\"na\">Server version<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"s\">5.7.6-m16<\/span>\n\n<span class=\"na\">Copyright (c) 2000, 2015, Oracle and\/or its affiliates. All rights reserved.<\/span>\n\n<span class=\"na\">Oracle is a registered trademark of Oracle Corporation and\/or its<\/span>\n<span class=\"na\">affiliates. Other names may be trademarks of their respective<\/span>\n<span class=\"na\">owners.<\/span>\n\n<span class=\"na\">Type &#39;help;&#39; or &#39;\\h&#39; for help. Type &#39;\\c&#39; to clear the current input statement.<\/span>\n\n<span class=\"na\">mysql&gt; select * from mysql.user;<\/span>\n<span class=\"na\">ERROR 1820 (HY000)<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"s\">You must SET PASSWORD before executing this statement<\/span>\n<span class=\"na\">mysql&gt; set password<\/span><span class=\"o\">=<\/span><span class=\"s\">&#39;this is a password sample&#39;<\/span><span class=\"c1\">;<\/span>\n<span class=\"na\">ERROR 1819 (HY000)<\/span><span class=\"o\">:<\/span><span class=\"w\"> <\/span><span class=\"s\">Your password does not satisfy the current policy requirements<\/span>\n<span class=\"c1\">######\u8bbe\u7f6e\u5f53\u524droot\u7528\u6237\u5bc6\u7801<\/span>\n<span class=\"na\">mysql&gt; set password<\/span><span class=\"o\">=<\/span><span class=\"s\">&#39;your password&#39;<\/span><span class=\"c1\">;<\/span>\n<span class=\"na\">Query OK, 0 rows affected (0.00 sec)<\/span>\n\n<span class=\"na\">mysql&gt; flush privileges;<\/span>\n<span class=\"na\">Query OK, 0 rows affected (0.00 sec)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u9700\u8981\u8bf4\u660e\u7684\u662f\uff0c\u4fee\u6539\u7528\u6237\u5bc6\u7801\u7684SQL\u8bed\u53e5\u5728\u4e0d\u540c\u7684MySQL\u7248\u672c\u4e2d\u662f\u4e0d\u540c\u7684\u3002\u4e0b\u9762\u8fd93\u79cd\u662fMySQL5.5\u4ee5\u4e0b\u7684\u7248\u672c\u7684\u4fee\u6539\u65b9\u6cd5\uff0c\u4f46\u662f\u4e0d\u9002\u7528\u4e8eMySQL5.7\u4ee5\u53ca\u66f4\u9ad8\u7248\u672c\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"nv\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"nv\">update<\/span><span class=\"w\"> <\/span><span class=\"nv\">mysql<\/span>.<span class=\"nv\">user<\/span><span class=\"w\"> <\/span><span class=\"nv\">set<\/span><span class=\"w\"> <\/span><span class=\"nv\">PASSWORD<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;your password&#39;<\/span><span class=\"w\"> <\/span><span class=\"nv\">where<\/span><span class=\"w\"> <\/span><span class=\"nv\">User<\/span><span class=\"o\">=<\/span><span class=\"s1\">&#39;root&#39;<\/span><span class=\"c1\">;<\/span>\n\n<span class=\"nv\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"nv\">SET<\/span><span class=\"w\"> <\/span><span class=\"nv\">PASSWORD<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nv\">root<\/span>@<span class=\"s1\">&#39;localhost&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nv\">PASSWORD<\/span><span class=\"ss\">(<\/span><span class=\"s1\">&#39;your password&#39;<\/span><span class=\"ss\">)<\/span><span class=\"c1\">;<\/span>\n\n<span class=\"nv\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"nv\">SET<\/span><span class=\"w\"> <\/span><span class=\"nv\">PASSWORD<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nv\">PASSWORD<\/span><span class=\"ss\">(<\/span><span class=\"s1\">&#39;your password&#39;<\/span><span class=\"ss\">)<\/span><span class=\"c1\">;<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"mysql"}}]},{"title":"CentOS\u7cfb\u7edfMySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/centosmysqlconfig.html","rel":"alternate"}},"published":"2015-06-23T19:11:00+08:00","updated":"2015-06-23T19:11:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-23:\/web\/centosmysqlconfig.html","summary":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u5185\u5bb9\u662f\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u63d0\u5230\u7684MySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf\u3002<\/p>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662fmy.cnf\u4e2d\u7684\u4e00\u4e9b\u914d\u7f6e\u9700\u8981\u548cMySQL5.7.7rc\u7f16\u8bd1\u5b89\u88c5\u65f6\u7684\u4e00\u4e9b\u914d\u7f6e\u4fdd\u6301\u4e00\u81f4\u3002\u4f8b\u5982\uff0cMySQL\u7684socket\u6587\u4ef6<code>\/var\/run\/mysql\/mysql.sock<\/code>\u8def\u5f84\u5728MySQL5.7.7rc\u7f16\u8bd1\u5b89\u88c5\u65f6\uff0c\u9700\u8981\u521b\u5efa<code>\/var\/run\/mysql\/<\/code>\u6587\u4ef6\u8def\u5f84\u3002\u4e5f\u5c31\u662fmy.cnf\u7684\u914d\u7f6e\u662f\u7531\u7f16\u8bd1MySQL\u65f6\u914d\u7f6e\u7684\u5185\u5bb9\u51b3\u5b9a\u7684\u3002<\/p>\n<p>\u7531\u4e8eMySQL\u7684\u914d\u7f6e\u660e\u7ec6\u4e0d\u591a\uff0c\u6240\u4ee5\u8fd9\u91cc\u5c31\u76f4\u63a5\u5c06my.cnf\u7684\u5168\u90e8\u5185\u5bb9\u8d34\u51fa\u6765\u4e86\u3002<\/p>\n","content":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u5185\u5bb9\u662f\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u63d0\u5230\u7684MySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf\u3002<\/p>\n<p>\u9700\u8981\u6ce8\u610f\u7684\u662fmy.cnf\u4e2d\u7684\u4e00\u4e9b\u914d\u7f6e\u9700\u8981\u548cMySQL5.7.7rc\u7f16\u8bd1\u5b89\u88c5\u65f6\u7684\u4e00\u4e9b\u914d\u7f6e\u4fdd\u6301\u4e00\u81f4\u3002\u4f8b\u5982\uff0cMySQL\u7684socket\u6587\u4ef6<code>\/var\/run\/mysql\/mysql.sock<\/code>\u8def\u5f84\u5728MySQL5.7.7rc\u7f16\u8bd1\u5b89\u88c5\u65f6\uff0c\u9700\u8981\u521b\u5efa<code>\/var\/run\/mysql\/<\/code>\u6587\u4ef6\u8def\u5f84\u3002\u4e5f\u5c31\u662fmy.cnf\u7684\u914d\u7f6e\u662f\u7531\u7f16\u8bd1MySQL\u65f6\u914d\u7f6e\u7684\u5185\u5bb9\u51b3\u5b9a\u7684\u3002<\/p>\n<p>\u7531\u4e8eMySQL\u7684\u914d\u7f6e\u660e\u7ec6\u4e0d\u591a\uff0c\u6240\u4ee5\u8fd9\u91cc\u5c31\u76f4\u63a5\u5c06my.cnf\u7684\u5168\u90e8\u5185\u5bb9\u8d34\u51fa\u6765\u4e86\u3002<\/p>\n\n\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"k\">For<\/span><span class=\"w\"> <\/span><span class=\"n\">advice<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">how<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">change<\/span><span class=\"w\"> <\/span><span class=\"n\">settings<\/span><span class=\"w\"> <\/span><span class=\"n\">please<\/span><span class=\"w\"> <\/span><span class=\"n\">see<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">dev<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">doc<\/span><span class=\"o\">\/<\/span><span class=\"n\">refman<\/span><span class=\"o\">\/<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">\/<\/span><span class=\"n\">en<\/span><span class=\"o\">\/<\/span><span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"n\">configuration<\/span><span class=\"o\">-<\/span><span class=\"n\">defaults<\/span><span class=\"p\">.<\/span><span class=\"n\">html<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"o\">***<\/span><span class=\"w\"> <\/span><span class=\"n\">DO<\/span><span class=\"w\"> <\/span><span class=\"ow\">NOT<\/span><span class=\"w\"> <\/span><span class=\"n\">EDIT<\/span><span class=\"w\"> <\/span><span class=\"n\">THIS<\/span><span class=\"w\"> <\/span><span class=\"k\">FILE<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">It<\/span><span class=\"err\">&#39;<\/span><span class=\"n\">s<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">template<\/span><span class=\"w\"> <\/span><span class=\"n\">which<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">copied<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"o\">***<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"n\">location<\/span><span class=\"w\"> <\/span><span class=\"n\">during<\/span><span class=\"w\"> <\/span><span class=\"n\">install<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">will<\/span><span class=\"w\"> <\/span><span class=\"n\">be<\/span><span class=\"w\"> <\/span><span class=\"n\">replaced<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"n\">you<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"o\">***<\/span><span class=\"w\"> <\/span><span class=\"n\">upgrade<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">newer<\/span><span class=\"w\"> <\/span><span class=\"n\">version<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"p\">.<\/span>\n\n<span class=\"o\">[<\/span><span class=\"n\">client<\/span><span class=\"o\">]<\/span>\n<span class=\"n\">port<\/span><span class=\"o\">=<\/span><span class=\"mi\">3306<\/span>\n<span class=\"n\">socket<\/span><span class=\"o\">=\/<\/span><span class=\"nf\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">run<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">sock<\/span>\n\n<span class=\"o\">[<\/span><span class=\"n\">mysqld<\/span><span class=\"o\">]<\/span>\n\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">Remove<\/span><span class=\"w\"> <\/span><span class=\"k\">leading<\/span><span class=\"w\"> <\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">amount<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">RAM<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">most<\/span><span class=\"w\"> <\/span><span class=\"n\">important<\/span><span class=\"w\"> <\/span><span class=\"k\">data<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">cache<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"k\">Start<\/span><span class=\"w\"> <\/span><span class=\"k\">at<\/span><span class=\"w\"> <\/span><span class=\"mi\">70<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">total<\/span><span class=\"w\"> <\/span><span class=\"n\">RAM<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">dedicated<\/span><span class=\"w\"> <\/span><span class=\"n\">server<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"o\">%<\/span><span class=\"p\">.<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">innodb_buffer_pool_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">128<\/span><span class=\"n\">M<\/span>\n\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">Remove<\/span><span class=\"w\"> <\/span><span class=\"k\">leading<\/span><span class=\"w\"> <\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">turn<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"n\">very<\/span><span class=\"w\"> <\/span><span class=\"n\">important<\/span><span class=\"w\"> <\/span><span class=\"k\">data<\/span><span class=\"w\"> <\/span><span class=\"n\">integrity<\/span><span class=\"w\"> <\/span><span class=\"k\">option<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">logging<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">changes<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"nc\">binary<\/span><span class=\"w\"> <\/span><span class=\"nf\">log<\/span><span class=\"w\"> <\/span><span class=\"ow\">between<\/span><span class=\"w\"> <\/span><span class=\"n\">backups<\/span><span class=\"p\">.<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">log_bin<\/span>\n\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">These<\/span><span class=\"w\"> <\/span><span class=\"k\">are<\/span><span class=\"w\"> <\/span><span class=\"n\">commonly<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">remove<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"n\">required<\/span><span class=\"p\">.<\/span>\n<span class=\"k\">user<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span>\n<span class=\"n\">basedir<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"k\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span>\n<span class=\"n\">datadir<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"k\">data<\/span>\n<span class=\"n\">port<\/span><span class=\"o\">=<\/span><span class=\"mi\">3306<\/span>\n<span class=\"n\">server<\/span><span class=\"o\">-<\/span><span class=\"n\">id<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"n\">socket<\/span><span class=\"o\">=\/<\/span><span class=\"nf\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">run<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">sock<\/span>\n\n<span class=\"k\">character<\/span><span class=\"o\">-<\/span><span class=\"k\">set<\/span><span class=\"o\">-<\/span><span class=\"n\">server<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">utf8<\/span>\n<span class=\"nf\">log<\/span><span class=\"o\">-<\/span><span class=\"n\">error<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nf\">var<\/span><span class=\"o\">\/<\/span><span class=\"nf\">log<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span>\n<span class=\"n\">pid<\/span><span class=\"o\">-<\/span><span class=\"k\">file<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nf\">var<\/span><span class=\"o\">\/<\/span><span class=\"nf\">log<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">pid<\/span>\n<span class=\"n\">general_log<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"n\">skip<\/span><span class=\"o\">-<\/span><span class=\"n\">name<\/span><span class=\"o\">-<\/span><span class=\"n\">resolve<\/span>\n<span class=\"n\">#skip<\/span><span class=\"o\">-<\/span><span class=\"n\">networking<\/span>\n<span class=\"n\">back_log<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">300<\/span>\n\n<span class=\"n\">max_connections<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1000<\/span>\n<span class=\"n\">max_connect_errors<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">6000<\/span>\n<span class=\"n\">open_files_limit<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">65535<\/span>\n<span class=\"n\">table_open_cache<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">128<\/span><span class=\"w\"> <\/span>\n<span class=\"n\">max_allowed_packet<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">binlog_cache_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">max_heap_table_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">tmp_table_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">16<\/span><span class=\"n\">M<\/span>\n\n<span class=\"n\">read_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">read_rnd_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">sort_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">join_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">28<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">key_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"n\">M<\/span>\n\n<span class=\"n\">thread_cache_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span>\n\n<span class=\"n\">query_cache_type<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n<span class=\"n\">query_cache_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">query_cache_limit<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"n\">M<\/span>\n\n<span class=\"n\">ft_min_word_len<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span>\n\n<span class=\"n\">log_bin<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"n\">bin<\/span>\n<span class=\"n\">binlog_format<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">mixed<\/span>\n<span class=\"n\">expire_logs_days<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">30<\/span>\n\n\n<span class=\"n\">performance_schema<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span>\n<span class=\"n\">explicit_defaults_for_timestamp<\/span>\n\n<span class=\"n\">#lower_case_table_names<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n\n\n\n<span class=\"n\">myisam_sort_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">myisam_repair_threads<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span>\n\n<span class=\"n\">interactive_timeout<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">28800<\/span>\n<span class=\"n\">wait_timeout<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">28800<\/span>\n\n\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">Remove<\/span><span class=\"w\"> <\/span><span class=\"k\">leading<\/span><span class=\"w\"> <\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">options<\/span><span class=\"w\"> <\/span><span class=\"n\">mainly<\/span><span class=\"w\"> <\/span><span class=\"n\">useful<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">reporting<\/span><span class=\"w\"> <\/span><span class=\"n\">servers<\/span><span class=\"p\">.<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">The<\/span><span class=\"w\"> <\/span><span class=\"n\">server<\/span><span class=\"w\"> <\/span><span class=\"n\">defaults<\/span><span class=\"w\"> <\/span><span class=\"k\">are<\/span><span class=\"w\"> <\/span><span class=\"n\">faster<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">transactions<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"n\">fast<\/span><span class=\"w\"> <\/span><span class=\"n\">SELECTs<\/span><span class=\"p\">.<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">Adjust<\/span><span class=\"w\"> <\/span><span class=\"n\">sizes<\/span><span class=\"w\"> <\/span><span class=\"k\">as<\/span><span class=\"w\"> <\/span><span class=\"n\">needed<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">experiment<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">find<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">optimal<\/span><span class=\"w\"> <\/span><span class=\"k\">values<\/span><span class=\"p\">.<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">join_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">128<\/span><span class=\"n\">M<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">sort_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"n\">M<\/span>\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">read_rnd_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"n\">M<\/span>\n\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">Disabling<\/span><span class=\"w\"> <\/span><span class=\"n\">symbolic<\/span><span class=\"o\">-<\/span><span class=\"n\">links<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">recommended<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">prevent<\/span><span class=\"w\"> <\/span><span class=\"n\">assorted<\/span><span class=\"w\"> <\/span><span class=\"n\">security<\/span><span class=\"w\"> <\/span><span class=\"n\">risks<\/span>\n<span class=\"n\">symbolic<\/span><span class=\"o\">-<\/span><span class=\"n\">links<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span>\n\n<span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">Recommended<\/span><span class=\"w\"> <\/span><span class=\"ow\">in<\/span><span class=\"w\"> <\/span><span class=\"n\">standard<\/span><span class=\"w\"> <\/span><span class=\"n\">MySQL<\/span><span class=\"w\"> <\/span><span class=\"n\">setup<\/span>\n<span class=\"n\">sql_mode<\/span><span class=\"o\">=<\/span><span class=\"n\">NO_ENGINE_SUBSTITUTION<\/span><span class=\"p\">,<\/span><span class=\"n\">NO_AUTO_CREATE_USER<\/span><span class=\"p\">,<\/span><span class=\"n\">STRICT_TRANS_TABLES<\/span>\n\n<span class=\"o\">[<\/span><span class=\"n\">mysqldump<\/span><span class=\"o\">]<\/span>\n<span class=\"n\">quick<\/span>\n<span class=\"n\">max_allowed_packet<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">16<\/span><span class=\"n\">M<\/span>\n\n<span class=\"o\">[<\/span><span class=\"n\">myisamchk<\/span><span class=\"o\">]<\/span>\n<span class=\"n\">key_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">sort_buffer_size<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">read_buffer<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"n\">M<\/span>\n<span class=\"n\">write_buffer<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"n\">M<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u548c\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7nginxhttpsspdy.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u516d)\uff1aNginx\u914d\u7f6eHTTPS\u548cSPDY\u5b9e\u6218\u300b<\/a>\u7684Nginx\u914d\u7f6e\u6587\u4ef6<code>nginx.conf<\/code>\u4e00\u6837\uff0c\u8fd9\u4e2aMySQL\u7684\u914d\u7f6e\u6587\u4ef6<code>my.cnf<\/code>\u4e5f\u6258\u7ba1\u5728\u4e0b\u9762\u8fd9\u4e24\u4e2a<code>LNMP\u914d\u7f6e\u5de5\u7a0b<\/code>\u4e0a\uff0c\u4ee5\u540e\u6709\u4efb\u4f55\u7684\u4fee\u6539\u90fd\u4f1a\u66f4\u65b0\u5230\u8fd9\u4e0a\u9762\u3002<\/p>\n<p>GitHub\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/vfhky\/mylnmp\" title=\"\u70b9\u51fb\u8fdb\u5165\">https:\/\/github.com\/vfhky\/mylnmp<\/a> \uff1b<\/p>\n<p>Coding\u5730\u5740\uff1a<a href=\"https:\/\/coding.net\/u\/vfhky\/p\/mylnmp\/git\" title=\"\u70b9\u51fb\u8fdb\u5165\">https:\/\/coding.net\/u\/vfhky\/p\/mylnmp\/git<\/a> \u3002<\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"mysql"}}]},{"title":"Nginx\u7f16\u8bd1\u5b89\u88c5\u65f6\u5e38\u89c1\u9519\u8bef\u5206\u6790","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/solvenginxcompileerror.html","rel":"alternate"}},"published":"2015-06-22T17:02:00+08:00","updated":"2015-06-22T17:02:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-22:\/web\/solvenginxcompileerror.html","summary":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u5173\u4e8eNginx\u5728\u7f16\u8bd1\u5b89\u88c5\u65f6\uff0c\u53ef\u80fd\u51fa\u73b0\u7684\u9519\u8bef\u7684\u89e3\u51b3\u65b9\u6cd5\u3002Nginx\u6b63\u786e\u7684\u7f16\u8bd1\u5b89\u88c5\u64cd\u4f5c\u89c1\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b<\/a>\u3002<\/p>\n<h5>1 Nginx\u542f\u52a8\u811a\u672c\u9519\u8bef\uff1aenv: \/etc\/init.d\/nginx: No such file or directory<\/h5>\n<p>\u660e\u660e\u4e0a\u4f20\u4e86Nginx\u670d\u52a1\u63a7\u5236\u811a\u672c<code>nginx<\/code>\uff0c\u4f46\u662f\u5728\u6267\u884c<code>service nginx start<\/code>\u547d\u4ee4\u65f6\uff0c\u5374\u4f1a\u62a5\u4e0a\u9762\u7684\u9519\u8bef\u3002<\/p>\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u542f\u52a8\u811a\u672c\u7684\u683c\u5f0f\u6709\u95ee\u9898\uff0c\u4f8b\u5982\u8be5\u811a\u672c\u662fdos\u683c\u5f0f\uff0c\u5728Linux\u7cfb\u7edf\u662f\u4e2d\u65e0\u6cd5\u8bc6\u522b\u7684\u3002\u53ef\u4ee5\u901a\u8fc7vim\u6253\u5f00\u8be5\u6587\u4ef6\uff0c\u5982\u679c\u53ef\u4ee5\u770b\u5230\u51fa\u73b0<code>^M<\/code>\u7684\u5b57\u7b26\uff0c\u5c31\u53ef\u4ee5\u786e\u5b9a\u662fDOS\u683c\u5f0f\u7684\u4e86\u3002\u90a3\u4e48\u53ef\u4ee5\u5728vim\u4e2d\u6267\u884c\u547d\u4ee4<code>:%s\/\\r\\+$\/\/e<\/code>\uff0c\u5c06\u5176\u8f6c\u6362\u6210Unix\u683c\u5f0f\u5373\u53ef\u3002<\/p>\n","content":"<p>\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u5173\u4e8eNginx\u5728\u7f16\u8bd1\u5b89\u88c5\u65f6\uff0c\u53ef\u80fd\u51fa\u73b0\u7684\u9519\u8bef\u7684\u89e3\u51b3\u65b9\u6cd5\u3002Nginx\u6b63\u786e\u7684\u7f16\u8bd1\u5b89\u88c5\u64cd\u4f5c\u89c1\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b<\/a>\u3002<\/p>\n<h5>1 Nginx\u542f\u52a8\u811a\u672c\u9519\u8bef\uff1aenv: \/etc\/init.d\/nginx: No such file or directory<\/h5>\n<p>\u660e\u660e\u4e0a\u4f20\u4e86Nginx\u670d\u52a1\u63a7\u5236\u811a\u672c<code>nginx<\/code>\uff0c\u4f46\u662f\u5728\u6267\u884c<code>service nginx start<\/code>\u547d\u4ee4\u65f6\uff0c\u5374\u4f1a\u62a5\u4e0a\u9762\u7684\u9519\u8bef\u3002<\/p>\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u542f\u52a8\u811a\u672c\u7684\u683c\u5f0f\u6709\u95ee\u9898\uff0c\u4f8b\u5982\u8be5\u811a\u672c\u662fdos\u683c\u5f0f\uff0c\u5728Linux\u7cfb\u7edf\u662f\u4e2d\u65e0\u6cd5\u8bc6\u522b\u7684\u3002\u53ef\u4ee5\u901a\u8fc7vim\u6253\u5f00\u8be5\u6587\u4ef6\uff0c\u5982\u679c\u53ef\u4ee5\u770b\u5230\u51fa\u73b0<code>^M<\/code>\u7684\u5b57\u7b26\uff0c\u5c31\u53ef\u4ee5\u786e\u5b9a\u662fDOS\u683c\u5f0f\u7684\u4e86\u3002\u90a3\u4e48\u53ef\u4ee5\u5728vim\u4e2d\u6267\u884c\u547d\u4ee4<code>:%s\/\\r\\+$\/\/e<\/code>\uff0c\u5c06\u5176\u8f6c\u6362\u6210Unix\u683c\u5f0f\u5373\u53ef\u3002<\/p>\n\n\n<h5>2 \u542f\u52a8Nginx\u670d\u52a1\u5931\u8d25<\/h5>\n<p>\u5b89\u88c5\u5b8cNginx\u540e\uff0c\u6267\u884c\u547d\u4ee4<code>service nginx start<\/code>\u5931\u8d25\uff0c\u5373\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8Nginx\u670d\u52a1\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes init.d<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">service<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"k\">start<\/span>\n<span class=\"n\">Starting<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">via<\/span><span class=\"w\"> <\/span><span class=\"n\">systemctl<\/span><span class=\"p\">)<\/span><span class=\"err\">:<\/span><span class=\"w\">  <\/span><span class=\"nl\">Warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Unit<\/span><span class=\"w\"> <\/span><span class=\"k\">file<\/span><span class=\"w\"> <\/span><span class=\"k\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"p\">.<\/span><span class=\"n\">service<\/span><span class=\"w\"> <\/span><span class=\"n\">changed<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"k\">disk<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;systemctl daemon-reload&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">recommended<\/span><span class=\"p\">.<\/span>\n<span class=\"n\">Job<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"p\">.<\/span><span class=\"n\">service<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"n\">See<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;systemctl status nginx.service&#39;<\/span><span class=\"w\"> <\/span><span class=\"ow\">and<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;journalctl -xn&#39;<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"n\">details<\/span><span class=\"p\">.<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">FAILED<\/span><span class=\"o\">]<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u4e3b\u8981\u901a\u8fc7\u547d\u4ee4<code>systemctl status nginx.service<\/code>\u6765\u5206\u6790\uff0c\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n<p><img alt=\"Nginx\u7f16\u8bd1\u5b89\u88c5\u65f6\u5e38\u89c1\u9519\u8bef\u5206\u6790\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/nginx_start_error.png\" title=\"Nginx\u7f16\u8bd1\u5b89\u88c5\u65f6\u5e38\u89c1\u9519\u8bef\u5206\u6790\"><\/p>\n<p>\u5f88\u660e\u663e\u662f\u7531\u4e8e\u4e0b\u9762\u8fd9\u4e2a\u9519\u8bef\uff0c\u5bfc\u81f4Nginx\u670d\u52a1\u542f\u52a8\u5931\u8d25\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">Apr<\/span><span class=\"w\"> <\/span><span class=\"mi\">11<\/span><span class=\"w\"> <\/span><span class=\"mi\">21<\/span><span class=\"err\">:<\/span><span class=\"mi\">43<\/span><span class=\"err\">:<\/span><span class=\"mi\">07<\/span><span class=\"w\"> <\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">[<\/span><span class=\"n\">4026<\/span><span class=\"o\">]<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Starting<\/span><span class=\"w\"> <\/span><span class=\"nl\">nginx<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nl\">nginx<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">emerg<\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"n\">mkdir<\/span><span class=\"p\">()<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;\/var\/tmp\/nginx\/client\/&quot;<\/span><span class=\"w\"> <\/span><span class=\"n\">failed<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"err\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">No<\/span><span class=\"w\"> <\/span><span class=\"n\">such<\/span><span class=\"w\"> <\/span><span class=\"k\">file<\/span><span class=\"w\"> <\/span><span class=\"ow\">or<\/span><span class=\"w\"> <\/span><span class=\"n\">directory<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8fd9\u79cd\u9519\u8bef\u4e00\u822c\u90fd\u662f\u76ee\u5f55\u4e0d\u5b58\u5728\u6216\u8005\u6743\u9650\u4e0d\u8db3\uff0c\u6240\u4ee5\u76f4\u63a5\u6267\u884c\u4e0b\u9762\u4e24\u6761\u547d\u4ee4\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cd \/var\/tmp\/<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mkdir -p \/var\/tmp\/nginx\/{client,proxy,fastcgi,uwsgi,scgi}<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3 \u542f\u52a8Nginx\u670d\u52a1\u65f6\uff0c\u754c\u9762\u5361\u4f4f<\/h5>\n<p>\u5728\u6572\u5165\u547d\u4ee4<code>service nginx restart<\/code>\u540e\uff0c\u7ec8\u7aef\u754c\u9762\u80fd\u5361\u4f4f\uff0c\u4e5f\u5c31\u662fNginx\u670d\u52a1\u63a7\u5236\u811a\u672c<code>nginx<\/code>\u6ca1\u6709\u6b63\u5e38\u6267\u884c\u5b8c\u6bd5\u3002\u5728\u505c\u6b62Nginx\u670d\u52a1\u540e\uff0c\u53d1\u73b0Nginx\u8fdb\u7a0b\u8fd8\u5b58\u5728\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">#######\u542f\u52a8Nginx\u670d\u52a1\u51fa\u73b0\u8b66\u544a<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">init<\/span><span class=\"o\">.<\/span><span class=\"n\">d<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service nginx restart <\/span>\n<span class=\"n\">Restarting<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">via<\/span><span class=\"w\"> <\/span><span class=\"n\">systemctl<\/span><span class=\"p\">):<\/span><span class=\"w\">  <\/span><span class=\"n\">Warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Unit<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">.<\/span><span class=\"n\">service<\/span><span class=\"w\"> <\/span><span class=\"n\">changed<\/span><span class=\"w\"> <\/span><span class=\"n\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">disk<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;systemctl daemon-reload&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">recommended<\/span><span class=\"o\">.<\/span>\n<span class=\"n\">Restarting<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">via<\/span><span class=\"w\"> <\/span><span class=\"n\">systemctl<\/span><span class=\"p\">):<\/span><span class=\"w\">  <\/span><span class=\"n\">Warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">Unit<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"n\">of<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">.<\/span><span class=\"n\">service<\/span><span class=\"w\"> <\/span><span class=\"n\">changed<\/span><span class=\"w\"> <\/span><span class=\"n\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">disk<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;systemctl daemon-reload&#39;<\/span><span class=\"w\"> <\/span><span class=\"n\">recommended<\/span><span class=\"o\">.<\/span>\n<span class=\"o\">^<\/span><span class=\"n\">C<\/span><span class=\"w\">     <\/span><span class=\"c1\">######\u7ec8\u7aef\u754c\u9762\u5361\u4f4f\uff0c\u4f7f\u7528ctrl+c\u547d\u4ee4\u5f3a\u5236\u7ed3\u675f<\/span>\n\n<span class=\"c1\">#######\u505c\u6389Nginx\u670d\u52a1<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">init<\/span><span class=\"o\">.<\/span><span class=\"n\">d<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service nginx stop<\/span>\n<span class=\"n\">Stopping<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">via<\/span><span class=\"w\"> <\/span><span class=\"n\">systemctl<\/span><span class=\"p\">):<\/span><span class=\"w\">  <\/span><span class=\"p\">[<\/span><span class=\"w\">  <\/span><span class=\"n\">OK<\/span><span class=\"w\">  <\/span><span class=\"p\">]<\/span>\n\n<span class=\"c1\">#######\u67e5\u770bNginx\u8fdb\u7a0b\u662f\u5426\u5df2\u88ab\u505c\u6b62\uff08\u53ef\u4ee5\u770b\u5230\u672a\u505c\u6b62\uff09<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">init<\/span><span class=\"o\">.<\/span><span class=\"n\">d<\/span><span class=\"p\">]<\/span><span class=\"c1\"># ps -aux|grep nginx <\/span>\n<span class=\"n\">root<\/span><span class=\"w\">      <\/span><span class=\"mi\">7796<\/span><span class=\"w\">  <\/span><span class=\"mf\">0.0<\/span><span class=\"w\">  <\/span><span class=\"mf\">0.2<\/span><span class=\"w\">  <\/span><span class=\"mi\">84184<\/span><span class=\"w\">  <\/span><span class=\"mi\">2044<\/span><span class=\"w\"> <\/span><span class=\"err\">?<\/span><span class=\"w\">        <\/span><span class=\"n\">Ss<\/span><span class=\"w\">   <\/span><span class=\"mi\">21<\/span><span class=\"p\">:<\/span><span class=\"mi\">14<\/span><span class=\"w\">   <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"k\">master<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">sbin<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">.<\/span><span class=\"n\">conf<\/span>\n<span class=\"n\">nginx<\/span><span class=\"w\">     <\/span><span class=\"mi\">7798<\/span><span class=\"w\">  <\/span><span class=\"mf\">0.0<\/span><span class=\"w\">  <\/span><span class=\"mf\">0.3<\/span><span class=\"w\">  <\/span><span class=\"mi\">86656<\/span><span class=\"w\">  <\/span><span class=\"mi\">3380<\/span><span class=\"w\"> <\/span><span class=\"err\">?<\/span><span class=\"w\">        <\/span><span class=\"n\">S<\/span><span class=\"w\">    <\/span><span class=\"mi\">21<\/span><span class=\"p\">:<\/span><span class=\"mi\">14<\/span><span class=\"w\">   <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">worker<\/span><span class=\"w\"> <\/span><span class=\"n\">process<\/span>\n<span class=\"n\">root<\/span><span class=\"w\">      <\/span><span class=\"mi\">7981<\/span><span class=\"w\">  <\/span><span class=\"mf\">0.0<\/span><span class=\"w\">  <\/span><span class=\"mf\">0.0<\/span><span class=\"w\"> <\/span><span class=\"mi\">112644<\/span><span class=\"w\">   <\/span><span class=\"mi\">964<\/span><span class=\"w\"> <\/span><span class=\"n\">pts<\/span><span class=\"o\">\/<\/span><span class=\"mi\">0<\/span><span class=\"w\">    <\/span><span class=\"n\">S<\/span><span class=\"o\">+<\/span><span class=\"w\">   <\/span><span class=\"mi\">21<\/span><span class=\"p\">:<\/span><span class=\"mi\">19<\/span><span class=\"w\">   <\/span><span class=\"mi\">0<\/span><span class=\"p\">:<\/span><span class=\"mi\">00<\/span><span class=\"w\"> <\/span><span class=\"n\">grep<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"n\">color<\/span><span class=\"o\">=<\/span><span class=\"n\">auto<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u53ef\u80fd\u662fNginx\u670d\u52a1\u63a7\u5236\u811a\u672c\uff08\/etc\/init.d\/nginx\uff09\u4ee3\u7801\u4e0d\u6b63\u786e\uff0c\u63a8\u8350\u4f7f\u7528\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/nginxserviceoptshell.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aNginx\u670d\u52a1\u542f\u52a8\u3001\u505c\u6b62\u548c\u91cd\u542f\u7b49\u64cd\u4f5c\u7684SHELL\u811a\u672c\u300b<\/a>\u4e2d\u7684shell\u811a\u672c\u3002\u6700\u540e\u518d\u91cd\u65b0\u6267\u884c\u4e0b\u9762\u7684\u811a\u672c\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">chkconfig<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">add<\/span><span class=\"w\"> <\/span><span class=\"nx\">nginx<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">chkconfig<\/span><span class=\"w\"> <\/span><span class=\"nx\">nginx<\/span><span class=\"w\"> <\/span><span class=\"nx\">on<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">service<\/span><span class=\"w\"> <\/span><span class=\"nx\">nginx<\/span><span class=\"w\"> <\/span><span class=\"nx\">restart<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u8fd8\u6709\u4e00\u79cd\u5728\u542f\u52a8Nginx\u670d\u52a1\u65f6\uff0c\u7ec8\u7aef\u754c\u9762\u4f1a\u5361\u4f4f\u7684\u60c5\u51b5\uff1a\u90a3\u5c31\u662fNginx\u7684\u914d\u7f6e\u6587\u4ef6<code>\/etc\/nginx\/nginx.conf<\/code>\u4e0d\u6b63\u786e\uff0c\u4f46\u662f\u4f7f\u7528<code>nginx -t<\/code>\u547d\u4ee4\u663e\u793a\u6b63\u5e38\u3002\u8fd9\u79cd\u60c5\u51b5\u53ea\u80fd\u5bf9nginx.conf\u6587\u4ef6\u4e2d\u7684\u6bcf\u4e00\u4e2a\u914d\u7f6e\u8fdb\u884c\u68c0\u67e5\u4e86\u3002<\/p>\n<h5>4 Compilation failed in require\u6216\u8005perl_parse() failed<\/h5>\n<p>\u5728\u4f7f\u7528\u547d\u4ee4<code>service nginx start<\/code>\u542f\u52a8Nginx\u670d\u52a1\u65f6\u62a5\u9519\uff0c\u4e8e\u662f\u901a\u8fc7<code>systemctl status nginx.service<\/code>\u67e5\u770b\u5177\u4f53\u7684\u9519\u8bef\u4fe1\u606f\u3002   <\/p>\n<p><img alt=\"\u67e5\u770bNginx1.9.0\u7684\u8be6\u7ec6\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/compilationfailedinrequire.png\" title=\"\u67e5\u770bNginx1.9.0\u7684\u8be6\u7ec6\u4fe1\u606f\"><\/p>\n<p>\u7136\u540e\u4f7f\u7528\u547d\u4ee4<code>nginx -t<\/code>\u67e5\u770b\u914d\u7f6e\u662f\u5426\u6b63\u5e38\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u540c\u6837\u62a5\u9519\u3002 <\/p>\n<p><img alt=\"nginx -t\u67e5\u770b\u9519\u8bef\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/nginx-t-error.png\" title=\"nginx -t\u67e5\u770b\u9519\u8bef\u4fe1\u606f\"><\/p>\n<p>\u89e3\u51b3\u65b9\u6cd5\uff1a\u4ece\u56fe\u4e2d\u53ef\u4ee5\u770b\u51fa\u7531\u4e8e<code>Can't load '\/usr\/local\/lib64\/perl5\/auto\/nginx\/nginx.so' for module nginx: \/usr\/local\/lib64\/perl5\/au...m line 68.<\/code>\u7684\u9519\u8bef\uff0c\u5bfc\u81f4\u4e86Nginx\u5728\u8c03\u7528\u51fd\u6570\u65f6\u5931\u8d25\uff1a<code>perl_parse() failed<\/code>\u3002\u4e5f\u5c31\u662f\u8bc1\u660e\u662f\u4e4b\u524d\u6ca1\u6709\u5b89\u88c5perl\u4f9d\u8d56\u5305\uff0c\u4e8e\u662f\u901a\u8fc7\u6267\u884c\u547d\u4ee4<code>yum -y install perl-devel perl-ExtUtils-Embed<\/code>\u540e\uff0c\u518d\u6b21\u7f16\u8bd1\u5b89\u88c5Nginx\u89e3\u51b3\u3002<\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"nginx"}}]},{"title":"2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u516d)\uff1aNginx\u914d\u7f6eHTTPS\u548cSPDY\u5b9e\u6218","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/centos7nginxhttpsspdy.html","rel":"alternate"}},"published":"2015-06-21T22:39:00+08:00","updated":"2015-06-21T22:39:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-21:\/web\/centos7nginxhttpsspdy.html","summary":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u516d\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5982\u4f55\u5728CentOS 7.1\u4e2dNginx\u5982\u4f55\u914d\u7f6eHTTPS\u548cSPDY\u3002\u5173\u4e8e\u5177\u4f53\u5982\u4f55\u7f16\u8bd1\u5b89\u88c5Nginx\uff0c\u53ef\u4ee5\u67e5\u770b\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b<\/a>\u3002<\/p>\n","content":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u516d\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5982\u4f55\u5728CentOS 7.1\u4e2dNginx\u5982\u4f55\u914d\u7f6eHTTPS\u548cSPDY\u3002\u5173\u4e8e\u5177\u4f53\u5982\u4f55\u7f16\u8bd1\u5b89\u88c5Nginx\uff0c\u53ef\u4ee5\u67e5\u770b\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b<\/a>\u3002<\/p>\n\n\n<h5>1 \u91cd\u70b9\uff1aNginx\u914d\u7f6e\u6587\u4ef6nginx.conf\u7684\u5177\u4f53\u5185\u5bb9<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span>\n<span class=\"normal\">111<\/span>\n<span class=\"normal\">112<\/span>\n<span class=\"normal\">113<\/span>\n<span class=\"normal\">114<\/span>\n<span class=\"normal\">115<\/span>\n<span class=\"normal\">116<\/span>\n<span class=\"normal\">117<\/span>\n<span class=\"normal\">118<\/span>\n<span class=\"normal\">119<\/span>\n<span class=\"normal\">120<\/span>\n<span class=\"normal\">121<\/span>\n<span class=\"normal\">122<\/span>\n<span class=\"normal\">123<\/span>\n<span class=\"normal\">124<\/span>\n<span class=\"normal\">125<\/span>\n<span class=\"normal\">126<\/span>\n<span class=\"normal\">127<\/span>\n<span class=\"normal\">128<\/span>\n<span class=\"normal\">129<\/span>\n<span class=\"normal\">130<\/span>\n<span class=\"normal\">131<\/span>\n<span class=\"normal\">132<\/span>\n<span class=\"normal\">133<\/span>\n<span class=\"normal\">134<\/span>\n<span class=\"normal\">135<\/span>\n<span class=\"normal\">136<\/span>\n<span class=\"normal\">137<\/span>\n<span class=\"normal\">138<\/span>\n<span class=\"normal\">139<\/span>\n<span class=\"normal\">140<\/span>\n<span class=\"normal\">141<\/span>\n<span class=\"normal\">142<\/span>\n<span class=\"normal\">143<\/span>\n<span class=\"normal\">144<\/span>\n<span class=\"normal\">145<\/span>\n<span class=\"normal\">146<\/span>\n<span class=\"normal\">147<\/span>\n<span class=\"normal\">148<\/span>\n<span class=\"normal\">149<\/span>\n<span class=\"normal\">150<\/span>\n<span class=\"normal\">151<\/span>\n<span class=\"normal\">152<\/span>\n<span class=\"normal\">153<\/span>\n<span class=\"normal\">154<\/span>\n<span class=\"normal\">155<\/span>\n<span class=\"normal\">156<\/span>\n<span class=\"normal\">157<\/span>\n<span class=\"normal\">158<\/span>\n<span class=\"normal\">159<\/span>\n<span class=\"normal\">160<\/span>\n<span class=\"normal\">161<\/span>\n<span class=\"normal\">162<\/span>\n<span class=\"normal\">163<\/span>\n<span class=\"normal\">164<\/span>\n<span class=\"normal\">165<\/span>\n<span class=\"normal\">166<\/span>\n<span class=\"normal\">167<\/span>\n<span class=\"normal\">168<\/span>\n<span class=\"normal\">169<\/span>\n<span class=\"normal\">170<\/span>\n<span class=\"normal\">171<\/span>\n<span class=\"normal\">172<\/span>\n<span class=\"normal\">173<\/span>\n<span class=\"normal\">174<\/span>\n<span class=\"normal\">175<\/span>\n<span class=\"normal\">176<\/span>\n<span class=\"normal\">177<\/span>\n<span class=\"normal\">178<\/span>\n<span class=\"normal\">179<\/span>\n<span class=\"normal\">180<\/span>\n<span class=\"normal\">181<\/span>\n<span class=\"normal\">182<\/span>\n<span class=\"normal\">183<\/span>\n<span class=\"normal\">184<\/span>\n<span class=\"normal\">185<\/span>\n<span class=\"normal\">186<\/span>\n<span class=\"normal\">187<\/span>\n<span class=\"normal\">188<\/span>\n<span class=\"normal\">189<\/span>\n<span class=\"normal\">190<\/span>\n<span class=\"normal\">191<\/span>\n<span class=\"normal\">192<\/span>\n<span class=\"normal\">193<\/span>\n<span class=\"normal\">194<\/span>\n<span class=\"normal\">195<\/span>\n<span class=\"normal\">196<\/span>\n<span class=\"normal\">197<\/span>\n<span class=\"normal\">198<\/span>\n<span class=\"normal\">199<\/span>\n<span class=\"normal\">200<\/span>\n<span class=\"normal\">201<\/span>\n<span class=\"normal\">202<\/span>\n<span class=\"normal\">203<\/span>\n<span class=\"normal\">204<\/span>\n<span class=\"normal\">205<\/span>\n<span class=\"normal\">206<\/span>\n<span class=\"normal\">207<\/span>\n<span class=\"normal\">208<\/span>\n<span class=\"normal\">209<\/span>\n<span class=\"normal\">210<\/span>\n<span class=\"normal\">211<\/span>\n<span class=\"normal\">212<\/span>\n<span class=\"normal\">213<\/span>\n<span class=\"normal\">214<\/span>\n<span class=\"normal\">215<\/span>\n<span class=\"normal\">216<\/span>\n<span class=\"normal\">217<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code>######\n###  Description: The config file of Nginx with ssl, spdy, no-www redircting, gzip functions\n###  Author:  vfhky  2015.05.05  https:\/\/typecodes.com\/web\/centos7nginxhttpsspdy.html\n######\nuser  nginx nginx;\nworker_processes  1;\n\nerror_log  \/var\/log\/nginx\/error.log;\n#error_log  logs\/error.log  notice;\n#error_log  logs\/error.log  info;\n\npid        \/var\/run\/nginx\/nginx.pid;\n\n\nevents {\n    worker_connections  1024;\n}\n\n\nhttp {\n    include       mime.types;\n    default_type  application\/octet-stream;\n\n    log_format  main  &#39;$remote_addr - $remote_user [$time_local] &quot;$request&quot; &#39;\n                      &#39;$status $body_bytes_sent &quot;$http_referer&quot; &#39;\n                      &#39;&quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;&#39;;\n\n    access_log  \/var\/log\/nginx\/access.log  main;\n\n    sendfile        on;\n    #tcp_nopush     on;\n\n    #keepalive_timeout  0;\n    keepalive_timeout  65;\n\n    #\u9690\u85cfNginx\u7248\u672c\u4fe1\u606f\uff0c\u7981\u6b62\u7f51\u7ad9\u76ee\u5f55\u6d4f\u89c8\n    server_tokens off;\n    autoindex off;\n    #\u5f53FastCGI\u540e\u7aef\u670d\u52a1\u5668\u5904\u7406\u8bf7\u6c42\u7ed9\u51fahttp\u54cd\u5e94\u7801\u4e3a4xx\u548c5xx\u65f6\uff0c\u5c31\u8f6c\u53d1\u7ed9nginx\n    fastcgi_intercept_errors on;\n\n    #\u5173\u4e8efastcgi\u7684\u914d\u7f6e\n    fastcgi_connect_timeout 300;    \n    fastcgi_send_timeout 300;    \n    fastcgi_read_timeout 300;    \n    fastcgi_buffer_size 64k;    \n    fastcgi_buffers 4 64k;    \n    fastcgi_busy_buffers_size 128k;    \n    fastcgi_temp_file_write_size 128k;\n\n    #\u652f\u6301gzip\u538b\u7f29\n    gzip on;\n    gzip_min_length 1k;\n    gzip_buffers 16 64k;\n    gzip_http_version 1.1;\n    gzip_comp_level 6;\n    gzip_types text\/plain application\/x-javascript text\/css application\/javascript text\/javascript image\/jpeg image\/gif image\/png application\/xml application\/json;\n    gzip_vary on;\n    gzip_disable &quot;MSIE [1-6].(?!.*SV1)&quot;;\n\n    #\n    # \u91cd\u5b9a\u5411\u6240\u6709\u5e26www\u8bf7\u6c42\u5230\u975ewww\u7684\u8bf7\u6c42\n    #\n    server {\n        listen               *:80;\n        listen               *:443 ssl spdy;\n        server_name www.typecodes.com;\n        # ssl\u8bc1\u4e66\u914d\u7f6e\u89c1\u6587\u7ae0 https:\/\/typecodes.com\/web\/lnmppositivessl.html\n        ssl_certificate \/etc\/nginx\/ssl\/typecodes.crt;\n        # ssl\u5bc6\u94a5\u6587\u4ef6\u89c1\u6587\u7ae0 https:\/\/typecodes.com\/web\/lnmppositivessl.html\n        ssl_certificate_key \/etc\/nginx\/ssl\/typecodes.key;\n        # \u4e0d\u4ea7\u751f\u65e5\u5fd7\n        access_log off;\n\n        # \u8bbf\u95eefavicon.ico\u548crobots.txt\u4e0d\u8df3\u8f6c\uff08\u628a\u8fd9\u4e24\u4e2a\u6587\u4ef6\u5b58\u653e\u5728\u4e0a\u7ea7\u76ee\u5f55html\u4e2d\uff09\n        location ~* ^\/(favicon.ico|robots.txt)$ {\n            root html;\n            expires max;\n            log_not_found off;\n            break;\n        }\n\n        location \/ {\n            return 301 https:\/\/typecodes.com$request_uri;\n        }\n    }\n\n    #\n    # \u5c06\u6240\u6709http\u8bf7\u6c42\u91cd\u5b9a\u5411\u5230https\n    #\n    server {\n        listen               *:80;\n        server_name          typecodes.com;\n        # \u4e0d\u4ea7\u751f\u65e5\u5fd7\n        access_log off;\n\n        # \u8bbf\u95eefavicon.ico\u548crobots.txt\u4e0d\u8df3\u8f6c\uff08\u628a\u8fd9\u4e24\u4e2a\u6587\u4ef6\u5b58\u653e\u5728\u4e0a\u7ea7\u76ee\u5f55html\u4e2d\uff09\n        location ~* ^\/(favicon.ico|robots.txt)$ {\n            root html;\n            expires max;\n            log_not_found off;\n            break;\n        }\n\n        location \/ {\n            return 301 https:\/\/typecodes.com$request_uri;\n        }\n    }\n\n    #\n    # HTTPS server\n    #\n    server {\n        listen               *:443 ssl spdy;\n        server_name typecodes.com;\n\n        # ssl\u8bc1\u4e66\u914d\u7f6e\u89c1\u6587\u7ae0 https:\/\/typecodes.com\/web\/lnmppositivessl.html\n        ssl_certificate \/etc\/nginx\/ssl\/typecodes.crt;\n        # ssl\u5bc6\u94a5\u6587\u4ef6\u89c1\u6587\u7ae0 https:\/\/typecodes.com\/web\/lnmppositivessl.html\n        ssl_certificate_key \/etc\/nginx\/ssl\/typecodes.key;\n        ssl_session_cache shared:SSL:20m;\n        ssl_session_timeout 10m;\n        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!CAMELLIA;\n        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #enables TLSv1, but not SSLv2, SSLv3 which is weak and should no longer be used.\n        ssl_prefer_server_ciphers on;\n        # \u5f00\u542fspdy\u529f\u80fd\n        add_header Alternate-Protocol 443:npn-spdy\/3.1;\n        # \u4e25\u683c\u7684https\u8bbf\u95ee\n        add_header Strict-Transport-Security &quot;max-age=31536000; includeSubdomains;&quot;;\n\n        #\u8bbe\u7f6e\u7f51\u7ad9\u6839\u76ee\u5f55\n        root   \/usr\/share\/nginx\/html\/typecodes;\n        index  index.php index.html;\n\n        charset utf-8;\n\n        #access_log  \/var\/log\/nginx\/log\/host.access.log  main;\n\n        #\u8bbe\u7f6ecss\/javascript\/\u56fe\u7247\u7b49\u9759\u6001\u8d44\u6e90\u7684\u7f13\u5b58\u65f6\u95f4\n        location ~ .*\\.(css|js|ico|png|gif|jpg|json|mp3|mp4|flv|swf)(.*) {\n            expires 60d;\n        }\n\n        # include \/etc\/nginx\/default.d\/*.conf;\n        # \u8bbe\u7f6etypecho\u535a\u5ba2\u7684config\u6587\u7ae0\u4e0d\u88ab\u8bbf\u95ee\uff0c\u4fdd\u8bc1\u5b89\u5168\n        location = \/config.inc.php{\n            deny  all;\n        }\n\n        # keep the uploads directory safe by excluding php, php5, html file accessing. Applying to wordpress and typecho.\n        # location ~ .*\/uploads\/.*\\.(php|php5|html)$ {\n        #   deny  all;\n        # }\n\n        # \u8bbe\u7f6ewordpress\u548ctypecho\u535a\u5ba2\u4e2d\uff0c\u63d2\u4ef6\u76ee\u5f55\u65e0\u6cd5\u76f4\u63a5\u8bbf\u95eephp\u6216\u8005html\u6587\u4ef6\n        location ~ .*\/plugins\/.*\\.(php|php5|html)$ {\n            deny  all;\n        }\n\n        #Rewrite\u7684\u4f2a\u9759\u6001(\u9488\u5bf9wordpress\/typecho)\uff0curl\u5730\u5740\u53bb\u6389index.php\n        location \/ {\n            if (-f $request_filename\/index.html){\n                rewrite (.*) $1\/index.html break;\n            }\n            if (-f $request_filename\/index.php){\n                rewrite (.*) $1\/index.php;\n            }\n        if (!-f $request_filename){\n                rewrite (.*) \/index.php;\n            }\n        }\n\n        #\u8bbf\u95eefavicon.ico\u65f6\u4e0d\u4ea7\u751f\u65e5\u5fd7\n        location = \/favicon.ico {\n            access_log off;\n        }\n\n        #\u8bbe\u7f6e40\u7cfb\u5217\u9519\u8bef\u7684\u5e94\u7b54\u6587\u4ef6\u4e3a40x.html\n        error_page  400 401 402 403 404  \/40x.html;\n        location = \/40x.html {\n                root   html;\n                index  index.html index.htm;\n        }\n\n        #\u8bbe\u7f6e50\u7cfb\u5217\u9519\u8bef\u7684\u5e94\u7b54\u6587\u4ef6\u4e3a50x.html\n        #\n        error_page   500 501 502 503 504  \/50x.html;\n        location = \/50x.html {\n            root   html;\n            index  index.html index.htm;\n        }\n\n        # proxy the PHP scripts to Apache listening on 127.0.0.1:80\n        #\n        #location ~ \\.php$ {\n        #    proxy_pass   http:\/\/127.0.0.1;\n        #}\n\n        # \u8bbe\u7f6eNginx\u548cphp\u901a\u4fe1\u673a\u5236\u4e3atcp\u7684socket\u6a21\u5f0f\uff0c\u800c\u4e0d\u662f\u76f4\u63a5\u76d1\u542c9000\u7aef\u53e3\n        location  ~ .*\\.php(\\\/.*)*$ {\n             fastcgi_split_path_info ^(.+\\.php)(\/.+)$;\n             #fastcgi_pass   127.0.0.1:9000;\n             # the better form of fastcgi_pass than before\n             fastcgi_pass   unix:\/var\/run\/php-fpm\/php-fpm.sock;\n             fastcgi_index  index.php;\n             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;\n             include        fastcgi_params;\n        }\n\n        # deny access to .htaccess files, if Apache&#39;s document root\n        # concurs with nginx&#39;s one\n        #\n        #location ~ \/\\.ht {\n        #    deny  all;\n        #}\n    }\n}\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>2 Nginx\u5f00\u542fspdy\u529f\u80fd<\/h5>\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5728chrome\u6d4f\u89c8\u5668\u7684\u5730\u5740\u680f\u4e2d\u8f93\u5165<code>chrome:\/\/net-internals\/#spdy<\/code>\u6293\u53d6\u8bbf\u95ee\u4e8b\u4ef6\uff0c\u7136\u540e\u65b0\u5efa\u4e00\u4e2a\u9875\u9762\u6253\u5f00\u81ea\u5df1\u7684\u535a\u5ba2\uff0c\u8fd9\u6837\u5c31\u4f1a\u88ab\u7b2c\u4e00\u4e2a\u9875\u9762\u6293\u53d6\u5230\u4e86\u3002<\/p>\n<p><img alt=\"Nginx\u5f00\u542fGoogle Chrome\u7684SPDY\u529f\u80fd\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/google_chrome_spdy.png\" title=\"Nginx\u5f00\u542fGoogle Chrome\u7684SPDY\u529f\u80fd\"><\/p>\n<h5>3 Nginx\u4e2durl\u5730\u5740\u4e2d\uff0c\u5c06\u5e26www\u7684\u4e8c\u7ea7\u57df\u540d\u8df3\u8f6c\u5230\u4e0d\u5e26www\u9876\u7ea7\u57df\u540d<\/h5>\n<p>\u535a\u5ba2\u76ee\u524d\u5c06http\u8bbf\u95ee\u5168\u90e8\u5b9a\u5411\u5230https\uff0c\u540c\u65f6\u5c06https:\/\/www.typecodes.com\u91cd\u5b9a\u5411\u5230https:\/\/typecodes.com\u4e0a\u3002\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/lnmppositivessl.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 6.5\u7cfb\u7edfLNMP\u73af\u5883\u5b89\u88c5SSL\u8bc1\u4e66\u300b<\/a>\u4e2d\uff0c\u53ea\u505a\u4e86http\u8df3\u8f6c\u5230https\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u5728Nginx\u914d\u7f6e\u4e2d\u6700\u597d\u4e0d\u8981\u5305\u542b\u8fc7\u591a\u7684<code>if<\/code>\u5224\u65ad\u8bed\u53e5\uff1b\u53e6\u5916\uff0c\u5904\u7406\u4e0d\u540c\u7684server_name\u65f6\uff0c\u5b98\u65b9\u5efa\u8bae<code>\u5199\u5728\u591a\u4e2aserver\u5757<\/code>\u4e2d\uff0c\u5c31\u50cf\u5c0f\u82821\u4e2d\u7684\u90a3\u6837\u3002<\/p>\n<h5>4 \u5176\u4ed6\u8bf4\u660e<\/h5>\n<p>\u7531\u4e8eLNMP\u914d\u7f6e\u6bd4\u8f83\u7e41\u7410\uff0c\u6240\u4ee5\u6211\u5efa\u4e86\u4e00\u4e2a\u5173\u4e8eNginx\u3001MySQL\u548cPHP\u914d\u7f6e\u7684git\u5de5\u7a0b\uff0c\u65b9\u4fbf\u67e5\u8be2\u3002\u76ee\u524d\u8fd9\u4e2a\u5de5\u7a0b\u6258\u7ba1\u5728GitHub\u548ccoding.net\u4e0a\uff0c\u5730\u5740\u5982\u4e0b\uff1a<\/p>\n<p>GitHub\u5730\u5740\uff1a<a href=\"https:\/\/github.com\/vfhky\/mylnmp\" title=\"\u70b9\u51fb\u8fdb\u5165\">https:\/\/github.com\/vfhky\/mylnmp<\/a> \uff1b<\/p>\n<p>Coding\u5730\u5740\uff1a<a href=\"https:\/\/coding.net\/u\/vfhky\/p\/mylnmp\/git\" title=\"\u70b9\u51fb\u8fdb\u5165\">https:\/\/coding.net\/u\/vfhky\/p\/mylnmp\/git<\/a> \u3002<\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"nginx"}}]},{"title":"2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/centos7compilemysql.html","rel":"alternate"}},"published":"2015-06-21T00:53:00+08:00","updated":"2015-06-21T00:53:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-21:\/web\/centos7compilemysql.html","summary":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u56db\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u7f16\u8bd1\u5b89\u88c5MySql\u6570\u636e\u5e93\u3002<\/p>\n<h5>1 \u521b\u5efamysql\u7528\u6237\u548c\u7528\u6237\u7ec4\uff0c\u5e76\u4e0b\u8f7dMySQL5.7.7 Release Candidate\u7248\u672c<\/h5>\n<p>\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u540d\u4e3amysql\u4e14<code>\u6ca1\u6709\u767b\u5f55\u6743\u9650<\/code>\u7684\u7528\u6237\u548c\u4e00\u4e2a\u540d\u4e3amysql\u7684\u7528\u6237\u7ec4\uff0c\u7136\u540e\u53bbmysql\u5b98\u7f51\u4e0b\u8f7dMySQL5.7.7rc\u7248\u672c\u3002<\/p>\n\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">groupadd<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">r<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">useradd<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">r<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">g<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">s<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"k\">false<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">M<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u4ece\u5b98\u7f51\u6216\u8005\u535a\u5ba2\u5907\u4efd\u5730\u5740\u4e0b\u8f7dMySQL5<\/span><span class=\"mf\">.7.7<\/span><span class=\"w\"> <\/span><span class=\"k\">Release<\/span><span class=\"w\"> <\/span><span class=\"n\">Candidate\u7248\u672c<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">cdn<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">Downloads<\/span><span class=\"o\">\/<\/span><span class=\"n\">MySQL<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">git<\/span><span class=\"p\">.<\/span><span class=\"n\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">libs<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">md5sum<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span><span class=\"w\">        <\/span><span class=\"o\">[<\/span><span class=\"n\">MD5\u6821\u9a8c<\/span><span class=\"o\">]<\/span>\n<span class=\"mi\">36<\/span><span class=\"n\">a96021a93ca236e76f5c90ae19cd44<\/span><span class=\"w\">  <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u5f00\u59cb\u89e3\u538bMySQL5<\/span><span class=\"mf\">.7.7<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">zxf<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">cd<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u4e0b\u8f7dgmock<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">google\u7684c<\/span><span class=\"o\">++<\/span><span class=\"n\">mock\u6846\u67b6<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4ecemysql<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.6<\/span><span class=\"n\">\u5f00\u59cb\u652f\u6301<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql-5.7.7-rc<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">git<\/span><span class=\"p\">.<\/span><span class=\"n\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">libs<\/span><span class=\"o\">\/<\/span><span class=\"n\">ccpp<\/span><span class=\"o\">\/<\/span><span class=\"n\">gmock<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.6.0<\/span><span class=\"p\">.<\/span><span class=\"n\">zip<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u5c06\u5176\u89e3\u538b\u5230MySQL5<\/span><span class=\"mf\">.7.7<\/span><span class=\"n\">\u7684source_downloads\u76ee\u5f55\u4e0b<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql-5.7.7-rc<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">unzip<\/span><span class=\"w\"> <\/span><span class=\"n\">gmock<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.6.0<\/span><span class=\"p\">.<\/span><span class=\"n\">zip<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">d<\/span><span class=\"w\"> <\/span><span class=\"n\">source_downloads<\/span>\n<\/code><\/pre>\n\n","content":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u56db\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u7f16\u8bd1\u5b89\u88c5MySql\u6570\u636e\u5e93\u3002<\/p>\n<h5>1 \u521b\u5efamysql\u7528\u6237\u548c\u7528\u6237\u7ec4\uff0c\u5e76\u4e0b\u8f7dMySQL5.7.7 Release Candidate\u7248\u672c<\/h5>\n<p>\u9996\u5148\u521b\u5efa\u4e00\u4e2a\u540d\u4e3amysql\u4e14<code>\u6ca1\u6709\u767b\u5f55\u6743\u9650<\/code>\u7684\u7528\u6237\u548c\u4e00\u4e2a\u540d\u4e3amysql\u7684\u7528\u6237\u7ec4\uff0c\u7136\u540e\u53bbmysql\u5b98\u7f51\u4e0b\u8f7dMySQL5.7.7rc\u7248\u672c\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#####<\/span><span class=\"n\">##\u65b0\u5efamysql\u7528\u6237\u548cmysql\u7ec4<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">groupadd<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">r<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">useradd<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">r<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">g<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">s<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">bin<\/span><span class=\"o\">\/<\/span><span class=\"k\">false<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">M<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span>\n\n<span class=\"err\">####<\/span><span class=\"n\">##\u4ece\u5b98\u7f51\u6216\u8005\u535a\u5ba2\u5907\u4efd\u5730\u5740\u4e0b\u8f7dMySQL5<\/span><span class=\"mf\">.7.7<\/span><span class=\"w\"> <\/span><span class=\"k\">Release<\/span><span class=\"w\"> <\/span><span class=\"n\">Candidate\u7248\u672c<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">cdn<\/span><span class=\"p\">.<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">Downloads<\/span><span class=\"o\">\/<\/span><span class=\"n\">MySQL<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">git<\/span><span class=\"p\">.<\/span><span class=\"n\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">libs<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">md5sum<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span><span class=\"w\">        <\/span><span class=\"o\">[<\/span><span class=\"n\">MD5\u6821\u9a8c<\/span><span class=\"o\">]<\/span>\n<span class=\"mi\">36<\/span><span class=\"n\">a96021a93ca236e76f5c90ae19cd44<\/span><span class=\"w\">  <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u5f00\u59cb\u89e3\u538bMySQL5<\/span><span class=\"mf\">.7.7<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">zxf<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">.<\/span><span class=\"n\">tar<\/span><span class=\"p\">.<\/span><span class=\"n\">gz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">cd<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"o\">-<\/span><span class=\"mf\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u4e0b\u8f7dgmock<\/span><span class=\"err\">\uff1a<\/span><span class=\"n\">google\u7684c<\/span><span class=\"o\">++<\/span><span class=\"n\">mock\u6846\u67b6<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u4ecemysql<\/span><span class=\"w\"> <\/span><span class=\"mf\">5.6<\/span><span class=\"n\">\u5f00\u59cb\u652f\u6301<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql-5.7.7-rc<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"nl\">http<\/span><span class=\"p\">:<\/span><span class=\"o\">\/\/<\/span><span class=\"n\">git<\/span><span class=\"p\">.<\/span><span class=\"n\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"n\">com<\/span><span class=\"o\">\/<\/span><span class=\"n\">libs<\/span><span class=\"o\">\/<\/span><span class=\"n\">ccpp<\/span><span class=\"o\">\/<\/span><span class=\"n\">gmock<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.6.0<\/span><span class=\"p\">.<\/span><span class=\"n\">zip<\/span>\n<span class=\"err\">####<\/span><span class=\"n\">##\u5c06\u5176\u89e3\u538b\u5230MySQL5<\/span><span class=\"mf\">.7.7<\/span><span class=\"n\">\u7684source_downloads\u76ee\u5f55\u4e0b<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql-5.7.7-rc<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">unzip<\/span><span class=\"w\"> <\/span><span class=\"n\">gmock<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.6.0<\/span><span class=\"p\">.<\/span><span class=\"n\">zip<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">d<\/span><span class=\"w\"> <\/span><span class=\"n\">source_downloads<\/span>\n<\/code><\/pre><\/div>\n\n\n\n<h5>2 \u4e0b\u8f7d\u7f16\u8bd1MySQL5.7.7rc\u65f6\u9700\u8981\u7684\u5de5\u5177<\/h5>\n<p>\u7531\u4e8e\u4eceMySQL5.5\u7248\u672c\u5f00\u59cb\u5f03\u7528\u4e86\u5e38\u89c4\u7684configure\u7f16\u8bd1\u65b9\u6cd5\uff0c\u6240\u4ee5\u9700\u8981\u4e0b\u8f7dCMake\u7f16\u8bd1\u5668\u3001Boost\u5e93\u3001ncurses\u5e93\u548cGNU\u5206\u6790\u5668\u751f\u6210\u5668bison\u8fd94\u79cd\u5de5\u5177\u3002\u7ecf\u8fc7\u81ea\u5df1\u7684\u6d4b\u8bd5\u53d1\u73b0\uff0cMySQL5.7.7rc\u7f16\u8bd1\u65f6\u6240\u9700\u8981\u7684Boost\u5e93\u53ea\u80fd\u662f<code>boost 1.57.0\u7248\u672c<\/code>\uff0c\u4f4e\u4e8e\u6216\u8005\u9ad8\u4e8e\u8fd9\u4e2a\u7248\u672c\u7684\u90fd\u4f1a\u7f16\u8bd1\u5931\u8d25\uff01<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"nx\">CMake\u7f16\u8bd1\u5de5\u5177<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/git.typecodes.com\/libs\/ccpp\/cmake-3.2.1.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">zxf<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">gz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">configure<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\">  <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u9ed8\u8ba4\u5b89\u88c5\u8def\u5f84\u662f<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bin<\/span><span class=\"p\">]<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">version<\/span><span class=\"w\">       <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u67e5\u770bcmake\u7248\u672c<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">cmake<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">3.2.1<\/span>\n\n<span class=\"nx\">CMake<\/span><span class=\"w\"> <\/span><span class=\"nx\">suite<\/span><span class=\"w\"> <\/span><span class=\"nx\">maintained<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">supported<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">Kitware<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">kitware<\/span><span class=\"p\">.<\/span><span class=\"nx\">com<\/span><span class=\"o\">\/<\/span><span class=\"nx\">cmake<\/span><span class=\"p\">).<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.2.1<\/span><span class=\"o\">*<\/span>\n<span class=\"err\">######<\/span><span class=\"nx\">\u4e5f\u53ef\u4ee5\u76f4\u63a5yum\u5b89\u88c5CMake2<\/span><span class=\"m m-Double\">.8.11<\/span><span class=\"nx\">\u7248\u672c<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">cmake<\/span>\n\n<span class=\"err\">#######<\/span><span class=\"nx\">Ncurses<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u63d0\u4f9b\u529f\u80fd\u952e\u5b9a\u4e49<\/span><span class=\"p\">(<\/span><span class=\"nx\">\u5feb\u6377\u952e<\/span><span class=\"p\">),<\/span><span class=\"nx\">\u5c4f\u5e55\u7ed8\u5236\u4ee5\u53ca\u57fa\u4e8e\u6587\u672c\u7ec8\u7aef\u7684\u56fe\u5f62\u4e92\u52a8\u529f\u80fd\u7684\u52a8\u6001\u5e93<\/span><span class=\"err\">\u3002<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">ncurses<\/span><span class=\"o\">-<\/span><span class=\"nx\">devel<\/span>\n\n<span class=\"err\">#######<\/span><span class=\"nx\">bison<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">GNU\u5206\u6790\u5668\u751f\u6210\u5668<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/git.typecodes.com\/libs\/ccpp\/bison-3.0.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">zxf<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">gz<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">configure<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">bison<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">3.0<\/span><span class=\"o\">*<\/span>\n\n<span class=\"err\">#######<\/span><span class=\"nx\">Boost\u5e93<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u4e00\u4e2a\u5f00\u6e90\u53ef\u79fb\u690d\u7684C<\/span><span class=\"o\">++<\/span><span class=\"nx\">\u5e93<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u662fC<\/span><span class=\"o\">++<\/span><span class=\"nx\">\u6807\u51c6\u5316\u8fdb\u7a0b\u7684\u5f00\u53d1\u5f15\u64ce\u4e4b\u4e00<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">wget<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">c<\/span><span class=\"w\"> <\/span><span class=\"nx\">http<\/span><span class=\"p\">:<\/span><span class=\"c1\">\/\/git.typecodes.com\/libs\/ccpp\/boost_1_57_0.tar.bz2<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">tar<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">jxf<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">.<\/span><span class=\"nx\">tar<\/span><span class=\"p\">.<\/span><span class=\"nx\">bz2<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"o\">\/<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">bootstrap<\/span><span class=\"p\">.<\/span><span class=\"nx\">sh<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">b2<\/span><span class=\"w\"> <\/span><span class=\"nx\">stage<\/span><span class=\"w\"> <\/span><span class=\"nx\">threading<\/span><span class=\"p\">=<\/span><span class=\"nx\">multi<\/span><span class=\"w\"> <\/span><span class=\"nx\">link<\/span><span class=\"p\">=<\/span><span class=\"nx\">shared<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"nx\">b2<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">threading<\/span><span class=\"p\">=<\/span><span class=\"nx\">multi<\/span><span class=\"w\"> <\/span><span class=\"nx\">link<\/span><span class=\"p\">=<\/span><span class=\"nx\">shared<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">boost_1_57_0<\/span><span class=\"o\">*<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3 \u5f00\u59cb\u8fdb\u884cMySQL5.7.7rc\u7f16\u8bd1\u524d\u7684\u914d\u7f6e<\/h5>\n<p>\u51c6\u5907\u5de5\u4f5c\u505a\u597d\u540e\uff0c\u5c31\u5f00\u59cb\u6b63\u5f0f\u914d\u7f6eMySQL5.7.7rc\u7684\u5b89\u88c5\u660e\u7ec6\u4e86\u3002\u6ce8\u610f\uff0c\u64cd\u4f5c\u65f6\u4e00\u5b9a\u8981\u5148\u628a\u4e0b\u9762\u53cd\u659c\u6760\u201c\\\u201d\u540e\u9762\u6dfb\u52a0\u7684\u6ce8\u91ca\u6587\u5b57\u53bb\u6389\uff01\uff01\uff01<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"cp\">######\u4f7f\u7528cmake\u547d\u4ee4\uff0c\u5f00\u59cb\u7f16\u8bd1MySQL5.7.7rc<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"p\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"mf\">-5.7.7<\/span><span class=\"o\">-<\/span><span class=\"n\">rc<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">cmake<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">-<\/span><span class=\"n\">DCMAKE_INSTALL_PREFIX<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"w\">  <\/span><span class=\"err\">\\<\/span><span class=\"w\">              <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u5b89\u88c5\u7684\u6839\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_DATADIR<\/span><span class=\"o\">=\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">data<\/span><span class=\"w\">  <\/span><span class=\"err\">\\<\/span><span class=\"w\">                   <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u6570\u636e\u5e93\u6587\u4ef6\u5b58\u653e\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DSYSCONFDIR<\/span><span class=\"o\">=\/<\/span><span class=\"n\">etc<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                     <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u914d\u7f6e\u6587\u4ef6\u6240\u5728\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_USER<\/span><span class=\"o\">=<\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                    <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7528\u6237\u540d<\/span><span class=\"p\">]<\/span><span class=\"w\">      <\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_MYISAM_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                        <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u6570\u636e\u5e93\u5f15\u64ce<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_INNOBASE_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                      <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u6570\u636e\u5e93\u5f15\u64ce<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_ARCHIVE_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                       <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u6570\u636e\u5e93\u5f15\u64ce<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_MEMORY_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                        <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u6570\u636e\u5e93\u5f15\u64ce<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_READLINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                     <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684readline<\/span><span class=\"w\"> <\/span><span class=\"n\">library<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_UNIX_ADDR<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">run<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"p\">.<\/span><span class=\"n\">sock<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">           <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u901a\u8baf\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_TCP_PORT<\/span><span class=\"o\">=<\/span><span class=\"mi\">3306<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                 <\/span><span class=\"p\">[<\/span><span class=\"n\">MySQL\u7684\u76d1\u542c\u7aef\u53e3<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DENABLED_LOCAL_INFILE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                              <\/span><span class=\"p\">[<\/span><span class=\"n\">\u542f\u7528\u52a0\u8f7d\u672c\u5730\u6570\u636e<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DENABLE_DOWNLOADS<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                  <\/span><span class=\"p\">[<\/span><span class=\"n\">\u7f16\u8bd1\u65f6\u5141\u8bb8\u81ea\u4e3b\u4e0b\u8f7d\u76f8\u5173\u6587\u4ef6<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_PARTITION_STORAGE_ENGINE<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span><span class=\"w\">  <\/span>\\\n<span class=\"o\">-<\/span><span class=\"n\">DEXTRA_CHARSETS<\/span><span class=\"o\">=<\/span><span class=\"n\">all<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                  <\/span><span class=\"p\">[<\/span><span class=\"n\">\u4f7fMySQL\u652f\u6301\u6240\u6709\u7684\u6269\u5c55\u5b57\u7b26<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DDEFAULT_CHARSET<\/span><span class=\"o\">=<\/span><span class=\"n\">utf8<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                <\/span><span class=\"p\">[<\/span><span class=\"n\">\u8bbe\u7f6e\u9ed8\u8ba4\u5b57\u7b26\u96c6\u4e3autf8<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DDEFAULT_COLLATION<\/span><span class=\"o\">=<\/span><span class=\"n\">utf8_general_ci<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                   <\/span><span class=\"p\">[<\/span><span class=\"n\">\u8bbe\u7f6e\u9ed8\u8ba4\u5b57\u7b26\u6821\u5bf9<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_DEBUG<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                                        <\/span><span class=\"p\">[<\/span><span class=\"n\">\u7981\u7528\u8c03\u8bd5\u6a21\u5f0f<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DMYSQL_MAINTAINER_MODE<\/span><span class=\"o\">=<\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_SSL<\/span><span class=\"o\">:<\/span><span class=\"n\">STRING<\/span><span class=\"o\">=<\/span><span class=\"n\">bundled<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                             <\/span><span class=\"p\">[<\/span><span class=\"n\">\u901a\u8baf\u65f6\u652f\u6301ssl\u534f\u8bae<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">-<\/span><span class=\"n\">DWITH_ZLIB<\/span><span class=\"o\">:<\/span><span class=\"n\">STRING<\/span><span class=\"o\">=<\/span><span class=\"n\">bundled<\/span><span class=\"w\">                              <\/span><span class=\"p\">[<\/span><span class=\"n\">\u5141\u8bb8\u4f7f\u7528zlib<\/span><span class=\"w\"> <\/span><span class=\"n\">library<\/span><span class=\"p\">]<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6267\u884c\u4e0a\u9762\u7684\u914d\u7f6e\u547d\u4ee4\u7684\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"MySQL5.7.7rc\u7f16\u8bd1\u524d\u7684\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_cmake.png\" title=\"MySQL5.7.7rc\u7f16\u8bd1\u524d\u7684\u914d\u7f6e\"><\/p>\n<h5>4 \u5f00\u59cb\u7f16\u8bd1\u548c\u5b89\u88c5MySQL5.7.7rc<\/h5>\n<p>\u4f7f\u7528make\u547d\u4ee4\u7f16\u8bd1\u65f6\uff0c\u4f1a\u6bd4\u8f83\u5403CPU\u3002\u535a\u4e3b\u5f53\u65f6\u8d2d\u4e70\u7684\u963f\u91cc\u4e3b\u673a\u662f\u5355\u68381G\u5185\u5b58\uff0c\u7f16\u8bd1\u523055%\u5de6\u53f3\u65f6\u76f4\u63a5\u5361\u4f4f\uff0c\u540c\u65f6\u65e0\u6cd5\u65b0\u5efa\u4e00\u4e2a\u7ec8\u7aef\u8fde\u63a5\uff0c\u5185\u5b58\u6216\u8005CPU\u5df2\u7ecf\u4e25\u91cd\u8017\u5c3d\u3002\u5728\u91cd\u65b0\u8d2d\u4e70\u4e86\u4e00\u4e2a\u7269\u7406\u6570\u636e\u76d8\u5e76\u5212\u5206\u51fa\u4e00\u4e2aswap\u4ea4\u6362\u7a7a\u95f4\u540e\uff0c\u6700\u7ec8\u8fd8\u662f\u7f16\u8bd1\u6210\u529f\u4e86\uff0c\u8017\u65f6\u7ea64\u4e2a\u5c0f\u65f6\u3002\u6240\u4ee5\uff0c\u5982\u679c\u4e3b\u673a\u5185\u5b58\u57281G\u4e00\u4e0b\u5e76\u4e14\u6ca1\u6709\u8bbe\u7f6eLinux\u4ea4\u6362\u7a7a\u95f4\u7684\uff0c<code>\u4e0d\u5efa\u8bae<\/code>\u76f4\u63a5\u7f16\u8bd1MySQL5.7.7rc\uff01<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">5.7.7<\/span><span class=\"o\">-<\/span><span class=\"nx\">rc<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">make<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u4e0b\u56fe\u5c55\u793a\u7684\u662f<code>make<\/code>\u547d\u4ee4\u6267\u884c\u5b8c\u6bd5\u7684\u60c5\u51b5\uff1a<\/p>\n<p><img alt=\"\u7f16\u8bd1MySQL5.7.7rc\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_make.png\" title=\"\u7f16\u8bd1MySQL5.7.7rc\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<p><img alt=\"\u7f16\u8bd1MySQL5.7.7rc\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_make_process.png\" title=\"\u7f16\u8bd1MySQL5.7.7rc\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<p>\u7f16\u8bd1MySQL5.7.7rc\u5bf9CPU\u548c\u5185\u5b58\u6d88\u8017\u6bd4\u8f83\u5927\uff0c\u8fd9\u91cc\u622a\u53d6\u4e86\u4e24\u5f20\u4f7f\u7528top\u547d\u4ee4\u7684\u56fe\u7247\uff1a<\/p>\n<p><img alt=\"\u7f16\u8bd1MySQL5.7.7rc\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/compile_mysql_require_memory.png\" title=\"\u7f16\u8bd1MySQL5.7.7rc\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<p><img alt=\"\u7f16\u8bd1MySQL5.7.7rc\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/compile_mysql_require_cpu.png\" title=\"\u7f16\u8bd1MySQL5.7.7rc\u7684make\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<p>\u6700\u540e\uff0c\u6fc0\u52a8\u4eba\u5fc3\u7684\u65f6\u523b\uff0c\u770b\u5230\u4e0b\u56fe\u5c31\u4ee3\u8868\u5df2\u7ecf\u7f16\u8bd1\u5b89\u88c5\u597d\u4e86MySQL5.7.7rc\uff01<\/p>\n<p><img alt=\"\u5b89\u88c5MySQL5.7.7rc\u7684make install\u547d\u4ee4\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_make_install.png\" title=\"\u5b89\u88c5MySQL5.7.7rc\u7684make install\u547d\u4ee4\u6267\u884c\u7ed3\u679c\"><\/p>\n<h5>5 \u67e5\u770b\u7f16\u8bd1\u6210\u529f\u540e\u7684MySQL\u5b89\u88c5\u76ee\u5f55<\/h5>\n<p>\u4f7f\u7528\u547d\u4ee4\u67e5\u770bMySQL\u7684\u5b89\u88c5\u76ee\u5f55<code>\/usr\/local\/mysql\/<\/code>\u4e0b\u9762\u662f\u5426\u751f\u6210\u4e86\u76f8\u5173\u76ee\u5f55\u6587\u4ef6\uff08\u6700\u91cd\u8981\u7684\u5f53\u7136\u662fbin\u3001sbin\u548clib\u76ee\u5f55\uff09\u3002\u5982\u679clib\u76ee\u5f55\u4e0b\u9762\u6ca1\u6709\u751f\u6210\u5982\u56fe\u6240\u793a\u7684.so\u52a8\u6001\u5e93\u6587\u4ef6\u548c.a\u9759\u6001\u5e93\u6587\u4ef6\uff0c\u90a3\u4e48\u8bf4\u660e\u5b89\u88c5\u4e0d\u6210\u529f\uff08\u5373\u4f7f\u6210\u529f\u4e86\u4e5f\u53ef\u80fd\u4f1a\u5bfc\u81f4php\u8fdb\u7a0b\u65e0\u6cd5\u627e\u5230mysql\u7684\u76f8\u5173\u5e93\u6587\u4ef6\uff09\u3002<\/p>\n<p><img alt=\"\u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_success_path.png\" title=\"\u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\"><\/p>\n<h5>6 \u5f00\u59cb\u8bbe\u7f6eMySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf<\/h5>\n<p>\u5148\u628a\u7f16\u8bd1\u751f\u6210\u7684my.cnf\u6587\u4ef6\u5907\u4efd\uff0c\u7136\u540e\u628a<a href=\"https:\/\/typecodes.com\/web\/centosmysqlconfig.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aCentOS\u7cfb\u7edfMySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf\u300b<\/a>\u6587\u4e2d\u6574\u7406\u7684MySQL\u7684\u914d\u7f6e\u6587\u4ef6my.cnf\u4e0a\u4f20\u5230\u670d\u52a1\u5668\u7684<code>\/etc\/<\/code>\u76ee\u5f55\u4e0b\u5373\u53ef\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">my<\/span><span class=\"p\">.<\/span><span class=\"nx\">cnf<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">my<\/span><span class=\"p\">.<\/span><span class=\"nx\">cnfbak<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\">  <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">my<\/span><span class=\"p\">.<\/span><span class=\"nx\">cnf<\/span><span class=\"w\">  <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">my<\/span><span class=\"p\">.<\/span><span class=\"nx\">cnf<\/span>\n<\/code><\/pre><\/div>\n\n<h5>7 \u6dfb\u52a0mysql\u7684\u73af\u5883\u53d8\u91cf<\/h5>\n<p>\u5c06MySQL\u7f16\u8bd1\u751f\u6210\u7684bin\u76ee\u5f55\u6dfb\u52a0\u5230\u5f53\u524dLinux\u7cfb\u7edf\u7684\u73af\u5883\u53d8\u91cf\u4e2d<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># echo -e &#39;\\n\\nexport PATH=\/usr\/local\/mysql\/bin:$PATH\\n&#39; &gt;&gt; \/etc\/profile &amp;&amp; source \/etc\/profile<\/span>\n<\/code><\/pre><\/div>\n\n<h5>8 \u521b\u5efaMySQL\u6570\u636e\u5e93\u6587\u4ef6\u7684\u5b58\u653e\u8def\u5f84\u4ee5\u53ca\u76f8\u5173\u5b89\u5168\u914d\u7f6e<\/h5>\n<p>\u5728Linux\u4e3b\u673a\u4e0a\u521b\u5efa\u4e00\u4e2a\u76ee\u5f55<code>\/mydata\/mysql\/data<\/code>\uff0c\u7528\u4e8e\u5b58\u653eMySQL\u7684\u6570\u636e\u5e93\u6587\u4ef6\u3002\u540c\u65f6\u8bbe\u7f6e\u5176\u7528\u6237\u548c\u7528\u6237\u7ec4\u4e3a\u4e4b\u524d\u521b\u5efa\u7684<code>mysql<\/code>\uff0c\u6743\u9650\u4e3a777\u3002\u8fd9\u6837\u5176\u5b83\u7528\u6237\u662f\u65e0\u6cd5\u8fdb\u884c\u8bfb\u5199\u7684\uff0c\u5c3d\u91cf\u4fdd\u8bc1\u6570\u636e\u5e93\u7684\u5b89\u5168\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"o\">[<\/span><span class=\"n\">root@typecodes ~<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">mkdir<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"k\">data<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">chown<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">R<\/span><span class=\"w\"> <\/span><span class=\"nl\">root<\/span><span class=\"p\">:<\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"k\">local<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">chown<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">R<\/span><span class=\"w\"> <\/span><span class=\"nl\">mysql<\/span><span class=\"p\">:<\/span><span class=\"n\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"k\">data<\/span>\n<span class=\"o\">[<\/span><span class=\"n\">root@typecodes mysql<\/span><span class=\"o\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">chmod<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"n\">R<\/span><span class=\"w\"> <\/span><span class=\"k\">go<\/span><span class=\"o\">-<\/span><span class=\"n\">rwx<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"n\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"k\">data<\/span>\n<\/code><\/pre><\/div>\n\n<h5>9 \u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93<\/h5>\n<p>\u5728MySQL\u5b89\u88c5\u76ee\u5f55\u7684<code>\\bin\\<\/code>\u8def\u5f84\u4e0b\uff0c\u6267\u884cmysqld\u547d\u4ee4\uff0c\u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">######<\/span><span class=\"nx\">\u53c2\u6570user\u8868\u793a\u7528\u6237<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">basedir\u8868\u793amysql\u7684\u5b89\u88c5\u8def\u5f84<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">datadir\u8868\u793a\u6570\u636e\u5e93\u6587\u4ef6\u5b58\u653e\u8def\u5f84<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">bin<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysqld<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">initialize<\/span><span class=\"o\">-<\/span><span class=\"nx\">insecure<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">user<\/span><span class=\"p\">=<\/span><span class=\"nx\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">basedir<\/span><span class=\"p\">=<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">datadir<\/span><span class=\"p\">=<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mydata<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"nx\">data<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6267\u884c\u5b8c\u540e\uff0c\u53ef\u4ee5\u901a\u8fc7<code>[root@typecodes mysql]# ls -lrt \/mydata\/mysql\/data\/<\/code>\u547d\u4ee4\u67e5\u770b\u662f\u5426\u751f\u6210\u4e86MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\u6587\u4ef6\u3002<\/p>\n<p><img alt=\"\u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_ini_dir.png\" title=\"\u521d\u59cb\u5316MySQL\u81ea\u8eab\u7684\u6570\u636e\u5e93\"><\/p>\n<h5>10 \u521b\u5efaMySQL\u65e5\u5fd7\u5b58\u653e\u76ee\u5f55\u4ee5\u53ca\u8bbe\u7f6e\u5f00\u673a\u542f\u52a8<\/h5>\n<p>\u4e0b\u9762\u914d\u7f6e\u7684MySQL\u65e5\u5fd7\u5b58\u653e\u76ee\u5f55\u4ee5\u53ca\u6743\u9650\u90fd\u662f\u6839\u636e\u524d\u9762my.cnf\u6587\u4ef6\u5199\u7684\uff0c\u4e5f\u5c31\u662f\u4e24\u8005\u9700\u8981\u4fdd\u6301\u4e00\u81f4\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mkdir -p \/var\/run\/mysql &amp;&amp; mkdir -p \/var\/log\/mysql<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chown -R mysql:mysql \/var\/log\/mysql &amp;&amp; chown -R mysql:mysql \/var\/run\/mysql<\/span>\n<span class=\"c1\">######\u914d\u7f6e\u5f00\u673a\u81ea\u542f\u52a8<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cp \/usr\/local\/mysql\/support-files\/mysql.server  \/etc\/init.d\/mysqld<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chmod +x \/etc\/init.d\/mysqld     #\u589e\u52a0\u53ef\u6267\u884c\u6743\u9650<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chkconfig --add mysqld      #\u6dfb\u52a0\u5230sysV\u670d\u52a1<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"p\">]<\/span><span class=\"c1\"># chkconfig mysqld on<\/span>\n<\/code><\/pre><\/div>\n\n<h5>11 \u542f\u52a8MySQL\u670d\u52a1<\/h5>\n<p>\u5728\u5b8c\u6210\u4e0a\u9762\u7684\u64cd\u4f5c\u540e\uff0c\u5c31\u53ef\u4ee5\u6b63\u5f0f\u4f7f\u7528MySQL\u670d\u52a1\u4e86\u3002\u542f\u52a8MySQL\u8fdb\u7a0b\u670d\u52a1\u7684\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"k\">[root@typecodes mysql]# mysqld_safe --user=mysql --datadir=\/mydata\/mysql\/data --log-error=\/var\/log\/mysql\/error.log &amp;        [\u76f4\u63a5\u56de\u8f66]<\/span>\n<span class=\"na\">[1] 10274<\/span>\n<span class=\"na\">150513 21<\/span><span class=\"o\">:<\/span><span class=\"s\">28:16 mysqld_safe Logging to &#39;\/var\/log\/mysql\/error.log&#39;.<\/span>\n<span class=\"na\">150513 21<\/span><span class=\"o\">:<\/span><span class=\"s\">28:16 mysqld_safe Starting mysqld daemon with databases from \/mydata\/mysql\/data<\/span>\n\n<span class=\"c1\">######\u4e0a\u9762\u8fd9\u6761\u547d\u4ee4\u4f1a\u5728\u540e\u53f0\u7ee7\u7eed\u6267\u884c\uff0c\u6240\u4ee5\u76f4\u63a5\u56de\u8f66\u5e76\u6267\u884c\u4e0b\u9762\u8fd9\u6761\u547d\u4ee4<\/span>\n<span class=\"na\">[root@typecodes mysql]# service mysqld start<\/span>\n<span class=\"na\">Starting MySQL.[  OK  ]                 [\u542f\u52a8\u6210\u529f]<\/span>\n<span class=\"na\">[root@typecodes mysql]#<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7136\u540e\u4f7f\u7528\u4e0b\u9762\u8fd9\u547d\u4ee4<code>ps -ef | grep mysql<\/code>\u548c<code>netstat -tunpl | grep 3306<\/code>\u67e5\u770bMySQL\u670d\u52a1\u8fdb\u7a0b\u548c\u7aef\u53e3\u76d1\u542c\u60c5\u51b5\uff1a<\/p>\n<p><img alt=\"\u67e5\u770bMySQL\u670d\u52a1\u8fdb\u7a0b\u548c\u7aef\u53e3\u76d1\u542c\u60c5\u51b5\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/mysql_process_litsen_port.png\" title=\"\u67e5\u770bMySQL\u670d\u52a1\u8fdb\u7a0b\u548c\u7aef\u53e3\u76d1\u542c\u60c5\u51b5\"><\/p>\n<h5>12 \u521d\u59cb\u5316MySQL\u6570\u636e\u5e93\u7684root\u7528\u6237\u5bc6\u7801<\/h5>\n<p>\u548cOracle\u6570\u636e\u5e93\u4e00\u6837\uff0cMySQL\u6570\u636e\u5e93\u4e5f\u9ed8\u8ba4\u81ea\u5e26\u4e86\u4e00\u4e2a<code>root<\/code>\u7528\u6237\uff08\u8fd9\u4e2a\u548c\u5f53\u524dLinux\u4e3b\u673a\u4e0a\u7684root\u7528\u6237\u662f\u5b8c\u5168\u4e0d\u642d\u8fb9\u7684\uff09\uff0c\u6211\u4eec\u5728\u8bbe\u7f6e\u597dMySQL\u6570\u636e\u5e93\u7684\u5b89\u5168\u914d\u7f6e\u540e\u521d\u59cb\u5316root\u7528\u6237\u7684\u5bc6\u7801\u3002\u914d\u7f6e\u8fc7\u7a0b\u4e2d\uff0c\u4e00\u8def\u8f93\u5165<code>y<\/code>\u5c31\u884c\u4e86\u3002\u8fd9\u91cc\u53ea\u8bf4\u660e\u4e0bMySQL5.7.7rc\u7248\u672c\u4e2d\uff0c\u7528\u6237\u5bc6\u7801\u7b56\u7565\u5206\u6210\u4f4e\u7ea7<code>LOW<\/code>\u3001\u4e2d\u7b49<code>MEDIUM<\/code>\u548c\u8d85\u5f3a<code>STRONG<\/code>\u4e09\u79cd\uff0c\u63a8\u8350\u4f7f\u7528\u4e2d\u7b49<code>MEDIUM<\/code>\u7ea7\u522b\uff01<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql_secure_installation<\/span>\n<span class=\"o\">............<\/span><span class=\"nx\">\u7701\u7565\u524d\u9762\u7684\u8fc7\u7a0b<\/span><span class=\"o\">............<\/span>\n<span class=\"nx\">Press<\/span><span class=\"w\"> <\/span><span class=\"nx\">y<\/span><span class=\"o\">|<\/span><span class=\"nx\">Y<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">Yes<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">any<\/span><span class=\"w\"> <\/span><span class=\"nx\">other<\/span><span class=\"w\"> <\/span><span class=\"nx\">key<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">No<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">y<\/span><span class=\"w\">   <\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u9700\u8981\u4fee\u6539\u5bc6\u7801<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u6240\u4ee5\u8f93\u5165y<\/span><span class=\"err\">\u3011<\/span>\n\n<span class=\"nx\">There<\/span><span class=\"w\"> <\/span><span class=\"nx\">are<\/span><span class=\"w\"> <\/span><span class=\"nx\">three<\/span><span class=\"w\"> <\/span><span class=\"nx\">levels<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">password<\/span><span class=\"w\"> <\/span><span class=\"nx\">validation<\/span><span class=\"w\"> <\/span><span class=\"nx\">policy<\/span><span class=\"p\">:<\/span>\n\n<span class=\"nx\">LOW<\/span><span class=\"w\">    <\/span><span class=\"nx\">Length<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"w\">     <\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u53ea\u9700\u8981\u957f\u5ea6\u5927\u4e8e\u6216\u7b49\u4e8e8<\/span><span class=\"err\">\u3011<\/span>\n<span class=\"nx\">MEDIUM<\/span><span class=\"w\"> <\/span><span class=\"nx\">Length<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">numeric<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">mixed<\/span><span class=\"w\"> <\/span><span class=\"k\">case<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">special<\/span><span class=\"w\"> <\/span><span class=\"nx\">characters<\/span><span class=\"w\">   <\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u8fd8\u9700\u8981\u5305\u542b\u6570\u5b57<\/span><span class=\"err\">\u3001<\/span><span class=\"nx\">\u5927\u5c0f\u5199\u548c\u7c7b\u4f3c\u4e8e<\/span><span class=\"err\">@#<\/span><span class=\"o\">%<\/span><span class=\"nx\">\u7b49\u7279\u6b8a\u5b57\u7b26<\/span><span class=\"err\">\u3011<\/span>\n<span class=\"nx\">STRONG<\/span><span class=\"w\"> <\/span><span class=\"nx\">Length<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">8<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">numeric<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">mixed<\/span><span class=\"w\"> <\/span><span class=\"k\">case<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">special<\/span><span class=\"w\"> <\/span><span class=\"nx\">characters<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">dictionary<\/span><span class=\"w\">                  <\/span><span class=\"nx\">file<\/span><span class=\"w\">    <\/span><span class=\"err\">\u3010<\/span><span class=\"nx\">\u8fd8\u9700\u8981\u5305\u542b\u5b57\u5178\u6587\u4ef6<\/span><span class=\"err\">\u3011<\/span>\n<span class=\"o\">............<\/span><span class=\"nx\">\u7701\u7565\u5269\u4e0b\u7684\u8fc7\u7a0b<\/span><span class=\"o\">............<\/span>\n<\/code><\/pre><\/div>\n\n<h5>13 \u5c06MySQL\u6570\u636e\u5e93\u7684\u52a8\u6001\u94fe\u63a5\u5e93\u5171\u4eab\u81f3\u7cfb\u7edf\u94fe\u63a5\u5e93<\/h5>\n<p>\u4e00\u822cMySQL\u6570\u636e\u5e93\u8fd8\u4f1a\u88ab\u7c7b\u4f3c\u4e8ePHP\u7b49\u670d\u52a1\u8c03\u7528\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u5c06MySQL\u7f16\u8bd1\u540e\u7684lib\u5e93\u6587\u4ef6\u6dfb\u52a0\u81f3\u5f53\u524dLinux\u4e3b\u673a\u94fe\u63a5\u5e93<code>\/etc\/ld.so.conf.d\/<\/code>\u4e0b\uff0c\u8fd9\u6837MySQL\u670d\u52a1\u5c31\u53ef\u4ee5\u88ab\u5176\u5b83\u670d\u52a1\u8c03\u7528\u4e86\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">echo<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\/usr\/local\/mysql\/lib&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">ld<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"p\">.<\/span><span class=\"nx\">conf<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ldconfig<\/span><span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u4f7f\u751f\u6548<\/span><span class=\"p\">]<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">lib<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ldconfig<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">v<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span><span class=\"nx\">grep<\/span><span class=\"w\"> <\/span><span class=\"nx\">mysql<\/span><span class=\"w\">       <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u67e5\u770b\u6548\u679c<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">ldconfig<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Can<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">stat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">libx32<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">No<\/span><span class=\"w\"> <\/span><span class=\"nx\">such<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">directory<\/span>\n<span class=\"nx\">ldconfig<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Path<\/span><span class=\"w\"> <\/span><span class=\"err\">`<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"nx\">given<\/span><span class=\"w\"> <\/span><span class=\"nx\">more<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">once<\/span>\n<span class=\"nx\">ldconfig<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Path<\/span><span class=\"w\"> <\/span><span class=\"err\">`<\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib64<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"nx\">given<\/span><span class=\"w\"> <\/span><span class=\"nx\">more<\/span><span class=\"w\"> <\/span><span class=\"nx\">than<\/span><span class=\"w\"> <\/span><span class=\"nx\">once<\/span>\n<span class=\"nx\">ldconfig<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Can<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">stat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">libx32<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">No<\/span><span class=\"w\"> <\/span><span class=\"nx\">such<\/span><span class=\"w\"> <\/span><span class=\"nx\">file<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"nx\">directory<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib64<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">        <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18<\/span><span class=\"w\"> <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.18.0.0<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">usr<\/span><span class=\"o\">\/<\/span><span class=\"nx\">local<\/span><span class=\"o\">\/<\/span><span class=\"nx\">mysql<\/span><span class=\"o\">\/<\/span><span class=\"nx\">lib<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">        <\/span><span class=\"nx\">libmysqlclient<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.20<\/span><span class=\"w\"> <\/span><span class=\"o\">-&gt;<\/span><span class=\"w\"> <\/span><span class=\"nx\">libmysqlclient_r<\/span><span class=\"p\">.<\/span><span class=\"nx\">so<\/span><span class=\"m m-Double\">.20.0.0<\/span>\n<\/code><\/pre><\/div>\n\n<h5>14 \u521b\u5efa\u5176\u5b83MySQL\u6570\u636e\u5e93\u7528\u6237<\/h5>\n<p>\u4f7f\u7528MySQL\u6570\u636e\u5e93root\u7ba1\u7406\u5458\u7528\u6237\u767b\u5f55MySQL\u6570\u636e\u5e93\u540e\uff0c\u53ef\u4ee5\u7ba1\u7406\u6570\u636e\u5e93\u548c\u5176\u4ed6\u7528\u6237\u4e86\u3002\u8fd9\u91cc\u6f14\u793a\u521b\u5efa\u4e00\u4e2a\u540d\u4e3atypecodes\u7684MySQL\u7528\u6237\uff08\u5bc6\u7801\u4e3a@typecodes2014.com\uff09\u548c\u4e00\u4e2a\u540d\u4e3atypecodes\u7684\u6570\u636e\u5e93\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">[<\/span><span class=\"n\">root<\/span><span class=\"nv\">@typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">mysql<\/span><span class=\"err\">]<\/span><span class=\"c1\"># mysql -uroot -p\u5bc6\u7801<\/span>\n\n<span class=\"c1\">######\u767b\u5f55\u6210\u529f\u540e\uff0c\u521b\u5efatypecodes\u6570\u636e\u5e93\uff0c\u5e76\u8bbe\u7f6e\u5b57\u7b26\u96c6\u548c\u5b57\u7b26\u6821<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">CREATE<\/span><span class=\"w\"> <\/span><span class=\"k\">DATABASE<\/span><span class=\"w\"> <\/span><span class=\"n n-Quoted\">`typecodes`<\/span><span class=\"w\"> <\/span><span class=\"k\">DEFAULT<\/span><span class=\"w\"> <\/span><span class=\"k\">CHARACTER<\/span><span class=\"w\"> <\/span><span class=\"k\">SET<\/span><span class=\"w\"> <\/span><span class=\"n\">utf8<\/span><span class=\"w\"> <\/span><span class=\"k\">COLLATE<\/span><span class=\"w\"> <\/span><span class=\"n\">utf8_general_ci<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">Query<\/span><span class=\"w\"> <\/span><span class=\"n\">OK<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"k\">row<\/span><span class=\"w\"> <\/span><span class=\"n\">affected<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mf\">0.00<\/span><span class=\"w\"> <\/span><span class=\"n\">sec<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\">######\u521b\u5efa\u540d\u4e3atypecodes\u7528\u6237\uff0c\u5e76\u8ba9\u5b83\u62e5\u6709typecodes\u6570\u636e\u5e93\u6240\u6709\u7684\u6743\u9650<\/span>\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">grant<\/span><span class=\"w\"> <\/span><span class=\"k\">all<\/span><span class=\"w\"> <\/span><span class=\"k\">privileges<\/span><span class=\"w\"> <\/span><span class=\"k\">on<\/span><span class=\"w\"> <\/span><span class=\"n\">typecodes<\/span><span class=\"p\">.<\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"k\">to<\/span><span class=\"w\"> <\/span><span class=\"n\">typecodes<\/span><span class=\"nv\">@localhost<\/span><span class=\"w\"> <\/span><span class=\"k\">identified<\/span><span class=\"w\"> <\/span><span class=\"k\">by<\/span><span class=\"w\"> <\/span><span class=\"s1\">&#39;@typecodes2014.com&#39;<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">Query<\/span><span class=\"w\"> <\/span><span class=\"n\">OK<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"k\">rows<\/span><span class=\"w\"> <\/span><span class=\"n\">affected<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"n\">warning<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mf\">0.01<\/span><span class=\"w\"> <\/span><span class=\"n\">sec<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">flush<\/span><span class=\"w\"> <\/span><span class=\"k\">privileges<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">Query<\/span><span class=\"w\"> <\/span><span class=\"n\">OK<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"k\">rows<\/span><span class=\"w\"> <\/span><span class=\"n\">affected<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mf\">0.00<\/span><span class=\"w\"> <\/span><span class=\"n\">sec<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">mysql<\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"k\">exit<\/span><span class=\"p\">;<\/span><span class=\"w\">            <\/span><span class=\"err\">[<\/span><span class=\"n\">\u521b\u5efa\u5b8c\u6bd5\uff0croot\u7528\u6237\u9000\u51fa<\/span><span class=\"err\">]<\/span>\n<\/code><\/pre><\/div>\n\n<h5>15 \u9519\u8bef\u5206\u6790<\/h5>\n<p>\u8fd9\u91cc\u7279\u610f\u5206\u6790\u4e86\u4e00\u4e9bMySQL\u5b89\u88c5\u8fc7\u7a0b\u4e2d\u53ef\u80fd\u51fa\u73b0\u7684\u9519\u8bef\u60c5\u51b5\uff0c\u8be6\u89c1\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/solvemysqlcompileerror.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aMySQL\u7f16\u8bd1\u5b89\u88c5\u65f6\u5e38\u89c1\u9519\u8bef\u5206\u6790\u300b<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"mysql"}}]},{"title":"CentOS\u5f00\u542fcoredump\u8f6c\u50a8\u5e76\u751f\u6210core\u6587\u4ef6\u7684\u914d\u7f6e","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/centoscoredumpcfgshell.html","rel":"alternate"}},"published":"2015-06-11T21:47:00+08:00","updated":"2015-06-11T21:47:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-11:\/linux\/centoscoredumpcfgshell.html","summary":"<p>\u5728CentOS\u6216\u8005suse\u7b49Linux\u7cfb\u7edf\u4e2d\u9ed8\u8ba4\u662f\u5173\u95edcoredump\u6838\u5fc3\u8f6c\u50a8\u7684\uff0c\u4e5f\u5c31\u4e0d\u4f1a\u4ea7\u751fcore\u6587\u4ef6\u3002\u7531\u4e8e\u5728C\/C++\u5f00\u53d1\u4e2d\u4f1a\u7528\u5230gdb\u8c03\u8bd5\uff0c\u6240\u4ee5\u9700\u8981\u5f00\u542fcoredump\u529f\u80fd\u3002\u4e0b\u9762\u662f\u5177\u4f53\u7684\u914d\u7f6e\u547d\u4ee4\uff0c\u53ef\u4ee5\u4fdd\u5b58\u4e3a\u4e00\u4e2a\u7b80\u5355\u7684shell\u811a\u672c\u6267\u884c\u3002<\/p>\n","content":"<p>\u5728CentOS\u6216\u8005suse\u7b49Linux\u7cfb\u7edf\u4e2d\u9ed8\u8ba4\u662f\u5173\u95edcoredump\u6838\u5fc3\u8f6c\u50a8\u7684\uff0c\u4e5f\u5c31\u4e0d\u4f1a\u4ea7\u751fcore\u6587\u4ef6\u3002\u7531\u4e8e\u5728C\/C++\u5f00\u53d1\u4e2d\u4f1a\u7528\u5230gdb\u8c03\u8bd5\uff0c\u6240\u4ee5\u9700\u8981\u5f00\u542fcoredump\u529f\u80fd\u3002\u4e0b\u9762\u662f\u5177\u4f53\u7684\u914d\u7f6e\u547d\u4ee4\uff0c\u53ef\u4ee5\u4fdd\u5b58\u4e3a\u4e00\u4e2a\u7b80\u5355\u7684shell\u811a\u672c\u6267\u884c\u3002<\/p>\n\n\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n\n<span class=\"c1\">### Filename: coredumpshell.sh<\/span>\n<span class=\"c1\">### Description: enable coredump and format the name of core file on centos system<\/span>\n\n<span class=\"c1\"># enable coredump whith unlimited file-size for all users<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;\\n# enable coredump whith unlimited file-size for all users\\n* soft core unlimited&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span>\/etc\/security\/limits.conf\n\n<span class=\"c1\"># set the path of core file with permission 777 <\/span>\n<span class=\"nb\">cd<\/span><span class=\"w\"> <\/span>\/mydata<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>mkdir<span class=\"w\"> <\/span>corefile<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>chmod<span class=\"w\"> <\/span><span class=\"m\">777<\/span><span class=\"w\"> <\/span>corefile\n\n<span class=\"c1\"># format the name of core file.   <\/span>\n<span class=\"c1\"># %% \u2013 \u7b26\u53f7%<\/span>\n<span class=\"c1\"># %p \u2013 \u8fdb\u7a0b\u53f7<\/span>\n<span class=\"c1\"># %u \u2013 \u8fdb\u7a0b\u7528\u6237id<\/span>\n<span class=\"c1\"># %g \u2013 \u8fdb\u7a0b\u7528\u6237\u7ec4id<\/span>\n<span class=\"c1\"># %s \u2013 \u751f\u6210core\u6587\u4ef6\u65f6\u6536\u5230\u7684\u4fe1\u53f7<\/span>\n<span class=\"c1\"># %t \u2013 \u751f\u6210core\u6587\u4ef6\u7684\u65f6\u95f4\u6233(seconds since 0:00h, 1 Jan 1970)<\/span>\n<span class=\"c1\"># %h \u2013 \u4e3b\u673a\u540d<\/span>\n<span class=\"c1\"># %e \u2013 \u7a0b\u5e8f\u6587\u4ef6\u540d<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;\/mydata\/corefile\/core-%e-%s-%u-%g-%p-%t&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span>\/proc\/sys\/kernel\/core_pattern\n\n<span class=\"c1\"># for centos7 system(update 2017.2.3 21:44)<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;\/mydata\/corefile\/core-%e-%s-%u-%g-%p-%t&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span>\/etc\/sysctl.conf\n\n<span class=\"c1\"># suffix of the core file name<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;1&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span>\/proc\/sys\/kernel\/core_uses_pid\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u5728Linux\u7ec8\u7aef\u4e0a\u6267\u884c\u5b8c\u4e0a\u9762\u7684\u811a\u672c\u540e\uff0c\u9000\u51fa\u5e76\u91cd\u65b0\u767b\u5f55\u5373\u53ef\u751f\u6548\u3002\u53ef\u4ee5\u901a\u8fc7<code>[root@typecodes ~]# ulimit -a<\/code>\u547d\u4ee4\u67e5\u770b\u6548\u679c\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"CentOS7.1\u5f00\u542fcoredump\u6838\u5fc3\u8f6c\u50a8\u529f\u80fd\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/ulimit_a.png\" title=\"CentOS7.1\u5f00\u542fcoredump\u6838\u5fc3\u8f6c\u50a8\u529f\u80fd\"> <\/p>\n<p>\u6700\u540e\uff0c\u5199\u4e86\u4e00\u4e2a\u7b80\u5355C\u7a0b\u5e8f\u6d4b\u8bd5CentOS\u662f\u5426\u751f\u6210\u4e86\u76f8\u5e94\u7684core\u6587\u4ef6\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"n\">vim<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"p\">.<\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">scanf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;%s&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">a<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u4f7f\u7528\u547d\u4ee4<code>gcc test.c -o test<\/code>\u7f16\u8bd1\u540e\u6267\u884c\uff0c\u7136\u540e\u6545\u610f\u8f93\u5165\u9519\u8bef\u7684\u6570\u636e\uff0c\u8ba9\u8fdb\u7a0b\u62a5\u9519\u3002\u8fd9\u65f6\uff0c\u5728<code>\/mydata\/corefile\/<\/code>\u76ee\u5f55\u5c31\u751f\u6210\u4e86\u76f8\u5e94\u7684core\u6587\u4ef6<code>core-test-11-0-0-27124-1434029850<\/code>\u3002<\/p>\n<p><img alt=\"core\u6587\u4ef6\u751f\u6210\u76ee\u5f55\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/gdb_test_corefile.png\" title=\"core\u6587\u4ef6\u751f\u6210\u76ee\u5f55\"> <\/p>\n<h4>update 2017.2.3 21:44<\/h4>\n<p>\u6bcf\u6b21\u91cd\u542fCentOS7\u540e\uff0c\u7531\u4e8eproc\u76ee\u5f55\u662f\u52a8\u6001\u66f4\u65b0\u7684\uff0c\u6240\u4ee5\u7cfb\u7edf\u4f1a\u521d\u59cb\u5316core_pattern\u7684\u503c\u3002\u5982\u679c\u60f3\u6c38\u4e45\u8bbe\u7f6ecoredump\u6587\u4ef6\u4e3a\u4e0a\u9762\u7684\u683c\u5f0f\uff0c\u90a3\u4e48\u9700\u8981\u4f7f\u7528\u7f16\u8f91\u6587\u4ef6 \/etc\/sysctl.conf \uff0c\u52a0\u5165<code>kernel.core_pattern=\/mydata\/corefile\/core-%e-%s-%u-%g-%p-%t<\/code>\uff0c\u7136\u540e\u4f7f\u7528\u547d\u4ee4<code>sysctl -p \/etc\/sysctl.conf<\/code>\u91cd\u65b0\u52a0\u8f7d\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n\n<span class=\"c1\">### Filename: coredumpshell.sh<\/span>\n<span class=\"c1\">### Description: enable coredump and format the name of core file on centos system<\/span>\n\n<span class=\"c1\"># enable coredump whith unlimited file-size for all users<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;\\n# enable coredump whith unlimited file-size for all users\\n* soft core unlimited&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span>\/etc\/security\/limits.conf\n\n<span class=\"c1\"># format the name of core file.   <\/span>\n<span class=\"c1\"># %% \u2013 \u7b26\u53f7%<\/span>\n<span class=\"c1\"># %p \u2013 \u8fdb\u7a0b\u53f7<\/span>\n<span class=\"c1\"># %u \u2013 \u8fdb\u7a0b\u7528\u6237id<\/span>\n<span class=\"c1\"># %g \u2013 \u8fdb\u7a0b\u7528\u6237\u7ec4id<\/span>\n<span class=\"c1\"># %s \u2013 \u751f\u6210core\u6587\u4ef6\u65f6\u6536\u5230\u7684\u4fe1\u53f7<\/span>\n<span class=\"c1\"># %t \u2013 \u751f\u6210core\u6587\u4ef6\u7684\u65f6\u95f4\u6233(seconds since 0:00h, 1 Jan 1970)<\/span>\n<span class=\"c1\"># %h \u2013 \u4e3b\u673a\u540d<\/span>\n<span class=\"c1\"># %e \u2013 \u7a0b\u5e8f\u6587\u4ef6\u540d    <\/span>\n<span class=\"c1\"># for centos7 system(update 2017.4.2 21:44)<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;\\nkernel.core_pattern=\/mydata\/corefile\/core-%e-%s-%u-%g-%p-%t&quot;<\/span><span class=\"w\"> <\/span>&gt;&gt;<span class=\"w\"> <\/span>\/etc\/sysctl.conf\n\n<span class=\"c1\"># suffix of the core file name<\/span>\n<span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;1&quot;<\/span><span class=\"w\"> <\/span>&gt;<span class=\"w\"> <\/span>\/proc\/sys\/kernel\/core_uses_pid\n\nsysctl<span class=\"w\"> <\/span>-p<span class=\"w\"> <\/span>\/etc\/sysctl.conf\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"coredump"}},{"@attributes":{"term":"gdb"}}]},{"title":"Typecho\u8bc4\u8bba\u90ae\u4ef6\u901a\u77e5\u63d2\u4ef6\u4e2d\u4f7f\u7528\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1SSL\u529f\u80fd","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/typechoexmailconfig.html","rel":"alternate"}},"published":"2015-06-06T19:45:00+08:00","updated":"2015-06-06T19:45:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-06:\/mix\/typechoexmailconfig.html","summary":"<p>\u524d\u6bb5\u65f6\u95f4\uff0c\u5728\u67e5\u770b\u535a\u5ba2\u7ed1\u5b9a\u7684\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1\u65f6\uff0c\u53d1\u73b0POP3\/SMTP\u534f\u8bae\u652f\u6301SSL\u3002\u7531\u4e8e\u6b63\u597d\u4f7f\u7528\u4e86Typecho\u7248\u7684CommentToMail\u8bc4\u8bba\u90ae\u4ef6\u901a\u77e5\u63d2\u4ef6\uff0c\u5c31\u987a\u4fbf\u4e5f\u5347\u7ea7\u6210SSL\u534f\u8bae\u3002<\/p>\n<p><img alt=\"\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1SSL\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/exmailsslconfig.png\" title=\"\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1SSL\u914d\u7f6e\"><\/p>\n","content":"<p>\u524d\u6bb5\u65f6\u95f4\uff0c\u5728\u67e5\u770b\u535a\u5ba2\u7ed1\u5b9a\u7684\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1\u65f6\uff0c\u53d1\u73b0POP3\/SMTP\u534f\u8bae\u652f\u6301SSL\u3002\u7531\u4e8e\u6b63\u597d\u4f7f\u7528\u4e86Typecho\u7248\u7684CommentToMail\u8bc4\u8bba\u90ae\u4ef6\u901a\u77e5\u63d2\u4ef6\uff0c\u5c31\u987a\u4fbf\u4e5f\u5347\u7ea7\u6210SSL\u534f\u8bae\u3002<\/p>\n<p><img alt=\"\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1SSL\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/exmailsslconfig.png\" title=\"\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1SSL\u914d\u7f6e\"><\/p>\n\n\n<p>\u6574\u4e2a\u914d\u7f6e\u8fc7\u7a0b\u5f88\u7b80\u5355\uff0cSMTP\u586b\u5199\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1\u7684\u53d1\u9001\u670d\u52a1\u5668\u5730\u5740\uff1a<code>smtp.exmail.qq.com<\/code>\uff0c\u540c\u65f6\u628a\u4e4b\u524d\u662f25\u7684SMTP\u7aef\u53e3\u6539\u6210\u817e\u8baf\u4f01\u4e1a\u90ae\u7bb1\u652f\u6301SSL\u534f\u8bae\u7684<code>465<\/code>\u7aef\u53e3\uff0c\u6700\u540e\u52fe\u9009\u4e0a<code>ssl\u52a0\u5bc6<\/code>\u9009\u9879\u5373\u53ef\uff0c\u9644\u56fe\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"Typecho\u8bc4\u8bba\u90ae\u4ef6\u901a\u77e5\u63d2\u4ef6\u7684SSL\u914d\u7f6e\" src=\"https:\/\/cdn.typecodes.com\/2015\/06\/typechoexmailsslconfig.png\" title=\"Typecho\u8bc4\u8bba\u90ae\u4ef6\u901a\u77e5\u63d2\u4ef6\u7684SSL\u914d\u7f6e\"><\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"typecho"}},{"@attributes":{"term":"typecho\u8bc4\u8bba\u90ae\u4ef6\u901a\u77e5"}}]},{"title":"Nginx\u670d\u52a1\u542f\u52a8\u3001\u505c\u6b62\u548c\u91cd\u542f\u7b49\u64cd\u4f5c\u7684SHELL\u811a\u672c","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/nginxserviceoptshell.html","rel":"alternate"}},"published":"2015-06-06T13:42:00+08:00","updated":"2015-06-06T13:42:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-06:\/web\/nginxserviceoptshell.html","summary":"<p>\u7531\u4e8e\u4f7f\u7528\u6e90\u7801\u7f16\u8bd1\u5b89\u88c5Nginx\uff0c\u4e0d\u4f1a\u50cfyum install\u90a3\u6837\u81ea\u52a8\u751f\u6210Nginx\u670d\u52a1\u63a7\u5236\u811a\u672c\uff0c\u6240\u4ee5\u9700\u8981\u81ea\u5df1\u6dfb\u52a0\u4e00\u4e2a\u64cd\u4f5c\u811a\u672c\u3002\u8c37\u6b4c\u4e0a\u641c\u4e86\u4e00\u4e0b\uff0cshell\u811a\u672c\u7684\u4ee3\u7801\u57fa\u672c\u7c7b\u4f3c\uff0c\u56e0\u6b64\u81ea\u5df1\u7a0d\u5fae\u6574\u7406\u6539\u52a8\u4e86\u4e0b\u3002<\/p>\n<p>\u4e0b\u9762\u7684shell\u811a\u672c\u5185\u5bb9\uff0c\u9700\u8981\u6839\u636eNginx\u5b9e\u9645\u7f16\u8bd1\u5b89\u88c5\u7684\u914d\u7f6e\uff0c\u4fee\u6539<code>NGINX_CONF_FILE=\"\/etc\/nginx\/nginx.conf\"<\/code>\u548c<code>lockfile=\/var\/lock\/nginx.lock<\/code>\u8fd9\u4e24\u4e2a\u53c2\u6570\uff08\u5373\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b<\/a>\u4e2d\u7684configure\u914d\u7f6e\uff09\u3002<\/p>\n","content":"<p>\u7531\u4e8e\u4f7f\u7528\u6e90\u7801\u7f16\u8bd1\u5b89\u88c5Nginx\uff0c\u4e0d\u4f1a\u50cfyum install\u90a3\u6837\u81ea\u52a8\u751f\u6210Nginx\u670d\u52a1\u63a7\u5236\u811a\u672c\uff0c\u6240\u4ee5\u9700\u8981\u81ea\u5df1\u6dfb\u52a0\u4e00\u4e2a\u64cd\u4f5c\u811a\u672c\u3002\u8c37\u6b4c\u4e0a\u641c\u4e86\u4e00\u4e0b\uff0cshell\u811a\u672c\u7684\u4ee3\u7801\u57fa\u672c\u7c7b\u4f3c\uff0c\u56e0\u6b64\u81ea\u5df1\u7a0d\u5fae\u6574\u7406\u6539\u52a8\u4e86\u4e0b\u3002<\/p>\n<p>\u4e0b\u9762\u7684shell\u811a\u672c\u5185\u5bb9\uff0c\u9700\u8981\u6839\u636eNginx\u5b9e\u9645\u7f16\u8bd1\u5b89\u88c5\u7684\u914d\u7f6e\uff0c\u4fee\u6539<code>NGINX_CONF_FILE=\"\/etc\/nginx\/nginx.conf\"<\/code>\u548c<code>lockfile=\/var\/lock\/nginx.lock<\/code>\u8fd9\u4e24\u4e2a\u53c2\u6570\uff08\u5373\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b<\/a>\u4e2d\u7684configure\u914d\u7f6e\uff09\u3002<\/p>\n\n\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\">  1<\/span>\n<span class=\"normal\">  2<\/span>\n<span class=\"normal\">  3<\/span>\n<span class=\"normal\">  4<\/span>\n<span class=\"normal\">  5<\/span>\n<span class=\"normal\">  6<\/span>\n<span class=\"normal\">  7<\/span>\n<span class=\"normal\">  8<\/span>\n<span class=\"normal\">  9<\/span>\n<span class=\"normal\"> 10<\/span>\n<span class=\"normal\"> 11<\/span>\n<span class=\"normal\"> 12<\/span>\n<span class=\"normal\"> 13<\/span>\n<span class=\"normal\"> 14<\/span>\n<span class=\"normal\"> 15<\/span>\n<span class=\"normal\"> 16<\/span>\n<span class=\"normal\"> 17<\/span>\n<span class=\"normal\"> 18<\/span>\n<span class=\"normal\"> 19<\/span>\n<span class=\"normal\"> 20<\/span>\n<span class=\"normal\"> 21<\/span>\n<span class=\"normal\"> 22<\/span>\n<span class=\"normal\"> 23<\/span>\n<span class=\"normal\"> 24<\/span>\n<span class=\"normal\"> 25<\/span>\n<span class=\"normal\"> 26<\/span>\n<span class=\"normal\"> 27<\/span>\n<span class=\"normal\"> 28<\/span>\n<span class=\"normal\"> 29<\/span>\n<span class=\"normal\"> 30<\/span>\n<span class=\"normal\"> 31<\/span>\n<span class=\"normal\"> 32<\/span>\n<span class=\"normal\"> 33<\/span>\n<span class=\"normal\"> 34<\/span>\n<span class=\"normal\"> 35<\/span>\n<span class=\"normal\"> 36<\/span>\n<span class=\"normal\"> 37<\/span>\n<span class=\"normal\"> 38<\/span>\n<span class=\"normal\"> 39<\/span>\n<span class=\"normal\"> 40<\/span>\n<span class=\"normal\"> 41<\/span>\n<span class=\"normal\"> 42<\/span>\n<span class=\"normal\"> 43<\/span>\n<span class=\"normal\"> 44<\/span>\n<span class=\"normal\"> 45<\/span>\n<span class=\"normal\"> 46<\/span>\n<span class=\"normal\"> 47<\/span>\n<span class=\"normal\"> 48<\/span>\n<span class=\"normal\"> 49<\/span>\n<span class=\"normal\"> 50<\/span>\n<span class=\"normal\"> 51<\/span>\n<span class=\"normal\"> 52<\/span>\n<span class=\"normal\"> 53<\/span>\n<span class=\"normal\"> 54<\/span>\n<span class=\"normal\"> 55<\/span>\n<span class=\"normal\"> 56<\/span>\n<span class=\"normal\"> 57<\/span>\n<span class=\"normal\"> 58<\/span>\n<span class=\"normal\"> 59<\/span>\n<span class=\"normal\"> 60<\/span>\n<span class=\"normal\"> 61<\/span>\n<span class=\"normal\"> 62<\/span>\n<span class=\"normal\"> 63<\/span>\n<span class=\"normal\"> 64<\/span>\n<span class=\"normal\"> 65<\/span>\n<span class=\"normal\"> 66<\/span>\n<span class=\"normal\"> 67<\/span>\n<span class=\"normal\"> 68<\/span>\n<span class=\"normal\"> 69<\/span>\n<span class=\"normal\"> 70<\/span>\n<span class=\"normal\"> 71<\/span>\n<span class=\"normal\"> 72<\/span>\n<span class=\"normal\"> 73<\/span>\n<span class=\"normal\"> 74<\/span>\n<span class=\"normal\"> 75<\/span>\n<span class=\"normal\"> 76<\/span>\n<span class=\"normal\"> 77<\/span>\n<span class=\"normal\"> 78<\/span>\n<span class=\"normal\"> 79<\/span>\n<span class=\"normal\"> 80<\/span>\n<span class=\"normal\"> 81<\/span>\n<span class=\"normal\"> 82<\/span>\n<span class=\"normal\"> 83<\/span>\n<span class=\"normal\"> 84<\/span>\n<span class=\"normal\"> 85<\/span>\n<span class=\"normal\"> 86<\/span>\n<span class=\"normal\"> 87<\/span>\n<span class=\"normal\"> 88<\/span>\n<span class=\"normal\"> 89<\/span>\n<span class=\"normal\"> 90<\/span>\n<span class=\"normal\"> 91<\/span>\n<span class=\"normal\"> 92<\/span>\n<span class=\"normal\"> 93<\/span>\n<span class=\"normal\"> 94<\/span>\n<span class=\"normal\"> 95<\/span>\n<span class=\"normal\"> 96<\/span>\n<span class=\"normal\"> 97<\/span>\n<span class=\"normal\"> 98<\/span>\n<span class=\"normal\"> 99<\/span>\n<span class=\"normal\">100<\/span>\n<span class=\"normal\">101<\/span>\n<span class=\"normal\">102<\/span>\n<span class=\"normal\">103<\/span>\n<span class=\"normal\">104<\/span>\n<span class=\"normal\">105<\/span>\n<span class=\"normal\">106<\/span>\n<span class=\"normal\">107<\/span>\n<span class=\"normal\">108<\/span>\n<span class=\"normal\">109<\/span>\n<span class=\"normal\">110<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#! \/bin\/bash<\/span>\n<span class=\"c1\">#<\/span>\n<span class=\"c1\"># nginx - this script starts and stops the nginx daemon<\/span>\n<span class=\"c1\">#<\/span>\n<span class=\"c1\"># chkconfig:   - 85 15<\/span>\n<span class=\"c1\"># description:  Nginx is an HTTP(S) server, HTTP(S) reverse \\<\/span>\n<span class=\"c1\">#               proxy and IMAP\/POP3 proxy server<\/span>\n<span class=\"c1\">#<\/span>\n<span class=\"c1\"># processname: nginx<\/span>\n<span class=\"c1\"># config:      \/etc\/nginx\/nginx.conf<\/span>\n<span class=\"c1\"># pidfile:     \/var\/run\/nginx\/nginx.pid<\/span>\n\n<span class=\"c1\"># Source function library.<\/span>\n.<span class=\"w\"> <\/span>\/etc\/rc.d\/init.d\/functions\n\n<span class=\"c1\"># Source networking configuration.<\/span>\n.<span class=\"w\"> <\/span>\/etc\/sysconfig\/network\n\n<span class=\"c1\"># Check that networking is up.<\/span>\n<span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$NETWORKING<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;no&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n\n<span class=\"nv\">nginx<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\/usr\/sbin\/nginx&quot;<\/span>\n<span class=\"nv\">prog<\/span><span class=\"o\">=<\/span><span class=\"k\">$(<\/span>basename<span class=\"w\"> <\/span><span class=\"nv\">$nginx<\/span><span class=\"k\">)<\/span>\n\n<span class=\"nv\">NGINX_CONF_FILE<\/span><span class=\"o\">=<\/span><span class=\"s2\">&quot;\/etc\/nginx\/nginx.conf&quot;<\/span>\n\n<span class=\"o\">[<\/span><span class=\"w\"> <\/span>-f<span class=\"w\"> <\/span>\/etc\/sysconfig\/nginx<span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>.<span class=\"w\"> <\/span>\/etc\/sysconfig\/nginx\n\n<span class=\"nv\">lockfile<\/span><span class=\"o\">=<\/span>\/var\/lock\/nginx.lock\n\nstart<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>-x<span class=\"w\"> <\/span><span class=\"nv\">$nginx<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">5<\/span>\n<span class=\"w\">    <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span>-f<span class=\"w\"> <\/span><span class=\"nv\">$NGINX_CONF_FILE<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">6<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span>$<span class=\"s2\">&quot;Starting <\/span><span class=\"nv\">$prog<\/span><span class=\"s2\">: &quot;<\/span>\n<span class=\"w\">    <\/span>daemon<span class=\"w\"> <\/span><span class=\"nv\">$nginx<\/span><span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span><span class=\"nv\">$NGINX_CONF_FILE<\/span>\n<span class=\"w\">    <\/span><span class=\"nv\">retval<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span>\n<span class=\"w\">    <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$retval<\/span><span class=\"w\"> <\/span>-eq<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>touch<span class=\"w\"> <\/span><span class=\"nv\">$lockfile<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nv\">$retval<\/span>\n<span class=\"o\">}<\/span>\n\nstop<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span>$<span class=\"s2\">&quot;Stopping <\/span><span class=\"nv\">$prog<\/span><span class=\"s2\">: &quot;<\/span>\n<span class=\"w\">    <\/span>killproc<span class=\"w\"> <\/span><span class=\"nv\">$prog<\/span><span class=\"w\"> <\/span>-QUIT\n<span class=\"w\">    <\/span><span class=\"nv\">retval<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span>\n<span class=\"w\">    <\/span><span class=\"o\">[<\/span><span class=\"w\"> <\/span><span class=\"nv\">$retval<\/span><span class=\"w\"> <\/span>-eq<span class=\"w\"> <\/span><span class=\"m\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">]<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span>rm<span class=\"w\"> <\/span>-f<span class=\"w\"> <\/span><span class=\"nv\">$lockfile<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nv\">$retval<\/span>\n<span class=\"o\">}<\/span>\n\nrestart<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span>configtest<span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span>stop\n<span class=\"w\">    <\/span>sleep<span class=\"w\"> <\/span><span class=\"m\">1<\/span>\n<span class=\"w\">    <\/span>start\n<span class=\"o\">}<\/span>\n\nreload<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span>configtest<span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>-n<span class=\"w\"> <\/span>$<span class=\"s2\">&quot;Reloading <\/span><span class=\"nv\">$prog<\/span><span class=\"s2\">: &quot;<\/span>\n<span class=\"w\">    <\/span>killproc<span class=\"w\"> <\/span><span class=\"nv\">$nginx<\/span><span class=\"w\"> <\/span>-HUP\n<span class=\"w\">    <\/span><span class=\"nv\">RETVAL<\/span><span class=\"o\">=<\/span><span class=\"nv\">$?<\/span>\n<span class=\"w\">    <\/span><span class=\"nb\">echo<\/span>\n<span class=\"o\">}<\/span>\n\nforce_reload<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span>restart\n<span class=\"o\">}<\/span>\n\nconfigtest<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">  <\/span><span class=\"nv\">$nginx<\/span><span class=\"w\"> <\/span>-t<span class=\"w\"> <\/span>-c<span class=\"w\"> <\/span><span class=\"nv\">$NGINX_CONF_FILE<\/span>\n<span class=\"o\">}<\/span>\n\nrh_status<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span>status<span class=\"w\"> <\/span><span class=\"nv\">$prog<\/span>\n<span class=\"o\">}<\/span>\n\nrh_status_q<span class=\"o\">()<\/span><span class=\"w\"> <\/span><span class=\"o\">{<\/span>\n<span class=\"w\">    <\/span>rh_status<span class=\"w\"> <\/span>&gt;\/dev\/null<span class=\"w\"> <\/span><span class=\"m\">2<\/span>&gt;<span class=\"p\">&amp;<\/span><span class=\"m\">1<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"k\">case<\/span><span class=\"w\"> <\/span><span class=\"s2\">&quot;<\/span><span class=\"nv\">$1<\/span><span class=\"s2\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span>\n<span class=\"w\">    <\/span>start<span class=\"o\">)<\/span>\n<span class=\"w\">        <\/span>rh_status_q<span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">$1<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>stop<span class=\"o\">)<\/span>\n<span class=\"w\">        <\/span>rh_status_q<span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">$1<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>restart<span class=\"p\">|<\/span>configtest<span class=\"o\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">$1<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>reload<span class=\"o\">)<\/span>\n<span class=\"w\">        <\/span>rh_status_q<span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">7<\/span>\n<span class=\"w\">        <\/span><span class=\"nv\">$1<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>force-reload<span class=\"o\">)<\/span>\n<span class=\"w\">        <\/span>force_reload\n<span class=\"w\">        <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>status<span class=\"o\">)<\/span>\n<span class=\"w\">        <\/span>rh_status\n<span class=\"w\">        <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>condrestart<span class=\"p\">|<\/span>try-restart<span class=\"o\">)<\/span>\n<span class=\"w\">        <\/span>rh_status_q<span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">0<\/span>\n<span class=\"w\">            <\/span><span class=\"p\">;;<\/span>\n<span class=\"w\">    <\/span>*<span class=\"o\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">echo<\/span><span class=\"w\"> <\/span>$<span class=\"s2\">&quot;Usage: <\/span><span class=\"nv\">$0<\/span><span class=\"s2\"> {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}&quot;<\/span>\n<span class=\"w\">        <\/span><span class=\"nb\">exit<\/span><span class=\"w\"> <\/span><span class=\"m\">2<\/span>\n<span class=\"k\">esac<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u5c06\u4e0a\u9762\u7684shell\u811a\u672c\u5185\u5bb9\u4ee5<code>Unix\u683c\u5f0f<\/code>(\u4e0d\u80fd\u7528dos\u54e6)\u4fdd\u5b58\u5e76\u547d\u540d\u4e3a<code>nginx<\/code>\uff0c\u7136\u540e\u4e0a\u4f20\u5230centos\u7cfb\u7edf\u7684<code>\/etc\/init.d\/<\/code>\u76ee\u5f55\uff0c\u63a5\u7740\u6dfb\u52a0\u53ef\u6267\u884c\u6743\u9650\uff0c\u6700\u540e\u6267\u884c\u6dfb\u52a0\u5230\u5f00\u673a\u542f\u52a8\u7684\u547d\u4ee4\uff1a<code>chkconfig --add nginx<\/code>\u3001<code>chkconfig nginx on<\/code>\u5373\u53ef\u3002<\/p>\n<p>\u6700\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u5bf9Nginx\u670d\u52a1\u8fdb\u884c\u64cd\u4f5c\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">######\u542f\u52a8Nginx\u670d\u52a1<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service nginx start<\/span>\n<span class=\"c1\">######\u505c\u6b62Nginx\u670d\u52a1<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service nginx stop<\/span>\n<span class=\"c1\">######\u91cd\u542fNginx\u670d\u52a1<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service nginx restart<\/span>\n<span class=\"c1\">######Nginx\u670d\u52a1\u7684\u72b6\u6001<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service nginx status<\/span>\n<span class=\"c1\">######\u5728Nginx\u670d\u52a1\u542f\u52a8\u7684\u72b6\u6001\u4e0b\uff0c\u91cd\u65b0\u52a0\u8f7dnginx.conf\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service nginx reload<\/span>\n<\/code><\/pre><\/div>\n\n<h4>update 2017.03.22 17:22<\/h4>\n<p>\u770b\u5230\u5f88\u591a\u7f51\u7ad9\u5f15\u7528\u4e86\u672c\u7bc7\u6587\u7ae0\uff0c\u7531\u4e8e\u8fd9\u4e00\u5e74\u591a\u7684\u65f6\u95f4\u76f8\u5173\u542f\u52a8\u811a\u672c\u548c\u914d\u7f6e\u6587\u4ef6\u53ef\u80fd\u5b58\u5728\u4e00\u4e9b\u4f18\u5316\u66f4\u65b0\u3002\u5f53\u65f6\u5728\u5199\u8fd9\u7bc7\u6587\u7ae0\u7684\u65f6\u5019\u4e5f\u5fd8\u4e86\u8bf4\u660e\u8fd9\u4e9b\u5173\u4e8eNginx\u548cMySQL\u4ee5\u53caPHP7\u7684\u542f\u52a8\u811a\u672c\u548c\u914d\u7f6e\u6587\u4ef6\u7684\u7ef4\u62a4\u90fd\u6258\u7ba1\u5728GitHub\u4e0a\u4e86\uff0c\u6240\u4ee5\u8bf7\u5927\u5bb6\u53c2\u8003GitHub\u4e0a\u6700\u65b0\u7684\u9879\u76ee\u4ee3\u7801\uff0c\u5730\u5740\u5982\u4e0b\uff1a<a href=\"https:\/\/github.com\/vfhky\/mylnmp\" title=\"\u5173\u4e8eNginx\u548cMySQL\u4ee5\u53caPHP7\u7684\u542f\u52a8\u811a\u672c\u548c\u914d\u7f6e\u6587\u4ef6\">https:\/\/github.com\/vfhky\/mylnmp<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"nginx shell\u811a\u672c"}},{"@attributes":{"term":"nginx"}}]},{"title":"2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0","link":{"@attributes":{"href":"https:\/\/typecodes.com\/web\/centos7compilenginx.html","rel":"alternate"}},"published":"2015-06-03T16:06:00+08:00","updated":"2015-06-03T16:06:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-06-03:\/web\/centos7compilenginx.html","summary":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e09\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5982\u4f55\u5728CentOS 7.1\u4e2d\u7f16\u8bd1\u5b89\u88c5Nginx\u5b98\u65b9\u6700\u65b0\u76841.9.0\u7248\u672c\u3002\u7531\u4e8e\u50cfNginx\u3001Mysql\u548cPHP7\u7684\u7684\u6e90\u7801\u90fd\u662f\u7528C\/C++\u5199\u7684\uff0c\u6240\u4ee5\u81ea\u5df1\u7684CentOS 7.1\u670d\u52a1\u5668\u4e0a\u5fc5\u987b\u8981\u5b89\u88c5gcc\u548cg++\u8f6f\u4ef6\uff08CentOS 7\u7cfb\u5217\u4f1a\u81ea\u5e26\u8fd9\u4e24\u4e2a\u7f16\u8bd1\u8f6f\u4ef6\uff09\u3002<\/p>\n<p><img alt=\"CentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/nginxlogo.png\" title=\"CentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\"><\/p>\n","content":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e09\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5982\u4f55\u5728CentOS 7.1\u4e2d\u7f16\u8bd1\u5b89\u88c5Nginx\u5b98\u65b9\u6700\u65b0\u76841.9.0\u7248\u672c\u3002\u7531\u4e8e\u50cfNginx\u3001Mysql\u548cPHP7\u7684\u7684\u6e90\u7801\u90fd\u662f\u7528C\/C++\u5199\u7684\uff0c\u6240\u4ee5\u81ea\u5df1\u7684CentOS 7.1\u670d\u52a1\u5668\u4e0a\u5fc5\u987b\u8981\u5b89\u88c5gcc\u548cg++\u8f6f\u4ef6\uff08CentOS 7\u7cfb\u5217\u4f1a\u81ea\u5e26\u8fd9\u4e24\u4e2a\u7f16\u8bd1\u8f6f\u4ef6\uff09\u3002<\/p>\n<p><img alt=\"CentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/nginxlogo.png\" title=\"CentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\"><\/p>\n\n\n<h5>1 \u4f9d\u8d56\u5e93\u914d\u7f6e\uff0c\u7f16\u8bd1\u548c\u5b89\u88c5Nginx1.9.0<\/h5>\n<p>\u5148\u521b\u5efa\u4e00\u4e2a\u540d\u4e3anginx\u4e14<code>\u6ca1\u6709\u767b\u5f55\u6743\u9650<\/code>\u7684\u7528\u6237\u548c\u4e00\u4e2a\u540d\u4e3anginx\u7684\u7528\u6237\u7ec4\uff0c\u7136\u540e\u5b89\u88c5nginx\u6240\u9700\u7684\u4f9d\u8d56\u5e93\u548c\u4f9d\u8d56\u5305\uff0c\u6700\u540e\u901a\u8fc7<code>.configure<\/code>\u8fdb\u884c\u5b89\u88c5\u7684\u8be6\u7ec6\u914d\u7f6e\u3002\u53e6\u5916\uff0c\u8865\u5f55\u4e00\u4e2apcre\u7684tar\u5305\u5907\u4efd\u5730\u5740\uff1ahttps:\/\/cdn.typecodes.com\/libs\/nginx\/pcre-8.36.tar.gz\uff0c\u4ee5\u53ca\u4e00\u4e2azlib\u7684tar\u5305\u5907\u4efd\u5730\u5740\uff1ahttps:\/\/cdn.typecodes.com\/libs\/nginx\/zlib-1.2.8.tar.gz\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">#######\u65b0\u5efanginx\u7528\u6237\u548cnginx\u7ec4<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># groupadd -r nginx &amp;&amp; useradd -r -g nginx -s \/bin\/false -M nginx<\/span>\n<span class=\"c1\">#######yum\u5b89\u88c5nginx\u5fc5\u987b\u7684\u4f9d\u8d56\u5e93<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># yum -y install openssl openssl-devel libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed<\/span>\n\n<span class=\"c1\">#######\u5b98\u7f51\u4e0b\u8f7dNginx1.9.0\u7684tar\u5305\uff0c\u7136\u540e\u89e3\u538b\u5230\u670d\u52a1\u5668\u4e0a<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/nginx.org\/download\/nginx-1.9.0.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># tar -zxf nginx-1.9.0.tar.gz &amp;&amp; cd nginx-1.9.0<\/span>\n\n<span class=\"c1\">#######\u4e0b\u8f7dpcre\u7684tar\u5305\u5e76\u89e3\u538b\uff0c\u4ee5\u4fbf\u652f\u6301Nginx\u7684Rewrite\u529f\u80fd<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.9<\/span><span class=\"o\">.<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/git.typecodes.com\/libs\/php\/pcre-8.36.tar.gz &amp;&amp; tar -zxf pcre-8.36.tar.gz<\/span>\n<span class=\"c1\">#######\u4e0b\u8f7dzlib\u7684tar\u5305\u5e76\u89e3\u538b\uff0c\u4ee5\u4fbf\u652f\u6301Nginx\u7684Gzip\u538b\u7f29\u529f\u80fd<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.9<\/span><span class=\"o\">.<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"c1\"># wget -c http:\/\/git.typecodes.com\/libs\/nginx\/zlib-1.2.8.tar.gz<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.9<\/span><span class=\"o\">.<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"c1\"># tar -zxf zlib-1.2.8.tar.gz<\/span>\n\n<span class=\"c1\">#######\u65b0\u5efaNginx1.9.0\u5b89\u88c5\u65f6\u6240\u9700\u8981\u7684\u76ee\u5f55<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"o\">-<\/span><span class=\"mf\">1.9<\/span><span class=\"o\">.<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cd \/var\/tmp\/ &amp;&amp; mkdir -p \/var\/tmp\/nginx\/{client,proxy,fastcgi,uwsgi,scgi}<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">tmp<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mkdir -p \/var\/run\/nginx &amp;&amp; cd ~\/nginx-1.9.0<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u51c6\u5907\u5de5\u4f5c\u505a\u597d\u540e\uff0c\u5c31\u5f00\u59cb\u6b63\u5f0f\u914d\u7f6eNginx-1.9.0\u7684\u5b89\u88c5\u660e\u7ec6\u4e86\u3002\u6ce8\u610f\uff0c\u5728\u4f7f\u7528\u4e0b\u9762\u8fd9\u6761<code>configure<\/code>\u53c2\u6570\u914d\u7f6e\u65f6\uff0c\u4e00\u5b9a\u8981\u5148\u628a\u53cd\u659c\u6760\u201c\\\u201d\u540e\u9762\u6dfb\u52a0\u7684\u6ce8\u91ca\u6587\u5b57\u53bb\u6389\uff01\uff01\uff01<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"p\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"mf\">-1.9.0<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">\/<\/span><span class=\"n\">configure<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">prefix<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">share<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                     <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u5b89\u88c5\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">sbin<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">usr<\/span><span class=\"o\">\/<\/span><span class=\"n\">sbin<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                   <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u7684sbin\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">conf<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"p\">.<\/span><span class=\"n\">conf<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">             <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u7684\u914d\u7f6e\u6587\u4ef6<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">error<\/span><span class=\"o\">-<\/span><span class=\"n\">log<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">log<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"n\">log<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">     <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u7684\u9519\u8bef\u65e5\u5fd7<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">log<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">log<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">access<\/span><span class=\"p\">.<\/span><span class=\"n\">log<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">     <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u7684\u8bbf\u95ee\u65e5\u5fd7<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">pid<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">run<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"p\">.<\/span><span class=\"n\">pid<\/span><span class=\"w\">  <\/span><span class=\"err\">\\<\/span><span class=\"w\">          <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u7684\u8fdb\u7a0bID<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">lock<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">lock<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"p\">.<\/span><span class=\"n\">lock<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">user<\/span><span class=\"o\">=<\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                          <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u6240\u5c5e\u7528\u6237<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">group<\/span><span class=\"o\">=<\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                         <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u6240\u5c5e\u7528\u6237\u7ec4<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_ssl_module<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                    <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u7684ssl\u6a21\u5757<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_spdy_module<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">               <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u7684Google<\/span><span class=\"w\"> <\/span><span class=\"n\">spdy\u6a21\u5757<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_dav_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_flv_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_realip_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_addition_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_xslt_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_stub_status_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_sub_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_random_index_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_degradation_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_secure_link_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_gzip_static_module<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">            <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx\u7684gzip\u538b\u7f29\u6a21\u5757<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">http_perl_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">pcre<\/span><span class=\"o\">=<\/span><span class=\"n\">pcre<\/span><span class=\"mf\">-8.36<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                 <\/span><span class=\"p\">[<\/span><span class=\"n\">pcre\u7684\u5b89\u88c5\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">zlib<\/span><span class=\"o\">=<\/span><span class=\"n\">zlib<\/span><span class=\"mf\">-1.2.8<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                    <\/span><span class=\"p\">[<\/span><span class=\"n\">pcre\u7684\u5b89\u88c5\u76ee\u5f55<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">debug<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                          <\/span><span class=\"p\">[<\/span><span class=\"n\">\u5141\u8bb8DEBUG<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">file<\/span><span class=\"o\">-<\/span><span class=\"n\">aio<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">mail<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">mail_ssl_module<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">client<\/span><span class=\"o\">-<\/span><span class=\"n\">body<\/span><span class=\"o\">-<\/span><span class=\"n\">temp<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">tmp<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">client_body<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">proxy<\/span><span class=\"o\">-<\/span><span class=\"n\">temp<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">tmp<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">proxy<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">fastcgi<\/span><span class=\"o\">-<\/span><span class=\"n\">temp<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">tmp<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">fastcgi<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">uwsgi<\/span><span class=\"o\">-<\/span><span class=\"n\">temp<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">tmp<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">uwsgi<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">http<\/span><span class=\"o\">-<\/span><span class=\"n\">scgi<\/span><span class=\"o\">-<\/span><span class=\"n\">temp<\/span><span class=\"o\">-<\/span><span class=\"n\">path<\/span><span class=\"o\">=\/<\/span><span class=\"n\">var<\/span><span class=\"o\">\/<\/span><span class=\"n\">tmp<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">scgi<\/span><span class=\"w\"> <\/span>\\\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">stream<\/span><span class=\"w\"> <\/span><span class=\"err\">\\<\/span><span class=\"w\">                         <\/span><span class=\"p\">[<\/span><span class=\"n\">Nginx1<\/span><span class=\"mf\">.9.0<\/span><span class=\"n\">\u7279\u6709\u7684stream\u6a21\u5757<\/span><span class=\"p\">]<\/span>\n<span class=\"o\">--<\/span><span class=\"n\">with<\/span><span class=\"o\">-<\/span><span class=\"n\">ld<\/span><span class=\"o\">-<\/span><span class=\"n\">opt<\/span><span class=\"o\">=<\/span><span class=\"s\">&quot;-Wl,-E&quot;<\/span><span class=\"w\">                  <\/span><span class=\"p\">[<\/span><span class=\"n\">gcc\u7684\u7f16\u8bd1\u4f18\u5316<\/span><span class=\"p\">]<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u914d\u7f6e\u8fc7\u7a0b\u5927\u6982\u9700\u89815\u5206\u949f\u5de6\u53f3\uff0c\u90e8\u5206\u622a\u56fe\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"nginx\u7684configure\u8fc7\u7a0b\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/nginxconfigureresult.png\" title=\"nginx\u7684configure\u8fc7\u7a0b\"><\/p>\n<h5>2 \u914d\u7f6e\u5b8c\u540e\uff0c\u5c31\u53ef\u4ee5\u76f4\u63a5\u7f16\u8bd1\u548c\u5b89\u88c5\u4e86<\/h5>\n<p>\u6700\u540e\uff0c\u76f4\u63a5\u4f7f\u7528\u6267\u884c\u8fd9\u6761\u547d\u4ee4<code>[root@typecodes nginx-1.9.0]# make &amp;&amp; make install<\/code>\u8fdb\u884c\u5b89\u88c5\u5373\u53ef\u3002\u5176\u4e2d\uff0cmake\u547d\u4ee4\u548cmake install\u547d\u4ee4\u7684\u6267\u884c\u7ed3\u679c\u9644\u56fe\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"Nginx\u7f16\u8bd1\u65f6make\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/nginxinstallresult1.png\" title=\"Nginx\u7f16\u8bd1\u65f6make\u6267\u884c\u7ed3\u679c\"><\/p>\n<p><img alt=\"Nginx\u7f16\u8bd1\u65f6make install\u6267\u884c\u7ed3\u679c\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/nginxinstallresult2.png\" title=\"Nginx\u7f16\u8bd1\u65f6make install\u6267\u884c\u7ed3\u679c\"><\/p>\n<h5>3 \u914d\u7f6eNginx1.9.0\uff0c\u4f7f\u4e4b\u6b63\u5e38\u5de5\u4f5c<\/h5>\n<p>\u6210\u529f\u5b89\u88c5Nginx1.9.0\u540e\uff0c\u6211\u4eec\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u914d\u7f6e\uff0c\u5305\u62ec\u5f00\u673a\u542f\u52a8\u3001SSL\/HTTPS\u670d\u52a1\u7b49\u3002\u5176\u4e2d\uff0cNginx\u670d\u52a1\u63a7\u5236\u811a\u672c<code>nginx<\/code>\u89c1\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/nginxserviceoptshell.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aNginx\u670d\u52a1\u542f\u52a8\u3001\u505c\u6b62\u548c\u91cd\u542f\u7b49\u64cd\u4f5c\u7684SHELL\u811a\u672c\u300b<\/a>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"nx\">\u4e0a\u4f20Nginx\u670d\u52a1\u63a7\u5236\u811a\u672cnginx<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5e76\u8d4b\u4e88\u6267\u884c\u6743\u9650<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5220\u9664\u5b89\u88c5\u5305<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u6dfb\u52a0Nginx\u670d\u52a1\u5230\u5f00\u673a\u542f\u52a8<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">nginx<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">nginx<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">chmod<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"nx\">x<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">init<\/span><span class=\"p\">.<\/span><span class=\"nx\">d<\/span><span class=\"o\">\/<\/span><span class=\"nx\">nginx<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">nginx<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">1.9.0<\/span><span class=\"o\">*<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">chkconfig<\/span><span class=\"w\"> <\/span><span class=\"o\">--<\/span><span class=\"nx\">add<\/span><span class=\"w\"> <\/span><span class=\"nx\">nginx<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">chkconfig<\/span><span class=\"w\"> <\/span><span class=\"nx\">nginx<\/span><span class=\"w\"> <\/span><span class=\"nx\">on<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7531\u4e8e\u535a\u5ba2\u51c6\u5907\u5168\u7ad9\u542f\u7528https\u670d\u52a1\uff0c\u6240\u4ee5\u76f4\u63a5\u5c06\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/lnmppositivessl.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 6.5\u7cfb\u7edfLNMP\u73af\u5883\u5b89\u88c5SSL\u8bc1\u4e66\u300b<\/a>\u4e2d\u4ea7\u751f\u7684\u79c1\u94a5typecodes.key\u548c\u8bc1\u4e66\u6587\u4ef6typecodes_last.crt\u6253\u5305\u7684ssl.tar.gz\u4e0a\u4f20\u5230\u670d\u52a1\u5668\u4f7f\u7528\u3002\u800cNginx\u914d\u7f6e\u6587\u4ef6nginx.conf\u89c1\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/centos7nginxhttpsspdy.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u516d)\uff1aNginx\u914d\u7f6eHTTPS\u548cSPDY\u5b9e\u6218\u300b<\/a>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"c1\">#######\u4e0a\u4f20ssl\u6587\u4ef6\u548cNginx\u914d\u7f6e\u6587\u4ef6nginx.conf<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mkdir -p \/etc\/nginx\/ssl &amp;&amp; tar -zxf ~\/ssl.tar.gz -C \/etc\/nginx\/ssl<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># cd \/etc\/nginx\/ &amp;&amp; tar -zcf etc.nginx.tar.gz .\/<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># rm -rf ~\/ssl.tar.gz <\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mv ~\/nginx.conf \/etc\/nginx<\/span>\n<span class=\"n\">mv<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">overwrite<\/span><span class=\"w\"> <\/span><span class=\"err\">\u2018<\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">.<\/span><span class=\"n\">conf<\/span><span class=\"err\">\u2019?<\/span><span class=\"w\"> <\/span><span class=\"n\">y<\/span>\n\n<span class=\"c1\">#######\u6d4b\u8bd5\u914d\u7f6e\u662f\u5426\u6b63\u5e38<\/span>\n<span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># nginx -t<\/span>\n<span class=\"n\">nginx<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">the<\/span><span class=\"w\"> <\/span><span class=\"n\">configuration<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">.<\/span><span class=\"n\">conf<\/span><span class=\"w\"> <\/span><span class=\"n\">syntax<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">ok<\/span>\n<span class=\"n\">nginx<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"n\">configuration<\/span><span class=\"w\"> <\/span><span class=\"n\">file<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"n\">etc<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">\/<\/span><span class=\"n\">nginx<\/span><span class=\"o\">.<\/span><span class=\"n\">conf<\/span><span class=\"w\"> <\/span><span class=\"n\">test<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"n\">successful<\/span>\n\n<span class=\"c1\">#######\u65b0\u5efaNginx\u8fdb\u7a0b\u65e5\u5fd7nginx.pid\u76ee\u5f55\uff0c\u5e76\u542f\u52a8\u670d\u52a1<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># mkdir -p \/var\/run\/nginx\/<\/span>\n<span class=\"p\">[<\/span><span class=\"n\">root<\/span><span class=\"err\">@<\/span><span class=\"n\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"c1\"># service nginx start<\/span>\n<span class=\"n\">Restarting<\/span><span class=\"w\"> <\/span><span class=\"n\">nginx<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">via<\/span><span class=\"w\"> <\/span><span class=\"n\">systemctl<\/span><span class=\"p\">):<\/span><span class=\"w\">  <\/span><span class=\"p\">[<\/span><span class=\"w\">  <\/span><span class=\"n\">OK<\/span><span class=\"w\">  <\/span><span class=\"p\">]<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u6700\u540e\u4f7f\u7528\u547d\u4ee4<code>[root@typecodes nginx]# nginx -V<\/code>\u67e5\u770bNginx1.9.0\u7684\u8be6\u7ec6\u4fe1\u606f\u3002<\/p>\n<p><img alt=\"\u67e5\u770bNginx1.9.0\u7684\u8be6\u7ec6\u4fe1\u606f\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/nginxversioninfo.png\" title=\"\u67e5\u770bNginx1.9.0\u7684\u8be6\u7ec6\u4fe1\u606f\"><\/p>\n<h5>4 \u9519\u8bef\u5206\u6790<\/h5>\n<p>\u8fd9\u91cc\u7279\u610f\u5206\u6790\u4e86\u4e00\u4e9bNginx\u5b89\u88c5\u8fc7\u7a0b\u4e2d\u53ef\u80fd\u51fa\u73b0\u7684\u9519\u8bef\u60c5\u51b5\uff0c\u8be6\u89c1\u6587\u7ae0<a href=\"https:\/\/typecodes.com\/web\/solvenginxcompileerror.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aNginx\u7f16\u8bd1\u5b89\u88c5\u65f6\u5e38\u89c1\u9519\u8bef\u5206\u6790\u300b<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"web"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"nginx"}}]},{"title":"Typecho\u8bc4\u8bba\u4e2d\u5f00\u542f\u548c\u4f7f\u7528Markdown\u7684\u65b9\u6cd5","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/typechocommentmarkdown.html","rel":"alternate"}},"published":"2015-05-31T18:20:00+08:00","updated":"2015-05-31T18:20:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-05-31:\/mix\/typechocommentmarkdown.html","summary":"<p>\u8f7b\u91cf\u7ea7\u7684\u535a\u5ba2\u7a0b\u5e8fTypecho\uff0c\u8fd8\u6709\u4e00\u4e2a\u5f88\u8212\u9002\u7684\u4f53\u9a8c\uff0c\u90a3\u5c31\u662f\u652f\u6301Markdown\u8bed\u6cd5\uff0c\u4e0d\u8bba\u662f\u5728\u6587\u7ae0\u6216\u662f\u8bc4\u8bba\u4e2d\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u8bf4\u660e\u5982\u4f55\u5728\u535a\u5ba2\u4e2d\u4f7f\u7528Markdown\u5199\u4f5c\u4ee5\u53ca\u5982\u4f55\u5728\u8bc4\u8bba\u4e2d\u4f7f\u7528Markdown\u8bed\u6cd5\u3002<\/p>\n<p><img alt=\"Typecho\u8bc4\u8bba\u4e2d\u5f00\u542f\u548c\u4f7f\u7528Markdown\u7684\u65b9\u6cd5\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/typechomarkdown.png\" title=\"Typecho\u8bc4\u8bba\u4e2d\u5f00\u542f\u548c\u4f7f\u7528Markdown\u7684\u65b9\u6cd5\"><\/p>\n","content":"<p>\u8f7b\u91cf\u7ea7\u7684\u535a\u5ba2\u7a0b\u5e8fTypecho\uff0c\u8fd8\u6709\u4e00\u4e2a\u5f88\u8212\u9002\u7684\u4f53\u9a8c\uff0c\u90a3\u5c31\u662f\u652f\u6301Markdown\u8bed\u6cd5\uff0c\u4e0d\u8bba\u662f\u5728\u6587\u7ae0\u6216\u662f\u8bc4\u8bba\u4e2d\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u662f\u8bf4\u660e\u5982\u4f55\u5728\u535a\u5ba2\u4e2d\u4f7f\u7528Markdown\u5199\u4f5c\u4ee5\u53ca\u5982\u4f55\u5728\u8bc4\u8bba\u4e2d\u4f7f\u7528Markdown\u8bed\u6cd5\u3002<\/p>\n<p><img alt=\"Typecho\u8bc4\u8bba\u4e2d\u5f00\u542f\u548c\u4f7f\u7528Markdown\u7684\u65b9\u6cd5\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/typechomarkdown.png\" title=\"Typecho\u8bc4\u8bba\u4e2d\u5f00\u542f\u548c\u4f7f\u7528Markdown\u7684\u65b9\u6cd5\"><\/p>\n\n\n<h5>1 Typecho\u535a\u5ba2\u8bc4\u8bba\u4e2d\u5f00\u542fMarkdown\u529f\u80fd<\/h5>\n<p>\u5728Typecho\u4e2d\uff0c\u5982\u4f55\u5728\u5199\u8bc4\u8bba\u7684\u65f6\u5019\u4e5f\u80fd\u50cf\u5199\u6587\u7ae0\u90a3\u6837\uff0c\u4f7f\u7528Markdown\u8bed\u6cd5\uff1f\u6211\u4eec\u53ea\u9700\u8981\u5728Typecho\u7684\u540e\u53f0\u5206\u4e24\u4e2a\u6b65\u9aa4\u5373\u53ef\u5f00\u542f\u8fd9\u4e2a\u529f\u80fd\u3002<\/p>\n<p>\u9996\u5148\u8fdb\u5165Typecho\u535a\u5ba2\u7684\u540e\u53f0\u7ba1\u7406\u754c\u9762\uff0c\u7136\u540e\u9f20\u6807\u6ed1\u5230\u5de6\u4e0a\u89d2\u83dc\u5355\u680f\u4e0a\u7684<code>\u8bbe\u7f6e<\/code>\uff0c\u63a5\u7740\u70b9\u51fb<code>\u8bc4\u8bba<\/code>\u8fdb\u5165\u5230\u8bc4\u8bba\u8bbe\u7f6e\u754c\u9762\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u9700\u8981\u52fe\u9009\u4e0a<code>\u5728\u8bc4\u8bba\u4e2d\u4f7f\u7528 Markdown \u8bed\u6cd5<\/code>\u3002\u540c\u65f6\uff0c\u6211\u4eec\u8fd8\u9700\u8981\u5728<code>\u5141\u8bb8\u4f7f\u7528\u7684HTML\u6807\u7b7e\u548c\u5c5e\u6027<\/code>\u680f\u76ee\u4e2d\u586b\u5199\u4e0aTypecho\u5c06Markdown\u8f6c\u6362\u540e\u7684HTML\u6807\u7b7e\u3002<\/p>\n<p>\u535a\u5ba2\u76ee\u524d\u4f7f\u7528\u7684\u662f\u5982\u56fe\u6240\u793a\u7684\u4e0b\u9762\u8fd9\u4e2a\u914d\u7f6e\uff0c\u5927\u5bb6\u53ef\u4ee5\u6839\u636e\u9700\u8981\u8fdb\u884c\u52a0\u51cf\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>&lt;blockquote&gt;&lt;pre&gt;&lt;code&gt;&lt;strong&gt;&lt;em&gt;&lt;h5&gt;&lt;h6&gt;&lt;a href title&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;tbody&gt;&lt;td&gt;\n<\/code><\/pre><\/div>\n\n<p>\u5176\u4e2d\uff0c<code>code<\/code>\u6807\u7b7e\u4f5c\u7528\u662f\u9ad8\u4eae\u67d0\u4e2a\u5355\u8bcd\u6216\u8bcd\u7ec4\uff1b<code>&lt;a href&gt;<\/code>\u6807\u7b7e\u4f5c\u7528\u662f\u5141\u8bb8\u8bc4\u8bba\u6587\u5b57\u9644\u5e26\u8d85\u94fe\u63a5\uff0c\u800c\u5982\u679c\u8fd9\u4e2a\u94fe\u63a5\u4e0a\u8fd8\u8981\u6709\u6587\u5b57\u63d0\u793a\u4fe1\u606f\uff0c\u90a3\u4e48\u5c31\u9700\u8981\u6539\u6210<code>&lt;a href title&gt;<\/code>\u6807\u7b7e\uff1b\u5269\u4f59\u7684<code>&lt;table&gt;<\/code>\u6807\u7b7e\u4f5c\u7528\u662f\u5141\u8bb8\u8868\u683c\u3002<\/p>\n<p><img alt=\"Typecho\u535a\u5ba2\u8bc4\u8bba\u4e2d\u5f00\u542fMarkdown\u529f\u80fd\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/typechostartmarkdown.png\" title=\"Typecho\u535a\u5ba2\u8bc4\u8bba\u4e2d\u5f00\u542fMarkdown\u529f\u80fd\"><\/p>\n<h5>2 \u5982\u4f55\u5728\u8bc4\u8bba\u4e2d\u4f7f\u7528Markdown\u8bed\u6cd5<\/h5>\n<p>\u7531\u4e8eTypecho\u7a0b\u5e8f\u4f7f\u7528\u7684\u662fPHP Markdown Lib\u5e93\uff0c\u81ea\u7136\u4e5f\u9075\u5faaMarkdown\u57fa\u672c\u8bed\u6cd5\u3002\u6240\u4ee5\uff0c\u5728\u5199\u8bc4\u8bba\u7684\u65f6\u5019\uff0c\u76f4\u63a5\u4f7f\u7528Markdown\u7684\u57fa\u672c\u8bed\u6cd5\u5373\u53ef\u3002\u4e0b\u9762\u662f\u5728\u5199\u6587\u7ae0\u6216\u8005\u8bc4\u8bba\u65f6\uff0c\u4e00\u4e9b\u7ecf\u5e38\u4f1a\u7528\u5230\u7684Markdown\u6f14\u793a\u3002<\/p>\n<h6>2.1 \u9ad8\u4eae\u67d0\u4e2a\u8bcd\u7ec4<\/h6>\n<p>\u4f7f\u7528\u4e24\u4e2a\u53cd\u5f15\u53f7\u628a\u8981\u9ad8\u4eae\u7684\u8bcd\u7ec4\u5305\u542b\u8d77\u6765\uff0c\u4f8b\u5982<code>`echo \"Hello\"`<\/code>\u5373\u53ef\uff0c\u7ed3\u679c\u5982\u56fe\u6240\u793a\u3002<\/p>\n<p><img alt=\"typecho\u4e2d\u4f7f\u7528Markdown\u9ad8\u4eae\u67d0\u4e2a\u8bcd\u7ec4\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/commentlightwords.png\" title=\"typecho\u4e2d\u4f7f\u7528Markdown\u9ad8\u4eae\u67d0\u4e2a\u8bcd\u7ec4\"><\/p>\n<h6>2.2 \u63d2\u5165\u4ee3\u7801<\/h6>\n<p>\u5728\u8bc4\u8bba\u4e2d\u63d2\u5165\u4ee3\u7801\uff0c\u53ea\u9700\u8981\u5728\u4ee3\u7801\u4e2d\u7684\u6bcf\u4e00\u884c\u7684\u5f00\u5934\u589e\u52a04\u4e2a\u7a7a\u683c\u5373\u53ef\uff0c\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n<p><img alt=\"typecho\u4e2d\u4f7f\u7528Markdown\u63d2\u5165\u4ee3\u7801\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/commentinsertcodes.png\" title=\"typecho\u4e2d\u4f7f\u7528Markdown\u63d2\u5165\u4ee3\u7801\"><\/p>\n<h6>2.3 \u5c06\u6587\u5b57\u52a0\u4e0a\u8d85\u94fe\u63a5<\/h6>\n<p>\u8fd9\u4e2a\u529f\u80fd\u4e0d\u662f\u7528\u6765\u53d1\u5e7f\u544a\u94fe\u63a5\u7684\u54df\uff01\u5f00\u4e2a\u73a9\u7b11\uff0c\u6211\u4eec\u53ea\u9700\u8981\u4f7f\u7528Markdown\u7684\u8d85\u94fe\u63a5\u6807\u7b7e\u5373\u53ef\u3002\u4f8b\u5982\uff0c<code>[\u6b22\u8fce\u6765\u5230\u6211\u7684\u535a\u5ba2](https:\/\/typecodes.com \"TypeCodes\")<\/code>\u3002<\/p>\n<p><img alt=\"typecho\u4e2d\u5c06\u6587\u5b57\u52a0\u4e0a\u8d85\u94fe\u63a5\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/commenttexturllinker.png\" title=\"typecho\u4e2d\u5c06\u6587\u5b57\u52a0\u4e0a\u8d85\u94fe\u63a5\"><\/p>\n<h6>2.4 \u63d2\u5165\u8868\u683c<\/h6>\n<p>\u5728\u8bc4\u8bba\u4e2d\u63d2\u5165\u8868\u683c\uff0c\u5f53\u7136\u8fd9\u4e2a\u529f\u80fd\u57fa\u672c\u4e0d\u4f1a\u7528\u5230\u5427\u3002\u5728\u6587\u7ae0\u4e2d\u4f7f\u7528Markdown\u8bed\u6cd5\u5c55\u793a\u8868\u683c\u7684\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"typecho\u4e2d\u4f7f\u7528Markdown\u63d2\u5165\u8868\u683c\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/typechomarkdowntable.png\" title=\"typecho\u4e2d\u4f7f\u7528Markdown\u63d2\u5165\u8868\u683c\"><\/p>\n<p>\u90a3\u4e48\u5728\u8bc4\u8bba\u4e2d\u8981\u7528Markdown\u5c55\u793a\u8868\u683c\u7684\u8bdd\uff0c\u65b9\u6cd5\u4e5f\u662f\u4e00\u6837\u7684\u3002\u4f8b\u5982\u4f7f\u7528\u4e0b\u9762\u8fd9\u6bb5\u683c\u5f0f\uff0c\u5c31\u53ef\u4ee5\u7528\u8868\u683c\u7684\u5f62\u5f0f\u5c55\u793a\u51fa\u6765\u4e86\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>Lang| Start | IDE| Inheritance\n----|------|----\nJava | 1995  | Eclipse | Yes\nC | 1972  | CodeBlocks | No\nC++ | 1983 | Visual Studio | Yes\nPython | 1989 | Eclipse | Yes\nC#| 2000 | Visual Studio | Yes\n<\/code><\/pre><\/div>\n\n<h5>3 \u603b\u7ed3<\/h5>\n<p>\u5c0f\u82822\u4e2d\u53ea\u662f\u5c55\u793a\u4e86Markdown\u7684\u90e8\u5206\u57fa\u672c\u8bed\u6cd5\u5982\u4f55\u5728Typecho\u5199\u6587\u7ae0\u6216\u8005\u8bc4\u8bba\u4e2d\u5e94\u7528\uff0c\u66f4\u591a\u7684\u8bed\u6cd5\u53ef\u4ee5\u53c2\u8003<a href=\"http:\/\/wowubuntu.com\/markdown\/\" title=\"\u300aMarkdown \u8bed\u6cd5\u8bf4\u660e (\u7b80\u4f53\u4e2d\u6587\u7248)\u300b\">\u8fd9\u7bc7\u6587\u7ae0<\/a>\u3002\u6700\u540e\u9700\u8981\u8bf4\u660e\u7684\u662f\uff1aTypecho\u5c06Markdown\u8f6c\u6362\u6210\u666e\u901ahtml\u6807\u7b7e\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u4fee\u6539\u5bf9\u5e94\u7684CSS\u6837\u5f0f\uff0c\u5927\u5bb6\u53ef\u4ee5\u5c3d\u60c5\u53d1\u6325\u3002<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"typecho markdown"}},{"@attributes":{"term":"markdown"}}]},{"title":"\u89c6\u89d2\uff1aC\u8bed\u8a00\u5c06\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/simplifychexstrtoint.html","rel":"alternate"}},"published":"2015-05-30T07:58:00+08:00","updated":"2015-05-30T07:58:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-05-30:\/cseries\/simplifychexstrtoint.html","summary":"<p>\u5728\u524d\u6587<a href=\"https:\/\/typecodes.com\/cseries\/againchexstrtointeger.html\/comment-page-1#comment-1665\" title=\"\u67e5\u770b\u539f\u6587\u8bc4\u8bba\">\u300a\u518d\u8baeC\u8bed\u8a00\u5c06\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\u300b<\/a>\u4e2d <a href=\"http:\/\/pewae.com\/\">@\u5927\u81f4<\/a> \u7ae5\u978b\u5e2e\u5fd9\u63d0\u4e86\u4e00\u4e2a\u601d\u8def\uff1a\u76f4\u63a5\u5c06\u6307\u9488<code>p<\/code>\u8bfb\u53d6\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4e2d\u7684\u5355\u4e2a\u5b57\u7b26\u8f6c\u6362\u540e\u7684\u7ed3\u679c\u4fdd\u5b58\u5728<code>iResult<\/code>\u4e2d\uff0c\u800c\u4e0d\u662f\u4fdd\u5b58\u5728\u6307\u9488p\u6307\u5411\u7684\u5185\u5b58\u4e2d\u3002\u8fd9\u6837\u601d\u8def\u66f4\u4e3a\u7b80\u6d01\uff0c\u4e0b\u9762\u662f\u5177\u4f53\u7684\u4e24\u4e2a\u5b9e\u73b0\u7a0b\u5e8f\u3002<\/p>\n","content":"<p>\u5728\u524d\u6587<a href=\"https:\/\/typecodes.com\/cseries\/againchexstrtointeger.html\/comment-page-1#comment-1665\" title=\"\u67e5\u770b\u539f\u6587\u8bc4\u8bba\">\u300a\u518d\u8baeC\u8bed\u8a00\u5c06\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\u300b<\/a>\u4e2d <a href=\"http:\/\/pewae.com\/\">@\u5927\u81f4<\/a> \u7ae5\u978b\u5e2e\u5fd9\u63d0\u4e86\u4e00\u4e2a\u601d\u8def\uff1a\u76f4\u63a5\u5c06\u6307\u9488<code>p<\/code>\u8bfb\u53d6\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4e2d\u7684\u5355\u4e2a\u5b57\u7b26\u8f6c\u6362\u540e\u7684\u7ed3\u679c\u4fdd\u5b58\u5728<code>iResult<\/code>\u4e2d\uff0c\u800c\u4e0d\u662f\u4fdd\u5b58\u5728\u6307\u9488p\u6307\u5411\u7684\u5185\u5b58\u4e2d\u3002\u8fd9\u6837\u601d\u8def\u66f4\u4e3a\u7b80\u6d01\uff0c\u4e0b\u9762\u662f\u5177\u4f53\u7684\u4e24\u4e2a\u5b9e\u73b0\u7a0b\u5e8f\u3002<\/p>\n\n\n<h5>1 \u4ece\u9ad8\u4f4d\u5230\u4f4e\u4f4d\u5355\u4e2a\u5b57\u7b26\u8f6c\u6362<\/h5>\n<p>\u6b63\u5411\u8f6c\u6362\u65f6\uff0c\u63d0\u524d\u5224\u65ad\u51fa\u5b57\u7b26\u4e32\u4e2d\u90e8\u5206\u975e\u6cd5\u5b57\u7b26\uff0c\u7136\u540e\u6839\u636e<code>+<\/code>\u3001<code>-<\/code>\u3001<code>0x<\/code>\u3001<code>0X<\/code>\u8fd9\u56db\u4e2a\u7279\u6b8a\u5b57\u7b26(\u4e32)\u5bf9\u6307\u9488\u53d8\u91cfp\u8fdb\u884c\u7279\u6b8a\u5904\u7406\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName  HexStr2Integer.c<\/span>\n<span class=\"cm\"> * @author    vfhky 2015.05.30 https:\/\/typecodes.com\/cseries\/simplifychexstrtoint.html<\/span>\n<span class=\"cm\"> * @param     [in]HexStr \u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff08\u4f8b\u5982&quot;eE2&quot;\u3001&quot;Fa1&quot;\u3001&quot;2011&quot;\u3001&quot;-eE2&quot;\u3001&quot;+eE2&quot;\u7b49\uff09 <\/span>\n<span class=\"cm\"> * @return    -1:\u5b57\u7b26\u4e32\u4e3a\u7a7a; -2:\u5b57\u7b26\u4e32\u4e2d\u5305\u542b\u975e\u5341\u516d\u8fdb\u5236\u7684\u5b57\u7b26; \u5176\u5b83:\u8f6c\u6362\u540e\u7684\u5341\u8fdb\u5236\u6574\u6570<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">HexStr2Integer<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5224\u65ad\u5b57\u7b26\u4e32\u662f\u5426\u5408\u6cd5<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;+&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">        <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x58<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x78<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6307\u9488\u53d8\u91cfp\u6307\u5411\u5b57\u7b26\u4e32\u7684\u9996\u4f4d<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5bf9\u4ee5&quot;+&quot;\u3001&quot;-&quot;\u53f7\u5f00\u5934\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u7684\u5904\u7406<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;+&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">++<\/span><span class=\"n\">p<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5bf9&quot;0x&quot;\u6216\u8005&quot;0X&quot;\u5f00\u5934\u7684\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u7684\u5904\u7406<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x58<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x78<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;\\0&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">48<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">57<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">48<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iResult<\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">65<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">70<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">65<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iResult<\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">97<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">102<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">97<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iResult<\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-2<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"o\">++<\/span><span class=\"n\">p<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">iFlag<\/span><span class=\"o\">*<\/span><span class=\"n\">iResult<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"p\">[<\/span><span class=\"mi\">200<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">cHexString<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Please input a HexString with length less than 200:<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">scanf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;%s&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;----&gt;[%d]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr2Integer<\/span><span class=\"p\">(<\/span><span class=\"n\">cHexString<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u540c\u6837\u4f7f\u7528GCC\u7f16\u8bd1\u547d\u4ee4<code>gcc HexStr2Integer.c -o HexStr2Integer<\/code>\uff0c\u7136\u540e\u8f93\u5165\u6d4b\u8bd5\u7528\u7684\u5341\u516d\u8fdb\u5236\u7684\u5b57\u7b26\u4e32\"eE2\"\u3001\"Fa1\"\u3001\"2011\"\u3001\"-eE2\"\u3001\"+eE2\"\u5206\u522b\u8f6c\u6362\u6210\u4e86\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6574\u6570\uff1a3810\u30014001\u30018209\u3001-3810\u30013810\u3002<\/p>\n<p><img alt=\"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/simplifychexstrtoint.png\" title=\"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\"><\/p>\n<h5>2 \u4ece\u4f4e\u4f4d\u5230\u9ad8\u4f4d\u5355\u4e2a\u5b57\u7b26\u8f6c\u6362<\/h5>\n<p>\u9006\u5411\u8f6c\u6362\u65f6\uff0c\u9700\u8981\u6ce8\u610f<code>while<\/code>\u5faa\u73af\u4e2d\u901a\u8fc7\u5bf9<code>+<\/code>\u3001<code>-<\/code>\u3001<code>0x<\/code>\u3001<code>0X<\/code>\u8fd9\u56db\u4e2a\u7279\u6b8a\u5b57\u7b26(\u4e32)\u7684\u5224\u65ad\u51fa\u975e\u6cd5\u5b57\u7b26\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName  HexStr2Integer2.c<\/span>\n<span class=\"cm\"> * @author    vfhky 2015.05.30 https:\/\/typecodes.com\/cseries\/simplifychexstrtoint.html<\/span>\n<span class=\"cm\"> * @param     [in]HexStr \u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff08\u4f8b\u5982&quot;eE2&quot;\u3001&quot;Fa1&quot;\u3001&quot;2011&quot;\u3001&quot;-eE2&quot;\u3001&quot;+eE2&quot;\u7b49\uff09 <\/span>\n<span class=\"cm\"> * @return    -1:\u5b57\u7b26\u4e32\u4e3a\u7a7a; -2:\u5b57\u7b26\u4e32\u4e2d\u5305\u542b\u975e\u5341\u516d\u8fdb\u5236\u7684\u5b57\u7b26; \u5176\u5b83:\u8f6c\u6362\u540e\u7684\u5341\u8fdb\u5236\u6574\u6570<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">HexStr2Integer2<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iCycle<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5224\u65ad\u5b57\u7b26\u4e32\u662f\u5426\u5408\u6cd5<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">!<\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6307\u9488\u53d8\u91cfp\u6307\u5411\u5b57\u7b26\u4e32\u7684\u672b\u5c3e<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"o\">--<\/span><span class=\"n\">p<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">!=<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;0&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;9&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;0&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"o\">*<\/span><span class=\"n\">iCycle<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;A&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;F&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;A&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"o\">*<\/span><span class=\"n\">iCycle<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;a&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;f&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;a&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"o\">*<\/span><span class=\"n\">iCycle<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;+&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;x&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;0&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">            <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;X&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;0&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-2<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">        <\/span><span class=\"n\">iCycle<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">iFlag<\/span><span class=\"o\">*<\/span><span class=\"n\">iResult<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"p\">[<\/span><span class=\"mi\">200<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">cHexString<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Please input a HexString with length less than 200:<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">scanf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;%s&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;----&gt;[%d]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr2Integer2<\/span><span class=\"p\">(<\/span><span class=\"n\">cHexString<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u540c\u6837\uff0c\u4f7f\u7528GCC\u7f16\u8bd1\u540e\uff0c\u8f93\u5165\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u6570\u636e\u8fdb\u884c\u6d4b\u8bd5\uff0c\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/simplifychexstrtoint2.png\" title=\"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\"><\/p>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32"}},{"@attributes":{"term":"\u5341\u516d\u8fdb\u5236\u8f6c\u5341\u8fdb\u5236"}},{"@attributes":{"term":"\u5b57\u7b26\u4e32\u8f6c\u6362"}}]},{"title":"2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e8c)\uff1aLinux\u7cfb\u7edf\u78c1\u76d8\u5206\u533a\u6302\u8f7d\u548c\u4ea4\u6362\u7a7a\u95f4","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/centos7fdiskmountswap.html","rel":"alternate"}},"published":"2015-05-27T19:31:00+08:00","updated":"2015-05-27T19:31:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-05-27:\/linux\/centos7fdiskmountswap.html","summary":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e8c\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u5c06\u78c1\u76d8\u8fdb\u884c\u5206\u533a\u548c\u6302\u8f7d\u3002<\/p>\n------------\u64cd\u4f5c\u8bf4\u660e------------               \nLinux\u7cfb\u7edf\uff1a       \u963f\u91cc\u4e91CentOS 7.1\uff0820G\uff09\n\u64cd\u4f5c\u5de5\u5177\uff1a        SecureCRT 7.0\n\u5f85\u6302\u8f7d\u7684\u6570\u636e\u76d8\uff1a   24G\n\u5206\u533a\u76ee\u6807\uff1a        \u5148\u52064G\u4f5c\u4e3aCentOS7.1\u7cfb\u7edf\u7684\u4ea4\u6362\u7a7a\u95f4\uff0c\u5269\u4f5920G\u4f5c\u4e3a\u666e\u901a\u7269\u7406\u7a7a\u95f4\n<\/code><\/pre>\n\n","content":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e8c\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5728Linux\u7cfb\u7edf\u4e2d\u5982\u4f55\u5c06\u78c1\u76d8\u8fdb\u884c\u5206\u533a\u548c\u6302\u8f7d\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code>------------\u64cd\u4f5c\u8bf4\u660e------------               \nLinux\u7cfb\u7edf\uff1a       \u963f\u91cc\u4e91CentOS 7.1\uff0820G\uff09\n\u64cd\u4f5c\u5de5\u5177\uff1a        SecureCRT 7.0\n\u5f85\u6302\u8f7d\u7684\u6570\u636e\u76d8\uff1a   24G\n\u5206\u533a\u76ee\u6807\uff1a        \u5148\u52064G\u4f5c\u4e3aCentOS7.1\u7cfb\u7edf\u7684\u4ea4\u6362\u7a7a\u95f4\uff0c\u5269\u4f5920G\u4f5c\u4e3a\u666e\u901a\u7269\u7406\u7a7a\u95f4\n<\/code><\/pre><\/div>\n\n\n\n<h5>1 \u67e5\u770b\u5f53\u524dLinux\u7cfb\u7edf\u5206\u533a\u4fe1\u606f<\/h5>\n<p>\u7531\u4e8e\u963f\u91cc\u4e91\u4e3b\u673a\u9ed8\u8ba4\u7cfb\u7edf\u76d8\u5927\u5c0f\u4e3a20G\uff0c\u901a\u8fc7\u547d\u4ee4<code>df -h<\/code>\u53ef\u4ee5\u770b\u5230\u5206\u533a<code>\/dev\/xvda1<\/code>\u6302\u8f7d\u5728\u5f53\u524dCentOS7.1\u7cfb\u7edf\u7684\u6839\u76ee\u5f55<code>\/<\/code>\u4e0b\u9762\uff0c\u7cfb\u7edf\u672c\u8eab\u5360\u7528\u4e862.1G\u7a7a\u95f4\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">df<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">h<\/span>\n<span class=\"nx\">Filesystem<\/span><span class=\"w\">      <\/span><span class=\"nx\">Size<\/span><span class=\"w\">  <\/span><span class=\"nx\">Used<\/span><span class=\"w\"> <\/span><span class=\"nx\">Avail<\/span><span class=\"w\"> <\/span><span class=\"nx\">Use<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"nx\">Mounted<\/span><span class=\"w\"> <\/span><span class=\"nx\">on<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvda1<\/span><span class=\"w\">       <\/span><span class=\"mi\">20<\/span><span class=\"nx\">G<\/span><span class=\"w\">  <\/span><span class=\"m m-Double\">2.1<\/span><span class=\"nx\">G<\/span><span class=\"w\">   <\/span><span class=\"mi\">17<\/span><span class=\"nx\">G<\/span><span class=\"w\">   <\/span><span class=\"mi\">12<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span>\n<span class=\"nx\">devtmpfs<\/span><span class=\"w\">        <\/span><span class=\"mi\">489<\/span><span class=\"nx\">M<\/span><span class=\"w\">     <\/span><span class=\"mi\">0<\/span><span class=\"w\">  <\/span><span class=\"mi\">489<\/span><span class=\"nx\">M<\/span><span class=\"w\">   <\/span><span class=\"mi\">0<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span>\n<span class=\"nx\">tmpfs<\/span><span class=\"w\">           <\/span><span class=\"mi\">497<\/span><span class=\"nx\">M<\/span><span class=\"w\">     <\/span><span class=\"mi\">0<\/span><span class=\"w\">  <\/span><span class=\"mi\">497<\/span><span class=\"nx\">M<\/span><span class=\"w\">   <\/span><span class=\"mi\">0<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">shm<\/span>\n<span class=\"nx\">tmpfs<\/span><span class=\"w\">           <\/span><span class=\"mi\">497<\/span><span class=\"nx\">M<\/span><span class=\"w\">  <\/span><span class=\"m m-Double\">6.5<\/span><span class=\"nx\">M<\/span><span class=\"w\">  <\/span><span class=\"mi\">490<\/span><span class=\"nx\">M<\/span><span class=\"w\">   <\/span><span class=\"mi\">2<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">run<\/span>\n<span class=\"nx\">tmpfs<\/span><span class=\"w\">           <\/span><span class=\"mi\">497<\/span><span class=\"nx\">M<\/span><span class=\"w\">     <\/span><span class=\"mi\">0<\/span><span class=\"w\">  <\/span><span class=\"mi\">497<\/span><span class=\"nx\">M<\/span><span class=\"w\">   <\/span><span class=\"mi\">0<\/span><span class=\"o\">%<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">sys<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fs<\/span><span class=\"o\">\/<\/span><span class=\"nx\">cgroup<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 \u5217\u51fa\u6240\u6709\u5b89\u88c5\u7684\u78c1\u76d8\u53ca\u5206\u533a\u4fe1\u606f<\/h5>\n<p>\u90a3\u4e48\uff0c\u5982\u679c\u4e3b\u673a\u4e0a\u8fd8\u5b58\u5728\u989d\u5916\u7684\u672a\u6302\u8f7d\u7684\u78c1\u76d8\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7<code>fdisk -l<\/code>\u67e5\u770b\u8fd9\u4e9b\u78c1\u76d8\u7684\u4fe1\u606f\u3002\u5982\u4e0b\u6240\u793a\uff0c\u78c1\u76d8<code>\/dev\/xvda<\/code>\u662f\u963f\u91cc\u4e91\u4e3b\u673a\u81ea\u5e26\u7684\uff0c\u7136\u540e\u88ab\u5212\u5206\u6210\u4e86\u5206\u533a<code>\/dev\/xvda1<\/code>\uff1b\u800c\u78c1\u76d8<code>\/dev\/xvdb<\/code>\u5c31\u662f24G\u5927\u5c0f\uff08\u5b9e\u9645\u4e3a25.8G\uff09\u7684\u963f\u91cc\u4e91\u6570\u636e\u76d8\uff08\u8fd8\u672a\u8fdb\u884c\u5206\u533a\uff09\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">fdisk<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">l<\/span>\n\n<span class=\"nx\">Disk<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvda<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">21.5<\/span><span class=\"w\"> <\/span><span class=\"nx\">GB<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">21474836480<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">41943040<\/span><span class=\"w\"> <\/span><span class=\"nx\">sectors<\/span>\n<span class=\"nx\">Units<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">sectors<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span>\n<span class=\"nx\">Sector<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">logical<\/span><span class=\"o\">\/<\/span><span class=\"nx\">physical<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span>\n<span class=\"nx\">I<\/span><span class=\"o\">\/<\/span><span class=\"nx\">O<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">minimum<\/span><span class=\"o\">\/<\/span><span class=\"nx\">optimal<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span>\n<span class=\"nx\">Disk<\/span><span class=\"w\"> <\/span><span class=\"nx\">label<\/span><span class=\"w\"> <\/span><span class=\"k\">type<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">dos<\/span>\n<span class=\"nx\">Disk<\/span><span class=\"w\"> <\/span><span class=\"nx\">identifier<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x0009e68a<\/span>\n\n<span class=\"w\">    <\/span><span class=\"nx\">Device<\/span><span class=\"w\"> <\/span><span class=\"nx\">Boot<\/span><span class=\"w\">      <\/span><span class=\"nx\">Start<\/span><span class=\"w\">         <\/span><span class=\"nx\">End<\/span><span class=\"w\">      <\/span><span class=\"nx\">Blocks<\/span><span class=\"w\">   <\/span><span class=\"nx\">Id<\/span><span class=\"w\">  <\/span><span class=\"nx\">System<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvda1<\/span><span class=\"w\">   <\/span><span class=\"o\">*<\/span><span class=\"w\">        <\/span><span class=\"mi\">2048<\/span><span class=\"w\">    <\/span><span class=\"mi\">41943039<\/span><span class=\"w\">    <\/span><span class=\"mi\">20970496<\/span><span class=\"w\">   <\/span><span class=\"mi\">83<\/span><span class=\"w\">  <\/span><span class=\"nx\">Linux<\/span>\n\n<span class=\"nx\">Disk<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">25.8<\/span><span class=\"w\"> <\/span><span class=\"nx\">GB<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">25769803776<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">50331648<\/span><span class=\"w\"> <\/span><span class=\"nx\">sectors<\/span>\n<span class=\"nx\">Units<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"nx\">sectors<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span>\n<span class=\"nx\">Sector<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">logical<\/span><span class=\"o\">\/<\/span><span class=\"nx\">physical<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span>\n<span class=\"nx\">I<\/span><span class=\"o\">\/<\/span><span class=\"nx\">O<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">minimum<\/span><span class=\"o\">\/<\/span><span class=\"nx\">optimal<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"w\"> <\/span><span class=\"mi\">512<\/span><span class=\"w\"> <\/span><span class=\"nx\">bytes<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3 \u5f00\u59cb\u5c06\u78c1\u76d8\u8fdb\u884c\u5206\u533a<\/h5>\n<p>\u6309\u7167\u5148\u524d\u8bbe\u5b9a\u7684\u76ee\u6807\uff0c\u5c06\u78c1\u76d8<code>\/dev\/xvdb<\/code>\u5212\u5206\u6210\u4e24\u4e2a\u533a\uff1a\u4e00\u533a\u7528\u4e8eCentOS7.1\u7cfb\u7edf\u7684\u4ea4\u6362\u7a7a\u95f4\uff0c\u4e8c\u533a\u5c31\u662f\u666e\u901a\u7684Linux\u7269\u7406\u7a7a\u95f4\uff0c\u7528\u4f5c\u4ed3\u5e93\u5b58\u653e\u5907\u4efd\u7684\u6570\u636e\u5e93\u6587\u4ef6\u3001\u7a0b\u5e8f\u7b49\u7b49\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">fdisk<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb<\/span>\n<span class=\"nx\">Welcome<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">fdisk<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">util<\/span><span class=\"o\">-<\/span><span class=\"nx\">linux<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">2.23.2<\/span><span class=\"p\">).<\/span>\n\n<span class=\"nx\">Changes<\/span><span class=\"w\"> <\/span><span class=\"nx\">will<\/span><span class=\"w\"> <\/span><span class=\"nx\">remain<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">memory<\/span><span class=\"w\"> <\/span><span class=\"nx\">only<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">until<\/span><span class=\"w\"> <\/span><span class=\"nx\">you<\/span><span class=\"w\"> <\/span><span class=\"nx\">decide<\/span><span class=\"w\"> <\/span><span class=\"nx\">to<\/span><span class=\"w\"> <\/span><span class=\"nx\">write<\/span><span class=\"w\"> <\/span><span class=\"nx\">them<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Be<\/span><span class=\"w\"> <\/span><span class=\"nx\">careful<\/span><span class=\"w\"> <\/span><span class=\"nx\">before<\/span><span class=\"w\"> <\/span><span class=\"nx\">using<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">write<\/span><span class=\"w\"> <\/span><span class=\"nx\">command<\/span><span class=\"p\">.<\/span>\n\n<span class=\"nx\">Device<\/span><span class=\"w\"> <\/span><span class=\"nx\">does<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"nx\">contain<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">recognized<\/span><span class=\"w\"> <\/span><span class=\"nx\">partition<\/span><span class=\"w\"> <\/span><span class=\"nx\">table<\/span>\n<span class=\"nx\">Building<\/span><span class=\"w\"> <\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"nx\">new<\/span><span class=\"w\"> <\/span><span class=\"nx\">DOS<\/span><span class=\"w\"> <\/span><span class=\"nx\">disklabel<\/span><span class=\"w\"> <\/span><span class=\"nx\">with<\/span><span class=\"w\"> <\/span><span class=\"nx\">disk<\/span><span class=\"w\"> <\/span><span class=\"nx\">identifier<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x6c0e75aa<\/span><span class=\"p\">.<\/span>\n\n<span class=\"err\">################<\/span><span class=\"nx\">\u5f00\u59cb\u5206\u533a1<\/span><span class=\"err\">##################<\/span>\n<span class=\"nx\">Command<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">m<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">help<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"nx\">n<\/span><span class=\"w\">     <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u7b2c1\u6b65<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u8f93\u5165n<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u4ee3\u8868\u65b0\u5efa\u5206\u533a<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Partition<\/span><span class=\"w\"> <\/span><span class=\"k\">type<\/span><span class=\"p\">:<\/span>\n<span class=\"w\">   <\/span><span class=\"nx\">p<\/span><span class=\"w\">   <\/span><span class=\"nx\">primary<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"nx\">primary<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"nx\">extended<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"nx\">free<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">   <\/span><span class=\"nx\">e<\/span><span class=\"w\">   <\/span><span class=\"nx\">extended<\/span>\n<span class=\"nx\">Select<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"nx\">p<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"nx\">p<\/span><span class=\"w\">       <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u7b2c2\u6b65<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u8f93\u5165p\u6216\u76f4\u63a5\u56de\u8f66<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Partition<\/span><span class=\"w\"> <\/span><span class=\"nx\">number<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"o\">-<\/span><span class=\"mi\">4<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\">            <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u7b2c3\u6b65<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u8f93\u5165\u533a\u53f71<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">First<\/span><span class=\"w\"> <\/span><span class=\"nx\">sector<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">2048<\/span><span class=\"o\">-<\/span><span class=\"mi\">50331647<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"mi\">2048<\/span><span class=\"p\">):<\/span><span class=\"w\">    <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u7b2c4\u6b65<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u76f4\u63a5\u56de\u8f66<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Using<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"nx\">value<\/span><span class=\"w\"> <\/span><span class=\"mi\">2048<\/span>\n<span class=\"nx\">Last<\/span><span class=\"w\"> <\/span><span class=\"nx\">sector<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"nx\">sectors<\/span><span class=\"w\"> <\/span><span class=\"k\">or<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"nx\">size<\/span><span class=\"p\">{<\/span><span class=\"nx\">K<\/span><span class=\"p\">,<\/span><span class=\"nx\">M<\/span><span class=\"p\">,<\/span><span class=\"nx\">G<\/span><span class=\"p\">}<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">2048<\/span><span class=\"o\">-<\/span><span class=\"mi\">50331647<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">default<\/span><span class=\"w\"> <\/span><span class=\"mi\">50331647<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"mi\">4<\/span><span class=\"nx\">G<\/span><span class=\"w\">        <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u7b2c5\u6b65<\/span><span class=\"err\">\uff1a<\/span><span class=\"nx\">\u5212\u52064G\u7a7a\u95f4<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Partition<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"k\">type<\/span><span class=\"w\"> <\/span><span class=\"nx\">Linux<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">of<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"nx\">GiB<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"w\"> <\/span><span class=\"nx\">set<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u540c\u6837\uff0c\u4f7f\u7528<code>fdisk \/dev\/xvdb<\/code>\u547d\u4ee4\u5212\u5206\u533a\u57df2\u3002\u9700\u8981\u8bf4\u660e\u7684\u662f\uff0c\u56e0\u4e3a\u9700\u8981\u5c06\u5269\u4f59\u768420G\u7a7a\u95f4\u5168\u90e8\u5212\u5206\u5230\u533a\u57df2\uff0c\u6240\u4ee5\u5728\u7b2c5\u6b65<code>Last sector, +sectors or +size{K,M,G} (8390656-50331647, default 50331647)<\/code>\u4e00\u680f\u4e2d\u76f4\u63a5\u56de\u8f66\u5373\u53ef\u3002\u8fd9\u91cc\u7701\u7565\u5177\u4f53\u6267\u884c\u8fc7\u7a0b\uff0c\u9644\u56fe\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"\u5f00\u59cb\u5bf9\u78c1\u76d8\/dev\/xvdb\u8fdb\u884c\u5206\u533a\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/beginfdiskxvdb.png\" title=\"\u5f00\u59cb\u5bf9\u78c1\u76d8\/dev\/xvdb\u8fdb\u884c\u5206\u533a\"><\/p>\n<h5>4 \u5f00\u59cb\u683c\u5f0f\u5316\u521a\u5212\u5206\u7684\u7b2c1\u548c\u7b2c2\u5206\u533a<\/h5>\n<p>\u5f00\u59cb\u5206\u522b\u5c06\u5206\u533a<code>\/dev\/xvdb1<\/code>\u548c<code>\/dev\/xvdb2<\/code>\u683c\u5f0f\u5316\u4e3aext4\u6587\u4ef6\u7cfb\u7edf\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mkfs<\/span><span class=\"p\">.<\/span><span class=\"nx\">ext4<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb1<\/span>\n<span class=\"nx\">mke2fs<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">1.42.9<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">28<\/span><span class=\"o\">-<\/span><span class=\"nx\">Dec<\/span><span class=\"o\">-<\/span><span class=\"mi\">2013<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Filesystem<\/span><span class=\"w\"> <\/span><span class=\"nx\">label<\/span><span class=\"p\">=<\/span>\n<span class=\"nx\">OS<\/span><span class=\"w\"> <\/span><span class=\"k\">type<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">Linux<\/span>\n<span class=\"nx\">Block<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"p\">=<\/span><span class=\"mi\">4096<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">log<\/span><span class=\"p\">=<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Fragment<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"p\">=<\/span><span class=\"mi\">4096<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">log<\/span><span class=\"p\">=<\/span><span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n<span class=\"nx\">Stride<\/span><span class=\"p\">=<\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"nx\">blocks<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">Stripe<\/span><span class=\"w\"> <\/span><span class=\"nx\">width<\/span><span class=\"p\">=<\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"nx\">blocks<\/span>\n<span class=\"mi\">262144<\/span><span class=\"w\"> <\/span><span class=\"nx\">inodes<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">1048576<\/span><span class=\"w\"> <\/span><span class=\"nx\">blocks<\/span>\n<span class=\"mi\">52428<\/span><span class=\"w\"> <\/span><span class=\"nx\">blocks<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"m m-Double\">5.00<\/span><span class=\"o\">%<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"nx\">reserved<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">the<\/span><span class=\"w\"> <\/span><span class=\"nx\">super<\/span><span class=\"w\"> <\/span><span class=\"nx\">user<\/span>\n<span class=\"nx\">First<\/span><span class=\"w\"> <\/span><span class=\"nx\">data<\/span><span class=\"w\"> <\/span><span class=\"nx\">block<\/span><span class=\"p\">=<\/span><span class=\"mi\">0<\/span>\n<span class=\"nx\">Maximum<\/span><span class=\"w\"> <\/span><span class=\"nx\">filesystem<\/span><span class=\"w\"> <\/span><span class=\"nx\">blocks<\/span><span class=\"p\">=<\/span><span class=\"mi\">1073741824<\/span>\n<span class=\"mi\">32<\/span><span class=\"w\"> <\/span><span class=\"nx\">block<\/span><span class=\"w\"> <\/span><span class=\"nx\">groups<\/span>\n<span class=\"mi\">32768<\/span><span class=\"w\"> <\/span><span class=\"nx\">blocks<\/span><span class=\"w\"> <\/span><span class=\"nx\">per<\/span><span class=\"w\"> <\/span><span class=\"nx\">group<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">32768<\/span><span class=\"w\"> <\/span><span class=\"nx\">fragments<\/span><span class=\"w\"> <\/span><span class=\"nx\">per<\/span><span class=\"w\"> <\/span><span class=\"nx\">group<\/span>\n<span class=\"mi\">8192<\/span><span class=\"w\"> <\/span><span class=\"nx\">inodes<\/span><span class=\"w\"> <\/span><span class=\"nx\">per<\/span><span class=\"w\"> <\/span><span class=\"nx\">group<\/span>\n<span class=\"nx\">Superblock<\/span><span class=\"w\"> <\/span><span class=\"nx\">backups<\/span><span class=\"w\"> <\/span><span class=\"nx\">stored<\/span><span class=\"w\"> <\/span><span class=\"nx\">on<\/span><span class=\"w\"> <\/span><span class=\"nx\">blocks<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">        <\/span><span class=\"mi\">32768<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">98304<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">163840<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">229376<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">294912<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">819200<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mi\">884736<\/span>\n\n<span class=\"nx\">Allocating<\/span><span class=\"w\"> <\/span><span class=\"nx\">group<\/span><span class=\"w\"> <\/span><span class=\"nx\">tables<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span><span class=\"w\">                            <\/span>\n<span class=\"nx\">Writing<\/span><span class=\"w\"> <\/span><span class=\"nx\">inode<\/span><span class=\"w\"> <\/span><span class=\"nx\">tables<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span><span class=\"w\">                            <\/span>\n<span class=\"nx\">Creating<\/span><span class=\"w\"> <\/span><span class=\"nx\">journal<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"mi\">32768<\/span><span class=\"w\"> <\/span><span class=\"nx\">blocks<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span>\n<span class=\"nx\">Writing<\/span><span class=\"w\"> <\/span><span class=\"nx\">superblocks<\/span><span class=\"w\"> <\/span><span class=\"k\">and<\/span><span class=\"w\"> <\/span><span class=\"nx\">filesystem<\/span><span class=\"w\"> <\/span><span class=\"nx\">accounting<\/span><span class=\"w\"> <\/span><span class=\"nx\">information<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">done<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u540c\u6837\u4f7f\u7528\u547d\u4ee4<code>mkfs.ext4 \/dev\/xvdb2<\/code>\u683c\u5f0f\u5316\u5206\u533a\/dev\/xvdb2\u4e3aext4\u6587\u4ef6\u7cfb\u7edf\uff0c\u8fd9\u91cc\u7701\u7565\u5177\u4f53\u6267\u884c\u8fc7\u7a0b\uff0c\u9644\u56fe\u5982\u4e0b\uff1a<\/p>\n<p><img alt=\"\u683c\u5f0f\u5316\u5206\u533a\/dev\/xvdb2\u4e3aext4\u6587\u4ef6\u7cfb\u7edf\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/mkfs.ext4xvdb2.png\" title=\"\u683c\u5f0f\u5316\u5206\u533a\/dev\/xvdb2\u4e3aext4\u6587\u4ef6\u7cfb\u7edf\"><\/p>\n<h5>5 \u6307\u5b9a\u7b2c1\u5206\u533a\u7c7b\u578b\u4e3alinux Swap\u5206\u533a<\/h5>\n<p>\u5c06\u7b2c1\u5206\u533a<code>\/dev\/xvdb1<\/code>\u6307\u5b9a\u4e3a\u5f53\u524dCentOS7.1\u7cfb\u7edf\u7684\u4ea4\u6362\u7a7a\u95f4\uff0c\u8fd9\u5bf9Linux\u7cfb\u7edf\u6765\u8bf4\u662f\u5f88\u91cd\u8981\u7684\u4e00\u90e8\u5206\u3002Linux\u7cfb\u7edf\u53ef\u7528\u7684\u865a\u62df\u5185\u5b58\u7684\u603b\u91cf\u7b49\u4e8e\u7269\u7406\u5185\u5b58\uff08\u786c\u4ef6\u7684\u5185\u5b58\uff09\u548c\u4ea4\u6362\u7a7a\u95f4\u7684\u603b\u548c\u3002\u8bbe\u7f6e\u4ea4\u6362\u7a7a\u95f4Swap\u7684\u597d\u5904\u5728\u4e8e\uff1a\u5f53\u7cfb\u7edf\u7684\u7269\u7406\u5185\u5b58\u8017\u5c3d\u65f6\uff0c\u7cfb\u7edf\u8c03\u5ea6\u5c06\u90a3\u4e9b\u957f\u65f6\u95f4\u6ca1\u6709\u4ec0\u4e48\u64cd\u4f5c\u7684\u7a0b\u5e8f\u6240\u5360\u7528\u7684\u7269\u7406\u5185\u5b58\u4e2d\u7684\u4e00\u90e8\u5206\u7a7a\u95f4\u91ca\u653e\u51fa\u6765\uff0c\u5e76\u4e34\u65f6\u4fdd\u5b58\u5230Swap\u4ea4\u6362\u7a7a\u95f4\u4e2d\u3002\u7b49\u5230\u90a3\u4e9b\u7a0b\u5e8f\u8981\u8fd0\u884c\u65f6\uff0c\u518d\u5c06\u4fdd\u5b58\u7684\u6570\u636e\u4eceSwap\u4e2d\u6062\u590d\u5230\u5185\u5b58\u4e2d\u3002<\/p>\n<p>\u8fd9\u91cc\u5c06\u5206\u533a1<code>\/dev\/xvdb1<\/code>\u6539\u6210Swap\u5206\u533a\u7c7b\u578b\uff0c\u6700\u7ec8\u64cd\u4f5c\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u5176\u4e2d<code>82<\/code>\u8868\u793aLinux\u7cfb\u7edfSwap\u4ea4\u6362\u7a7a\u95f4\u7684\u6587\u4ef6\u7c7b\u578b\u3002<\/p>\n<p><img alt=\"\u5c06\u5206\u533a\/dev\/xvdb1\u6539\u6210Swap\u5206\u533a\u7c7b\u578b\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/linuxswap.png\" title=\"\u5c06\u5206\u533a\/dev\/xvdb1\u6539\u6210Swap\u5206\u533a\u7c7b\u578b\"><\/p>\n<h5>6 \u4f7f\u7528mkswap\u547d\u4ee4\u8bbe\u7f6e\u4ea4\u6362\u5206\u533a<\/h5>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mkswap<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb1<\/span>\n<span class=\"nx\">mkswap<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb1<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">warning<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">wiping<\/span><span class=\"w\"> <\/span><span class=\"nx\">old<\/span><span class=\"w\"> <\/span><span class=\"nx\">ext4<\/span><span class=\"w\"> <\/span><span class=\"nx\">signature<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Setting<\/span><span class=\"w\"> <\/span><span class=\"nx\">up<\/span><span class=\"w\"> <\/span><span class=\"nx\">swapspace<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">size<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2097148<\/span><span class=\"w\"> <\/span><span class=\"nx\">KiB<\/span>\n<span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">label<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"nx\">UUID<\/span><span class=\"p\">=<\/span><span class=\"mi\">4<\/span><span class=\"nx\">c90adae<\/span><span class=\"o\">-<\/span><span class=\"mi\">7459<\/span><span class=\"o\">-<\/span><span class=\"mi\">4<\/span><span class=\"nx\">a99<\/span><span class=\"o\">-<\/span><span class=\"mi\">8999<\/span><span class=\"o\">-<\/span><span class=\"nx\">fef130ff3da1<\/span>\n\n<span class=\"err\">###############<\/span><span class=\"nx\">\u6fc0\u6d3bswap\u5206\u533a<\/span><span class=\"err\">###############<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">swapon<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">a<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb1<\/span>\n\n<span class=\"err\">###############<\/span><span class=\"nx\">\u67e5\u770bswap\u5206\u533a<\/span><span class=\"err\">###############<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">swapon<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">s<\/span><span class=\"w\">       <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u6216<\/span><span class=\"w\"> <\/span><span class=\"nx\">free<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u6216<\/span><span class=\"w\"> <\/span><span class=\"nx\">cat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">proc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">swaps<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Filename<\/span><span class=\"w\">        <\/span><span class=\"nx\">Type<\/span><span class=\"w\">        <\/span><span class=\"nx\">Size<\/span><span class=\"w\">        <\/span><span class=\"nx\">Used<\/span><span class=\"w\">    <\/span><span class=\"nx\">Priority<\/span>\n<span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb1<\/span><span class=\"w\">      <\/span><span class=\"nx\">partition<\/span><span class=\"w\">   <\/span><span class=\"mi\">2097148<\/span><span class=\"w\">     <\/span><span class=\"mi\">0<\/span><span class=\"w\">       <\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span>\n<\/code><\/pre><\/div>\n\n<h5>7 \u5c06\u5206\u533a2\u6302\u8f7d\u5230CentOS\u7cfb\u7edf\u76ee\u5f55<\/h5>\n<p>\u6839\u636e\u76ee\u6807\u8bbe\u5b9a\uff0c\u8fd9\u91cc\u5c06\u5206\u533a2<code>\/dev\/xvdb2<\/code>\u6302\u8f7d\u5230\u6211\u7684CentOS7.1\u7cfb\u7edf\u7684<code>mydata<\/code>\u76ee\u5f55\u4e0b\u9762\uff0c\u7528\u4e8e\u5b58\u50a8\u4ed3\u5e93\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">######<\/span><span class=\"nx\">\u5728\u7cfb\u7edf\u6839\u76ee\u5f55\u65b0\u5efamydata\u76ee\u5f55<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u5e76\u5c06\u5206\u533a2\u6302\u8f7d\u5230\u8fd9\u4e2a\u76ee\u5f55<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mkdir<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">mydata<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mount<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb2<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">mydata<\/span>\n<\/code><\/pre><\/div>\n\n<h5>8 \u5c06\u5206\u533a1\u548c\u5206\u533a2\u7684\u4fe1\u606f\u5206\u522b\u8ffd\u52a0\u5230\u7cfb\u7edf\/etc\/fstab\u6587\u4ef6\u4e2d<\/h5>\n<p>Linux\u7cfb\u7edf<code>\/etc\/fstab<\/code>\u6587\u4ef6\u4e2d\u5305\u542b\u4e86\u5f53\u524d\u4e3b\u673a\u78c1\u76d8\u5206\u533a\u4ee5\u53ca\u5b58\u50a8\u8bbe\u5907\u5982\u4f55\u6302\u8f7d\u7684\u4fe1\u606f\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u5c06\u5206\u533a1\u30012\u7684\u4fe1\u606f\u5206\u522b\u5199\u5165\u5230\u8fd9\u4e2a\u6587\u4ef6\u4e2d\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">echo<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;<\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb1<\/span><span class=\"w\">              <\/span><span class=\"nx\">swap<\/span><span class=\"w\">               <\/span><span class=\"nx\">swap<\/span><span class=\"w\">   <\/span><span class=\"nx\">defaults<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fstab<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">echo<\/span><span class=\"w\"> <\/span><span class=\"err\">&#39;<\/span><span class=\"o\">\/<\/span><span class=\"nx\">dev<\/span><span class=\"o\">\/<\/span><span class=\"nx\">xvdb2<\/span><span class=\"w\">              <\/span><span class=\"o\">\/<\/span><span class=\"nx\">mydata<\/span><span class=\"w\">            <\/span><span class=\"nx\">ext4<\/span><span class=\"w\">   <\/span><span class=\"nx\">defaults<\/span><span class=\"w\">        <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"err\">&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;&gt;<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">fstab<\/span>\n<\/code><\/pre><\/div>\n\n<h5>9 \u6700\u540e\u67e5\u770b\u6548\u679c<\/h5>\n<p>\u6700\u540e\uff0c\u901a\u8fc7\u547d\u4ee4<code>df -h<\/code>\u548c<code>fdisk -l<\/code>\u67e5\u770b\u5206\u533a\u6302\u8f7d\u6548\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u5f00\u59cb\u5bf9\u78c1\u76d8\/dev\/xvdb\u8fdb\u884c\u5206\u533a\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/fdiskresult.png\" title=\"\u5f00\u59cb\u5bf9\u78c1\u76d8\/dev\/xvdb\u8fdb\u884c\u5206\u533a\"><\/p>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"linux\u6302\u8f7d"}},{"@attributes":{"term":"\u5206\u533a\u6302\u8f7d"}}]},{"title":"2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e00)\uff1a\u5b89\u88c5CentOS7\u540e\u9700\u8981\u7684\u64cd\u4f5c","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/centos7afteroperate.html","rel":"alternate"}},"published":"2015-05-25T16:27:00+08:00","updated":"2015-05-25T16:27:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-05-25:\/linux\/centos7afteroperate.html","summary":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e00\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5b89\u88c5\u5b8cCentOS7\u540e\u7684\u4e00\u4e9b\u4f18\u5316\u64cd\u4f5c\uff0c\u5305\u62ec\u66f4\u6362yum\u6e90\u5e76\u5347\u7ea7\u7cfb\u7edf\u5230CentOS7.1\u3001\u4f7f\u7528sshd\u767b\u5f55\u3001\u4fee\u6539\u673a\u5668\u540d\u3001vi\u6620\u5c04\u4e3avim\u3001vimrc\u7684\u914d\u7f6e\u3002<\/p>\n<p><img alt=\"\u5b89\u88c5CentOS7\u540e\u9700\u8981\u7684\u64cd\u4f5c\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/centos7update.png\" title=\"\u5b89\u88c5CentOS7\u540e\u9700\u8981\u7684\u64cd\u4f5c\"><\/p>\n","content":"<p>\u8fd9\u662f<a href=\"https:\/\/typecodes.com\/mix\/2015updateblog.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0\u300b<\/a>\u7cfb\u5217\u6587\u7ae0\u7684\u7b2c\u4e00\u7bc7\uff0c\u4e3b\u8981\u8bb0\u5f55\u5b89\u88c5\u5b8cCentOS7\u540e\u7684\u4e00\u4e9b\u4f18\u5316\u64cd\u4f5c\uff0c\u5305\u62ec\u66f4\u6362yum\u6e90\u5e76\u5347\u7ea7\u7cfb\u7edf\u5230CentOS7.1\u3001\u4f7f\u7528sshd\u767b\u5f55\u3001\u4fee\u6539\u673a\u5668\u540d\u3001vi\u6620\u5c04\u4e3avim\u3001vimrc\u7684\u914d\u7f6e\u3002<\/p>\n<p><img alt=\"\u5b89\u88c5CentOS7\u540e\u9700\u8981\u7684\u64cd\u4f5c\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/centos7update.png\" title=\"\u5b89\u88c5CentOS7\u540e\u9700\u8981\u7684\u64cd\u4f5c\"><\/p>\n\n\n<h5>1 \u5b89\u88c5EPEL\u6e90<\/h5>\n<p>EPEL\u5373Extra Packages for Enterprise Linux\uff0c\u662f\u57fa\u4e8eFedora\u7684\u4e00\u4e2a\u9879\u76ee\uff0c\u4e3a<code>\u7ea2\u5e3d\u7cfb<\/code>\u7684\u64cd\u4f5c\u7cfb\u7edf\u63d0\u4f9b\u989d\u5916\u7684\u8f6f\u4ef6\u5305\uff0c\u9002\u7528\u4e8eRHEL\u3001CentOS\u548cScientific Linux\u3002EPEL\u4e3aCentOS\u63d0\u4f9b\u4e86<code>\u989d\u5916\u7684<\/code>10000\u591a\u4e2a\u8f6f\u4ef6\u5305\uff0c\u800c\u4e14\u90fd\u4e0d\u4f1a\u66f4\u65b0\u6216\u8005\u66ff\u6362\u7cfb\u7edf\u672c\u8eab\u7ec4\u4ef6\u3002\u6267\u884c\u4e0b\u9762\u8fd9\u6761\u5b89\u88c5\u547d\u4ee4\u540e\uff0c\u4f1a\u5728<code>\/etc\/yum.repos.d<\/code>\u76ee\u5f55\u4e0b\u751f\u6210\u4e00\u4e2aepel.repo\u6587\u4ef6\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">epel<\/span><span class=\"o\">-<\/span><span class=\"nx\">release<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 \u5b89\u88c5yum-axelget\u63d2\u4ef6<\/h5>\n<p>yum-axelget\u662fEPEL\u63d0\u4f9b\u7684\u4e00\u4e2ayum\u63d2\u4ef6\u3002\u9ed8\u8ba4\u7684yum\u662f\u5355\u7ebf\u7a0b\u4e0b\u8f7d\u7684\uff0c\u4f7f\u7528\u8be5\u63d2\u4ef6\u540e\u7528yum\u5b89\u88c5\u8f6f\u4ef6\u65f6\u53ef\u4ee5\u5e76\u884c\u4e0b\u8f7d\u3002yum-axelget\u63d2\u4ef6\u539f\u7406\u662f\u8c03\u7528\u7cfb\u7edf\u4e2d\u7684axel\u4e0b\u8f7d\u8f6f\u4ef6\uff0c\u7136\u540e\u6839\u636e\u8f6f\u4ef6\u5305\u7684\u5927\u5c0f\u81ea\u52a8\u8bbe\u5b9a\u7ebf\u7a0b\u6570\u3002\u5728\u591a\u7ebf\u7a0b\u64cd\u4f5c\u65f6\uff0c\u8fd8\u80fd\u907f\u514d\u56e0\u4e3a\u7ebf\u7a0b\u6570\u8fc7\u591a\u800c\u5bfc\u81f4\u670d\u52a1\u5668\u62d2\u7edd\u4e0b\u8f7d\u7684\u95ee\u9898\uff0c\u5927\u5927\u63d0\u9ad8\u4e86\u8f6f\u4ef6\u7684\u4e0b\u8f7d\u901f\u5ea6\uff0c\u51cf\u5c11\u4e86\u4e0b\u8f7d\u7684\u7b49\u5f85\u65f6\u95f4\u3002\u6ce8\u610f\uff1a\u901a\u8fc7\u4e0b\u9762\u8fd9\u6761\u5b89\u88c5\u547d\u4ee4\uff0c\u4f1a\u540c\u65f6\u5b89\u88c5axel\u4e0b\u8f7d\u8f6f\u4ef6\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">install<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"o\">-<\/span><span class=\"nx\">axelget<\/span>\n<\/code><\/pre><\/div>\n\n<h5>3 \u66f4\u65b0CentOS\u6e90<\/h5>\n<p>\u5728\u5b89\u88c5\u5b8cEPEL\u6e90\u548cyum-axelget\u63d2\u4ef6\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5229\u7528\u5b83\u4eec\u5347\u7ea7\u5f53\u524d\u7684CentOS7\u5230CentOS7.1\u4e86\uff08\u8017\u65f6\u5927\u698210\u5206\u949f\uff09\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"nx\">clean<\/span><span class=\"w\"> <\/span><span class=\"nx\">all<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"nx\">makecache<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">yum<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">y<\/span><span class=\"w\"> <\/span><span class=\"nx\">update<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u7136\u540e\u53ef\u4ee5\u4f7f\u7528\u4e0b\u9762\u4e24\u6761\u547d\u4ee4\u67e5\u770b\u5f53\u524dCentOS\u7684\u5185\u6838\u7248\u672c\u548c\u53d1\u884c\u7248\u672c\u4fe1\u606f\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">##########<\/span><span class=\"nx\">\u5185\u6838\u7248\u672c<\/span>\n<span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">cat<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">proc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">version<\/span>\n<span class=\"nx\">Linux<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">3.10.0<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">123.9.3<\/span><span class=\"p\">.<\/span><span class=\"nx\">el7<\/span><span class=\"p\">.<\/span><span class=\"nx\">x86_64<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">builder<\/span><span class=\"err\">@<\/span><span class=\"nx\">kbuilder<\/span><span class=\"p\">.<\/span><span class=\"nx\">dev<\/span><span class=\"p\">.<\/span><span class=\"nx\">centos<\/span><span class=\"p\">.<\/span><span class=\"nx\">org<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">gcc<\/span><span class=\"w\"> <\/span><span class=\"nx\">version<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">4.8.2<\/span><span class=\"w\"> <\/span><span class=\"mi\">20140120<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">Red<\/span><span class=\"w\"> <\/span><span class=\"nx\">Hat<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">4.8.2<\/span><span class=\"o\">-<\/span><span class=\"mi\">16<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">GCC<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"err\">#<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"nx\">SMP<\/span><span class=\"w\"> <\/span><span class=\"nx\">Thu<\/span><span class=\"w\"> <\/span><span class=\"nx\">Nov<\/span><span class=\"w\"> <\/span><span class=\"mi\">6<\/span><span class=\"w\"> <\/span><span class=\"mi\">15<\/span><span class=\"p\">:<\/span><span class=\"mi\">06<\/span><span class=\"p\">:<\/span><span class=\"mi\">03<\/span><span class=\"w\"> <\/span><span class=\"nx\">UTC<\/span><span class=\"w\"> <\/span><span class=\"mi\">2014<\/span>\n<span class=\"err\">##########<\/span><span class=\"nx\">\u53d1\u884c\u7248\u672c<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">lsb_release<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">a<\/span>\n<span class=\"nx\">LSB<\/span><span class=\"w\"> <\/span><span class=\"nx\">Version<\/span><span class=\"p\">:<\/span><span class=\"w\">    <\/span><span class=\"p\">:<\/span><span class=\"nx\">core<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.1<\/span><span class=\"o\">-<\/span><span class=\"nx\">amd64<\/span><span class=\"p\">:<\/span><span class=\"nx\">core<\/span><span class=\"o\">-<\/span><span class=\"m m-Double\">4.1<\/span><span class=\"o\">-<\/span><span class=\"nx\">noarch<\/span>\n<span class=\"nx\">Distributor<\/span><span class=\"w\"> <\/span><span class=\"nx\">ID<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"nx\">CentOS<\/span>\n<span class=\"nx\">Description<\/span><span class=\"p\">:<\/span><span class=\"w\">    <\/span><span class=\"nx\">CentOS<\/span><span class=\"w\"> <\/span><span class=\"nx\">Linux<\/span><span class=\"w\"> <\/span><span class=\"nx\">release<\/span><span class=\"w\"> <\/span><span class=\"m m-Double\">7.1.1503<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">Core<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">Release<\/span><span class=\"p\">:<\/span><span class=\"w\">        <\/span><span class=\"m m-Double\">7.1.1503<\/span>\n<span class=\"nx\">Codename<\/span><span class=\"p\">:<\/span><span class=\"w\">       <\/span><span class=\"nx\">Core<\/span>\n<\/code><\/pre><\/div>\n\n<h5>4 \u4f7f\u7528sshd\u767b\u5f55<\/h5>\n<p>\u5728\u524d\u6587<a href=\"https:\/\/typecodes.com\/web\/aliyuncentoslnmphostssh.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS\u4e3b\u673a LNMP \u73af\u5883\u4e4b\u4e3b\u673a\u5b89\u5168\u7bc7\u4e00\u300b<\/a>\u4e2d\uff0c\u5df2\u7ecf\u8bb2\u8ff0\u4e86\u7981\u6b62\u4efb\u4f55\u7528\u6237\u4f7f\u7528\u5bc6\u7801\u767b\u5f55\uff0c\u800c\u53ea\u5141\u8bb8root\u7528\u6237\u4f7f\u7528sshd\u65b9\u5f0f\u767b\u5f55\u7684\u65b9\u6cd5\u3002\u5176\u4e2d\u7684\u516c\u3001\u79c1\u5bc6\u94a5\u662f\u901a\u8fc7SecureCRT\u751f\u6210\u7684\uff0c\u8fd9\u91cc\u6211\u4eec\u76f4\u63a5\u4f7f\u7528Linux\u547d\u4ee4\u751f\u6210\u516c\u79c1\u94a5\uff0c\u65b9\u6cd5\u66f4\u4e3a\u7b80\u5355\u5feb\u6377\u3002\u5c06\u751f\u6210\u7684\u79c1\u94a5vfhky20150505\u4fdd\u5b58\u5230\u672c\u5730\u4f9bSecureCRT\u7b49\u5de5\u5177\u4f7f\u7528\u5373\u53ef\uff08\u8bb0\u5f97\u5220\u9664\u670d\u52a1\u5668\u4e0a\u7684\u79c1\u94a5\u54e6\uff09\u3002<\/p>\n<h6>4.1 \u4f7f\u7528Linux\u547d\u4ee4\u751f\u6210\u516c\u79c1\u94a5\u6587\u4ef6<\/h6>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"err\">#######<\/span><span class=\"nx\">\u521b\u5efa\u516c\u94a5\u5b58\u653e\u76ee\u5f55<\/span><span class=\"err\">\uff1a<\/span><span class=\"o\">~\/<\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mkdir<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">cd<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span>\n<span class=\"err\">#######<\/span><span class=\"nx\">\u751f\u62101024\u5b57\u8282\u7684rsa\u52a0\u5bc6\u7684\u516c\u79c1\u94a5<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ssh<\/span><span class=\"o\">-<\/span><span class=\"nx\">keygen<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">b<\/span><span class=\"w\"> <\/span><span class=\"mi\">1024<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">rsa<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">vfhky20150505<\/span>\n<span class=\"nx\">Generating<\/span><span class=\"w\"> <\/span><span class=\"nx\">public<\/span><span class=\"o\">\/<\/span><span class=\"k\">private<\/span><span class=\"w\"> <\/span><span class=\"nx\">rsa<\/span><span class=\"w\"> <\/span><span class=\"nx\">key<\/span><span class=\"w\"> <\/span><span class=\"nx\">pair<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Enter<\/span><span class=\"w\"> <\/span><span class=\"nx\">passphrase<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">empty<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">passphrase<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">Enter<\/span><span class=\"w\"> <\/span><span class=\"nx\">same<\/span><span class=\"w\"> <\/span><span class=\"nx\">passphrase<\/span><span class=\"w\"> <\/span><span class=\"nx\">again<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">Passphrases<\/span><span class=\"w\"> <\/span><span class=\"nx\">do<\/span><span class=\"w\"> <\/span><span class=\"k\">not<\/span><span class=\"w\"> <\/span><span class=\"k\">match<\/span><span class=\"p\">.<\/span><span class=\"w\">  <\/span><span class=\"nx\">Try<\/span><span class=\"w\"> <\/span><span class=\"nx\">again<\/span><span class=\"p\">.<\/span>\n<span class=\"nx\">Enter<\/span><span class=\"w\"> <\/span><span class=\"nx\">passphrase<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"nx\">empty<\/span><span class=\"w\"> <\/span><span class=\"k\">for<\/span><span class=\"w\"> <\/span><span class=\"nx\">no<\/span><span class=\"w\"> <\/span><span class=\"nx\">passphrase<\/span><span class=\"p\">):<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">Enter<\/span><span class=\"w\"> <\/span><span class=\"nx\">same<\/span><span class=\"w\"> <\/span><span class=\"nx\">passphrase<\/span><span class=\"w\"> <\/span><span class=\"nx\">again<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span>\n<span class=\"nx\">Your<\/span><span class=\"w\"> <\/span><span class=\"nx\">identification<\/span><span class=\"w\"> <\/span><span class=\"nx\">has<\/span><span class=\"w\"> <\/span><span class=\"nx\">been<\/span><span class=\"w\"> <\/span><span class=\"nx\">saved<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">vfhky20150505<\/span><span class=\"p\">.<\/span><span class=\"w\">        <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u79c1\u94a5<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">Your<\/span><span class=\"w\"> <\/span><span class=\"nx\">public<\/span><span class=\"w\"> <\/span><span class=\"nx\">key<\/span><span class=\"w\"> <\/span><span class=\"nx\">has<\/span><span class=\"w\"> <\/span><span class=\"nx\">been<\/span><span class=\"w\"> <\/span><span class=\"nx\">saved<\/span><span class=\"w\"> <\/span><span class=\"k\">in<\/span><span class=\"w\"> <\/span><span class=\"nx\">vfhky20150505<\/span><span class=\"p\">.<\/span><span class=\"nx\">pub<\/span><span class=\"p\">.<\/span><span class=\"w\">        <\/span><span class=\"p\">[<\/span><span class=\"nx\">\u516c\u94a5<\/span><span class=\"p\">]<\/span>\n<span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">key<\/span><span class=\"w\"> <\/span><span class=\"nx\">fingerprint<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"p\">:<\/span>\n<span class=\"mi\">59<\/span><span class=\"p\">:<\/span><span class=\"mi\">54<\/span><span class=\"p\">:<\/span><span class=\"mi\">31<\/span><span class=\"p\">:<\/span><span class=\"mi\">5<\/span><span class=\"nx\">f<\/span><span class=\"p\">:<\/span><span class=\"mi\">37<\/span><span class=\"p\">:<\/span><span class=\"nx\">d5<\/span><span class=\"p\">:<\/span><span class=\"mi\">9<\/span><span class=\"nx\">a<\/span><span class=\"p\">:<\/span><span class=\"nx\">c3<\/span><span class=\"p\">:<\/span><span class=\"mi\">32<\/span><span class=\"p\">:<\/span><span class=\"mi\">65<\/span><span class=\"p\">:<\/span><span class=\"mi\">7<\/span><span class=\"nx\">d<\/span><span class=\"p\">:<\/span><span class=\"nx\">fd<\/span><span class=\"p\">:<\/span><span class=\"mi\">05<\/span><span class=\"p\">:<\/span><span class=\"nx\">f3<\/span><span class=\"p\">:<\/span><span class=\"mi\">20<\/span><span class=\"p\">:<\/span><span class=\"mi\">38<\/span><span class=\"w\"> <\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span>\n<span class=\"nx\">The<\/span><span class=\"w\"> <\/span><span class=\"nx\">key<\/span><span class=\"err\">&#39;<\/span><span class=\"nx\">s<\/span><span class=\"w\"> <\/span><span class=\"nx\">randomart<\/span><span class=\"w\"> <\/span><span class=\"nx\">image<\/span><span class=\"w\"> <\/span><span class=\"k\">is<\/span><span class=\"p\">:<\/span>\n<span class=\"o\">+--<\/span><span class=\"p\">[<\/span><span class=\"w\"> <\/span><span class=\"nx\">RSA<\/span><span class=\"w\"> <\/span><span class=\"mi\">1024<\/span><span class=\"p\">]<\/span><span class=\"o\">----+<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">          <\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span><span class=\"p\">=.<\/span><span class=\"o\">++<\/span><span class=\"nx\">B<\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">         <\/span><span class=\"p\">.<\/span><span class=\"nx\">E<\/span><span class=\"w\">  <\/span><span class=\"o\">+<\/span><span class=\"nx\">o<\/span><span class=\"p\">=<\/span><span class=\"nx\">O<\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">          <\/span><span class=\"p\">..<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"p\">.<\/span><span class=\"nx\">o<\/span><span class=\"p\">=<\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">         <\/span><span class=\"nx\">o<\/span><span class=\"w\">  <\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"p\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">        <\/span><span class=\"nx\">S<\/span><span class=\"w\">    <\/span><span class=\"nx\">o<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"w\"> <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">                 <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">                 <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">                 <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">|<\/span><span class=\"w\">                 <\/span><span class=\"o\">|<\/span>\n<span class=\"o\">+-----------------+<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ls<\/span>\n<span class=\"nx\">vfhky20150505<\/span><span class=\"w\">  <\/span><span class=\"nx\">vfhky20150505<\/span><span class=\"p\">.<\/span><span class=\"nx\">pub<\/span>\n<span class=\"err\">#######<\/span><span class=\"nx\">\u5c06\u516c\u94a5\u6587\u4ef6\u91cd\u547d\u540d\u4e3aauthorized_keys\u6587\u4ef6<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">mv<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"nx\">vfhky20150505<\/span><span class=\"p\">.<\/span><span class=\"nx\">pub<\/span><span class=\"w\"> <\/span><span class=\"nx\">authorized_keys<\/span>\n<span class=\"err\">#######<\/span><span class=\"nx\">\u5c06\u79c1\u94a5\u6587\u4ef6\u4e0b\u8f7d\u5230Windows\u4e3b\u673a\u540e<\/span><span class=\"err\">\uff0c<\/span><span class=\"nx\">\u9a6c\u4e0a\u5220\u9664\u907f\u514d\u88ab\u6076\u610f\u4f7f\u7528<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">rm<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">rf<\/span><span class=\"w\"> <\/span><span class=\"nx\">vfhky20150505<\/span>\n\n<span class=\"err\">#######<\/span><span class=\"nx\">\u5f53\u7136\u4e5f\u53ef\u4ee5\u9009\u62e9\u751f\u6210<\/span><span class=\"w\"> <\/span><span class=\"nx\">ed25519<\/span><span class=\"w\"> <\/span><span class=\"nx\">\u683c\u5f0f\u7684\u516c\u79c1\u94a5<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"p\">.<\/span><span class=\"nx\">ssh<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">ssh<\/span><span class=\"o\">-<\/span><span class=\"nx\">keygen<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">t<\/span><span class=\"w\"> <\/span><span class=\"nx\">ed25519<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">C<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;vfhky@qq.com&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">f<\/span><span class=\"w\"> <\/span><span class=\"nx\">vfhky20240228_ed25519<\/span>\n<\/code><\/pre><\/div>\n\n<h6>4.2 \u91cd\u542fsshd\u670d\u52a1\uff0c\u4f7f\u4e4b\u751f\u6548<\/h6>\n<p>\u65b0\u5efa\u4e00\u4e2ashell\u6587\u4ef6<code>sshdconfig.sh<\/code>\uff0c\u5e76\u6267\u884c<code>chmod +x sshdconfig.sh<\/code>\u8d4b\u4e88\u6267\u884c\u6743\u9650\uff0c\u7136\u540e\u590d\u5236\u4ee5\u4e0b\u5185\u5bb9\u5230\u6587\u4ef6\u4e2d\uff0c\u6700\u540e\u6267\u884c\u547d\u4ee4<code>.\/sshdconfig.sh<\/code>\u5373\u53ef\u4f7fsshd\u670d\u52a1\u751f\u6548\u3002<\/p>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"ch\">#!\/bin\/bash<\/span>\n<span class=\"c1\"># sshd service configure script for centos or ubuntu<\/span>\n<span class=\"c1\"># @author vfhky 2015.05.05 https:\/\/typecodes.com\/linux\/centos7afteroperate.html<\/span>\n\n<span class=\"c1\"># set the sshd login port you want which should be more than 1024 <\/span>\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^#Port 22@Port 8866@g&quot;<\/span><span class=\"w\">  <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^#Protocol 2@Protocol 2@g&quot;<\/span><span class=\"w\"> <\/span>\/etc\/ssh\/sshd_config\n\n<span class=\"c1\"># set the secret key bits<\/span>\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^#ServerKeyBits 1024@ServerKeyBits 1024@g&quot;<\/span><span class=\"w\">  <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^#RSAAuthentication yes@RSAAuthentication yes@g&quot;<\/span><span class=\"w\"> <\/span>\/etc\/ssh\/sshd_config\n\n<span class=\"c1\"># limit the login-way of user within Authentication-key<\/span>\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^#PubkeyAuthentication yes@PubkeyAuthentication yes@g&quot;<\/span><span class=\"w\">  <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^#PermitEmptyPasswords no@PermitEmptyPasswords no@g&quot;<\/span><span class=\"w\"> <\/span>\/etc\/ssh\/sshd_config\n\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^GSSAPIAuthentication yes@#GSSAPIAuthentication yes@g&quot;<\/span><span class=\"w\">  <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^GSSAPICleanupCredentials yes@#GSSAPICleanupCredentials yes@g&quot;<\/span><span class=\"w\"> <\/span>\/etc\/ssh\/sshd_config\n\n<span class=\"c1\"># forbid login with password<\/span>\nsed<span class=\"w\"> <\/span>-i<span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^PasswordAuthentication yes@PasswordAuthentication no@g&quot;<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^#PasswordAuthentication yes@PasswordAuthentication no@g&quot;<\/span><span class=\"w\"> <\/span><span class=\"se\">\\<\/span>\n<span class=\"w\">    <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^PermitRootLogin yes@PermitRootLogin without-password@g&quot;<\/span><span class=\"w\"> <\/span>-e<span class=\"w\"> <\/span><span class=\"s2\">&quot;s@^#PermitRootLogin prohibit-password@PermitRootLogin prohibit-password@g&quot;<\/span><span class=\"w\"> <\/span>\/etc\/ssh\/sshd_config\n\n<span class=\"c1\"># if key gen by rsa, should append<\/span>\n<span class=\"c1\"># echo &quot;PubkeyAcceptedKeyTypes=+ssh-rsa&quot; &gt;&gt; \/etc\/ssh\/sshd_config<\/span>\n\n<span class=\"c1\"># start the sshd service<\/span>\nsystemctl<span class=\"w\"> <\/span>restart<span class=\"w\"> <\/span>sshd.service\nservice<span class=\"w\"> <\/span>sshd<span class=\"w\"> <\/span>start\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<h5>6 \u4fee\u6539\u4e3b\u673a\u540d<\/h5>\n<p>\u5728\u524d\u6587<a href=\"https:\/\/typecodes.com\/linux\/centos7chghostname.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aCentOS7\u7cfb\u7edf\u5982\u4f55\u4fee\u6539\u4e3b\u673a\u540d\u300b<\/a>\u4e2d\u5df2\u7ecf\u63d0\u5230\u4e86\u4fee\u6539CentOS7\u7cfb\u7edf\u7684\u4e3b\u673a\u540d\u65b9\u6cd5\uff0c\u8fd9\u91cc\u518d\u91cd\u590d\u4e0b\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">hostnamectl<\/span><span class=\"w\"> <\/span><span class=\"nx\">set<\/span><span class=\"o\">-<\/span><span class=\"nx\">hostname<\/span><span class=\"w\"> <\/span><span class=\"nx\">typecodes<\/span>\n<\/code><\/pre><\/div>\n\n<h5>7 \u5c06vi\u6620\u5c04\u4e3avim\u547d\u4ee4\u3001\u9ad8\u4eaegrep\u8bcd\u8bed<\/h5>\n<p>\u5982\u4f55\u5728\u7f16\u8f91\u6587\u4ef6\u65f6\uff0c\u76f4\u63a5\u4f7f\u7528vi\u547d\u4ee4\u8fbe\u5230vim\u547d\u4ee4\u7684\u6548\u679c\uff0c\u8bbe\u7f6egrep\u8bcd\u8bed\u9ad8\u4eae<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">echo<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"nx\">e<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;\\nalias vi=vim\\nalias grep=&#39;grep --color&#39;\\n&quot;<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;&gt;~\/<\/span><span class=\"p\">.<\/span><span class=\"nx\">bashrc<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"nx\">source<\/span><span class=\"w\"> <\/span><span class=\"o\">~\/<\/span><span class=\"p\">.<\/span><span class=\"nx\">bashrc<\/span>\n<\/code><\/pre><\/div>\n\n<p>\u5982\u679c\u8fd8\u6ca1\u6709\u5b89\u88c5vim\uff0c\u90a3\u4e48\u53ef\u4ee5\u4f7f\u7528<code>yum -y install vim<\/code>\u547d\u4ee4\u8fdb\u884c\u5b89\u88c5\u3002<\/p>\n<h5>8 \u914d\u7f6evimrc\u6587\u4ef6<\/h5>\n<p>\u4e0b\u9762\u8fd9\u6761vim\u914d\u7f6e\u547d\u4ee4\u662f\u6211\u7ecf\u5e38\u4f7f\u7528\u7684\uff0c\u5305\u62ec\u884c\u53f7\u3001\u81ea\u52a8\u7f29\u8fdb\u3001\u9ad8\u4eae\u3001\u6587\u4ef6\u7f16\u7801\u548c\u7c98\u8d34\u65f6\u4e0d\u53d8\u5f62\u7684\u5feb\u6377\u952eF9\u7b49\u7b49\uff0c\u76f4\u63a5\u4f7f\u7528root\u7528\u6237\u628a\u4e0b\u9762\u7684\u5185\u5bb9\u8ffd\u52a0\u5230<code>\/etc\/vimrc<\/code>\u6587\u4ef6\u7684\u672b\u5c3e\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">colo<\/span><span class=\"w\"> <\/span><span class=\"n\">desert<\/span><span class=\"w\">                             <\/span><span class=\"ss\">&quot;\u8bbe\u7f6e\u4e3b\u9898\u65b9\u6848<\/span>\n<span class=\"ss\">&quot;<\/span><span class=\"n\">colo<\/span><span class=\"w\"> <\/span><span class=\"n\">darkblue<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">shortmess<\/span><span class=\"o\">=<\/span><span class=\"n\">atI<\/span><span class=\"w\">                           <\/span><span class=\"ss\">&quot;\u4e0d\u663e\u793a\u6b22\u8fce\u754c\u9762<\/span>\n<span class=\"ss\">set helplang=cn                             &quot;<\/span><span class=\"n\">\u5e2e\u52a9\u4e2d\u6587\u652f\u6301<\/span>\n\n<span class=\"ss\">&quot;set go= &quot;<\/span><span class=\"n\">\u8bbe\u7f6e\u6ca1\u6709GUI\u754c\u9762<\/span>\n\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">guioptions<\/span><span class=\"o\">-=<\/span><span class=\"n\">T<\/span><span class=\"w\">                           <\/span><span class=\"ss\">&quot;\u9690\u85cf\u5de5\u5177\u680f<\/span>\n<span class=\"ss\">set guioptions-=m                           &quot;<\/span><span class=\"n\">\u9690\u85cf\u83dc\u5355\u680f<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">guioptions<\/span><span class=\"o\">-=<\/span><span class=\"n\">L<\/span><span class=\"w\">                           <\/span><span class=\"ss\">&quot;\u9690\u85cf\u5de6\u4fa7\u6eda\u52a8\u6761<\/span>\n<span class=\"ss\">set guioptions-=r                           &quot;<\/span><span class=\"n\">\u9690\u85cf\u53f3\u4fa7\u6eda\u52a8\u6761<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">guioptions<\/span><span class=\"o\">-=<\/span><span class=\"n\">b<\/span><span class=\"w\">                           <\/span><span class=\"ss\">&quot;\u9690\u85cf\u5e95\u90e8\u6eda\u52a8\u6761<\/span>\n<span class=\"ss\">set guifont=NSimSun:h10                     &quot;<\/span><span class=\"n\">\u8bbe\u7f6e\u65b0\u5b8b\u4f53<\/span>\n\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">encoding<\/span><span class=\"o\">=<\/span><span class=\"n\">utf<\/span><span class=\"o\">-<\/span><span class=\"mi\">8<\/span><span class=\"w\">                          <\/span><span class=\"ss\">&quot;\u7f16\u7801\u683c\u5f0f\uff0c\u9632\u6b62\u4e2d\u6587\u4e71\u7801<\/span>\n<span class=\"ss\">&quot;<\/span><span class=\"n\">\u8bbe\u7f6e\u5f53\u524d\u6587\u6863\u7684\u7f16\u7801\u683c\u5f0f\u4ee5\u53ca\u4fdd\u5b58\u65f6\u7684\u683c\u5f0f<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">fileencoding<\/span><span class=\"o\">=<\/span><span class=\"n\">utf8<\/span>\n<span class=\"ss\">&quot;vim\u542f\u52a8\u65f6\u9010\u4e00\u63a2\u6d4b\u5373\u5c06\u6253\u5f00\u7684\u6587\u5b57\u7684\u7f16\u7801<\/span>\n<span class=\"ss\">set fileencodings=ucs-bom,utf-8,chinese,gbk,latin-1<\/span>\n<span class=\"ss\">&quot;<\/span><span class=\"n\">\u8bbe\u7f6e\u6587\u4ef6\u683c\u5f0f<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u9ed8\u8ba4ffs<\/span><span class=\"o\">=<\/span><span class=\"n\">dos<\/span><span class=\"p\">,<\/span><span class=\"n\">unix<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">ffs<\/span><span class=\"o\">=<\/span><span class=\"n\">unix<\/span><span class=\"p\">,<\/span><span class=\"n\">dos<\/span><span class=\"p\">,<\/span><span class=\"n\">mac<\/span>\n<span class=\"ss\">&quot;vim\u63d0\u793a\u4fe1\u606f\u4e71\u7801<\/span>\n<span class=\"ss\">language messages zh_CN.utf-8<\/span>\n<span class=\"ss\">&quot;<\/span><span class=\"n\">vim\u83dc\u5355\u4e71\u7801<\/span>\n<span class=\"n\">source<\/span><span class=\"w\"> <\/span><span class=\"err\">$<\/span><span class=\"n\">VIMRUNTIME<\/span><span class=\"o\">\/<\/span><span class=\"n\">delmenu<\/span><span class=\"p\">.<\/span><span class=\"n\">vim<\/span>\n<span class=\"n\">source<\/span><span class=\"w\"> <\/span><span class=\"err\">$<\/span><span class=\"n\">VIMRUNTIME<\/span><span class=\"o\">\/<\/span><span class=\"n\">menu<\/span><span class=\"p\">.<\/span><span class=\"n\">vim<\/span>\n\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">equalalways<\/span><span class=\"w\">                             <\/span><span class=\"ss\">&quot;\u5206\u5272\u7a97\u53e3\u65f6\u4fdd\u6301\u76f8\u7b49\u7684\u5bbd\/\u9ad8<\/span>\n\n\n<span class=\"ss\">&quot;<\/span><span class=\"n\">\u8ba9\u56de\u683c\u952e\u53ef\u4ee5\u5220\u9664\u7f29\u8fdb\u7684\u7a7a\u683c<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u6362\u884c\u7684\u56de\u8f66\u952e<\/span><span class=\"err\">\u3001<\/span><span class=\"n\">\u4ee5\u53ca\u63d2\u5165\u524d\u5df2\u7ecf\u8f93\u5165\u7684\u6587\u5b57<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">backspace<\/span><span class=\"o\">=<\/span><span class=\"n\">indent<\/span><span class=\"p\">,<\/span><span class=\"n\">eol<\/span><span class=\"p\">,<\/span><span class=\"k\">start<\/span>\n<span class=\"ss\">&quot;\u8ba9\u5149\u6807\u79fb\u5230\u4e00\u884c\u6700\u5de6\u8fb9\u7684\u65f6\u5019\u82e5\u7ee7\u7eed\u6309\u5de6\u952e\uff0c \u5149\u6807\u80fd\u56de\u5230\u4e0a\u4e00\u884c\u7684\u6700\u53f3\u8fb9\uff0c\u5177\u4f53\u53ef:h whichwrap<\/span>\n<span class=\"ss\">set whichwrap=b,s,&lt;,&gt;,[,]<\/span>\n<span class=\"ss\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"n\">\u6211\u7684\u72b6\u6001\u884c\u663e\u793a\u7684\u5185\u5bb9<\/span><span class=\"err\">\uff08<\/span><span class=\"n\">\u5305\u62ec\u6587\u4ef6\u7c7b\u578b\u548c\u89e3\u7801<\/span><span class=\"err\">\uff09<\/span><span class=\"w\"> <\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">statusline<\/span><span class=\"o\">=%<\/span><span class=\"n\">F<\/span><span class=\"o\">%<\/span><span class=\"n\">m<\/span><span class=\"o\">%<\/span><span class=\"n\">r<\/span><span class=\"o\">%<\/span><span class=\"n\">h<\/span><span class=\"o\">%<\/span><span class=\"n\">w<\/span><span class=\"err\">\\<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">TYPE=%Y<\/span><span class=\"o\">]<\/span><span class=\"err\">\\<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">%{&amp;ff}<\/span><span class=\"o\">][<\/span><span class=\"n\">%{&amp;fenc!=&#39;&#39;?&amp;fenc:&amp;enc}<\/span><span class=\"o\">]<\/span><span class=\"err\">\\<\/span><span class=\"o\">[<\/span><span class=\"n\">%{(&amp;bomb!=&#39;&#39;?&#39;bom&#39;:&#39;nobom&#39;)}<\/span><span class=\"o\">]<\/span><span class=\"err\">\\<\/span><span class=\"w\"> <\/span><span class=\"o\">[<\/span><span class=\"n\">POS=%l,%v<\/span><span class=\"o\">][<\/span><span class=\"n\">%p%%<\/span><span class=\"o\">]<\/span><span class=\"err\">\\<\/span><span class=\"w\"> <\/span><span class=\"o\">%<\/span><span class=\"err\">{<\/span><span class=\"n\">strftime<\/span><span class=\"p\">(<\/span><span class=\"err\">\\<\/span><span class=\"ss\">&quot;%Y.%m.%d\\ \\%H:%M\\&quot;<\/span><span class=\"p\">)<\/span><span class=\"err\">}<\/span><span class=\"w\"> <\/span><span class=\"ss\">&quot;set statusline=[%F]%y%r%m%*%=[Line:%l\/%L,Column:%c][%p%%]<\/span>\n\n<span class=\"ss\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"n\">\u4e0d\u8ba9vim\u53d1\u51fa\u8ba8\u538c\u7684\u6ef4\u6ef4\u58f0<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">noerrorbells<\/span>\n<span class=\"ss\">&quot; \u5173\u95ed\u4f7f\u7528\u53ef\u89c6\u54cd\u94c3\u4ee3\u66ff\u547c\u53eb<\/span>\n<span class=\"ss\">set novisualbell<\/span>\n\n<span class=\"ss\">&quot;<\/span><span class=\"n\">\u81ea\u52a8\u7f29\u8fdb<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">autoindent<\/span>\n<span class=\"ss\">&quot;\u667a\u80fd\u7f29\u8fdb<\/span>\n<span class=\"ss\">set smartindent<\/span>\n<span class=\"ss\">&quot;<\/span><span class=\"n\">Tab\u952e\u7684\u5bbd\u5ea6<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">tabstop<\/span><span class=\"o\">=<\/span><span class=\"mi\">4<\/span>\n<span class=\"ss\">&quot;\u7edf\u4e00\u7f29\u8fdb\u4e3a4<\/span>\n<span class=\"ss\">set softtabstop=4<\/span>\n<span class=\"ss\">set shiftwidth=4<\/span>\n<span class=\"ss\">&quot;<\/span><span class=\"n\">\u8bbe\u7f6e\u81ea\u52a8\u6362\u884c<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">wrap<\/span>\n\n\n<span class=\"ss\">&quot; \u5728\u5904\u7406\u672a\u4fdd\u5b58\u6216\u53ea\u8bfb\u6587\u4ef6\u7684\u65f6\u5019\uff0c\u5f39\u51fa\u786e\u8ba4<\/span>\n<span class=\"ss\">set confirm<\/span>\n\n\n<span class=\"ss\">&quot;<\/span><span class=\"n\">\u81ea\u52a8\u8865\u5168\u8bbe\u7f6e<\/span><span class=\"err\">\uff0c<\/span><span class=\"n\">\u5229\u7528gvim\u81ea\u5e26\u7684\u63d2\u4ef6<\/span>\n<span class=\"n\">autocmd<\/span><span class=\"w\"> <\/span><span class=\"n\">FileType<\/span><span class=\"w\"> <\/span><span class=\"n\">python<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">omnifunc<\/span><span class=\"o\">=<\/span><span class=\"n\">pythoncomplete#Complete<\/span>\n<span class=\"n\">autocmd<\/span><span class=\"w\"> <\/span><span class=\"n\">FileType<\/span><span class=\"w\"> <\/span><span class=\"n\">javascript<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">omnifunc<\/span><span class=\"o\">=<\/span><span class=\"n\">javascriptcomplete#CompleteJS<\/span>\n<span class=\"n\">autocmd<\/span><span class=\"w\"> <\/span><span class=\"n\">FileType<\/span><span class=\"w\"> <\/span><span class=\"n\">html<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">omnifunc<\/span><span class=\"o\">=<\/span><span class=\"n\">htmlcomplete#CompleteTags<\/span>\n<span class=\"n\">autocmd<\/span><span class=\"w\"> <\/span><span class=\"n\">FileType<\/span><span class=\"w\"> <\/span><span class=\"n\">css<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">omnifunc<\/span><span class=\"o\">=<\/span><span class=\"n\">csscomplete#CompleteCSS<\/span>\n<span class=\"n\">autocmd<\/span><span class=\"w\"> <\/span><span class=\"n\">FileType<\/span><span class=\"w\"> <\/span><span class=\"nc\">xml<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">omnifunc<\/span><span class=\"o\">=<\/span><span class=\"n\">xmlcomplete#CompleteTags<\/span>\n<span class=\"n\">autocmd<\/span><span class=\"w\"> <\/span><span class=\"n\">FileType<\/span><span class=\"w\"> <\/span><span class=\"n\">php<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">omnifunc<\/span><span class=\"o\">=<\/span><span class=\"n\">phpcomplete#CompletePHP<\/span>\n<span class=\"n\">autocmd<\/span><span class=\"w\"> <\/span><span class=\"n\">FileType<\/span><span class=\"w\"> <\/span><span class=\"n\">c<\/span><span class=\"w\"> <\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">omnifunc<\/span><span class=\"o\">=<\/span><span class=\"n\">ccomplete#Complete<\/span>\n<span class=\"ss\">&quot;\u65e0\u9700closetag\u63d2\u4ef6\uff0c\u4e00\u884c\u4ee3\u7801\u5b8c\u6210html\/xml\u7684\u95ed\u5408tag\u81ea\u52a8\u8865\u5168<\/span>\n<span class=\"ss\">autocmd BufNewFile,BufRead *.html,*.htm,*.xml inoremap &lt;\/ &lt;\/&lt;c-x&gt;&lt;c-o&gt;<\/span>\n\n\n\n<span class=\"ss\">&quot;<\/span><span class=\"n\">\u8ba9\u6ce8\u91ca\u7b26\u4e0e\u8bed\u53e5\u4e4b\u95f4\u7559\u4e00\u4e2a\u7a7a\u683c<\/span>\n<span class=\"n\">let<\/span><span class=\"w\"> <\/span><span class=\"n\">NERDSpaceDelims<\/span><span class=\"o\">=<\/span><span class=\"mi\">1<\/span>\n<span class=\"ss\">&quot;\u591a\u884c\u6ce8\u91ca\u65f6\u6837\u5b50\u66f4\u597d\u770b<\/span>\n<span class=\"ss\">let NERDCompactSexyComs=1<\/span>\n\n\n<span class=\"ss\">set nobomb<\/span>\n<span class=\"ss\">set fileformats=unix<\/span>\n<span class=\"ss\">set pastetoggle=&lt;F9&gt;<\/span>\n<span class=\"ss\">set backspace=2                                 &quot;<\/span><span class=\"n\">\u8bbe\u7f6e\u9000\u683c\u952e\u53ef\u7528<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">shiftwidth<\/span><span class=\"o\">=<\/span><span class=\"mi\">4<\/span><span class=\"w\">                                <\/span><span class=\"ss\">&quot;\u6362\u884c\u65f6\u884c\u95f4\u4ea4\u9519\u4f7f\u75284\u4e2a\u7a7a\u683c<\/span>\n<span class=\"ss\">set noexpandtab                                 &quot;<\/span><span class=\"n\">\u4e0d\u8981\u7528\u7a7a\u683c\u4ee3\u66ff\u5236\u8868\u7b26<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">cursorline<\/span><span class=\"w\">                                  <\/span><span class=\"ss\">&quot;\u7a81\u51fa\u663e\u793a\u5f53\u524d\u884c<\/span>\n<span class=\"ss\">set number                                      &quot;<\/span><span class=\"n\">\u663e\u793a\u884c\u53f7<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">showmode<\/span>\n<span class=\"ss\">&quot;set nocompatible                               &quot;<\/span><span class=\"n\">\u5173\u95ed\u6a21\u5f0f<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">magic<\/span><span class=\"w\">                                       <\/span><span class=\"ss\">&quot;\u8bbe\u7f6e\u9b54\u672f<\/span>\n<span class=\"ss\">set ruler                                       &quot;<\/span><span class=\"n\">\u53f3\u4e0b\u89d2\u663e\u793a\u5149\u6807\u4f4d\u7f6e\u7684\u72b6\u6001\u884c<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">autoindent<\/span><span class=\"w\">                                  <\/span><span class=\"ss\">&quot;\u8bbe\u7f6e\u81ea\u52a8\u7f29\u8fdb\u5bf9\u9f50<\/span>\n<span class=\"ss\">set smartindent                                 &quot;<\/span><span class=\"n\">\u667a\u80fd\u81ea\u52a8\u7f29\u8fdb<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">cindent<\/span><span class=\"w\">                                     <\/span><span class=\"ss\">&quot;C\u98ce\u683c\u7f29\u8fdb<\/span>\n<span class=\"ss\">set laststatus=2                                &quot;<\/span><span class=\"n\">\u603b\u662f\u663e\u793a\u72b6\u6001\u884c<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">ignorecase<\/span><span class=\"w\">                                  <\/span><span class=\"ss\">&quot;\u5728\u641c\u7d22\u65f6\u5ffd\u7565\u5927\u5c0f\u5199<\/span>\n<span class=\"ss\">set incsearch                                   &quot;<\/span><span class=\"n\">\u5b9e\u65f6\u641c\u7d22<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">hlsearch<\/span><span class=\"w\">                                    <\/span><span class=\"ss\">&quot;\u9ad8\u4eae\u641c\u7d22\u7ed3\u679c<\/span>\n<span class=\"ss\">set noignorecase                                &quot;<\/span><span class=\"n\">\u4e0d\u533a\u5206\u5927\u5c0f\u5199<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">completeopt<\/span><span class=\"o\">=<\/span><span class=\"n\">longest<\/span><span class=\"p\">,<\/span><span class=\"n\">menu<\/span><span class=\"w\">                    <\/span><span class=\"ss\">&quot;\u667a\u80fd\u8865\u5168<\/span>\n<span class=\"ss\">&quot;<\/span><span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">list<\/span><span class=\"w\">                                       <\/span><span class=\"ss\">&quot;\u663e\u793atab\u7b26\uff0c\u4f7f\u7528\u4e00\u9ad8\u4eae\u7ad6\u7ebf\u4ee3\u66ff<\/span>\n<span class=\"ss\">set noundofile                                  &quot;<\/span><span class=\"n\">\u8bbe\u7f6e\u65e0\u5907\u4efd<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">nobackup<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">noswapfile<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">showmatch<\/span><span class=\"w\">                                   <\/span><span class=\"ss\">&quot;\u8bbe\u7f6e\u5339\u914d\u6a21\u5f0f\uff0c\u5982\u62ec\u53f7\u7b49<\/span>\n<span class=\"ss\">set autochdir                                   &quot;<\/span><span class=\"n\">\u81ea\u52a8\u5207\u6362\u5f53\u524d\u76ee\u5f55\u4e3a\u5f53\u524d\u6587\u4ef6\u6240\u5728\u7684\u76ee\u5f55<\/span>\n<span class=\"n\">syntax<\/span><span class=\"w\"> <\/span><span class=\"n\">enable<\/span><span class=\"w\">                                   <\/span><span class=\"ss\">&quot;\u6253\u5f00\u8bed\u6cd5\u9ad8\u4eae <\/span>\n<span class=\"ss\">syntax on                                       &quot;<\/span><span class=\"n\">\u5f00\u542f\u6587\u4ef6\u7c7b\u578b\u4fa6\u6d4b<\/span>\n<span class=\"k\">set<\/span><span class=\"w\"> <\/span><span class=\"n\">showcmd<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}},{"@attributes":{"term":"centos7"}}]},{"title":"2015\u5e74\u535a\u5ba2\u5347\u7ea7\u8bb0","link":{"@attributes":{"href":"https:\/\/typecodes.com\/mix\/2015updateblog.html","rel":"alternate"}},"published":"2015-05-23T17:25:00+08:00","updated":"2015-05-23T17:25:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-05-23:\/mix\/2015updateblog.html","summary":"<p>\u8fd9\u6bb5\u65f6\u95f4\u5bf9\u535a\u5ba2\u8fdb\u884c\u4e86\u4e00\u6b21\u5347\u7ea7\uff0c\u4e3b\u8981\u662f\u4ece\u535a\u5ba2\u7a0b\u5e8f\u6240\u5728\u7684\u7cfb\u7edf\u670d\u52a1\u5668\uff08CentOS\uff09\u548cWEB\u73af\u5883\uff08LNMP\uff09\u5165\u624b\u3002\u76ee\u524d\u81ea\u5df1\u7684Linux\u670d\u52a1\u5668\u5df2\u7ecf\u5347\u7ea7\u5230CentOS7.1\uff0c\u540c\u65f6LNMP\u73af\u5883\u4e5f\u5347\u7ea7\u5230\u4e86\u6700\u65b0\u7684\u7248\u672c\u3002\u4e0b\u9762\u662f\u6574\u4e2a\u5347\u7ea7\u8fc7\u7a0b\u7684\u8be6\u7ec6\u6574\u7406\uff0c\u8bb0\u5f55\u4e00\u4e0b\u65b9\u4fbf\u4ee5\u540e\u67e5\u770b\u3002<\/p>\n<p><img alt=\"2015\u535a\u5ba2\u5347\u7ea7\u8bb0\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/updatemyblog.png\" title=\"2015\u535a\u5ba2\u5347\u7ea7\u8bb0\"><\/p>\n","content":"<p>\u8fd9\u6bb5\u65f6\u95f4\u5bf9\u535a\u5ba2\u8fdb\u884c\u4e86\u4e00\u6b21\u5347\u7ea7\uff0c\u4e3b\u8981\u662f\u4ece\u535a\u5ba2\u7a0b\u5e8f\u6240\u5728\u7684\u7cfb\u7edf\u670d\u52a1\u5668\uff08CentOS\uff09\u548cWEB\u73af\u5883\uff08LNMP\uff09\u5165\u624b\u3002\u76ee\u524d\u81ea\u5df1\u7684Linux\u670d\u52a1\u5668\u5df2\u7ecf\u5347\u7ea7\u5230CentOS7.1\uff0c\u540c\u65f6LNMP\u73af\u5883\u4e5f\u5347\u7ea7\u5230\u4e86\u6700\u65b0\u7684\u7248\u672c\u3002\u4e0b\u9762\u662f\u6574\u4e2a\u5347\u7ea7\u8fc7\u7a0b\u7684\u8be6\u7ec6\u6574\u7406\uff0c\u8bb0\u5f55\u4e00\u4e0b\u65b9\u4fbf\u4ee5\u540e\u67e5\u770b\u3002<\/p>\n<p><img alt=\"2015\u535a\u5ba2\u5347\u7ea7\u8bb0\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/updatemyblog.png\" title=\"2015\u535a\u5ba2\u5347\u7ea7\u8bb0\"><\/p>\n\n\n<h5>1\u3001\u5347\u7ea7\u7cfb\u7edf\u670d\u52a1\u5668\uff08CentOS\uff09<\/h5>\n<p>2012\u5e74\u7684\u65f6\u5019\uff0c\u535a\u5ba2\u5f53\u65f6\u4f7f\u7528\u7684\u57df\u540d\u662fhuangkeye.com\uff0c\u6258\u7ba1\u5728\u4e00\u670b\u53cb<a href=\"http:\/\/www.baijianyu.com\/\">@\u5305\u5b50<\/a>\u7684\u56fd\u5916\u865a\u62df\u7a7a\u95f4\u4e0a\u3002\u540e\u6765\u57282013\u5e74\u7684\u65f6\u5019\uff0c\u7531\u4e8e\u65b0\u7f51\u57df\u540d\u7eed\u8d39\u592a\u8d35\uff0c\u6240\u4ee5\u5f03\u7528\u5e76\u91cd\u65b0\u7533\u8bf7\u4e86huangkeye.cn\u7684\u57df\u540d\uff0c\u5e76\u5c06\u535a\u5ba2\u5907\u6848\u6258\u7ba1\u5230\u4e86\u56fd\u5185\u7684\u865a\u62df\u4e3b\u673a\u4e0a\u3002\u865a\u62df\u4e3b\u673a\u90fd\u6709\u4e24\u4e2a\u5f0a\u7aef\uff1a\u9996\u5148\u662f\u4e00\u53f0\u4e3b\u673a\u5bf9\u5e94\u4e00\u4e2aIP\u5730\u5740\uff0c\u7136\u540e\u4e24\u4e09\u767e\u4e2a\u57df\u540d\u90fd\u4f1a\u89e3\u6790\u5230\u8fd9\u53f0\u670d\u52a1\u5668\u4e0a\uff1b\u5176\u6b21\uff0c\u865a\u62df\u4e3b\u673a\u7684\u6027\u80fd\u3001\u5e26\u5bbd\u3001\u5b89\u5168\u7b49\u90fd\u4f1a\u53d7\u5230\u8fd9\u53f0\u4e3b\u673a\u4e0a\u5176\u5b83<code>\u90bb\u5c45<\/code>\uff08\u5373\u865a\u62df\u4e3b\u673a\uff09\u7684\u5f71\u54cd\u3002\u4e8e\u662f\u57282013\u5e747\u6708\u4efd\uff0c\u6211\u53c8\u91cd\u65b0\u8d2d\u4e70\u4e86\u73b0\u5728\u7528\u7684\u8fd9\u4e2a\u57df\u540d\u2014\u2014typecodes.com\uff0c\u5e76\u5c06huangkeye.cn\u505a301\u8df3\u8f6c\u5230\u8fd9\u4e2a\u57df\u540d\u4e0a\u6765\u3002\u540c\u65f6\u5c06\u535a\u5ba2\u6258\u7ba1\u5728\u963f\u91cc\u4e91\u670d\u52a1\u5668\u4e0a\u3002<\/p>\n<h6>1.1 \u5347\u7ea7\u7cfb\u7edf\u5185\u5b58<\/h6>\n<p>\u4e4b\u524d\u4e70\u7684\u963f\u91cc\u4e91\u4e3b\u673a\u662f\u5355\u6838\u3001512M\u5185\u5b58\uff0c\u73b0\u5728\u963f\u91cc\u4e91\u6df1\u5733\u5730\u57df\u7684\u4e3b\u673a\u6b63\u5728\u505a\u201c\u9650\u65f6\u4f18\u60e015%\u201d\u7684\u6d3b\u52a8\u3002\u770b\u4e86\u4e0b\u914d\u7f6e\u548c\u76f8\u5e94\u7684\u4ef7\u683c\uff0c\u4e8e\u662f\u5c06\u5185\u5b58\u5347\u7ea7\u5230\u4e861G\uff08\u5355\u6838\u5347\u7ea7\u5230\u53cc\u6838\u7684\u4ef7\u683c\u592a\u8d35\u4e86\uff0c\u6240\u4ee5\u5ffd\u7565\uff09\u3002<\/p>\n<h6>1.2 \u5347\u7ea7CentOS\u7cfb\u7edf<\/h6>\n<p>\u653e\u5f03CentOS6.5\u7cfb\u7edf\uff0c\u5e76\u5c06\u4e4b\u524d\u4f7f\u7528\u7684\u963f\u91cc\u4e91\u4e3b\u673aCentOS7.0\u5347\u7ea7\u4e3aCentOS7.1\u3002<\/p>\n<p>\u8be6\u7ec6\u64cd\u4f5c\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/linux\/centos7afteroperate.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e00)\uff1a\u5b89\u88c5CentOS7\u540e\u9700\u8981\u7684\u64cd\u4f5c\u300b<\/a>\u3002<\/p>\n<h6>1.3 \u8d2d\u4e70\u6570\u636e\u76d8\u5e76\u5212\u5206\u4ea4\u6362\u7a7a\u95f4<\/h6>\n<p>\u8fd9\u6b21\u5347\u7ea7\u8fd8\u4e70\u4e86\u4e00\u575724G\u5927\u5c0f\u7684\u6570\u636e\u76d8\uff0c\u5212\u5206\u4e864G\u5927\u5c0f\u4f5c\u4e3a\u7cfb\u7edf\u7684\u4ea4\u6362\u7a7a\u95f4\uff0c\u5269\u4f59\u768420G\u4f5c\u4e3a\u5907\u4efd\u4ed3\u5e93\u7528\u4e8e\u6570\u636e\u5e93\u3001\u7a0b\u5e8f\u7b49\u3002<\/p>\n<p>\u8be6\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/linux\/centos7fdiskmountswap.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e8c)\uff1aLinux\u7cfb\u7edf\u78c1\u76d8\u5206\u533a\u6302\u8f7d\u548c\u4ea4\u6362\u7a7a\u95f4\u300b<\/a>\u3002<\/p>\n<h5>2\u3001\u5347\u7ea7WEB\u73af\u5883\uff08LNMP\uff09<\/h5>\n<p>\u5728\u5347\u7ea7\u5b8cCentOS7.1\u7cfb\u7edf\u540e\uff0c\u5c31\u5f00\u59cb\u5347\u7ea7LNMP\u73af\u5883\u4e86\u3002\u4e4b\u524d\u535a\u5ba2\u91c7\u7528\u7684\u662f<a href=\"https:\/\/typecodes.com\/web\/aliyuncentos6creatlnmp.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 6.5\u642d\u5efaLNMP\u73af\u5883\uff08\u975e\u4e00\u952e\u811a\u672c\uff09\u300b<\/a>\u6587\u4e2d\u63d0\u5230\u7684yum\u65b9\u6cd5\u5b89\u88c5Nginx\u3001Mysql\u548cPHP\u3002\u9274\u4e8e\u8fd9\u79cd\u65b9\u6cd5\u5b89\u88c5\u7684\u7248\u672c\u90fd\u6bd4\u8f83\u4f4e\uff0c\u4e0d\u662f\u81ea\u5df1\u60f3\u8981\u7684\u7248\u672c\uff0c\u6240\u4ee5\u8fd9\u6b21\u5347\u7ea7\u91c7\u7528\u4e86\u6e90\u7801\u7f16\u8bd1\u7684\u65b9\u5f0f\u91cd\u65b0\u642d\u5efaLNMP\u73af\u5883\uff08Nginx1.9.0\u3001MySql5.7.7rc\u548cPHP7\uff09\u3002<\/p>\n<p><img alt=\"\u5347\u7ea7LNMP\u73af\u5883\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/blogupdatelnmp.png\" title=\"\u5347\u7ea7LNMP\u73af\u5883\"><\/p>\n<h6>2.1 \u5c06Nginx1.6\u5347\u7ea7\u5230\u6700\u65b0\u7684Nginx1.9.0\u7248\u672c<\/h6>\n<p>\u91c7\u7528Nginx1.9.0\u7248\u672c\uff0c\u5f00\u542f<code>stream module<\/code>\u6a21\u5757\u7528\u4e8eTCP\u4ee3\u7406\u548c\u8d1f\u8f7d\u5747\u8861\u3002<\/p>\n<p>\u8be6\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/web\/centos7compilenginx.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e09)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5Nginx1.9.0\u300b<\/a>\u3002<\/p>\n<h6>2.2 \u5c06MySql5.1\u5347\u7ea7\u5230\u6700\u65b0\u7684MySql5.7.7rc\u7248\u672c<\/h6>\n<p>\u5347\u7ea7\u5230MySQL\u5b98\u65b9\u6700\u65b0\u7684milestone\u7248\u672c\uff0c\u63d0\u5347\u6570\u636e\u5e93\u6027\u80fd\u3002<\/p>\n<p>\u8be6\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u56db)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySQL5.7.7rc\u300b<\/a>\u3002<\/p>\n<h6>2.3 \u5c06PHP5.3\u5347\u7ea7\u5230\u6700\u65b0\u7684PHP7\u7248\u672c<\/h6>\n<p>\u201c\u4e9a\u4e00\u7a0b\u201d\u9e1f\u54e5<a href=\"http:\/\/weibo.com\/laruence\">@Laruence<\/a>\u7684\u4f5c\u54c1\uff0c\u503c\u5f97\u63a8\u8350\u4f7f\u7528\uff01<\/p>\n<p>\u8be6\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/web\/centos7compilephp7.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e94)\uff1aCentOS 7.1\u7f16\u8bd1\u5b89\u88c5PHP7\u300b<\/a>\u3002<\/p>\n<h6>2.4 \u914d\u7f6eSSL\u548cSPDY\uff0c\u5168\u7ad9\u4f7f\u7528https\u534f\u8bae\u8bbf\u95ee<\/h6>\n<p>\u535a\u5ba2\u4e4b\u524d\u91c7\u7528http\u534f\u8bae\u8bbf\u95ee\uff0c\u4e2d\u95f4\u4e00\u6bb5\u65f6\u95f4<a href=\"https:\/\/typecodes.com\/web\/lnmppositivessl.html\" title=\"\u300a\u963f\u91cc\u4e91CentOS 6.5\u7cfb\u7edfLNMP\u73af\u5883\u5b89\u88c5SSL\u8bc1\u4e66\u300b\">\u6362\u6210\u4e86https<\/a>\uff0c\u540e\u6765\u7531\u4e8e\u535a\u5ba2\u7684\u56fe\u7247\u7b49\u8d44\u6e90\u65e0\u6cd5\u4f7f\u7528https\u8bbf\u95ee\uff0c\u6240\u4ee5\u53c8<a href=\"https:\/\/typecodes.com\/web\/shutdownblogssl.html\" title=\"\u300a\u51b3\u5b9a\u5173\u95ed\u535a\u5ba2\u4f7f\u7528SSL\u8bc1\u4e66\u8bbf\u95ee\u300b\">\u5173\u95ed<\/a>\u4e86\u3002\u8fd9\u6b21\u5347\u7ea7\u8fd8\u662f\u51b3\u5b9a\u5c06\u5168\u7ad9\u91c7\u7528https\u534f\u8bae\u8bbf\u95ee\uff0c\u540c\u65f6\u5c06Nginx\u548cPHP\u7684TCP\u901a\u4fe1\u6539\u7528Google\u5f00\u53d1\u7684SPDY\u6280\u672f\uff08\u867d\u7136Google\u5f88\u53ef\u80fd\u4f7f\u7528\u65b0\u4e00\u4ee3\u7684http2\u6280\u672f\u53d6\u4ee3\uff09\u3002<\/p>\n<p>\u8be6\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/web\/centos7nginxhttpsspdy.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u516d)\uff1aNginx\u914d\u7f6eHTTPS\u548cSPDY\u5b9e\u6218\u300b<\/a>\u3002<\/p>\n<p><img alt=\"\u914d\u7f6eSSL\u548cSPDY\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/blogupdatehttpscfg.png\" title=\"\u914d\u7f6eSSL\u548cSPDY\"><\/p>\n<h6>2.5 MySql\u7684shell\u5b9a\u65f6\u5907\u4efd\u811a\u672c<\/h6>\n<p>\u6709\u4e8620G\u7684\u6570\u636e\u76d8\u4ed3\u5e93\uff0c\u5c31\u53ef\u4ee5\u5c06\u535a\u5ba2\u7684MySql\u6570\u636e\u5e93\u5b9a\u65f6\u5907\u4efd\u4e0b\u6765\u3002<\/p>\n<p>\u8be6\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/linux\/centos7mysqlregularbackup.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u4e03)\uff1aCentOS7\u5b9a\u65f6\u5907\u4efdMySql\u7684shell\u811a\u672c\u300b<\/a>\u3002<\/p>\n<h6>2.6 \u535a\u5ba2\u7a0b\u5e8f\u7684shell\u5b9a\u65f6\u5907\u4efd\u811a\u672c<\/h6>\n<p>\u6709\u4e8620G\u7684\u6570\u636e\u76d8\u4ed3\u5e93\uff0c\u5c31\u53ef\u4ee5\u5c06Typecho\u535a\u5ba2\u7684\u7a0b\u5e8f\u5b9a\u65f6\u5907\u4efd\u4e0b\u6765\u3002<\/p>\n<p>\u8be6\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/linux\/centos7blogregularbackup.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a2015\u535a\u5ba2\u5347\u7ea7\u8bb0(\u516b)\uff1aCentOS7\u5b9a\u65f6\u5907\u4efd\u535a\u5ba2\u7a0b\u5e8f\u7684shell\u811a\u672c\u300b<\/a>\u3002<\/p>\n<h5>3\u3001\u5176\u5b83<\/h5>\n<p>\u5728\u7f16\u8bd1\u5b89\u88c5MySql5.7.7rc\u4e4b\u524d\uff0c\u8fd8\u6298\u817e\u8fc7MySql\u5176\u5b83\u7248\u672c\uff0c\u5728\u8fd9\u91cc\u4e00\u5e76\u8bb0\u5f55\u5206\u4eab\u4e0b\u3002<\/p>\n<p><img alt=\"\u5347\u7ea7MySql5.7\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/blogupdatemysql.png\" title=\"\u5347\u7ea7MySql5.7\"><\/p>\n<h6>3.1 CentOS7\u7f16\u8bd1\u5b89\u88c5MySql5.6.24<\/h6>\n<p>\u4f5c\u4e3aMySql\u5b98\u65b9Generally Available (GA) Releases\u7248\u672c\u2014\u2014MySql5.6.24\u5728tar\u5305\u6e90\u7801\u7f16\u8bd1\u5b89\u88c5\u540e\uff0c\u53ea\u8981root\u7528\u6237\u4f7f\u7528\u547d\u4ee4<code>mysql -uroot -p<\/code>\u767b\u9646\uff0c\u5c31\u4f1a\u51fa\u73b0<code>Segmentation fault<\/code>\u7684BUG\u3002<\/p>\n<p>\u5177\u4f53\u89e3\u51b3\u65b9\u6cd5\uff0c\u8be6\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/web\/centos7compilemysql5.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 7.1\u7f16\u8bd1\u5b89\u88c5MySql5.6.24\u300b<\/a>\u3002<\/p>\n<h6>3.2 CentOS7\u91c7\u7528yum\u65b9\u6cd5\u5b89\u88c5MySql5.6.24<\/h6>\n<p>\u5230Mysql\u5b98\u65b9\u4e0b\u8f7d\u793e\u533a\u7248Mysql\u7684rpm\u5305\uff0c\u7136\u540e\u4f7f\u7528yum\u65b9\u6cd5\u5b89\u88c5\u3002<\/p>\n<p>\u8be6\u7ec6\u64cd\u4f5c\uff0c\u89c1\u6587\u7ae0\uff1a<a href=\"https:\/\/typecodes.com\/web\/centos7yuminstallmysql5.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300a\u963f\u91cc\u4e91CentOS 7.1\u4f7f\u7528yum\u5b89\u88c5MySql5.6.24\u300b<\/a>\u3002<\/p>","category":[{"@attributes":{"term":"mix"}},{"@attributes":{"term":"\u535a\u5ba2\u6210\u957f\u5f55"}}]},{"title":"\u518d\u8baeC\u8bed\u8a00\u5c06\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570","link":{"@attributes":{"href":"https:\/\/typecodes.com\/cseries\/againchexstrtointeger.html","rel":"alternate"}},"published":"2015-05-14T19:55:00+08:00","updated":"2015-05-14T19:55:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-05-14:\/cseries\/againchexstrtointeger.html","summary":"<p>\u524d\u6587<a href=\"https:\/\/typecodes.com\/cseries\/clanghexstrtointeger.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aC\u8bed\u8a00\u5c06\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\u300b<\/a>\u8bb2\u8ff0\u4e86\u5c06\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4e2d\u5355\u4e2a\u5b57\u7b26\u5206\u522b\u4ece\u9ad8\u4f4d\u5230\u4f4e\u4f4d\u6b63\u5e8f\u548c\u4ece\u4f4e\u4f4d\u5230\u9ad8\u4f4d\u9006\u5e8f\u8f6c\u6362\u6210\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6570\uff0c\u4eca\u5929\u5728\u770b\u539f\u6587\u7684\u7a0b\u5e8f\u53d1\u73b0\u4e00\u4e2a\u4e0d\u597d\u7684\u5730\u65b9\uff1a\u7531\u4e8e\u4f7f\u7528\u4e86<code>char * p = HexStr;<\/code>\uff0c\u4e5f\u5c31\u662f\u76f4\u63a5\u4f7f\u7528\u6307\u9488p\u5c06\u8fd9\u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8fdb\u884c\u4e86\u8bfb\u53d6\u548c<code>\u6539\u5199<\/code>\u3002\u8fd9\u6837\u4f1a\u9020\u6210\u5728\u8c03\u7528\u4e86<code>HexStr2Integer<\/code>\u8f6c\u6362\u51fd\u6570\u540e\uff0c\u5c31\u4e0d\u80fd\u518d\u6b21\u4f7f\u7528\u8fd9\u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4e86\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u5728\u8f6c\u6362\u8fc7\u7a0b\u4e2d\uff0c\u53ef\u4ee5\u8003\u8651\u5c06\u539f\u6765\u7684\u8fd9\u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u5728\u5185\u5b58\u4e2d\u590d\u5236\u4e00\u4efd\uff0c\u7136\u540e\u518d\u5bf9\u8fd9\u4e2a\u590d\u5236\u7684<code>\u526f\u672c<\/code>\u8fdb\u884c\u8bfb\u5199\uff0c\u8fd9\u6837\u5c31\u4ea7\u751f\u526f\u4f5c\u7528\u4e86\u3002\u4e0b\u9762\u662f\u6839\u636e\u539f\u6765\u7684\u4e24\u4e2a\u7a0b\u5e8f\u6539\u8fdb\u7684\u7684\u4ee3\u7801\uff0c\u4e3b\u8981\u901a\u8fc7<code>malloc<\/code>\u51fd\u6570\u5f00\u8f9f\u4e00\u4e2a\u5185\u5b58\u7a7a\u95f4\uff0c\u7136\u540e\u590d\u5236\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4e2d\u7684\u6570\u636e\u5230\u8fd9\u4e2a\u5185\u5b58\u7a7a\u95f4\u4e2d\uff0c\u6700\u540e\u5bf9\u5b83\u8fdb\u884c\u201c\u8bfb\u5199\u201d\u3002<\/p>\n<p>\u5728\u4e0b\u9762\u8fd9\u4e24\u4e2a\u6539\u8fdb\u7684\u4ee3\u7801\u4e2d\uff0c\u8fd8\u8003\u8651\u5230\u4e86\u8fd9\u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4ee5<code>0x<\/code>\u5f00\u5934\u7684\u5f62\u5f0f\u51fa\u73b0\uff0c\u6240\u4ee5\u589e\u52a0\u4e86\u8fd9\u79cd\u60c5\u51b5\u7684\u5904\u7406\u3002<\/p>\n","content":"<p>\u524d\u6587<a href=\"https:\/\/typecodes.com\/cseries\/clanghexstrtointeger.html\" title=\"\u67e5\u770b\u539f\u6587\">\u300aC\u8bed\u8a00\u5c06\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\u300b<\/a>\u8bb2\u8ff0\u4e86\u5c06\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4e2d\u5355\u4e2a\u5b57\u7b26\u5206\u522b\u4ece\u9ad8\u4f4d\u5230\u4f4e\u4f4d\u6b63\u5e8f\u548c\u4ece\u4f4e\u4f4d\u5230\u9ad8\u4f4d\u9006\u5e8f\u8f6c\u6362\u6210\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6570\uff0c\u4eca\u5929\u5728\u770b\u539f\u6587\u7684\u7a0b\u5e8f\u53d1\u73b0\u4e00\u4e2a\u4e0d\u597d\u7684\u5730\u65b9\uff1a\u7531\u4e8e\u4f7f\u7528\u4e86<code>char * p = HexStr;<\/code>\uff0c\u4e5f\u5c31\u662f\u76f4\u63a5\u4f7f\u7528\u6307\u9488p\u5c06\u8fd9\u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8fdb\u884c\u4e86\u8bfb\u53d6\u548c<code>\u6539\u5199<\/code>\u3002\u8fd9\u6837\u4f1a\u9020\u6210\u5728\u8c03\u7528\u4e86<code>HexStr2Integer<\/code>\u8f6c\u6362\u51fd\u6570\u540e\uff0c\u5c31\u4e0d\u80fd\u518d\u6b21\u4f7f\u7528\u8fd9\u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4e86\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u5728\u8f6c\u6362\u8fc7\u7a0b\u4e2d\uff0c\u53ef\u4ee5\u8003\u8651\u5c06\u539f\u6765\u7684\u8fd9\u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u5728\u5185\u5b58\u4e2d\u590d\u5236\u4e00\u4efd\uff0c\u7136\u540e\u518d\u5bf9\u8fd9\u4e2a\u590d\u5236\u7684<code>\u526f\u672c<\/code>\u8fdb\u884c\u8bfb\u5199\uff0c\u8fd9\u6837\u5c31\u4ea7\u751f\u526f\u4f5c\u7528\u4e86\u3002\u4e0b\u9762\u662f\u6839\u636e\u539f\u6765\u7684\u4e24\u4e2a\u7a0b\u5e8f\u6539\u8fdb\u7684\u7684\u4ee3\u7801\uff0c\u4e3b\u8981\u901a\u8fc7<code>malloc<\/code>\u51fd\u6570\u5f00\u8f9f\u4e00\u4e2a\u5185\u5b58\u7a7a\u95f4\uff0c\u7136\u540e\u590d\u5236\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4e2d\u7684\u6570\u636e\u5230\u8fd9\u4e2a\u5185\u5b58\u7a7a\u95f4\u4e2d\uff0c\u6700\u540e\u5bf9\u5b83\u8fdb\u884c\u201c\u8bfb\u5199\u201d\u3002<\/p>\n<p>\u5728\u4e0b\u9762\u8fd9\u4e24\u4e2a\u6539\u8fdb\u7684\u4ee3\u7801\u4e2d\uff0c\u8fd8\u8003\u8651\u5230\u4e86\u8fd9\u4e2a\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u4ee5<code>0x<\/code>\u5f00\u5934\u7684\u5f62\u5f0f\u51fa\u73b0\uff0c\u6240\u4ee5\u589e\u52a0\u4e86\u8fd9\u79cd\u60c5\u51b5\u7684\u5904\u7406\u3002<\/p>\n\n\n<h5>1 \u4ece\u9ad8\u4f4d\u5230\u4f4e\u4f4d\u5355\u4e2a\u5b57\u7b26\u8f6c\u6362<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span>\n<span class=\"normal\">73<\/span>\n<span class=\"normal\">74<\/span>\n<span class=\"normal\">75<\/span>\n<span class=\"normal\">76<\/span>\n<span class=\"normal\">77<\/span>\n<span class=\"normal\">78<\/span>\n<span class=\"normal\">79<\/span>\n<span class=\"normal\">80<\/span>\n<span class=\"normal\">81<\/span>\n<span class=\"normal\">82<\/span>\n<span class=\"normal\">83<\/span>\n<span class=\"normal\">84<\/span>\n<span class=\"normal\">85<\/span>\n<span class=\"normal\">86<\/span>\n<span class=\"normal\">87<\/span>\n<span class=\"normal\">88<\/span>\n<span class=\"normal\">89<\/span>\n<span class=\"normal\">90<\/span>\n<span class=\"normal\">91<\/span>\n<span class=\"normal\">92<\/span>\n<span class=\"normal\">93<\/span>\n<span class=\"normal\">94<\/span>\n<span class=\"normal\">95<\/span>\n<span class=\"normal\">96<\/span>\n<span class=\"normal\">97<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;malloc.h&gt;<\/span>\n\n<span class=\"cm\">\/** <\/span>\n<span class=\"cm\"> * @FileName  HexStr2Integer.c<\/span>\n<span class=\"cm\"> * @author    vfhky 2015.05.14 https:\/\/typecodes.com\/cseries\/againchexstrtointeger.html<\/span>\n<span class=\"cm\"> * @param     [in]HexStr \u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff08\u4f8b\u5982&quot;eE2&quot;\u3001&quot;Fa1&quot;\u3001&quot;2011&quot;\u3001&quot;-eE2&quot;\u3001&quot;+eE2&quot;\u7b49\uff09 <\/span>\n<span class=\"cm\"> * @return    -1:\u5b57\u7b26\u4e32\u4e3a\u7a7a; -2:\u5206\u914d\u5185\u5b58\u51fa\u9519; -3:\u5b57\u7b26\u4e32\u4e2d\u5305\u542b\u975e\u5341\u516d\u8fdb\u5236\u7684\u5b57\u7b26; \u5176\u5b83:\u8f6c\u6362\u540e\u7684\u5341\u8fdb\u5236\u6574\u6570<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">HexStr2Integer<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iResult<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iCycle<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">iCycle<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6b63\u8d1f\u6570\u7684\u6807\u8bc6\uff0c1\u6b63 -1\u8d1f<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u83b7\u53d6\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u7684\u957f\u5ea6<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5224\u65ad\u5b57\u7b26\u4e32\u662f\u5426\u5408\u6cd5<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;+&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">        <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x78<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u590d\u5236\u4e00\u4efd\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32HexStr\u5230\u5185\u5b58\u7a7a\u95f4<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">malloc<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"kt\">char<\/span><span class=\"p\">)<\/span><span class=\"o\">*<\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memcpy<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8bbe\u7f6e\u4e34\u65f6\u6307\u9488p<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u957f\u5ea6\u53bb\u6389\u6b63\u8d1f\u53f7\uff0c\u5e76\u8bbe\u7f6e\u5b57\u7b26\u6570\u7684\u6807\u8bc6<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;+&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">--<\/span><span class=\"n\">iHexStrLen<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">++<\/span><span class=\"n\">p<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u957f\u5ea6\u53bb\u6389&quot;0x&quot;\u5f00\u5934\u7684\u5341\u516d\u8fdb\u5236\u6807\u8bc6\u7b26<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">p<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x78<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">-=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5faa\u73af\u5c06\u6bcf\u4e2a\u5341\u516d\u8fdb\u5236\u7684\u5b57\u7b26\u8f6c\u6362\u6210\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6574\u6570\uff0c\u51fa\u73b0\u975e\u6cd5\u5b57\u7b26\u5219\u76f4\u63a5\u8fd4\u56de<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iCycle<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">48<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">57<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-=<\/span><span class=\"w\"> <\/span><span class=\"mi\">48<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">65<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">70<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-=<\/span><span class=\"w\"> <\/span><span class=\"mi\">65<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">97<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">102<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-=<\/span><span class=\"w\"> <\/span><span class=\"mi\">97<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">free<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-3<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"c1\">\/\/iResult = *p + iResult*16; \u7ecf\u8fc7 @\u5927\u81f4 \u7684\u63d0\u9192\uff0c\u4f7f\u7528\u79fb\u4f4d\u8fd0\u7b97<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"n\">iResult<\/span><span class=\"o\">&lt;&lt;<\/span><span class=\"mi\">4<\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">++<\/span><span class=\"n\">iCycle<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">++<\/span><span class=\"n\">p<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u91ca\u653e\u5185\u5b58<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">free<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8fd4\u56de\u8f6c\u6362\u540e\u7684\u6574\u6570<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">iFlag<\/span><span class=\"o\">*<\/span><span class=\"n\">iResult<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"p\">[<\/span><span class=\"mi\">200<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">cHexString<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Please input a HexString with length less than 200:<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">scanf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;%s&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;----&gt;[%d]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr2Integer<\/span><span class=\"p\">(<\/span><span class=\"n\">cHexString<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u7528GCC\u7f16\u8bd1(<code>gcc HexStr2Integer.c -o HexStr2Integer<\/code>)\u6d4b\u8bd5\u7a0b\u5e8f\u5e76\u6267\u884c\uff0c\u7ed3\u679c\u5c06\u4e09\u4e2a\u6d4b\u8bd5\u7528\u7684\u5341\u516d\u8fdb\u5236\u7684\u5b57\u7b26\u4e32\"eE2\"\u3001\"Fa1\"\u3001\"2011\"\u3001\"-eE2\"\u3001\"+eE2\"\u5206\u522b\u8f6c\u6362\u6210\u4e86\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6574\u6570\uff1a3810\u30014001\u30018209\u3001-3810\u30013810\u3002<\/p>\n<p><img alt=\"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/clanghexstrtointeger.png\" title=\"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\"><\/p>\n<h5>2 \u4ece\u4f4e\u4f4d\u5230\u9ad8\u4f4d\u5355\u4e2a\u5b57\u7b26\u8f6c\u6362<\/h5>\n<div class=\"highlight\"><table class=\"highlighttable\"><tr><td class=\"linenos\"><div class=\"linenodiv\"><pre><span class=\"normal\"> 1<\/span>\n<span class=\"normal\"> 2<\/span>\n<span class=\"normal\"> 3<\/span>\n<span class=\"normal\"> 4<\/span>\n<span class=\"normal\"> 5<\/span>\n<span class=\"normal\"> 6<\/span>\n<span class=\"normal\"> 7<\/span>\n<span class=\"normal\"> 8<\/span>\n<span class=\"normal\"> 9<\/span>\n<span class=\"normal\">10<\/span>\n<span class=\"normal\">11<\/span>\n<span class=\"normal\">12<\/span>\n<span class=\"normal\">13<\/span>\n<span class=\"normal\">14<\/span>\n<span class=\"normal\">15<\/span>\n<span class=\"normal\">16<\/span>\n<span class=\"normal\">17<\/span>\n<span class=\"normal\">18<\/span>\n<span class=\"normal\">19<\/span>\n<span class=\"normal\">20<\/span>\n<span class=\"normal\">21<\/span>\n<span class=\"normal\">22<\/span>\n<span class=\"normal\">23<\/span>\n<span class=\"normal\">24<\/span>\n<span class=\"normal\">25<\/span>\n<span class=\"normal\">26<\/span>\n<span class=\"normal\">27<\/span>\n<span class=\"normal\">28<\/span>\n<span class=\"normal\">29<\/span>\n<span class=\"normal\">30<\/span>\n<span class=\"normal\">31<\/span>\n<span class=\"normal\">32<\/span>\n<span class=\"normal\">33<\/span>\n<span class=\"normal\">34<\/span>\n<span class=\"normal\">35<\/span>\n<span class=\"normal\">36<\/span>\n<span class=\"normal\">37<\/span>\n<span class=\"normal\">38<\/span>\n<span class=\"normal\">39<\/span>\n<span class=\"normal\">40<\/span>\n<span class=\"normal\">41<\/span>\n<span class=\"normal\">42<\/span>\n<span class=\"normal\">43<\/span>\n<span class=\"normal\">44<\/span>\n<span class=\"normal\">45<\/span>\n<span class=\"normal\">46<\/span>\n<span class=\"normal\">47<\/span>\n<span class=\"normal\">48<\/span>\n<span class=\"normal\">49<\/span>\n<span class=\"normal\">50<\/span>\n<span class=\"normal\">51<\/span>\n<span class=\"normal\">52<\/span>\n<span class=\"normal\">53<\/span>\n<span class=\"normal\">54<\/span>\n<span class=\"normal\">55<\/span>\n<span class=\"normal\">56<\/span>\n<span class=\"normal\">57<\/span>\n<span class=\"normal\">58<\/span>\n<span class=\"normal\">59<\/span>\n<span class=\"normal\">60<\/span>\n<span class=\"normal\">61<\/span>\n<span class=\"normal\">62<\/span>\n<span class=\"normal\">63<\/span>\n<span class=\"normal\">64<\/span>\n<span class=\"normal\">65<\/span>\n<span class=\"normal\">66<\/span>\n<span class=\"normal\">67<\/span>\n<span class=\"normal\">68<\/span>\n<span class=\"normal\">69<\/span>\n<span class=\"normal\">70<\/span>\n<span class=\"normal\">71<\/span>\n<span class=\"normal\">72<\/span>\n<span class=\"normal\">73<\/span>\n<span class=\"normal\">74<\/span>\n<span class=\"normal\">75<\/span>\n<span class=\"normal\">76<\/span>\n<span class=\"normal\">77<\/span>\n<span class=\"normal\">78<\/span>\n<span class=\"normal\">79<\/span>\n<span class=\"normal\">80<\/span>\n<span class=\"normal\">81<\/span>\n<span class=\"normal\">82<\/span>\n<span class=\"normal\">83<\/span>\n<span class=\"normal\">84<\/span>\n<span class=\"normal\">85<\/span>\n<span class=\"normal\">86<\/span>\n<span class=\"normal\">87<\/span>\n<span class=\"normal\">88<\/span>\n<span class=\"normal\">89<\/span>\n<span class=\"normal\">90<\/span>\n<span class=\"normal\">91<\/span>\n<span class=\"normal\">92<\/span>\n<span class=\"normal\">93<\/span>\n<span class=\"normal\">94<\/span>\n<span class=\"normal\">95<\/span>\n<span class=\"normal\">96<\/span>\n<span class=\"normal\">97<\/span>\n<span class=\"normal\">98<\/span><\/pre><\/div><\/td><td class=\"code\"><div><pre><span><\/span><code><span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;stdio.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;string.h&gt;<\/span>\n<span class=\"cp\">#include<\/span><span class=\"w\"> <\/span><span class=\"cpf\">&lt;malloc.h&gt;<\/span>\n\n<span class=\"cm\">\/**<\/span>\n<span class=\"cm\"> * @FileName  HexStr2Integer2.c<\/span>\n<span class=\"cm\"> * @author    vfhky 2015.05.14 https:\/\/typecodes.com\/cseries\/againchexstrtointeger.html<\/span>\n<span class=\"cm\"> * @param     [in]    HexStr \u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\uff08\u4f8b\u5982&quot;eE2&quot;\u3001&quot;Fa1&quot;\u3001&quot;2011&quot;\u3001&quot;-eE2&quot;\u3001&quot;+eE2&quot;\u7b49\uff09<\/span>\n<span class=\"cm\"> * @return    -1:\u5b57\u7b26\u4e32\u4e3a\u7a7a; -2:\u5206\u914d\u5185\u5b58\u51fa\u9519; -3:\u5b57\u7b26\u4e32\u4e2d\u5305\u542b\u975e\u5341\u516d\u8fdb\u5236\u7684\u5b57\u7b26; \u5176\u5b83:\u8f6c\u6362\u540e\u7684\u5341\u8fdb\u5236\u6574\u6570<\/span>\n<span class=\"cm\"> *\/<\/span>\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">HexStr2Integer<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iResult<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iCycle<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">iCycle<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u6b63\u8d1f\u6570\u7684\u6807\u8bc6\uff0c1\u6b63 -1\u8d1f<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">iFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u83b7\u53d6\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u7684\u957f\u5ea6<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">strlen<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5224\u65ad\u5b57\u7b26\u4e32\u662f\u5426\u5408\u6cd5<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;+&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span>\n<span class=\"w\">        <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x78<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u590d\u5236\u4e00\u4efd\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32HexStr\u5230\u5185\u5b58\u7a7a\u95f4<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span><span class=\"n\">malloc<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"kt\">char<\/span><span class=\"p\">)<\/span><span class=\"o\">*<\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">+<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">memcpy<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8bbe\u7f6e\u4e34\u65f6\u6307\u9488p<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5c06\u6307\u5411\u8fd9\u5757\u5185\u5b58\u7a7a\u95f4\u7684\u672b\u5c3e<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u957f\u5ea6\u53bb\u6389\u6b63\u8d1f\u53f7\uff0c\u5e76\u8bbe\u7f6e\u5b57\u7b26\u6570\u7684\u6807\u8bc6<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;+&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">||<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">--<\/span><span class=\"n\">iHexStrLen<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"sc\">&#39;-&#39;<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">iFlag<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"mi\">-1<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u957f\u5ea6\u53bb\u6389&quot;0x&quot;\u5f00\u5934\u7684\u5341\u516d\u8fdb\u5236\u6807\u8bc6\u7b26<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">HexStr<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x30<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"p\">(<\/span><span class=\"n\">HexStr<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">==<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x78<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">-=<\/span><span class=\"w\"> <\/span><span class=\"mi\">2<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u5faa\u73af\u5c06\u6bcf\u4e2a\u5341\u516d\u8fdb\u5236\u7684\u5b57\u7b26\u8f6c\u6362\u6210\u5bf9\u5e94\u7684\u5341\u8fdb\u5236\u6574\u6570<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">iHexStrLen<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">--<\/span><span class=\"n\">p<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">48<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">57<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-=<\/span><span class=\"w\"> <\/span><span class=\"mi\">48<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">65<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">70<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-=<\/span><span class=\"w\"> <\/span><span class=\"mi\">65<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span><span class=\"w\"> <\/span><span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&gt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">97<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"w\"> <\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">&lt;=<\/span><span class=\"w\"> <\/span><span class=\"mi\">102<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"w\">            <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"w\"> <\/span><span class=\"o\">-=<\/span><span class=\"w\"> <\/span><span class=\"mi\">97<\/span><span class=\"w\"> <\/span><span class=\"o\">-<\/span><span class=\"w\"> <\/span><span class=\"mi\">10<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"k\">else<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">free<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">            <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">            <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">-3<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">iResult<\/span><span class=\"w\"> <\/span><span class=\"o\">+=<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"n\">p<\/span><span class=\"o\">*<\/span><span class=\"n\">iCycle<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">iCycle<\/span><span class=\"w\"> <\/span><span class=\"o\">*=<\/span><span class=\"w\"> <\/span><span class=\"mi\">16<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">        <\/span><span class=\"o\">--<\/span><span class=\"n\">iHexStrLen<\/span><span class=\"p\">;<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u91ca\u653e\u5185\u5b58<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">free<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"n\">cHexStrPt<\/span><span class=\"w\"> <\/span><span class=\"o\">=<\/span><span class=\"w\"> <\/span><span class=\"nb\">NULL<\/span><span class=\"p\">;<\/span>\n\n<span class=\"w\">    <\/span><span class=\"c1\">\/\/\u8fd4\u56de\u8f6c\u6362\u540e\u7684\u6574\u6570<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"n\">iFlag<\/span><span class=\"o\">*<\/span><span class=\"n\">iResult<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"kt\">int<\/span><span class=\"w\"> <\/span><span class=\"n\">argc<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"o\">*<\/span><span class=\"w\"> <\/span><span class=\"n\">argv<\/span><span class=\"p\">[]<\/span><span class=\"w\"> <\/span><span class=\"p\">)<\/span>\n<span class=\"p\">{<\/span>\n<span class=\"w\">    <\/span><span class=\"kt\">char<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"p\">[<\/span><span class=\"mi\">200<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">];<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">while<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">{<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">memset<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"mh\">0x00<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"k\">sizeof<\/span><span class=\"p\">(<\/span><span class=\"n\">cHexString<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;Please input a HexString with length less than 200:<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">scanf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;%s&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">cHexString<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">        <\/span><span class=\"n\">printf<\/span><span class=\"p\">(<\/span><span class=\"w\"> <\/span><span class=\"s\">&quot;----&gt;[%d]<\/span><span class=\"se\">\\n<\/span><span class=\"s\">&quot;<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"n\">HexStr2Integer<\/span><span class=\"p\">(<\/span><span class=\"n\">cHexString<\/span><span class=\"p\">)<\/span><span class=\"w\"> <\/span><span class=\"p\">);<\/span>\n<span class=\"w\">    <\/span><span class=\"p\">}<\/span>\n<span class=\"w\">    <\/span><span class=\"k\">return<\/span><span class=\"w\"> <\/span><span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre><\/div><\/td><\/tr><\/table><\/div>\n\n<p>\u540c\u6837\u4f7f\u7528GCC\u7f16\u8bd1\u540e\uff0c\u8f93\u5165\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u6570\u636e\u8fdb\u884c\u6d4b\u8bd5\uff0c\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img alt=\"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\" src=\"https:\/\/cdn.typecodes.com\/2015\/05\/clanghexstrtointeger2.png\" title=\"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32\u8f6c\u6210\u5341\u8fdb\u5236\u6574\u6570\"><\/p>\n<p>\u6700\u540e\uff0c\u9700\u8981\u6ce8\u610f\u7684\u662f\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"n\">1\u3001\u4f7f\u7528<\/span><span class=\"n n-Quoted\">`malloc`<\/span><span class=\"n\">\u51fd\u6570\u5f00\u8f9f\u5185\u5b58\u65f6\uff0c\u9700\u8981\u5224\u65ad\u5f53\u524d\u64cd\u4f5c\u7cfb\u7edf\u662f\u5426\u80fd\u591f\u5206\u914d\u591a\u4f59\u7684\u7a7a\u95f4\uff1b<\/span>\n<span class=\"n\">2\u3001\u5728<\/span><span class=\"n n-Quoted\">`malloc`<\/span><span class=\"n\">\u51fd\u6570\u5f00\u8f9f\u5185\u5b58\u4f7f\u7528\u5b8c\u540e\uff0c\u4f7f\u7528<\/span><span class=\"n n-Quoted\">`free`<\/span><span class=\"n\">\u91ca\u653e\u6389\u8fd9\u5757\u5185\u5b58\u7684\u63a7\u5236\u6743\u3002<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"cseries"}},{"@attributes":{"term":"\u5341\u516d\u8fdb\u5236\u5b57\u7b26\u4e32"}},{"@attributes":{"term":"\u5341\u516d\u8fdb\u5236\u8f6c\u5341\u8fdb\u5236"}},{"@attributes":{"term":"\u5b57\u7b26\u4e32\u8f6c\u6362"}}]},{"title":"CentOS7\u7cfb\u7edf\u5982\u4f55\u4fee\u6539\u4e3b\u673a\u540d","link":{"@attributes":{"href":"https:\/\/typecodes.com\/linux\/centos7chghostname.html","rel":"alternate"}},"published":"2015-04-20T23:00:00+08:00","updated":"2015-04-20T23:00:00+08:00","author":{"name":"vfhky"},"id":"tag:typecodes.com,2015-04-20:\/linux\/centos7chghostname.html","summary":"<p>\u524d\u6bb5\u65f6\u95f4\u535a\u5ba2\u4e00\u76f4\u5904\u4e8e\u5173\u95ed\u72b6\u6001\uff0c\u4e3b\u8981\u662f\u505a\u4e86\u4e00\u4e9b\u5347\u7ea7\u3002\u4e4b\u524d\u535a\u4e3b\u7528\u7684\u662fCentOS6.5\u7cfb\u7edf\uff0c\u7136\u540e\u5347\u7ea7\u5230\u4e86\u5982\u4eca\u7684CentOS7\u7248\u672c\u3002\u53e6\u5916Nginx\u3001Mysql\u548cPHP\u90fd\u505a\u4e86\u76f8\u5e94\u7684\u7248\u672c\u5347\u7ea7\uff0c\u540e\u7eed\u6587\u7ae0\u4f1a\u7ed9\u5927\u5bb6\u5206\u4eab\u4e0b\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u8bb2\u8bb2CentOS7\u7cfb\u7edf\u5982\u4f55\u4fee\u6539\u4e3b\u673a\u540d\u3002<\/p>\n<p><img alt=\"CentOS7\u7cfb\u7edf\u5982\u4f55\u4fee\u6539\u4e3b\u673a\u540d\" src=\"https:\/\/cdn.typecodes.com\/2015\/04\/centos7chghostname.png\" title=\"CentOS7\u7cfb\u7edf\u5982\u4f55\u4fee\u6539\u4e3b\u673a\u540d\"><\/p>\n","content":"<p>\u524d\u6bb5\u65f6\u95f4\u535a\u5ba2\u4e00\u76f4\u5904\u4e8e\u5173\u95ed\u72b6\u6001\uff0c\u4e3b\u8981\u662f\u505a\u4e86\u4e00\u4e9b\u5347\u7ea7\u3002\u4e4b\u524d\u535a\u4e3b\u7528\u7684\u662fCentOS6.5\u7cfb\u7edf\uff0c\u7136\u540e\u5347\u7ea7\u5230\u4e86\u5982\u4eca\u7684CentOS7\u7248\u672c\u3002\u53e6\u5916Nginx\u3001Mysql\u548cPHP\u90fd\u505a\u4e86\u76f8\u5e94\u7684\u7248\u672c\u5347\u7ea7\uff0c\u540e\u7eed\u6587\u7ae0\u4f1a\u7ed9\u5927\u5bb6\u5206\u4eab\u4e0b\u3002\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u8bb2\u8bb2CentOS7\u7cfb\u7edf\u5982\u4f55\u4fee\u6539\u4e3b\u673a\u540d\u3002<\/p>\n<p><img alt=\"CentOS7\u7cfb\u7edf\u5982\u4f55\u4fee\u6539\u4e3b\u673a\u540d\" src=\"https:\/\/cdn.typecodes.com\/2015\/04\/centos7chghostname.png\" title=\"CentOS7\u7cfb\u7edf\u5982\u4f55\u4fee\u6539\u4e3b\u673a\u540d\"><\/p>\n\n\n<h5>1 CentOS7\u4ee5\u4e0b\u7684\u7248\u672c\u4fee\u6539\u4e3b\u673a\u540d\u7684\u65b9\u6cd5<\/h5>\n<p>CentOS7\u4ee5\u4e0b\u7684\u7cfb\u7edf\uff08\u5305\u62ecCentOS6~CentOS6.5\uff09\uff0c\u6211\u4eec\u901a\u8fc7\u4fee\u6539HOSTNAME\u7684\u65b9\u5f0f\u5373\u53ef\u5f97\u5230\u60f3\u8981\u7684\u6548\u679c\u3002\u5982\u4e0b\u6240\u793a\uff0c<code>AY140418191438674cce<\/code>\u662f\u535a\u4e3b\u7684\u963f\u91cc\u4e91\u4e3b\u673a\u5b9e\u4f8b\u540d\uff08\u4e5f\u5373\u4e3b\u673a\u540d\uff09\uff0c\u5c06\u5176\u4fee\u6539\u6210\u4e86<code>typecodes<\/code>\u3002<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">AY140418191438674cce<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">vim<\/span><span class=\"w\"> <\/span><span class=\"o\">\/<\/span><span class=\"nx\">etc<\/span><span class=\"o\">\/<\/span><span class=\"nx\">sysconfig<\/span><span class=\"o\">\/<\/span><span class=\"nx\">network<\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">1<\/span><span class=\"w\"> <\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">Created<\/span><span class=\"w\"> <\/span><span class=\"nx\">by<\/span><span class=\"w\"> <\/span><span class=\"nx\">anaconda<\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">2<\/span><span class=\"w\"> <\/span><span class=\"nx\">NETWORKING_IPV6<\/span><span class=\"p\">=<\/span><span class=\"nx\">no<\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">3<\/span><span class=\"w\"> <\/span><span class=\"nx\">PEERNTP<\/span><span class=\"p\">=<\/span><span class=\"nx\">no<\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">4<\/span><span class=\"w\"> <\/span><span class=\"nx\">GATEWAY<\/span><span class=\"p\">=<\/span><span class=\"m m-Double\">115.29.207.247<\/span>\n<span class=\"w\">  <\/span><span class=\"mi\">5<\/span><span class=\"w\"> <\/span><span class=\"nx\">HOSTNAME<\/span><span class=\"p\">=<\/span><span class=\"nx\">typecodes<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">AY140418191438674cce<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">hostname<\/span><span class=\"w\"> <\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>\n\n<h5>2 CentOS7\u4ee5\u53caCentOS7.1\u7248\u672c\u4fee\u6539\u4e3b\u673a\u540d\u7684\u65b9\u6cd5<\/h5>\n<p>\u76ee\u524dCentOS\u7684\u6700\u9ad8\u7248\u672c\u662fCentOS7.1\uff0c\u6709\u8f83\u591aCentOS6\u7cfb\u5217\u80fd\u4f7f\u7528\u7684\u547d\u4ee4\u90fd\u4e0d\u80fd\u4f7f\u7528\u6216\u8005\u505a\u4e86\u6709\u4e9b\u6539\u52a8\u3002\u4f8b\u5982\uff0c\u5728CentOS7\u6216\u8005CentOS7.1\u7cfb\u7edf\u4e2d\uff0c\u76f4\u63a5\u4f7f\u7528\u4e0a\u9762\u7684\u65b9\u6cd5\u4fee\u6539\u4e3b\u673a\u540d\uff0c\u6700\u540e\u90fd\u662f\u6ca1\u6709\u6548\u679c\u7684\u3002\u5b83\u5df2\u7ecf\u88ab\u7b80\u5316\u4e3a\u4e0b\u9762\u8fd9\u6761\u547d\u4ee4\uff1a<\/p>\n<div class=\"highlight\"><pre><span><\/span><code><span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">AY140418191438674cce<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span><span class=\"w\"> <\/span><span class=\"nx\">hostnamectl<\/span><span class=\"w\"> <\/span><span class=\"nx\">set<\/span><span class=\"o\">-<\/span><span class=\"nx\">hostname<\/span><span class=\"w\"> <\/span><span class=\"nx\">typecodes<\/span>\n<span class=\"p\">[<\/span><span class=\"nx\">root<\/span><span class=\"err\">@<\/span><span class=\"nx\">typecodes<\/span><span class=\"w\"> <\/span><span class=\"o\">~<\/span><span class=\"p\">]<\/span><span class=\"err\">#<\/span>\n<\/code><\/pre><\/div>","category":[{"@attributes":{"term":"linux"}},{"@attributes":{"term":"centos7"}},{"@attributes":{"term":"centos\u4e3b\u673a\u540d"}}]}]}