๐ง 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–7 | 0/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 ใฎๆฏ่ผ
| ้ ็ฎ | Cron | systemd-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 ใฎไฝฟ็จใๅผทใๆจๅฅจใใพใ。
๐ ้ข้ฃ่จไบ
- Linux systemd ๅพนๅบ่งฃ่ชฌ
- Linux Logrotate ้ซๅบฆใฌใคใ
- Linux ๆจฉ้็ฎก็・ACL ๅฎ่ทตใฌใคใ
- Linux ใตใผใใผๆง็ฏใจใปใญใฅใชใใฃๅผทๅ
— WWFandy・Linux ่ชๅๅใใผใ
ๆฒๆ็่จ:
ๅผต่ฒผ็่จ