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

๐Ÿง Linux Crontab ใจใ‚ทใ‚นใƒ†ใƒ ใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒชใƒณใ‚ฐๅฎŒๅ…จใ‚ฌใ‚คใƒ‰:cron / systemd-timer ๅฎŸ่ทตใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซ

    ๐Ÿง Linux Crontab ใจใ‚ทใ‚นใƒ†ใƒ ใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒชใƒณใ‚ฐๅฎŒๅ…จใ‚ฌใ‚คใƒ‰:cron / systemd-timer ๅฎŸ่ทตใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซ

    Linux ใฎใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒชใƒณใ‚ฐๆฉŸ่ƒฝใฏ、ใ‚ตใƒผใƒใƒผ้‹็”จ・ใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—・ใƒญใ‚ฐ็ฎก็†・ใƒกใƒณใƒ†ใƒŠใƒณใ‚นใฎ่‡ชๅ‹•ๅŒ–ใซๆฌ ใ‹ใ›ใชใ„่ฆ็ด ใงใ™。 ๆœฌ่จ˜ไบ‹ใงใฏ crontab、cron ใƒ‡ใƒผใƒขใƒณ、systemd-timer ใฎไป•็ต„ใฟใ‚’ไฝ“็ณป็š„ใซ่งฃ่ชฌใ—、ๅฎŸ้‹็”จใงไฝฟใˆใ‚‹่จญๅฎšไพ‹ใ‚’ใพใจใ‚ใฆใ„ใพใ™。 ๆฏŽๆ—ฅใฎใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—、ใ‚ตใƒผใƒ“ใ‚นใƒ˜ใƒซใ‚นใƒใ‚งใƒƒใ‚ฏ、ใƒญใ‚ฐๅ‰Š้™คใชใฉใฎ่‡ชๅ‹•ๅŒ–ใŒใ‚„ใ•ใ—ใๅฎŸ่ฃ…ใงใใพใ™。

    ๐Ÿ“Œ 1. Cron ใจ Crontab ใฎๆฆ‚่ฆ

    cron ใฏๆŒ‡ๅฎšใ—ใŸๆ™‚ๅˆปใซใ‚ณใƒžใƒณใƒ‰ใ‚„ใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’ๅฎŸ่กŒใ™ใ‚‹ใƒ‡ใƒผใƒขใƒณ、crontab ใฏใใฎ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใงใ™。

    • cron:ใ‚ฟใ‚นใ‚ฏใ‚’ๅฎšๆœŸ็š„ใซๅฎŸ่กŒใ™ใ‚‹ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚ตใƒผใƒ“ใ‚น
    • crontab:ใƒฆใƒผใ‚ถใ”ใจใฎใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒซๅฎš็พฉ
    • ไธปใช่จญๅฎšๅ ดๆ‰€:
      • /etc/crontab
      • /etc/cron.d//etc/cron.hourly/ ใชใฉ
      • crontab -e(ใƒฆใƒผใ‚ถๅฐ‚็”จ่จญๅฎš)

    ๐Ÿ“ 2. Crontab ใฎๅŸบๆœฌๆง‹ๆ–‡(5 ใƒ•ใ‚ฃใƒผใƒซใƒ‰)

    crontab ใฏๆฌกใฎ 5 ใคใฎ้ …็›ฎใงๆง‹ๆˆใ•ใ‚Œใฆใ„ใพใ™。

    # ๅˆ†    ๆ™‚    ๆ—ฅ    ๆœˆ    ๆ›œๆ—ฅ
    *     *     *     *      *    ใ‚ณใƒžใƒณใƒ‰
    
    ้ …็›ฎๅ€ค่ชฌๆ˜Ž
    ๅˆ†0–59ไฝ•ๅˆ†ใซๅฎŸ่กŒใ™ใ‚‹ใ‹
    ๆ™‚0–23ไฝ•ๆ™‚ใซๅฎŸ่กŒใ™ใ‚‹ใ‹(24 ๆ™‚้–“ๅˆถ)
    ๆ—ฅ1–31ๆœˆใฎไฝ•ๆ—ฅใ‹
    ๆœˆ1–12ๆœˆ
    ๆ›œๆ—ฅ0–70/7=ๆ—ฅๆ›œๆ—ฅ

    ✔ ใ‚ˆใไฝฟใ†็‰นๆฎŠ่จ˜ๅท

    *   ใ™ในใฆใฎๅ€ค  
    ,   ่ค‡ๆ•ฐๆŒ‡ๅฎš(ไพ‹:1,3,5)  
    -   ็ฏ„ๅ›ฒ(ไพ‹:1-5)  
    /   ใ‚นใƒ†ใƒƒใƒ—(ไพ‹:*/10 = 10 ๅˆ†ใŠใ)
    

    ๐Ÿ“˜ 3. Crontab ๅฎŸ่ทตไพ‹

    1️⃣ ๆฏŽๆ—ฅ 02:00 ใซใƒใƒƒใ‚ฏใ‚ขใƒƒใƒ—ใ‚’ๅฎŸ่กŒ

    0 2 * * * /usr/local/bin/backup.sh
    

    2️⃣ 10 ๅˆ†ใ”ใจใซใ‚ตใƒผใƒ“ใ‚นใƒ˜ใƒซใ‚นใƒใ‚งใƒƒใ‚ฏ

    */10 * * * * systemctl is-active nginx >> /var/log/nginx_health.log
    

    3️⃣ ้€ฑ 1 ๅ›ž、7 ๆ—ฅไปฅไธŠๅ‰ใฎใƒญใ‚ฐใ‚’ๅ‰Š้™ค

    0 3 * * 1 find /var/log -type f -mtime +7 -delete
    

    ๐Ÿ“Œ Cron ใฎๅฎŸ่กŒใƒญใ‚ฐ็ขบ่ช

    journalctl -u cron
    # ใพใŸใฏ
    grep CRON /var/log/syslog
    

    ๐Ÿงฉ 4. systemd-timer:็พไปฃ็š„ใงๅผทๅŠ›ใชใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒฉ

    CentOS 7+、RHEL、Ubuntu 18+ ใชใฉใฎ modern Linux ใงใฏ、 systemd-timer ใ‚’ๅˆฉ็”จใ™ใ‚‹ๆ–นใŒๆŽจๅฅจใ•ใ‚Œใพใ™。 cron ใ‚ˆใ‚Šใ‚‚ใƒญใ‚ฐใŒๆ˜Ž็ขบใง、ไพๅญ˜้–ขไฟ‚ใ‚„ๅ†ๅฎŸ่กŒๅˆถๅพกใŒๅผทๅŒ–ใ•ใ‚ŒใฆใŠใ‚Š、ๅฎ‰ๅฎšๆ€งใ‚‚้ซ˜ใ„ใฎใŒ็‰นๅพดใงใ™。

    ๐Ÿ”ฅ 5. systemd Service + Timer ใฎไฝœๆˆๆ‰‹้ †

    1️⃣ Service ใฎไฝœๆˆ

    # /etc/systemd/system/cleanup.service
    [Unit]
    Description=Cleanup old logs
    
    [Service]
    Type=oneshot
    ExecStart=/usr/local/bin/cleanup.sh
    

    2️⃣ Timer ใฎไฝœๆˆ

    # /etc/systemd/system/cleanup.timer
    [Unit]
    Description=Run cleanup job daily
    
    [Timer]
    OnCalendar=daily
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    

    3️⃣ ๆœ‰ๅŠนๅŒ–ใจ่ตทๅ‹•

    systemctl daemon-reload
    systemctl enable --now cleanup.timer
    systemctl status cleanup.timer
    

    ๐Ÿ“Œ ๅฎŸ่กŒๅฑฅๆญดใฎ็ขบ่ช

    journalctl -u cleanup.service
    systemctl list-timers
    

    ⚖️ 6. Cron ใจ systemd-timer ใฎๆฏ”่ผƒ

    ้ …็›ฎCronsystemd-timer
    ใƒญใ‚ฐsyslog ใฎใฟjournalctl ใง่ฉณ็ดฐๅ–ๅพ—ๅฏ
    ๅฎ‰ๅฎšๆ€งๆจ™ๆบ–ใƒฌใƒ™ใƒซ้ซ˜ใ„、ไพๅญ˜้–ขไฟ‚ๅˆถๅพกใŒๅฏ่ƒฝ
    ่ค‡้›‘ใชใ‚ธใƒงใƒ–็ฎก็†ใ—ใซใใ„ๅฎนๆ˜“・ๆ‹กๅผตๆ€งใŒ้ซ˜ใ„
    ใ‚ทใ‚นใƒ†ใƒ ็ตฑๅˆไฝŽใ„systemd ใจๅฎŒๅ…จ็ตฑๅˆ

    ็ต่ซ–:ๆ–ฐใ—ใ„็’ฐๅขƒใงใฏ systemd-timer ใ‚’ๆŽจๅฅจ。

    ๐Ÿ”ง 7. ใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐ

    1️⃣ Cron ใŒๅฎŸ่กŒใ•ใ‚Œใชใ„

    systemctl status cron
    crontab -l
    grep CRON /var/log/syslog
    

    2️⃣ PATH ใŒๅŽŸๅ› ใงใ‚ณใƒžใƒณใƒ‰ใŒๅ‹•ใ‹ใชใ„

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
    # crontab ใฎๅ…ˆ้ ญใซ่จ˜่ฟฐใ™ใ‚‹
    

    3️⃣ Timer ใŒ่ตทๅ‹•ใ—ใชใ„

    systemctl status yourjob.timer
    systemctl list-timers
    journalctl -u yourjob.service
    

    ๐Ÿ“˜ ใพใจใ‚

    Cron ใจ systemd-timer ใฏ Linux ่‡ชๅ‹•ๅŒ–ใฎไธญๅฟƒ็š„ๆฉŸ่ƒฝใงใ™。 Cron ใฏใ‚ทใƒณใƒ—ใƒซใง่ปฝ้‡ใชใ‚ฟใ‚นใ‚ฏใซ้ฉใ—ใฆใŠใ‚Š、systemd-timer ใฏไพๅญ˜้–ขไฟ‚็ฎก็†・ใƒญใ‚ฐ็ฎก็†・ๅฎ‰ๅฎšๆ€งใŒ้ซ˜ใ、็พไปฃ็š„ใชใ‚ทใ‚นใƒ†ใƒ ใซๆœ€้ฉใงใ™。 ้•ทๆœŸ็š„ใช้‹็”จใ‚„่ค‡้›‘ใช่‡ชๅ‹•ๅŒ–ใ‚’่€ƒใˆใ‚‹ๅ ดๅˆ、systemd-timer ใฎไฝฟ็”จใ‚’ๅผทใๆŽจๅฅจใ—ใพใ™。


    ๐Ÿ”— ้–ข้€ฃ่จ˜ไบ‹

    — WWFandy・Linux ่‡ชๅ‹•ๅŒ–ใƒŽใƒผใƒˆ

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

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

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

    ๅญ—็ดš