ใ€Linuxใ€‘cron/crontabใฎ่ชญใฟใƒปๆ›ธใๆ–นใƒป่จญๅฎšๆ–นๆณ•

Linuxใฎcronใฎ่ชญใฟใƒปๆ›ธใๆ–นใƒป่จญๅฎšๆ–นๆณ•ใซใคใ„ใฆใพใจใ‚ใพใ—ใŸใ€‚

cronใฎไฝฟใ„ๆ–น

cron(ใ‚ฏใƒญใƒณ)ใฏใ€ๅฎšๆœŸ็š„ใซใ‚ธใƒงใƒ–ใ‚’ๅฎŸ่กŒใ™ใ‚‹ๆฉŸ่ƒฝใงใ™ใ€‚
cronใฏใ€ใ€Œcrondใƒ‡ใƒผใƒขใƒณใ€ใจใ€Œcrontab(ๅฎŸ่กŒๅ†…ๅฎนใŠใ‚ˆใณๅฎŸ่กŒ้ ปๅบฆใ‚’่จ˜่ฟฐใ—ใŸใƒ†ใƒผใƒ–ใƒซ)ใ€ใงๆง‹ๆˆใ•ใ‚Œใพใ™ใ€‚
ใ€Œcrondใƒ‡ใƒผใƒขใƒณใ€ใฏใ‚ทใ‚นใƒ†ใƒ ่ตทๅ‹•ๆ™‚ใซinitใƒ—ใƒญใ‚ปใ‚นใซใ‚ˆใฃใฆ่ตทๅ‹•ใ•ใ‚Œใ€ใใฎๅพŒใฏๅฎšๆœŸ็š„ใซcrontabใ‚’ใƒใ‚งใƒƒใ‚ฏใ—ใ€ไฝ•ใ‚’ๅฎŸ่กŒใ™ใ‚‹ใ‹ๅˆคๆ–ญใ—ใพใ™ใ€‚

ไพ‹ใˆใฐ
ใ€Œ3ๅˆ†้–“ใซ1ๅ›žใ€ใ€‡ใ€‡ใฎใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’่‡ชๅ‹•ใงๅฎŸ่กŒใ™ใ‚‹ใ€
ใ€ŒๆฏŽๆ—ฅ12ๆ™‚ใซใ€ใ€‡ใ€‡ใฎใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’่‡ชๅ‹•ใงๅฎŸ่กŒใ™ใ‚‹ใ€
ใจใ„ใฃใŸใ‚ˆใ†ใซใ€ๅฎŸ่กŒใ™ใ‚‹้ ปๅบฆใ‚’็ดฐใ‹ใ่ชฟๆ•ดใงใใพใ™ใ€‚

cronใฏใ€ๆœ€ใ‚‚็Ÿญใ„้ ปๅบฆใง1ๅˆ†ๆฏŽใซใ‚ธใƒงใƒ–ใ‚’ๅฎŸ่กŒใงใใพใ™ใ€‚
cronใ‚ธใƒงใƒ–ใฎ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใ€Œ/etc/crontabใ€ใฏrootใƒฆใƒผใ‚ถใƒผใฎใฟไฟฎๆญฃๅฏ่ƒฝใงใ™ใ€‚
ใพใŸใ€ใ“ใฎใƒ•ใ‚กใ‚คใƒซใซใฏใ€ไปฅไธ‹ใฎใ‚ˆใ†ใช่กŒใŒ่จ˜่ผ‰ใ•ใ‚Œใฆใ„ใพใ™:

# vi /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user command to be executed

ๆœ€ๅˆใฎ3 ่กŒใฏใ€ใ‚ฟใ‚นใ‚ฏใฎๅฎŸ่กŒ็’ฐๅขƒใ‚’่จญๅฎšใ™ใ‚‹ๅค‰ๆ•ฐใ‚’ๅฎš็พฉใ—ใพใ™ใ€‚

