็†ฑ้–€ๅˆ†้กž
 ่ผ‰ๅ…ฅไธญ…
็›ฎ้Œ„

๐Ÿง Linux systemd + logrotate ๅฏฆๆˆฐ:ๅพž้–‹ๆฉŸๆœๅ‹™ๅˆฐๆ—ฅ่ชŒ่ผชๆ›ฟ็š„ไธ€ๆข้พ็ฎก็†

    ๐Ÿง Linux systemd + logrotate ๅฏฆๆˆฐ:ๅพž้–‹ๆฉŸๆœๅ‹™ๅˆฐๆ—ฅ่ชŒ่ผชๆ›ฟ็š„ไธ€ๆข้พ็ฎก็†

    ๅœจ็พไปฃ Linux ไผบๆœๅ™จไธŠ,ๆˆ‘ๅ€‘ๅคšๅŠไฝฟ็”จ systemd ไพ†็ฎก็†ๆœๅ‹™ๅ•Ÿๅ‹•、็›ฃๆŽง็‹€ๆ…‹่ˆ‡่‡ชๅ‹•้‡ๅ•Ÿ, ๅŒๆ™‚็”จ logrotate ไพ†่™•็† /var/log/*.log ็š„่ผชๆ›ฟ่ˆ‡ๅฃ“็ธฎ。 ๅฆ‚ๆžœๅ…ฉ่€…ๆฒ’ๆœ‰่จญ่จˆๅฅฝ,ๅฐฑๆœƒ้‡ๅˆฐ「ๆœๅ‹™่ท‘ๅพ—ๅฅฝๅฅฝ็š„,ไฝ†ๆ—ฅ่ชŒ็„ก้™้•ทๅคง、ๅƒๆปฟ็ฃ็ขŸ」็š„ๆƒ…ๆณ。
    ๆœฌ็ฏ‡ๅพž ็ฏ„ไพ‹ๆœๅ‹™ ้–‹ๅง‹,ไธ€่ทฏๅšๅˆฐ ้–‹ๆฉŸ่‡ชๅ‹•ๅ•Ÿๅ‹• + ๆจ™ๆบ–ๅŒ–่ผธๅ‡บ + logrotate ๆ—ฅ่ชŒ่ผชๆ›ฟ + systemd timer ่‡ชๅ‹•ๆŽ’็จ‹, ็ตฆไฝ ไธ€ๅฅ—ๅฏไปฅ็›ดๆŽฅ่ค‡่ฃฝ็š„「ไธ€ๆข้พ」็ฎก็†ๆต็จ‹。

    ๐Ÿ“‘ ็›ฎ้Œ„

    ไธ€、ไฝฟ็”จๆƒ…ๅขƒ่ˆ‡่จญ่จˆ็›ฎๆจ™

    ๅ…ˆๅฎš็พฉๆˆ‘ๅ€‘่ฆ่งฃๆฑบ็š„ๅ…ธๅž‹ๆƒ…ๅขƒ:

    • ไฝ ๆœ‰ไธ€ๅ€‹่‡ช่ฃฝ็š„ Web / API / Worker ๆœๅ‹™,ไฝฟ็”จ systemd ็ฎก็†้–‹ๆฉŸๅ•Ÿๅ‹•่ˆ‡่‡ชๅ‹•้‡ๅ•Ÿ。
    • ๆœๅ‹™ๆœƒ่ผธๅ‡บๅคง้‡ stdout/stderr ๆ—ฅ่ชŒๆˆ–ๅฏซๅ…ฅๆŸๅ€‹ /var/log/myapp.log
    • ๅธŒๆœ›:
      • ๐Ÿ“Œ ๆœๅ‹™้–‹ๆฉŸ่‡ชๅ‹•ๅ•Ÿๅ‹•,็•ฐๅธธ่‡ชๅ‹•้‡ๅ•Ÿ。
      • ๐Ÿ“Œ ๆ—ฅ่ชŒๆŒ‰ๅคฉๆˆ–ๆŒ‰ๆช”ๆกˆๅคงๅฐ่ผชๆ›ฟ、ๅฃ“็ธฎ,ๅชไฟ็•™ๆœ€่ฟ‘ N ไปฝ。
      • ๐Ÿ“Œ ๆ—ฅ่ชŒ่ผชๆ›ฟๅพŒ,ๆœๅ‹™่ƒฝ「ๆŽฅๅœจๆ–ฐๆช”ๆกˆไธŠ็นผ็บŒๅฏซ」,ไธไธญๆ–ทๆœๅ‹™。

    ๆŽฅไธ‹ไพ†็š„็คบ็ฏ„ๆœƒ็”จไธ€ๅ€‹ๅ็‚บ myapp ็š„ๆœๅ‹™ไพ†่ชชๆ˜Ž,ไฝ†ไฝ ๅฏไปฅๅพˆๅฎนๆ˜“ๆ”นๆˆ่‡ชๅทฑ็š„ๅฐˆๆกˆๅ็จฑ。

    ไบŒ、ๅŸบ็คŽ่ง€ๅฟต:systemd ๆ—ฅ่ชŒ vs ๅ‚ณ็ตฑ log ๆช”

    1️⃣ systemd journal:้ ่จญๅฐฑๆœ‰็š„ๆ—ฅ่ชŒ

    • ๅคง้ƒจๅˆ†ๆœๅ‹™ๅœจ systemd ไน‹ไธ‹,้ ่จญ ๆจ™ๆบ–่ผธๅ‡บ/้Œฏ่ชค ้ƒฝๆœƒ้€ฒๅ…ฅ journald
    • ๅฏ็”จ journalctl -u myapp.service -f ๅณๆ™‚ๆŸฅ็œ‹。
    • journal ่‡ชๅทฑๆœ‰่ผชๆ›ฟๆฉŸๅˆถ,้€้Ž /etc/systemd/journald.conf ่จญๅฎš SystemMaxUse ็ญ‰้™ๅˆถ。
    # ๅช็œ‹ myapp ๆœๅ‹™็š„ๆœ€่ฟ‘ 100 ่กŒๆ—ฅ่ชŒ
    journalctl -u myapp.service -n 100
    
    # ่ฟฝ่นค myapp ๅณๆ™‚่ผธๅ‡บ
    journalctl -u myapp.service -f

    2️⃣ ๅ‚ณ็ตฑ log ๆช”:/var/log/*.log

    • ๅพˆๅคš็จ‹ๅผ(Nginx、Squid、่‡ช่ฃฝ App)ๆœƒ่‡ชๅทฑๅฏซๅˆฐ /var/log/xxx.log
    • ้€™้กžๆช”ๆกˆ้€šๅธธ็”จ logrotate ๅš่ผชๆ›ฟ่ˆ‡ๅฃ“็ธฎ。
    • ่ผชๆ›ฟๆ–นๅผๅธธ่ฆ‹:
      • ไปฅ ๅคงๅฐ ็‚บไธป:size 100M
      • ไปฅ ๆ™‚้–“ ็‚บไธป:daily / weekly
    # logrotate ไธป่จญๅฎšๆช”
    /etc/logrotate.conf
    
    # ๅ„ๆœๅ‹™็š„ๅ–ฎ็จ่จญๅฎš
    /etc/logrotate.d/

    ๆœฌๆ–‡็š„็ญ–็•ฅๆœƒๆ˜ฏ:
    ้–‹็™ผไธญ / ้™ค้Œฏ → ไปฅ journalctl ็‚บไธป;
    ๆญฃๅผ็’ฐๅขƒ / ้•ทๆœŸไฟ็•™ → ่ฎ“ๆœๅ‹™ๅฏซๅˆฐ็‰นๅฎš log ๆช”,ๅ†ไบค็ตฆ logrotate ็ฎก็†ๅฎน้‡。

    ไธ‰、ๅฏฆไฝœ็ฏ„ไพ‹ๆœๅ‹™:ๅพž systemd ้–‹ๆฉŸๅ•Ÿๅ‹•้–‹ๅง‹

    ๅ…ˆๅปบ็ซ‹ไธ€ๅ€‹็ฐกๅ–ฎ็š„ๆœๅ‹™,ๆŒ็บŒ่ผธๅ‡บๆ™‚้–“ๆˆณ่จ˜่ˆ‡่จŠๆฏๅˆฐๆจ™ๆบ–่ผธๅ‡บ:

    # /usr/local/bin/myapp.sh
    #!/usr/bin/env bash
    
    LOG_TAG="myapp"
    INTERVAL=5
    
    while true; do
      echo "$(date '+%F %T') [$LOG_TAG] heartbeat: service is running"
      sleep "$INTERVAL"
    done
    sudo chmod +x /usr/local/bin/myapp.sh

    ๆŽฅ่‘—ๅปบ็ซ‹ systemd service:

    # /etc/systemd/system/myapp.service
    [Unit]
    Description=MyApp Demo Service (journal only)
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/myapp.sh
    Restart=on-failure
    RestartSec=3
    
    [Install]
    WantedBy=multi-user.target
    sudo systemctl daemon-reload
    sudo systemctl enable --now myapp.service
    sudo systemctl status myapp.service
    journalctl -u myapp.service -f

    ๅˆฐ้€™่ฃก,ๆˆ‘ๅ€‘ๅทฒ็ถ“ๅฎŒๆˆ:

    • ✅ ้–‹ๆฉŸ่‡ชๅ‹•ๅ•Ÿๅ‹•่ˆ‡็•ฐๅธธ่‡ชๅ‹•้‡ๅ•Ÿ(้  systemd)。
    • ✅ ๆ—ฅ่ชŒ้€ฒๅ…ฅ journal,ไพฟๆ–ผ้™ค้Œฏ่ˆ‡ๅณๆ™‚่ฟฝ่นค。

    ๅ››、่ฎ“ๆœๅ‹™่ผธๅ‡บๅˆฐๅฐˆๅฑฌ log ๆช”

    ่‹ฅไฝ ๆƒณ่ฎ“ๆ—ฅ่ชŒไบค็ตฆ logrotate ็ฎก็†,ๅฏไปฅ:

    1. ๅœจ service ่ฃก็›ดๆŽฅๆŠŠ่ผธๅ‡บๅฐŽๅ‘ๆช”ๆกˆ。
    2. ๆˆ–ๅœจ็จ‹ๅผๅ…ง่‡ช่กŒๆ‰“้–‹ๆช”ๆกˆ(็ฏ„ไพ‹ๆŽก็”จ็ฌฌ 1 ็จฎ)。

    1️⃣ ๅปบ็ซ‹ๆ—ฅ่ชŒ็›ฎ้Œ„่ˆ‡ๆฌŠ้™

    sudo mkdir -p /var/log/myapp
    sudo chown root:root /var/log/myapp
    sudo chmod 750 /var/log/myapp

    2️⃣ ๆ›ดๆ–ฐ service:ๆŠŠ่ผธๅ‡บๅฐŽๅ‘ๆช”ๆกˆ

    ๅšๆณ•ไธ€:็›ดๆŽฅๅœจ ExecStart ๅ…งไฝฟ็”จ bash -c ่ฝ‰ๅ‘(็ฐกๅ–ฎๅฅฝ็†่งฃ):

    # /etc/systemd/system/myapp.service
    [Unit]
    Description=MyApp Demo Service (file logging)
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=simple
    ExecStart=/bin/bash -c 'exec /usr/local/bin/myapp.sh >> /var/log/myapp/myapp.log 2>> /var/log/myapp/myapp.err.log'
    Restart=on-failure
    RestartSec=3
    
    [Install]
    WantedBy=multi-user.target
    sudo systemctl daemon-reload
    sudo systemctl restart myapp.service
    tail -n 20 /var/log/myapp/myapp.log

    ๅˆฐ้€™่ฃก็‚บๆญข,ๆˆ‘ๅ€‘ๅทฒ็ถ“ๆœ‰ไธ€ๅ€‹:

    • ✅ ้–‹ๆฉŸ่‡ชๅ‹•ๅ•Ÿๅ‹•็š„ systemd ๆœๅ‹™。
    • ✅ ๆœƒๅฏซๅ…ฅ /var/log/myapp/myapp.log ่ˆ‡ myapp.err.log ็š„ๆ—ฅ่ชŒๆช”。

    ไบ”、ๆ’ฐๅฏซ logrotate ่ฆๅ‰‡:ไฟ็•™ๅคฉๆ•ธ、ๅฃ“็ธฎ่ˆ‡ๆฌŠ้™

    ๆŽฅไธ‹ไพ†่ฎ“ logrotate ็ฎก็†้€™ๅ…ฉๅ€‹ๆช”ๆกˆ็š„ๅคงๅฐ่ˆ‡ไฟ็•™ไปฝๆ•ธ。

    1️⃣ ๅปบ็ซ‹ /etc/logrotate.d/myapp

    sudo vi /etc/logrotate.d/myapp
    /var/log/myapp/myapp.log
    /var/log/myapp/myapp.err.log {
        daily              # ๆฏๅคฉ่ผชไธ€ๆฌก
        rotate 14          # ไฟ็•™ 14 ไปฝ(็ด„ๅ…ฉ้€ฑ)
        compress           # ่ฝ‰ๆˆ .gz
        delaycompress      # ไธ‹ไธ€ๆฌก่ผชๆ›ฟๆ™‚ๅ†ๅฃ“็ธฎไธŠไธ€ไปฝ
        missingok          # ไธๅœจๆ™‚ๅฟฝ็•ฅ,ไธ่ฆ–็‚บ้Œฏ่ชค
        notifempty         # ็ฉบๆช”ๆกˆไธ่ผชๆ›ฟ
        create 640 root root
        dateext            # ๆช”ๅๅŠ ๆ—ฅๆœŸ,ๆ–นไพฟ่ฟฝ่นค
    }

    ๅ…ˆ็”จ「ๆจกๆ“ฌๆจกๅผ」็ขบ่ช่ชžๆณ•ๆ˜ฏๅฆๆญฃ็ขบ:

    sudo logrotate -d /etc/logrotate.d/myapp

    ่‹ฅๆฒ’ๆœ‰้Œฏ่ชค,ๅ†ๅผทๅˆถ่ท‘ไธ€ๆฌกๆธฌ่ฉฆ่ผชๆ›ฟ:

    sudo logrotate -f /etc/logrotate.d/myapp
    ls -l /var/log/myapp

    ๆญคๆ™‚ไฝ ๆœƒ็œ‹ๅˆฐ้กžไผผ:

    myapp.log
    myapp.log-20251116
    myapp.err.log
    myapp.err.log-20251116.gz

    ๆณจๆ„: ้€™็จฎๆƒ…ๆณไธ‹,ๅฆ‚ๆžœ็จ‹ๅผๆŒ็บŒๅŸท่กŒ,่€Œไธ”ๆฒ’ๆœ‰้‡ๆ–ฐ้–‹ๅ•Ÿ log ๆช”, ๅฎƒๅฏ่ƒฝไป็„ถๅฏซๅœจ「ๅทฒ่ขซ่ผชๆ›ฟๅพŒ็š„่ˆŠๆช”ๆกˆ」ไธŠ。ไธ‹ไธ€็ฏ€ๆœƒไป‹็ดนๅฆ‚ไฝ•่ฎ“ systemd ๅนซๅฟ™「้€š็Ÿฅๆœๅ‹™」。

    ๅ…ญ、่ˆ‡ systemd ไธฒๆŽฅ:postrotate ้‡ๆ–ฐ้–‹ๅ•Ÿๆ—ฅ่ชŒ

    ๅ…ธๅž‹ๅšๆณ•ๆœ‰ๅ…ฉ็จฎ:

    1. ็จ‹ๅผๆœฌ่บซๆ”ฏๆด USR1 / HUP ็ญ‰่จŠ่™Ÿไพ†้‡ๆ–ฐ้–‹ๅ•Ÿ log。
    2. ๅœจ่ผชๆ›ฟๅพŒ ้‡ๆ–ฐๅ•Ÿๅ‹•ๆœๅ‹™(้ฉ็”จๆ–ผๅฏ็Ÿญๆšซไธญๆ–ท็š„ๆœๅ‹™)。

    1️⃣ ่‹ฅ็จ‹ๅผๆ”ฏๆด่จŠ่™Ÿ(ๆŽจ่–ฆ)

    ๅ‡่จญ myapp ๆ”ถๅˆฐ SIGUSR1 ๆ™‚ๆœƒ้‡ๆ–ฐ้–‹ๅ•Ÿ log ๆช”,ๆˆ‘ๅ€‘ๅฏไปฅ้€™ๆจฃๅฏซ:

    /var/log/myapp/myapp.log
    /var/log/myapp/myapp.err.log {
        daily
        rotate 14
        compress
        delaycompress
        missingok
        notifempty
        create 640 root root
        dateext
        sharedscripts
        postrotate
            # ่ซ‹ๆ”นๆˆไฝ ็š„ service ๅ็จฑ
            systemctl kill -s SIGUSR1 myapp.service >/dev/null 2>&1 || true
        endscript
    }

    2️⃣ ่‹ฅ็จ‹ๅผไธๆ”ฏๆด่จŠ่™Ÿ:ๆ”น็”จ restart

    ๅฆ‚ๆžœๆ˜ฏๅฐๅทฅๅ…ทๆˆ–้ž้—œ้ตๆœๅ‹™,ไฝ ไนŸๅฏไปฅ้ธๆ“‡ๅœจ่ผชๆ›ฟๅพŒ้‡ๅ•Ÿๆœๅ‹™:

    postrotate
        systemctl restart myapp.service >/dev/null 2>&1 || true
    endscript

    ๆญ้…ๅ‰ไธ€็ฏ€ๅ…งๅฎน,ๆ•ด้ซ”ๆต็จ‹่ฎŠๆˆ:

    1. logrotate ๆ นๆ“šๆขไปถ่ผชๆ›ฟ myapp.log
    2. ่ผชๆ›ฟๅฎŒๆˆๅพŒ,ๅŸท่กŒ postrotate ่ฃก็š„ๆŒ‡ไปค。
    3. systemd ้€š็Ÿฅๆœๅ‹™้‡ๆ–ฐ้–‹ๅ•Ÿๆˆ–้‡ๅ•Ÿ,ไน‹ๅพŒไพฟๆœƒๅฏซๅ…ฅๆ–ฐ็š„ log ๆช”。

    ไธƒ、็”จ systemd timer ็ฎก็† logrotate(ๅ–ไปฃ cron)

    ๅœจ่ผƒๆ–ฐ็š„็™ผ่กŒ็‰ˆไธญ,logrotate ๆœฌ่บซไนŸๅทฒ็ถ“่ขซ systemd ๆŽฅ็ฎก(่€Œไธๆ˜ฏๅ‚ณ็ตฑ็š„ cron.daily)。

    # ๆŸฅ็œ‹ logrotate timer
    systemctl list-timers | grep logrotate
    
    # ๅฏ็œ‹ๅˆฐ้กžไผผ:
    # logrotate.timer  logrotate.service  ...  Mon 03:10 ...

    ๅฆ‚ๆžœไฝ ็š„็ณป็ตฑๅฐšๆœชไฝฟ็”จ systemd timer,ไนŸๅฏไปฅ่‡ชๅทฑๅปบ็ซ‹:

    # /etc/systemd/system/logrotate-custom.service
    [Unit]
    Description=Run logrotate custom config
    
    [Service]
    Type=oneshot
    ExecStart=/usr/sbin/logrotate /etc/logrotate.conf
    # /etc/systemd/system/logrotate-custom.timer
    [Unit]
    Description=Daily logrotate (custom)
    
    [Timer]
    OnCalendar=*-*-* 03:10:00
    RandomizedDelaySec=300
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    sudo systemctl daemon-reload
    sudo systemctl enable --now logrotate-custom.timer
    systemctl list-timers --all | grep logrotate

    ้€™ๆจฃๅฐฑๅฎŒๆˆไบ†「systemd → logrotate → ๆฌŠ้™/ๅฃ“็ธฎ」็š„ไธ€ๆข้พๆŽ’็จ‹。

    ๅ…ซ、ๅธธ่ฆ‹้Œฏ่ชค่ˆ‡ๆŽ’้Œฏๆ–นๆณ•

    • ่ผชๆ›ฟๆฒ’ๆœ‰็™ผ็”Ÿ:
      sudo logrotate -d /etc/logrotate.conf
      sudo logrotate -d /etc/logrotate.d/myapp
      ไฝฟ็”จ -d(debug) ็œ‹ logrotate ๅฆ‚ไฝ•ๅˆคๆ–ทๆขไปถ。
    • ่ผชๆ›ฟๅพŒ log ๆช”ไปๆŒ็บŒ่ฎŠๅคง:
      ไปฃ่กจ็จ‹ๅผไป็„ถๆก่‘—「่ˆŠๆช”ๆกˆ็š„ file descriptor」,็ขบๅฎš:
      • ็จ‹ๅผๆœ‰ๅฏฆไฝœ「้‡ๆ–ฐ้–‹ๅ•Ÿ log」็š„้‚่ผฏ。
      • logrotate ็š„ postrotate ๆœ‰ๆญฃ็ขบ้€š็Ÿฅๆœๅ‹™。
    • ๆฌŠ้™้Œฏ่ชคๅฐŽ่‡ดๆœๅ‹™็„กๆณ•ๅฏซ log:
      ๆชขๆŸฅ logrotate ็š„ create ่จญๅฎš(mode / owner / group),่ˆ‡ service ไฝฟ็”จ่€…ๆ˜ฏๅฆไธ€่‡ด。
    • logrotate ๅŸท่กŒ้Œฏ่ชค:
      journalctl -u logrotate.service -xe
      ้€้Ž journal ๆŸฅ่ฉณ็ดฐ้Œฏ่ชค่จŠๆฏ。

    ไน、ๅฏฆๆˆฐๆƒ…ๅขƒ็ฏ„ไพ‹:Web App / Nginx / Squid

    1️⃣ ่‡ช่ฃฝ Web ๆ‡‰็”จ(Flask / Node.js ็ญ‰)

    • ๆŠŠๆ‡‰็”จ็จ‹ๅผๆ‰€ๆœ‰ stdout/stderr ๅฐŽๅ‘ /var/log/myapp/*.log
    • logrotate ไปฅ size 100M + rotate 10 ็ฎก็†ๅฎน้‡。
    • ็จ‹ๅผๅ…งๅฏฆไฝœๆ”ถๅˆฐ SIGUSR1 ๆ™‚้‡ๆ–ฐ้–‹ๅ•Ÿ log ๆช”。

    2️⃣ Nginx / Apache

    • ้€™้กžๆœๅ‹™้€šๅธธๅทฒๅ…งๅปบ /etc/logrotate.d/nginx / apache2 ่จญๅฎš,ๅฏๅƒ่€ƒๆ—ขๆœ‰ๆ ผๅผ。
    • ่‹ฅๆœ‰ๅคง้‡ vhost,ๅฏๆ”นๆˆ weekly + dateext ๆ–นไพฟๅฐๆ‡‰。
    • ่จ˜ๅพ—็ขบ่ช postrotate ๅ…งๆ˜ฏๅฆๆœ‰ nginx -s reopen ๆˆ– apachectl graceful

    3️⃣ Squid ๆˆ–ๅ…ถไป– Proxy / Cache

    • Squid ๆœƒๆœ‰่‡ชๅทฑ็š„ access.log / cache.log;ๅฏไพ้œ€ๆฑ‚ๆ‹†ๆˆไธๅŒ่ผชๆ›ฟ่ฆๅ‰‡。
    • ้ซ˜ๆต้‡็’ฐๅขƒๅฏๆ”น็”จ size 50M ๆˆ– hourly ็š„ OnCalendar(้…ๅˆ systemd timer)。
    • ่ผชๆ›ฟๅพŒ่จ˜ๅพ—่ฎ“ Squid ๆ”ถๅˆฐ USR1 ่จŠ่™Ÿ้‡ๆ–ฐ้–‹ๅ•Ÿ log(ๆˆ–ไฝฟ็”จๅฅ—ไปถ้ ่จญ่จญๅฎš)。

    ๐Ÿงญ ่กŒๅ‹•ๆธ…ๅ–ฎ:ๅœจ่‡ชๅทฑไธปๆฉŸไธŠ่ฝๅœฐ้€™ๅฅ—ๆต็จ‹

    ✅ ๅปบ็ซ‹ไธ€ๅ€‹ไปฅ systemd ็ฎก็†็š„่‡ช่ฃฝๆœๅ‹™(ExecStart ๅทฒๅฏๆญฃๅธธ้‹ไฝœ)
    ✅ ๅปบ็ซ‹ๅฐˆ็”จ็š„ๆ—ฅ่ชŒ็›ฎ้Œ„:/var/log/myapp,ไธฆ่จญๅฎš้ฉ็•ถๆฌŠ้™
    ✅ ๅœจ service ไธญๅฐ‡่ผธๅ‡บๅฐŽๅ‘ myapp.log / myapp.err.log
    ✅ ๆ’ฐๅฏซ /etc/logrotate.d/myapp,่จญๅฎš่ผชๆ›ฟ้ ป็އ、ไฟ็•™ไปฝๆ•ธ่ˆ‡ๅฃ“็ธฎๆ–นๅผ
    ✅ ไฝฟ็”จ logrotate -d / -f ๆธฌ่ฉฆ่ผชๆ›ฟๆต็จ‹,็ขบ่ชไธๆœƒๅ™ด้Œฏ
    ✅ ่ฆ–ๆƒ…ๆณๅœจ postrotate ไธญๅŠ ๅ…ฅ systemctl kill ๆˆ– restart,็ขบไฟๆœๅ‹™ๆ”นๅฏซๆ–ฐๆช”ๆกˆ
    ✅ ๆชขๆŸฅ systemd timer(logrotate.timer ๆˆ–่‡ช่จ‚ timer)ๆ˜ฏๅฆๆญฃๅธธๅ•Ÿๅ‹•
      

    ๆœ€ๅพŒๆ›ดๆ–ฐ:2025-11-16 · ไฝœ่€…:WWFandy

    ๐Ÿ”— ๅˆ†ไบซ้€™็ฏ‡ LINE Facebook X

    ๆฒ’ๆœ‰็•™่จ€:

    ๅผต่ฒผ็•™่จ€

    ๅญ—็ดš