{"id":210,"date":"2026-05-13T11:53:11","date_gmt":"2026-05-13T03:53:11","guid":{"rendered":"https:\/\/junai.ai\/blog\/linux-logs-monitoring-24\/"},"modified":"2026-05-13T11:53:11","modified_gmt":"2026-05-13T03:53:11","slug":"linux-logs-monitoring-24","status":"publish","type":"post","link":"https:\/\/junai.ai\/blog\/linux-logs-monitoring-24\/","title":{"rendered":"\ub9ac\ub205\uc2a4 \ub85c\uadf8\u00b7\ubaa8\ub2c8\ud130\ub9c1 \u2014 journalctl\u00b7vmstat (24\ud3b8)"},"content":{"rendered":"\n<!-- WordPress REST API \ubc1c\ud589\uc6a9 HTML (\uc790\ub3d9 \uc0dd\uc131) -->\n<!-- WP-FEATURED-MEDIA-ID: 204 -->\n<div style=\"max-width:800px;margin:0 auto;\">\n<style>\n:root{\n  --color-primary:#1e40af;--color-accent:#3b82f6;--color-bg:#fafafa;--color-bg-card:#ffffff;\n  --color-text:#1e293b;--color-text-muted:#64748b;--hero-start:#0f172a;--hero-end:#1e40af;\n  --font-body:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;\n  --size-body:17px;--line-height:1.75;--h1-size:32px;--h2-size:27px;--h3-size:20px;\n}\n*{margin:0;padding:0;box-sizing:border-box;}\n.wrap{max-width:760px;margin:0 auto;padding:0 20px;}\n.hero{background:linear-gradient(135deg,var(--hero-start) 0%,var(--hero-end) 100%);color:#fff;padding:64px 0 56px;text-align:center;}\n.hero .eyebrow{display:inline-block;font-size:13px;letter-spacing:1px;text-transform:uppercase;color:#93c5fd;font-weight:700;margin-bottom:16px;}\n.hero h1{font-size:var(--h1-size);line-height:1.32;letter-spacing:-0.3px;font-weight:800;margin-bottom:18px;}\n.hero p.sub{font-size:18px;color:#cbd5e1;max-width:620px;margin:0 auto;}\n.hero .meta{margin-top:22px;font-size:14px;color:#94a3b8;}\n.hero-img{display:block;width:100%;height:auto;}\narticle{padding:48px 0 24px;}\narticle h2{font-size:var(--h2-size);line-height:1.35;letter-spacing:-0.3px;font-weight:800;margin:48px 0 18px;padding-left:14px;border-left:5px solid var(--color-primary);}\narticle h2:first-of-type{margin-top:8px;}\narticle h3{font-size:var(--h3-size);font-weight:700;margin:28px 0 10px;color:#0f172a;}\narticle p{margin:0 0 18px;}\narticle ul,article ol{margin:0 0 18px 4px;padding-left:22px;}\narticle li{margin-bottom:9px;}\narticle strong{color:#0f172a;font-weight:700;}\narticle a{color:var(--color-primary);text-decoration:underline;text-underline-offset:2px;}\narticle code{background:#0f172a;color:#e2e8f0;padding:2px 7px;border-radius:5px;font-size:0.9em;font-family:'SF Mono',Menlo,Consolas,monospace;}\n.intro p:first-child{font-size:19px;color:#334155;}\n.notice{background:#eef2ff;border:1px solid #c7d2fe;border-radius:10px;padding:14px 18px;margin:0 0 30px;font-size:15px;color:#3730a3;}\n.notice b{color:#312e81;}\n.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:22px 0;}\ntable{width:100%;border-collapse:collapse;font-size:15px;background:var(--color-bg-card);}\nth,td{padding:11px 12px;text-align:left;border-bottom:1px solid #e2e8f0;vertical-align:top;}\nth{background:#f1f5f9;font-weight:700;color:#0f172a;}\ntd:first-child,th:first-child{font-weight:700;}\n@media (max-width:560px){\n  .tablewrap table,.tablewrap thead,.tablewrap tbody,.tablewrap tr,.tablewrap th,.tablewrap td{display:block;width:auto;}\n  .tablewrap thead{display:none;}\n  .tablewrap tr{margin:0 0 14px;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;}\n  .tablewrap td{border:none;border-bottom:1px solid #f1f5f9;padding:9px 14px;}\n  .tablewrap td:first-child{background:#f1f5f9;font-weight:800;font-size:15.5px;}\n  .tablewrap td:last-child{border-bottom:none;}\n  .tablewrap td[data-label]::before{content:attr(data-label) \" \u2014 \";font-weight:700;color:var(--color-primary);}\n}\n.databox{background:#eff6ff;border-left:4px solid var(--color-accent);border-radius:0 8px 8px 0;padding:16px 18px;margin:20px 0;font-size:15.5px;}\n.databox b{color:var(--color-primary);}\n.warnbox{background:linear-gradient(135deg,#fffbeb 0%,#fef3c7 100%);border-radius:10px;padding:16px 18px;margin:22px 0;font-size:15.5px;color:#78350f;}\n.cmd{background:#0f172a;color:#e2e8f0;border-radius:10px;padding:14px 16px;margin:14px 0;font-family:'SF Mono',Menlo,Consolas,monospace;font-size:14px;line-height:1.8;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:pre-wrap;}\n.cmd .c{color:#7dd3fc;}\n.cmd .o{color:#94a3b8;}\n.cmd .t{color:#fbbf24;}\n.cmd .k{color:#c084fc;}\n.cmd .r{color:#f87171;}\n.roadmap{background:var(--color-bg-card);border:1px solid #e2e8f0;border-radius:12px;padding:18px 20px;margin:24px 0;font-size:15px;}\n.roadmap h3{margin:0 0 10px;font-size:17px;color:#0f172a;}\n.roadmap ol{margin:0 0 0 4px;padding-left:20px;}\n.roadmap li{margin-bottom:5px;color:#475569;}\n.cta{background:#0f172a;color:#e2e8f0;border-radius:14px;padding:26px 24px;margin:40px 0 8px;text-align:center;}\n.cta h3{color:#fff;margin:0 0 8px;font-size:19px;}\n.cta p{margin:0 0 4px;font-size:15px;color:#cbd5e1;}\n.cta a{color:#93c5fd;}\nfooter{padding:30px 0 50px;text-align:center;color:var(--color-text-muted);font-size:13.5px;}\n@media (max-width:480px){:root{--h1-size:23px;--h2-size:20px;--size-body:16px;}.hero{padding:48px 0 40px;}article{padding:34px 0 16px;}.cmd{font-size:12.5px;}}\n<\/style>\n<header class=\"hero\">\n  <div class=\"wrap\">\n    <span class=\"eyebrow\">\uc6b0\ubd84\ud22c \u00b7 \ub9ac\ub205\uc2a4 \uc785\ubb38 \u2014 24\ud3b8 (\uace0\uae09)<\/span>\n    <h1>\ub9ac\ub205\uc2a4 \ub85c\uadf8\uc640 \ubaa8\ub2c8\ud130\ub9c1 \u2014 journalctl\u00b7logrotate\u00b7vmstat<\/h1>\n    <p class=\"sub\">&#8220;\uc11c\ubc84\uac00 \ub290\ub824\uc694&#8221;, &#8220;\uc65c \uba48\ucdc4\uc8e0?&#8221; \u2014 \uadf8\ub54c \uc5b4\ub514\ubd80\ud130 \ubcf4\ub098. \ub85c\uadf8\ub97c \uc77d\uace0, \uc790\uc6d0\uc744 \ubcf4\uace0, \ubcd1\ubaa9\uc744 \ucc3e\ub294 \uc21c\uc11c\uc785\ub2c8\ub2e4.<\/p>\n    <p class=\"meta\">2026\ub144 5\uc6d4 13\uc77c \u00b7 \uc57d 8\ubd84 \u00b7 26\ud3b8 \uc785\ubb38 \uc2dc\ub9ac\uc988 24\ud3b8<\/p>\n  <\/div>\n<\/header>\n\n<img decoding=\"async\" class=\"hero-img\" src=\"https:\/\/junai.ai\/blog\/wp-content\/uploads\/2026\/05\/hero-31.jpg\" alt=\"free\u00b7df\u00b7vmstat\u00b7iostat\u00b7journalctl\u00b7tail\u00b7grep|awk \ub85c \uc11c\ubc84 \ub290\ub9bc\uc744 \uc9c4\ub2e8\ud558\ub294 \ud130\ubbf8\ub110 \ud654\uba74 \uc77c\ub7ec\uc2a4\ud2b8 \u2014 \ub9ac\ub205\uc2a4 \ub85c\uadf8\uc640 \ubaa8\ub2c8\ud130\ub9c1\uc744 \uc0c1\uc9d5\">\n\n<div class=\"wrap\">\n<article>\n\n  <div class=\"intro\">\n    <p>23\ud3b8\uc5d0\uc11c grep\u00b7sed\u00b7awk \ub97c \ubc30\uc6e0\uc8e0. \uadf8 \ub3c4\uad6c\ub97c \uc5b4\ub514\uc5d0 \uc4f0\ub290\ub0d0 \u2014 \uac00\uc7a5 \uc790\uc8fc \uc4f0\ub294 \uacf3\uc774 <strong>\ub85c\uadf8 \ubd84\uc11d<\/strong>\uc785\ub2c8\ub2e4. \uadf8\ub9ac\uace0 &#8220;\ub290\ub824\uc694\/\uba48\ucdc4\uc5b4\uc694&#8221; \uac19\uc740 \ubb38\uc81c\ub294 \ucd94\uce21 \ub9d0\uace0 <strong>\uc21c\uc11c\ub300\ub85c<\/strong> \ubcf4\uba74 \uac70\uc758 \ub2e4 \uc6d0\uc778\uc774 \uc7a1\ud799\ub2c8\ub2e4. \uc774\ubc88 \ud3b8\uc740 \u2460 \ub85c\uadf8 \uc5b4\ub514\uc11c \ubcf4\ub098 \u2461 <code>journalctl<\/code> (systemd \uc2dc\ub300\uc758 \ub85c\uadf8 1\uc21c\uc704) \u2462 <code>logrotate<\/code> (\ub85c\uadf8\uac00 \ub514\uc2a4\ud06c \uc548 \uc7a1\uc544\uba39\uac8c) \u2463 <code>free\u00b7top\u00b7vmstat\u00b7iostat\u00b7df<\/code> \ub85c \ubcd1\ubaa9 \ucc3e\ub294 \uc9c4\ub2e8 \uc21c\uc11c.<\/p>\n    <div class=\"notice\"><b>\uba3c\uc800:<\/b> 14\ud3b8(\ud504\ub85c\uc138\uc2a4\u00b7top)\u00b715\ud3b8(\ub514\uc2a4\ud06c\u00b7df)\u00b719\ud3b8(systemd)\u00b723\ud3b8(grep\u00b7awk)\uc744 \ubd24\ub2e4\uba74 \uc774\uc5b4\uc9d1\ub2c8\ub2e4. \uc0c8 \ub3c4\uad6c \uba87 \uac1c(<code>vmstat<\/code>\u00b7<code>iostat<\/code>)\ub294 \ubcf4\ud1b5 \uae54\ub824 \uc788\uace0, \uc5c6\uc73c\uba74 <code>sudo apt install sysstat<\/code>(11\ud3b8). \ubaa8\ub2c8\ud130\ub9c1 \uba85\ub839\uc740 \ub2e4 \uc77d\uae30 \uc804\uc6a9\uc774\ub77c \uc548\uc804\ud569\ub2c8\ub2e4.<\/div>\n  <\/div>\n\n  <h2>\ub85c\uadf8 \uc5b4\ub514 \uc788\ub098 \u2014 \/var\/log \uc640 tail -f, \uadf8\ub9ac\uace0 grep<\/h2>\n  <p>\uc804\ud1b5\uc801\uc778 \ub85c\uadf8 \ud30c\uc77c\ub4e4\uc740 <code>\/var\/log\/<\/code> \uc544\ub798 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n  <div class=\"tablewrap\">\n  <table>\n    <thead><tr><th>\ud30c\uc77c<\/th><th>\ubb34\uc5c7\uc774 \ub4e4\uc5b4 \uc788\ub098<\/th><\/tr><\/thead>\n    <tbody>\n      <tr><td><code>\/var\/log\/syslog<\/code><\/td><td data-label=\"\ubb34\uc5c7\uc774 \ub4e4\uc5b4 \uc788\ub098\">\uc2dc\uc2a4\ud15c \uc77c\ubc18 \ub85c\uadf8 \u2014 \ub300\ubd80\ubd84\uc758 \ub370\ubaac\u00b7\uc11c\ube44\uc2a4 \uba54\uc2dc\uc9c0\uac00 \uc5ec\uae30\ub85c. &#8220;\ubb54\uac00 \uc774\uc0c1\ud55c\ub370?&#8221; \ud558\uba74 \uccab \ubc88\uc9f8\ub85c \ubcf4\ub294 \uacf3.<\/td><\/tr>\n      <tr><td><code>\/var\/log\/auth.log<\/code><\/td><td data-label=\"\ubb34\uc5c7\uc774 \ub4e4\uc5b4 \uc788\ub098\">\uc778\uc99d \uad00\ub828 \u2014 \ub85c\uadf8\uc778 \uc131\uacf5\/\uc2e4\ud328, <code>sudo<\/code> \uc0ac\uc6a9, SSH \uc811\uc18d. \ubcf4\uc548 \uc810\uac80\uc758 \ucd9c\ubc1c\uc810(25\ud3b8\uc5d0\uc11c \ub2e4\uc2dc).<\/td><\/tr>\n      <tr><td><code>\/var\/log\/kern.log<\/code> \u00b7 <code>dmesg<\/code><\/td><td data-label=\"\ubb34\uc5c7\uc774 \ub4e4\uc5b4 \uc788\ub098\">\ucee4\ub110 \uba54\uc2dc\uc9c0 \u2014 \ub514\uc2a4\ud06c \uc5d0\ub7ec, \uba54\ubaa8\ub9ac \ubd80\uc871(OOM \ud0ac\ub7ec), \ud558\ub4dc\uc6e8\uc5b4 \ubb38\uc81c. <code>dmesg -T<\/code> \ub85c \uc0ac\ub78c\uc774 \uc77d\uc744 \uc2dc\uac04 \ud45c\uc2dc.<\/td><\/tr>\n      <tr><td><code>\/var\/log\/dpkg.log<\/code><\/td><td data-label=\"\ubb34\uc5c7\uc774 \ub4e4\uc5b4 \uc788\ub098\">apt\/dpkg \ud328\ud0a4\uc9c0 \uc124\uce58\u00b7\uc81c\uac70 \uae30\ub85d \u2014 &#8220;\uc5b8\uc81c \ubb58 \uae54\uc558\ub354\ub77c?&#8221; \ucd94\uc801\uc6a9(11\ud3b8).<\/td><\/tr>\n      <tr><td><code>\/var\/log\/nginx\/<\/code>\u00b7<code>\/var\/log\/mysql\/<\/code> \ub4f1<\/td><td data-label=\"\ubb34\uc5c7\uc774 \ub4e4\uc5b4 \uc788\ub098\">\uc571\ubcc4 \ub85c\uadf8 \ud3f4\ub354. \uc6f9 \uc11c\ubc84\ub77c\uba74 <code>access.log<\/code>(\uc694\uccad)\u00b7<code>error.log<\/code>(\uc5d0\ub7ec)\uac00 \ud575\uc2ec.<\/td><\/tr>\n    <\/tbody>\n  <\/table>\n  <\/div>\n  <div class=\"cmd\"><span class=\"o\">$<\/span> tail -100 \/var\/log\/syslog              <span class=\"o\"># \ub9c8\uc9c0\ub9c9 100\uc904<\/span>\n<span class=\"o\">$<\/span> tail -f \/var\/log\/nginx\/error.log       <span class=\"o\"># -f: \uc2e4\uc2dc\uac04\uc73c\ub85c \ub530\ub77c\uac00\uae30 (Ctrl+C \ub85c \uba48\ucda4)<\/span>\n<span class=\"o\">$<\/span> less \/var\/log\/syslog                   <span class=\"o\"># \ud398\uc774\uc9c0 \ub2e8\uc704\ub85c (q \uc885\ub8cc, \/\uac80\uc0c9\uc5b4 \ub85c \ucc3e\uae30)<\/span>\n<span class=\"o\">$<\/span> grep -i <span class=\"t\">&#8220;error&#8221;<\/span> \/var\/log\/syslog | tail -20   <span class=\"o\"># 23\ud3b8 \u2014 \uc5d0\ub7ec\ub9cc \uac70\ub974\uace0 \ub05d\ubd80\ubd84<\/span>\n<span class=\"o\">$<\/span> dmesg -T | grep -i <span class=\"t\">&#8220;oom\\|i\/o error&#8221;<\/span>       <span class=\"o\"># \ucee4\ub110: \uba54\ubaa8\ub9ac \ubd80\uc871 \/ \ub514\uc2a4\ud06c \uc5d0\ub7ec \ud754\uc801<\/span><\/div>\n  <p>\uc77d\uc73c\ub824\uba74 \ubcf4\ud1b5 <code>sudo<\/code> \uac00 \ud544\uc694\ud569\ub2c8\ub2e4(<code>\/var\/log<\/code> \ub294 \uad8c\ud55c \ubcf4\ud638 \u2014 9\ud3b8). \uadf8\ub9ac\uace0 23\ud3b8\uc758 <code>grep | awk | sort | uniq -c<\/code> \ud328\ud134\uc774 \uc5ec\uae30\uc11c \uadf8\ub300\ub85c \uc4f0\uc5ec\uc694: <code>awk '{print $1}' access.log | sort | uniq -c | sort -rn | head<\/code> \u2192 IP\ubcc4 \uc694\uccad \uc218.<\/p>\n\n  <h2>journalctl \u2014 systemd \ub85c\uadf8 \ud55c \uacf3\uc5d0\uc11c<\/h2>\n  <p>19\ud3b8\uc5d0\uc11c \ubd24\ub4ef \uc6b0\ubd84\ud22c\ub294 <code>systemd<\/code> \uae30\ubc18\uc774\uace0, \uadf8 \ub85c\uadf8\ub294 <code>journalctl<\/code> \ub85c \ubd05\ub2c8\ub2e4. \ud30c\uc77c \uc5ec\uae30\uc800\uae30 \ub4a4\uc9c8 \ud544\uc694 \uc5c6\uc774 \ud55c \uba85\ub839\uc73c\ub85c \u2014 \uc694\uc998 \uc11c\ubc84\uc5d0\uc120 \uc774\uac8c 1\uc21c\uc704:<\/p>\n  <div class=\"cmd\"><span class=\"o\">$<\/span> journalctl -u nginx                    <span class=\"o\"># nginx \uc11c\ube44\uc2a4 \ub85c\uadf8\ub9cc (19\ud3b8\uc758 \uc11c\ube44\uc2a4 \uc774\ub984)<\/span>\n<span class=\"o\">$<\/span> journalctl -u nginx -f                 <span class=\"o\"># \uc2e4\uc2dc\uac04\uc73c\ub85c<\/span>\n<span class=\"o\">$<\/span> journalctl -u nginx -n 50              <span class=\"o\"># \ub9c8\uc9c0\ub9c9 50\uc904<\/span>\n<span class=\"o\">$<\/span> journalctl -u nginx -p err             <span class=\"o\"># err \ub4f1\uae09 \uc774\uc0c1\ub9cc (err\u00b7crit\u00b7alert\u00b7emerg)<\/span>\n<span class=\"o\">$<\/span> journalctl &#8211;since <span class=\"t\">&#8220;1 hour ago&#8221;<\/span>        <span class=\"o\"># \ucd5c\uadfc 1\uc2dc\uac04 \/ &#8220;today&#8221; \/ &#8220;2026-05-13 09:00&#8221;<\/span>\n<span class=\"o\">$<\/span> journalctl &#8211;since today &#8211;until <span class=\"t\">&#8220;10:00&#8221;<\/span>  <span class=\"o\"># \uc2dc\uac04 \ubc94\uc704<\/span>\n<span class=\"o\">$<\/span> journalctl -b                          <span class=\"o\"># \uc774\ubc88 \ubd80\ud305 \uc774\ud6c4 (-b -1 = \uc9c1\uc804 \ubd80\ud305)<\/span>\n<span class=\"o\">$<\/span> journalctl -k                          <span class=\"o\"># \ucee4\ub110 \uba54\uc2dc\uc9c0\ub9cc (dmesg \uc640 \ube44\uc2b7)<\/span><\/div>\n  <p>\uc635\uc158\uc744 \uc870\ud569\ud574\uc11c &#8220;\uc5b4\uc81c 9\uc2dc \uc774\ud6c4 \uc774 \uc11c\ube44\uc2a4\uc758 \uc5d0\ub7ec\ub9cc&#8221; \uac19\uc740 \uac78 \ud55c \uc904\ub85c: <code>journalctl -u myapp --since \"yesterday 09:00\" -p err<\/code>. \uadf8\ub9ac\uace0 journalctl \ucd9c\ub825\ub3c4 23\ud3b8 \ub3c4\uad6c\ub85c \ub354 \uac70\ub97c \uc218 \uc788\uc5b4\uc694(<code>| grep ...<\/code>).<\/p>\n  <div class=\"databox\"><b>&#8220;\uba48\ucdc4\uc5b4\uc694&#8221; \uccab 3\uc904:<\/b> \u2460 <code>systemctl status \uc11c\ube44\uc2a4<\/code> \u2014 \uc0b4\uc544 \uc788\ub098, \uc8fd\uc5c8\uc73c\uba74 \ub9c8\uc9c0\ub9c9 \uc5d0\ub7ec \uba87 \uc904(19\ud3b8) &nbsp; \u2461 <code>journalctl -u \uc11c\ube44\uc2a4 -n 50 -p err<\/code> \u2014 \uadf8 \uc11c\ube44\uc2a4 \ucd5c\uadfc \uc5d0\ub7ec &nbsp; \u2462 <code>journalctl -b -p err<\/code> \u2014 \uc774\ubc88 \ubd80\ud305 \uc804\uccb4 \uc5d0\ub7ec. \uc774 \uc14b\uc774\uba74 &#8220;\uc65c \uc548 \ub418\ub294\uc9c0&#8221;\uc758 \ub2e8\uc11c\uac00 \uac70\uc758 \ub098\uc635\ub2c8\ub2e4.<\/div>\n\n  <h2>logrotate \u2014 \ub85c\uadf8\uac00 \ub514\uc2a4\ud06c\ub97c \uc548 \uc7a1\uc544\uba39\uac8c<\/h2>\n  <p>\ub85c\uadf8\ub294 \uadf8\ub0e5 \ub450\uba74 \ubb34\ud55c\ud788 \ucee4\uc9d1\ub2c8\ub2e4 \u2014 \uc5b4\ub290 \ub0a0 <code>df -h<\/code> \ud588\ub354\ub2c8 <code>\/<\/code> \uac00 100%\uc778\ub370 \ubc94\uc778\uc774 <code>access.log<\/code> 80GB\u2026 <code>logrotate<\/code> \uac00 \uc774\uac78 \ub9c9\uc544\uc694: \uc77c\uc815 \ud06c\uae30\/\uc8fc\uae30\ub9c8\ub2e4 \ub85c\uadf8\ub97c <strong>\ud68c\uc804(<code>app.log<\/code> \u2192 <code>app.log.1<\/code> \u2192 <code>app.log.2.gz<\/code> \u2026)\ud558\uace0, \uc555\ucd95\ud558\uace0, \uc624\ub798\ub41c \uac74 \uc0ad\uc81c<\/strong>\ud569\ub2c8\ub2e4. \ubcf4\ud1b5 \uc790\ub3d9\uc73c\ub85c \ub3cc\uc544\uac11\ub2c8\ub2e4(systemd timer\ub85c \ub9e4\uc77c).<\/p>\n  <div class=\"cmd\"><span class=\"o\">$<\/span> ls \/etc\/logrotate.d\/                   <span class=\"o\"># \ud328\ud0a4\uc9c0\ub9c8\ub2e4 \uc5ec\uae30\uc5d0 \uc790\uae30 \ub85c\uadf8 \uc124\uc815\uc744 \ub460 (nginx, apt \ub4f1)<\/span>\n<span class=\"o\">$<\/span> cat \/etc\/logrotate.d\/nginx              <span class=\"o\"># \uc608: daily, rotate 14, compress, &#8230;<\/span>\n<span class=\"o\">$<\/span> sudo logrotate -d \/etc\/logrotate.d\/nginx  <span class=\"o\"># -d: dry-run (\uc2e4\uc81c\ub85c \uc548 \ub3cc\ub9ac\uace0 \ubb58 \ud560\uc9c0\ub9cc \ucd9c\ub825)<\/span><\/div>\n  <p>\ub0b4 \uc571 \ub85c\uadf8(\uc608: <code>\/var\/log\/myapp\/app.log<\/code>)\ub3c4 \uac19\uc740 \ud615\uc2dd\uc73c\ub85c <code>\/etc\/logrotate.d\/myapp<\/code> \ud30c\uc77c \ud558\ub098 \ub9cc\ub4e4\uba74 \uc790\ub3d9 \uad00\ub9ac\ub429\ub2c8\ub2e4 \u2014 14\uc77c\uce58 \ubcf4\uad00, \ub9e4\uc77c \ud68c\uc804, 7\uc77c \uc9c0\ub09c \uac74 \uc555\ucd95, \uc2dd\uc73c\ub85c. (\ucc38\uace0: <code>journalctl<\/code> \ub85c\uadf8\ub294 systemd\uac00 \ub530\ub85c \ud06c\uae30 \uad00\ub9ac \u2014 <code>\/etc\/systemd\/journald.conf<\/code> \uc758 <code>SystemMaxUse<\/code>.)<\/p>\n\n  <h2>&#8220;\ub290\ub824\uc694&#8221; \uc9c4\ub2e8 \u2014 free\u00b7top\u00b7vmstat\u00b7iostat\u00b7df, \uadf8\ub9ac\uace0 \uc815\ub9ac<\/h2>\n  <p>&#8220;\uc11c\ubc84\uac00 \ub290\ub824\uc694&#8221;\ub294 \ubcf4\ud1b5 <strong>CPU\u00b7\uba54\ubaa8\ub9ac\u00b7\ub514\uc2a4\ud06c I\/O\u00b7\ub514\uc2a4\ud06c \uacf5\uac04<\/strong> \ub137 \uc911 \ud558\ub098\uc785\ub2c8\ub2e4. \uc21c\uc11c\ub300\ub85c:<\/p>\n  <div class=\"cmd\"><span class=\"o\">$<\/span> top         <span class=\"o\"># (\ub610\ub294 htop \u2014 14\ud3b8) CPU\/\uba54\ubaa8\ub9ac \ub9ce\uc774 \uba39\ub294 \ud504\ub85c\uc138\uc2a4. load average \ub3c4. q \uc885\ub8cc<\/span>\n<span class=\"o\">$<\/span> free -h     <span class=\"o\"># \uba54\ubaa8\ub9ac. &#8220;available&#8221; \uc774 \ud575\uc2ec \u2014 \uc774\uac8c \uc801\uace0 \uc2a4\uc651\uc774 \uc4f0\uc774\uba74 \uba54\ubaa8\ub9ac \ubd80\uc871<\/span>\n<span class=\"o\">$<\/span> df -h       <span class=\"o\"># \ub514\uc2a4\ud06c \uacf5\uac04 (15\ud3b8). \/ \uac00 95%+ \uba74 \uadf8\uac8c \uc6d0\uc778\uc77c \ud655\ub960 \ud07c \u2014 du \ub85c \ubc94\uc778 \ucc3e\uae30<\/span>\n<span class=\"o\">$<\/span> vmstat 1    <span class=\"o\"># 1\ucd08\ub9c8\ub2e4: r=\uc2e4\ud589\ub300\uae30 \ud504\ub85c\uc138\uc2a4 \uc218, si\/so=\uc2a4\uc651 in\/out(0 \uc774\uc5b4\uc57c \uc88b\uc74c), wa=I\/O \ub300\uae30 %<\/span>\n<span class=\"o\">$<\/span> iostat -x 1 <span class=\"o\"># \ub514\uc2a4\ud06c\ubcc4 I\/O. %util \uc774 100% \uc5d0 \ubd99\uc5b4 \uc788\uc73c\uba74 \uadf8 \ub514\uc2a4\ud06c\uac00 \ubcd1\ubaa9 (sysstat \ud328\ud0a4\uc9c0)<\/span>\n<span class=\"o\">$<\/span> uptime      <span class=\"o\"># load average 3\uac1c \u2014 \ucf54\uc5b4 \uc218\ubcf4\ub2e4 \ud55c\ucc38 \ud06c\uba74 \uacfc\ubd80\ud558 (nproc \ub85c \ucf54\uc5b4 \uc218 \ud655\uc778)<\/span><\/div>\n  <div class=\"warnbox\"><strong>\uc9c4\ub2e8 \uc21c\uc11c(\uc678\uc6cc\ub450\uba74 \ud3b8\ud568):<\/strong> \u2460 <code>top<\/code> \u2014 \ub204\uac00 CPU\/\uba54\ubaa8\ub9ac \uba39\ub098? \ubc94\uc778 \ud504\ub85c\uc138\uc2a4\uac00 \ubcf4\uc774\uba74 \uac70\uae30\uc11c \ub05d(14\ud3b8\uc758 <code>kill<\/code>\ub85c \uc815\ub9ac\ud558\uac70\ub098, \uadf8 \uc571 \uc124\uc815 \ubcf4\uae30). \u2461 \uc548 \ubcf4\uc774\uba74 <code>free -h<\/code> \u2014 \uc2a4\uc651 \ub3c4\ub098? \u2192 \uba54\ubaa8\ub9ac \ub298\ub9ac\uac70\ub098 \uba54\ubaa8\ub9ac \ud070 \ud504\ub85c\uc138\uc2a4 \uc904\uc774\uae30. \u2462 <code>df -h<\/code> \u2014 \ub514\uc2a4\ud06c \uaf49 \ucc3c\ub098? \u2192 <code>du -h --max-depth=1 \/ | sort -h<\/code>(15\ud3b8)\ub85c \ubc94\uc778 \ud3f4\ub354, \ubcf4\ud1b5 \ub85c\uadf8(\uc704 logrotate) \ub610\ub294 \uce90\uc2dc. \u2463 <code>vmstat 1<\/code> \uc758 <code>wa<\/code> \uac00 \ub192\uc73c\uba74 I\/O \ubcd1\ubaa9 \u2192 <code>iostat -x 1<\/code> \ub85c \uc5b4\ub290 \ub514\uc2a4\ud06c. \u2464 \uadf8\ub798\ub3c4 \ubaa8\ub974\uba74 <code>journalctl -p err<\/code> \u00b7 <code>dmesg -T<\/code> \u2014 \uc5d0\ub7ec\u00b7OOM \ud754\uc801. \uc774 \uc21c\uc11c\uba74 &#8220;\ub290\ub824\uc694&#8221;\uc758 90%\ub294 30\ubd84 \uc548\uc5d0 \uc6d0\uc778\uc774 \uc7a1\ud799\ub2c8\ub2e4.<\/div>\n  <p>\uc5ec\uae30\uae4c\uc9c0 \ubc30\uc6b4 \uac78 \ud569\uce58\uba74 \uc791\uc740 <strong>\ubaa8\ub2c8\ud130\ub9c1 \uc2a4\ud06c\ub9bd\ud2b8<\/strong>\ub3c4 \ub9cc\ub4e4 \uc218 \uc788\uc5b4\uc694 \u2014 &#8220;\ub514\uc2a4\ud06c\uac00 80% \ub118\uc73c\uba74 \uc54c\ub824\uc918&#8221;\ub97c 21~23\ud3b8 \ucd1d\ub3d9\uc6d0\uc73c\ub85c:<\/p>\n  <div class=\"cmd\"><span class=\"c\">#!\/usr\/bin\/env bash<\/span>\n<span class=\"t\">set -euo pipefail<\/span>                       <span class=\"o\"># 22\ud3b8<\/span>\nuse=<span class=\"t\">$(df \/ | awk &#8216;NR==2 {print $5}&#8217; | tr -d &#8216;%&#8217;)<\/span>   <span class=\"o\"># 23\ud3b8: df \u2192 awk \ub85c \uc0ac\uc6a9\ub960 % \ub9cc \ubf51\uae30<\/span>\n<span class=\"k\">if<\/span> [ <span class=\"t\">&#8220;$use&#8221;<\/span> -ge 80 ]; <span class=\"k\">then<\/span>          <span class=\"o\"># 21\ud3b8: \uc870\uac74\ubb38<\/span>\n    echo <span class=\"t\">&#8220;[\uacbd\uace0] \ub514\uc2a4\ud06c \uc0ac\uc6a9\ub960 ${use}% \u2014 \uc815\ub9ac \ud544\uc694&#8221;<\/span>\n<span class=\"k\">fi<\/span><\/div>\n  <div class=\"roadmap\">\n    <h3>\uc2dc\ub9ac\uc988 \ud750\ub984<\/h3>\n    <ol>\n      <li>1~23\ud3b8 \uc785\ubb38~\uace0\uae09(\uc2a4\ud06c\ub9bd\ud2b8\u00b7\ud14d\uc2a4\ud2b8 \ucc98\ub9ac) \u2714 &nbsp; <strong>24\ud3b8 \ub85c\uadf8\uc640 \ubaa8\ub2c8\ud130\ub9c1 (\uc774 \uae00)<\/strong> \u2714<\/li>\n      <li>25\ud3b8 \u2014 \uc11c\ubc84 \ubcf4\uc548 \ud558\ub4dc\ub2dd(SSH \uac15\ud654\u00b7fail2ban\u00b7\uc790\ub3d9 \ud328\uce58\u00b7\ucd5c\uc18c \uad8c\ud55c) \u2014 \uc624\ub298\uc758 <code>auth.log<\/code> \uac00 \uac70\uae30\uc11c \ud575\uc2ec<\/li>\n      <li>26\ud3b8 \u2014 \ub3c4\ucee4 \uc785\ubb38 on Ubuntu (\uc2dc\ub9ac\uc988 \uc644\uacb0)<\/li>\n    <\/ol>\n  <\/div>\n  <p>\uc815\ub9ac\ud558\uba74 \u2014 \ub85c\uadf8\ub294 <code>\/var\/log<\/code>(\uc804\ud1b5)\uc640 <code>journalctl<\/code>(systemd, 1\uc21c\uc704)\uc5d0\uc11c \ubcf4\uace0, 23\ud3b8 grep\u00b7awk \ub85c \uac70\ub974\uace0 \uc9d1\uacc4\ud569\ub2c8\ub2e4. \ub514\uc2a4\ud06c\ub97c \uc548 \uc7a1\uc544\uba39\uac8c logrotate \uac00 \uc54c\uc544\uc11c \ud68c\uc804\uc2dc\ud0a4\uace0\uc694. &#8220;\ub290\ub824\uc694&#8221;\ub294 <code>top \u2192 free \u2192 df \u2192 vmstat \u2192 iostat \u2192 journalctl<\/code> \uc21c\uc11c\ub85c \ubcf4\uba74 \uc6d0\uc778\uc774 \uac70\uc758 \uc7a1\ud799\ub2c8\ub2e4. 25\ud3b8\uc5d0\uc11c\ub294 \uc774 \ub85c\uadf8(\ud2b9\ud788 <code>auth.log<\/code>)\ub97c \ub4e4\uace0 \uc11c\ubc84\ub97c \uc2e4\uc81c\ub85c \ub2e8\ub2e8\ud558\uac8c \ub9cc\ub4dc\ub294 \ubc95\uc744 \ub2e4\ub8f9\ub2c8\ub2e4.<\/p>\n\n  <p style=\"font-size:15px;color:#64748b;\">\ucc38\uace0: \ubcf8 \uae00\uc740 \uc6b0\ubd84\ud22c(systemd\u00b7GNU \ub3c4\uad6c) \uae30\uc900\uc774\uba70 2026\ub144 5\uc6d4 13\uc77c\uc5d0 \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. <code>vmstat<\/code>\u00b7<code>iostat<\/code> \ub294 <code>sysstat<\/code> \ud328\ud0a4\uc9c0\uc5d0 \ub4e4\uc5b4 \uc788\uace0, \uc77c\ubd80 \ud074\ub77c\uc6b0\ub4dc \uc778\uc2a4\ud134\uc2a4\ub294 \ub85c\uadf8 \uacbd\ub85c\u00b7journald \uc124\uc815\uc774 \ub2e4\ub97c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n  <div class=\"cta\">\n    <h3>\uc6b0\ubd84\ud22c\u00b7\ub9ac\ub205\uc2a4 \uc785\ubb38 \uc2dc\ub9ac\uc988<\/h3>\n    <p>\ubb38\uc81c \ub0ac\uc744 \ub54c \uc5b4\ub514\ubd80\ud130 \ubcf4\ub098 \u2014 24\ud3b8\uc785\ub2c8\ub2e4. 25\ud3b8 &#8220;\uc11c\ubc84 \ubcf4\uc548 \ud558\ub4dc\ub2dd&#8221;\uc73c\ub85c \uc774\uc5b4\uc9d1\ub2c8\ub2e4(<code>auth.log<\/code> \uac00 \uac70\uae30\uc11c \uccab\uac78\uc74c).<\/p>\n    <p>\ub2e4\uc74c \ud3b8\uc740 <a href=\"https:\/\/junai.ai\/blog\" target=\"_blank\" rel=\"noopener\">junai.ai\/blog<\/a> \uc5d0\uc11c \u2014 26\ud3b8\uae4c\uc9c0 \ucc28\ub840\ub85c \uc62c\ub77c\uc635\ub2c8\ub2e4.<\/p>\n  <\/div>\n\n<\/article>\n<\/div>\n\n<footer>\n  <div class=\"wrap\">\u00a9 2026 JUNAI \u00b7 \uc6b0\ubd84\ud22c\u00b7\ub9ac\ub205\uc2a4 \uc785\ubb38 \uc2dc\ub9ac\uc988 24\ud3b8 \u00b7 \ubcf8 \uae00\uc740 2026\ub144 5\uc6d4 13\uc77c \uae30\uc900\uc73c\ub85c \uc791\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/div>\n<\/footer>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ub9ac\ub205\uc2a4 \ub85c\uadf8\u00b7\ubaa8\ub2c8\ud130\ub9c1 \u2014 \/var\/log\u00b7journalctl\u00b7logrotate, free\u00b7top\u00b7vmstat\u00b7df \ub85c &#8216;\ub290\ub824\uc694&#8217; \ubcd1\ubaa9 \uc9c4\ub2e8 \uc21c\uc11c. \uc785\ubb38 24\ud3b8.<\/p>\n","protected":false},"author":1,"featured_media":204,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-210","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ubuntu-linux"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/comments?post=210"}],"version-history":[{"count":0,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/posts\/210\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media\/204"}],"wp:attachment":[{"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/media?parent=210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/categories?post=210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/junai.ai\/blog\/wp-json\/wp\/v2\/tags?post=210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}