้ …็›ฎ ๆฆ‚่ฆ
SHELL ใ‚ธใƒงใƒ–ใฎๅฎŸ่กŒใซไฝฟ็”จใ™ใ‚‹ใ‚ทใ‚งใƒซ็’ฐๅขƒ๏ผˆไธŠ่จ˜ใฎไพ‹ใงใฏBash ใ‚ทใ‚งใƒซ๏ผ‰
PATH ๅฎŸ่กŒๅฏ่ƒฝใชใƒ—ใƒญใ‚ฐใƒฉใƒ ใธใฎใƒ‘ใ‚น
MAILTO ใƒกใƒผใƒซใงcronใ‚ธใƒงใƒ–ใฎๅ‡บๅŠ›ใ‚’ๅ—ไฟกใ™ใ‚‹ใƒฆใƒผใ‚ถใƒผๅใ€‚ๅฎš็พฉใ•ใ‚Œใฆใ„ใชใ„ๅ ดๅˆ(MAILTO=)ใ€ใƒกใƒผใƒซใฏ้€ไฟกใ•ใ‚Œใพใ›ใ‚“ใ€‚

ๆฎ‹ใ‚Šใฎ่กŒใฏใ€ใ‚นใ‚ฑใ‚ธใƒฅใƒผใƒซใ•ใ‚Œใฆใ„ใ‚‹ใ‚ธใƒงใƒ–ใฎ่จญๅฎšใŒไปฅไธ‹ใฎๆ›ธๅผใง่จ˜่ผ‰ใ—ใฆใ„ใพใ™ใ€‚

ๆ›ธๅผ

minute   hour   day   month   day of week   user   command

ใ€ๅˆ† ๆ™‚ ๆ—ฅ ๆœˆ ๆ›œๆ—ฅ <ๅฎŸ่กŒใ‚ณใƒžใƒณใƒ‰>ใ€‘ใจใชใ‚Šใพใ™ใ€‚

้ …็›ฎ ๆฆ‚่ฆ
minute ๅฎŸ่กŒใ™ใ‚‹ๅˆ†ใ‚’0ใ€œ59ใพใงใฎไปปๆ„ใฎๆ•ดๆ•ฐใงๆŒ‡ๅฎš
hour ๅฎŸ่กŒใ™ใ‚‹ๆ™‚้–“ใ‚’0ใ€œ23ใพใงใฎไปปๆ„ใฎๆ•ดๆ•ฐใงๆŒ‡ๅฎš
day ๅฎŸ่กŒใ™ใ‚‹ๆ—ฅใ‚’1ใ€œ31ใพใงใฎไปปๆ„ใฎๆ•ดๆ•ฐใงๆŒ‡ๅฎš
month ๅฎŸ่กŒใ™ใ‚‹ๆœˆใ‚’1ใ€œ12 ใพใงใฎไปปๆ„ใฎๆ•ดๆ•ฐใงๆŒ‡ๅฎš
day of week ๅฎŸ่กŒใ™ใ‚‹ๆ›œๆ—ฅใ‚’0ใ€œ7 ใพใงใฎไปปๆ„ใฎๆ•ดๆ•ฐใ€‚(0ใจ7ใฏๆ—ฅๆ›œๆ—ฅใ€1ใฏๆœˆๆ›œๆ—ฅใ€2ใฏ็ซๆ›œๆ—ฅใ€3ใฏๆฐดๆ›œๆ—ฅใ€4ใฏๆœจๆ›œๆ—ฅใ€5ใฏ้‡‘ๆ›œๆ—ฅใ€6ใฏๅœŸๆ›œๆ—ฅใ‚’ๆŒ‡ใ™)
user ใ‚ธใƒงใƒ–ใŒๅฎŸ่กŒใ•ใ‚Œใ‚‹ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใฎใƒฆใƒผใ‚ถใƒผๅใ‚’ๆŒ‡ๅฎš
command ๅฎŸ่กŒใ™ใ‚‹ใ‚ณใƒžใƒณใƒ‰
  • ใ‚ขใ‚นใ‚ฟใƒชใ‚นใ‚ฏ (/*)
    • ๅ…จใฆใฎๆœ‰ๅŠนใชๅ€คใ‚’ๆŒ‡ๅฎšใงใใพใ™ใ€‚ไพ‹ใˆใฐใ€dayใซใ‚ขใ‚นใ‚ฟใƒชใ‚นใ‚ฏ (*) ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใจใ€ๆฏŽๆ—ฅๅฎŸ่กŒใ•ใ‚Œใพใ™ใ€‚
  • ใƒใ‚คใƒ•ใƒณ (-)
    • ๆ•ดๆ•ฐใฎ็ฏ„ๅ›ฒใ‚’ๆŒ‡ๅฎšใงใใพใ™ใ€‚ไพ‹ใˆใฐใ€1-3ใฏๆ•ดๆ•ฐ 1ใ€2ใ€3ใ‚’ๆŒ‡ใ—ใพใ™ใ€‚
  • ใ‚ซใƒณใƒž (,)
    • ใ‚ซใƒณใƒž (,) ใงๅŒบๅˆ‡ใ‚‰ใ‚ŒใŸๅ€คใฏใ€ไธ€่ฆงใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚ไพ‹ใˆใฐใ€ใ€Œ1, 3, 4ใ€ใฏใใ‚Œใ‚‰3ใคใฎๅ€คใฎๆ•ดๆ•ฐใ‚’ๆŒ‡ใ—ใพใ™ใ€‚
  • ใ‚นใƒฉใƒƒใ‚ทใƒฅ (/)
    • ใ‚นใƒฉใƒƒใ‚ทใƒฅ (/)ใงใ‚นใƒ†ใƒƒใƒ—ๅ€คใ‚’ๆŒ‡ๅฎšใงใใพใ™ใ€‚็ฏ„ๅ›ฒใฎๅพŒใซใ€Œ/ใ€ใ‚’ไป˜ใ‘ใ‚‹ใจใ€ใใฎ็ฏ„ๅ›ฒๅ†…ใงๆŒ‡ๅฎšใ—ใŸๆ•ดๆ•ฐใฎๅ€คใ‚’ใ‚นใ‚ญใƒƒใƒ—ใงใใพใ™ใ€‚ไพ‹ใˆใฐใ€minuteใงใ€Œ0-59/5ใ€ ใจๆŒ‡ๅฎšใ™ใ‚‹ใจใ€0ใ€œ59ๅˆ†ใฎ้–“ใง5ๅˆ†ใ”ใจใซๅฎŸ่กŒใงใใพใ™ใ€‚
  • ใƒใƒƒใ‚ทใƒฅ่จ˜ๅท (#)
    • ใ‚ณใƒกใƒณใƒˆ่กŒใ€‚

crontabใฎไฝฟใ„ๆ–น

rootไปฅๅค–ใฎใƒฆใƒผใ‚ถใƒผใฏใ€crontabใ‚’ไฝฟ็”จใ—ใฆcronใ‚ฟใ‚นใ‚ฏใ‚’่จญๅฎšใ—ใพใ™ใ€‚
ใƒฆใƒผใ‚ถใƒผใŒๅฎš็พฉใ—ใŸcrontabใ€Œ/var/spool/cron/ใ€ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใซๆ ผ็ดใ•ใ‚Œใพใ™ใ€‚
ใใ—ใฆใ€cronta ใ‚’ไฝœๆˆใ—ใŸใƒฆใƒผใ‚ถใƒผๅใงๅฎŸ่กŒใงใใพใ™ใ€‚crontabใฎไฝฟใ„ๆ–นใฏไปฅไธ‹ใฎใจใŠใ‚Šใงใ™ใ€‚

โ—ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใพใ™ใ€‚

$ crontab -e 

โ—ใ€ŒVISUALใ€ใ‚‚ใ—ใใฏใ€ŒEDITORใ€็’ฐๅขƒๅค‰ๆ•ฐใงๆŒ‡ๅฎšใ•ใ‚Œใฆใ„ใ‚‹ใ‚จใƒ‡ใ‚ฃใ‚ฟใƒผใงcrontabใ‚’็ทจ้›†ใ—ใพใ™ใ€‚

โ— crontabใ‚’ๅค‰ๆ›ดใ—ใฆไฟๅญ˜ใ™ใ‚‹ใจใ€ใ€Œ/var/spool/cron/usernameใ€ใซๆ›ธใ่พผใพใ‚Œใพใ™ใ€‚

โ— ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงcrontabใฎๅ†…ๅฎนใ‚’ไธ€่ฆง่กจ็คบใงใใพใ™ใ€‚

$ crontab -l 

ใ€Œ/etc/cron.d/ใ€ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใซใ€Œ/etc/crontabใ€ใƒ•ใ‚กใ‚คใƒซใจๅŒใ˜ๆง‹ๆ–‡ใฎใƒ•ใ‚กใ‚คใƒซใŒๆ ผ็ดใ•ใ‚Œใฆใ„ใพใ™ใ€‚
ใŸใ ใ—ใ€ใ“ใฎใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชๅ†…ใงใƒ•ใ‚กใ‚คใƒซใฎไฝœๆˆใจๅค‰ๆ›ดใŒใงใใ‚‹ใฎใฏrootใƒฆใƒผใ‚ถใƒผใฎใฟใจใชใ‚Šใพใ™ใ€‚
crontab ใฎใƒ•ใ‚กใ‚คใƒซๅค‰ๆ›ดๅพŒใ€ใƒ‡ใƒผใƒขใƒณใฏๅ†่ตทๅ‹•ใฏไธ่ฆใงใ™ใ€‚

ๆ›ธๅผ

crontabใ€€[ใ‚ชใƒ—ใ‚ทใƒงใƒณ]
ใ‚ชใƒ—ใ‚ทใƒงใƒณ ๆฆ‚่ฆ
-e ็’ฐๅขƒๅค‰ๆ•ฐ VISUAL ใ‚‚ใ—ใใฏ EDITOR ใงๆŒ‡ๅฎšใ•ใ‚Œใฆใ„ใ‚‹ใ‚จใƒ‡ใ‚ฃใ‚ฟใƒผใ‚’ไฝฟใฃใฆใ€็พๅœจใฎ crontab ใ‚’็ทจ้›†ใ™ใ‚‹ใฎใซไฝฟใ‚ใ‚Œใ‚‹ใ€‚็ทจ้›†็ต‚ไบ†ๅพŒใ€ ๅค‰ ๆ›ดใ•ใ‚ŒใŸ crontab ใฏ่‡ชๅ‹•็š„ใซใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚Œใ‚‹ใ€‚
-uใ€€ใƒฆใƒผใ‚ถใƒผ ใฉใฎใƒฆใƒผใ‚ถใŒcrontabใ‚’่จญๅฎšใ™ใ‚‹ใฎใ‹ใ‚’ๆŒ‡ๅฎšใ—ใพใ™ใ€‚็œ็•ฅใ—ใŸๅ ดๅˆใฏcrontabใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใŸใƒฆใƒผใ‚ถใง่จญๅฎšใ•ใ‚Œใพใ™ใ€‚
-l ็พๅœจใฎ crontab ใฎๅ†…ๅฎนใ‚’ๆจ™ๆบ–ๅ‡บๅŠ›ใธ่กจ็คบใ•ใ›ใ‚‹ใ€‚
-r ็พๅœจใฎ crontab ใƒ•ใ‚กใ‚คใƒซใ‚’ๅ‰Š้™คใ™ใ‚‹ใ€‚๏ผˆๅ…จใฆใฎ่จญๅฎšใŒๅ‰Š้™คใ•ใ‚Œใ‚‹๏ผ‰
  1. cron ใ‚ตใƒผใƒ“ใ‚นใฎ่ตทๅ‹•ใจๅœๆญข
    cronใ‚ตใƒผใƒ“ใ‚นใŒๅฎŸ่กŒไธญใ‹ใฉใ†ใ‹ใฏใ€ใ€Œ/sbin/service crond statusใ€ใ‚ณใƒžใƒณใƒ‰ใง็ขบ่ชใงใใพใ™ใ€‚
    ่ตทๅ‹•ใ™ใ‚‹ใซใฏใ€ใ€Œ/sbin/service crond startใ€ใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚
    ๅœๆญขใ™ใ‚‹ใซใฏใ€ใ€Œ/sbin/service crond stopใ€ใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚
    ใ‚ตใƒผใƒ“ใ‚นใฏใƒ–ใƒผใƒˆๆ™‚ใซ่ตทๅ‹•ใ™ใ‚‹ใฎใŒไธ€่ˆฌ็š„ใงใ™ใ€‚

ไฝฟ็”จไพ‹

ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใงcrontabใ‚’่ตทๅ‹•ใ—ใพใ™.

$ crontab -e

tmpใƒ•ใ‚ฉใƒซใƒ€ไปฅไธ‹ใซใ€Œ/tmp/crontab.ใ€‡ใ€‡ใ€ใจใ„ใ†ใƒ•ใ‚กใ‚คใƒซใŒๅ‡บ็พใ™ใ‚‹ใฎใงใ€ใƒ†ใ‚ญใ‚นใƒˆใ‚จใƒ‡ใ‚ฃใ‚ฟใ‚’้–‹ใใ€ๅฎšๆœŸๅฎŸ่กŒใ—ใŸใ„ๆ™‚้–“ใจใใฎใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’ๆ›ธใ่พผใฟ่จญๅฎšใ‚’่กŒใ„ใพใ™ใ€‚

crontabใฎ่จ˜่ผ‰ไพ‹

9ๆ™‚๏ฝž11ๆ™‚ใฎ0ๅˆ†,30ๅˆ†ใซhome/pi/script_a.pyใ‚’ๅฎŸ่กŒใ™ใ‚‹ๅ ดๅˆ

00,30 9-11 * * * python3 home/pi/script_a.py

็ต‚ๆ—ฅ,10ๅˆ†ๆฏŽใซhome/pi/script_a.pyใ‚’ๅฎŸ่กŒใ™ใ‚‹ๅ ดๅˆ

*/10 * * * * python3 home/pi/script_a.py

่ตทๅ‹•ๆ™‚ใซๆฏŽๅ›žๅฎŸ่กŒใ™ใ‚‹ๅ ดๅˆ

@reboot python3 home/pi/script_a.py

โ— ็™ป้Œฒใ•ใ‚Œใฆใ„ใ‚‹cronใ‚’็ขบ่ช

$ crontab -l

้–ข้€ฃ่จ˜ไบ‹

ใ€Linux่ถ…ๅ…ฅ้–€ใ€‘ใ‚ทใ‚นใƒ†ใƒ ใฎๅŸบ็คŽใจใ‚ˆใไฝฟใ†ใ‚ณใƒžใƒณใƒ‰ใชใฉๅพนๅบ•่งฃ่ชฌ
Linuxใ‚ทใ‚นใƒ†ใƒ ใฎๅŸบ็คŽใจใ‚ˆใไฝฟใ†ใ‚ณใƒžใƒณใƒ‰ใชใฉใซใคใ„ใฆๅ…ฅ้–€่€…ๅ‘ใ‘ใซ่งฃ่ชฌใ—ใพใ™ใ€‚
ใ€LinuCใ€‘่ฉฆ้จ“ๅฏพ็ญ–ใจไพ‹้กŒใพใจใ‚
LinuCใฎ่ฉฆ้จ“ๅฏพ็ญ–ใจไพ‹้กŒ(ๅญฆ็ฟ’ใ‚ตใ‚คใƒˆ)ใซใคใ„ใฆใพใจใ‚ใพใ—ใŸใ€‚
LPICใฎ่ฉฆ้จ“ๅฏพ็ญ–ใจไพ‹้กŒใพใจใ‚
LPICใฎ่ฉฆ้จ“ๅฏพ็ญ–ใจไพ‹้กŒ(ๅญฆ็ฟ’ใ‚ตใ‚คใƒˆ)ใซใคใ„ใฆใพใจใ‚ใพใ—ใŸใ€‚
ใ“ใฎ่จ˜ไบ‹ใ‚’ๆ›ธใ„ใŸไบบ
่ฅฟไฝๆŠ€็ ”

ใƒฉใ‚บใƒ™ใƒชใƒผใƒ‘ใ‚คใ‚„VPSใ‚’็”จใ„ใŸLinuxใ‚ตใƒผใƒใƒผๆง‹็ฏ‰ใ‹ใ‚‰้‹็”จๆ–นๆณ•ใชใฉใ€ๅˆๅฟƒ่€…ใ‹ใ‚‰ไธŠ็ดš่€…ใพใงๅน…ๅบƒใ„ใƒฆใƒผใ‚ถใƒผใซๅ‘ใ‘ใŸๆƒ…ๅ ฑใ‚’ๆไพ›ใ—ใฆใ„ใพใ™ใ€‚
่ฉณใ—ใ„ใƒ—ใƒญใƒ•ใ‚ฃใƒผใƒซใ‚„ใŠๅ•ๅˆใ›ใฏใ“ใกใ‚‰ใฎใƒšใƒผใ‚ธใพใงใ€‚
โ‡“Youtubeใ‚„X๏ผˆๆ—งTwitter๏ผ‰ใงใ‚‚ๆƒ…ๅ ฑ็™บไฟกไธญใงใ™๏ผ

่ฅฟไฝๆŠ€็ ”ใ‚’ใƒ•ใ‚ฉใƒญใƒผใ™ใ‚‹
Linuxใ‚ณใƒžใƒณใƒ‰

ใ‚ณใƒกใƒณใƒˆ