เบเบฅเบฒเบชเบชเบดเบเบเบฝเบเบงเปเบฒเบเบปเปเบงเปเบกเบเบเบตเปเบกเบตเบเบงเบฒเบกเบชเบธเบเบเปเปเปเบเปเปเบเบดเปเบ. เปเบเบเปเบงเบเปเบงเบฅเบฒเบเปเบฒเบเปเบฒเบกเบฐเบเบฒเบเปเบซเบผเบปเปเบฒเบเบฑเปเบเบเปเปเบกเบตเบเบฑเบเบเบฑเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเบซเบผเบท Unix, เปเบเปเบเบฑเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเปเบเบกเบทเปเบเบตเปเบฎเบนเปเบขเปเบฒเบเปเบเปเบเบญเบเบงเปเบฒ: cron เบเบฐเบเบดเบเบเบฒเบกเปเบงเบฅเบฒเปเบเบเบเบงเบเปเบเบปเบฒ.
เบเบปเบเบเบฐเปเบซเบเบเบเบญเบเบชเบฒเบเบเปเบฒเบชเบฑเปเบเปเบกเปเบเบเบฑเบเบชเบญเบเบเบธเบเบญเปเบญเบเปเบฅเบฐเบงเบฝเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบ. sed, awk, wc, cut เปเบฅเบฐเปเบเบเบเบฒเบเปเบเบปเปเบฒเบญเบทเปเบเปเปเบกเปเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบ scripts เปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบธเบเปเบกเบทเป. เบเปเบฒเบเบงเบเบซเบผเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒเบเบทเบเบญเบญเบเปเบเบเปเบเบฑเบเบงเบฝเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ cron, เบเปเบฒเบเบปเบเปเบงเบฅเบฒเปเบเบตเบกเบกเบฒเบเบฒเบ 70s.
เบชเปเบฒเบฅเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบเป cron superficially, เปเบเบเบเปเปเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ, เปเบเปเบกเบทเปเบซเบเบถเปเบ, เปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบปเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฅเปเบเบชเบฐเบเบดเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบเปเบเบดเปเบเบขเปเบฒเบเบฅเบฐเบญเบฝเบ. เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบฒเบเบเบตเปเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบฒเบเบปเบ, เปเบเบเบฐเบเบฐเบเบตเปเบเบฝเบเบกเบฑเบเบเปเบญเบเปเบเปเบเบธเปเบเปเบเบตเบเบเบฑเบ POSIX crontab, เบเบปเบงเปเบฅเบทเบญเบ cron เบเบปเปเบเบเปเปเบเบเบฒเบเปเบเบเบขเบฒเบ Linux เบเบตเปเบเบดเบเบปเบกเปเบฅเบฐเปเบเบเบชเปเบฒเบเบเบญเบเบเบฒเบเบชเปเบงเบเบเบญเบเบเบงเบเปเบเบปเบฒ.
เบเปเบฒเบเปเบเป Linux เปเบฅเบฐเปเบฎเบฑเบเบงเบฝเบ cron เบเป? เบเปเบฒเบเบชเบปเบเปเบเปเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบฅเบฐเบเบปเบเปเบ Unix เบเป? เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบขเบนเปเปเบเปเบชเบฑเปเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ!
เปเบเบทเปเบญเปเบ
เบเบปเปเบ เบเบณ เปเบเบตเบเบเบญเบเบเบฐเบเบดเบเบเบฑเบ POSIX crontab เบเบฒเบเบเบตเบเบตเปเบชเบธเบ - Vixie cron 3.0pl1 cron เปเบ Debian เปเบฅเบฐ Ubuntu cronie เปเบ Red Hat, Fedora เปเบฅเบฐ CentOS cronie เปเบ SLES เปเบฅเบฐ openSUSE เบญเบธเบเบฐเบเบญเบ Vixie cron Afterword
เบเบปเปเบ เบเบณ เปเบเบตเบเบเบญเบเบเบฐเบเบดเบเบเบฑเบ
เบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเบฒเบเบเบนเปเปเบเปเบซเบผเบทเบฅเบฐเบเบปเบเปเบเบฑเบเปเบฅเบเบฐเปเบงเบฅเบฒเปเบกเปเบเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเบเบตเปเบเบฑเบเปเบเบเปเบเบเบธเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ. เบเบฑเปเบเบเบฑเปเบ, เบเบฑเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเปเบเปเบฎเบฑเบเบฎเบนเปเปเบเบดเบเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบงเบเปเบเบปเบฒเบงเบฒเบเปเบเบเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบงเบฝเบเบเบฒเบเบเบญเบเบชเบนเบเบเบฒเบเปเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบเบเปเบญเบเบซเบเปเบฒเบเบตเป.
เบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเบฒเบเบเบท Unix เบเบดเบเบเบฒเบกเบเบปเปเบเบเปเบฒเปเบเบตเบเบเบญเบเบเบงเบเปเบเบปเบฒเบเบฑเบเบเบทเบเปเบเบเปเบญเบ Version 7 Unix, เบเบฑเบเบเบฐเบเบฒเปเบเบเบธเบกเบเบต 70 เบเบญเบเบชเบฐเบเบฐเบงเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒเบขเบนเปเบเบตเป Bell Labs, เบฅเบงเบกเบเบฑเบ Ken Thompson เบเบตเปเบกเบตเบเบทเปเบชเบฝเบ. เปเบงเบตเบเบฑเปเบ 7 Unix เบเบฑเบเบฅเบงเบกเปเบญเบปเบฒ cron, เบเบฒเบเบเปเบฅเบดเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบ superuser เปเบเบฑเบเบเบฐเบเปเบฒ.
A cron เบเบตเปเบเบฑเบเบชเบฐเปเบซเบกเบเบปเบเบเบฐเบเบดเปเบกเปเบเปเบเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบ, เปเบเปเบงเบดเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบญเบเบชเบฐเบเบฑเบเบเบปเปเบเบชเบฐเบเบฑเบเปเบกเปเบเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบ: เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบทเปเบเบเบถเปเบเบซเบเบถเปเบเบเบฒเบเบต, เบญเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบกเบตเบซเบเปเบฒเบงเบฝเบเบเบฒเบเปเบเบฅเปเบเบฝเบง (/etc/lib/crontab) เปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบชเปเบฒเบฅเบฑเบ superuser เบงเบฝเบ เบเบฒเบ เบเบตเป เบเบงเบ เปเบเป เบฎเบฑเบ เบเบฒเบ เบเบฐ เบเบด เบเบฑเบ เปเบ เบเบฑเบ เบเบธ เบเบฑเบ .
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบชเบฐเบเบฑเบเบเบฑเบเบเบธเบเบเบญเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเปเบฅเบฐเปเบเบฑเบเบเบฐเปเบซเบเบเปเบเปเบเบทเบเบชเบฐเบซเบเบญเบเปเบซเปเบเบฑเบเบเบธเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบท Unix.
เบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบปเปเบงเปเบเบเบญเบเบฎเบนเบเปเบเบ crontab เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเบเบปเบเบเบฐเปเบซเบเบเปเบเปเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเบกเบฒเบเบเบฐเบเบฒเบเบเบปเปเบเบเปเบเบญเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ Unix - POSIX - เปเบเบเบต 1992, เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบ cron เบเบฒเบเบกเบฒเบเบเบฐเบเบฒเบ de facto เปเบเปเบเบฒเบเปเบเบฑเบเบกเบฒเบเบเบฐเบเบฒเบ de jure.
เปเบเบเบต 1987, Paul Vixie, เปเบเปเบชเปเบฒเบซเบผเบงเบเบเบนเปเปเบเป Unix เบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบฒเบเบเบฐเบซเบเบฒเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบชเปเบฒเบฅเบฑเบ cron, เปเบเปเบญเบญเบเบชเบฐเบเบฑเบเบญเบทเปเบเบเบญเบ daemon เบเบตเปเปเบเปเปเบเบเบฒเบเบเบฑเบเบซเบฒเบเบญเบ cron เปเบเบเบเบฑเปเบเปเบเบตเบกเปเบฅเบฐเบเบฐเบซเบเบฒเบ syntax เบเบญเบเปเบเบฅเปเบเบฒเบเบฐเบฅเบฒเบ.
เปเบเบเบชเบฐเบเบฑเบเบเบตเบชเบฒเบกเบเบญเบ Vixie cron เปเบเปเปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเบเบฐเบเบญเบเบชเบฐเบซเบเบญเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบ POSIX, เบเบญเบเบเบฒเบเบเบฑเปเบ, เปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเบกเบตเปเบเบญเบฐเบเบธเบเบฒเบเปเบเบเปเบชเบฅเบต, เบซเบผเบทเปเบเบเบเบตเปเบเบฐเบเปเปเบกเบตเปเบเบญเบฐเบเบธเบเบฒเบเปเบเป, เบเบปเบเปเบงเบฑเปเบเบเบงเบฒเบกเบเบฒเบเบเบฐเบซเบเบฒเปเบ README: เบเบนเปเบเบฝเบเบเปเปเปเบเปเปเบซเปเบเบฒเบเบเปเปเบฒเบเบฐเบเบฑเบ, เบเบทเปเบเบนเปเบเบฝเบ. เบเปเปโเบชเบฒโเบกเบฒเบโเบเบทเบโเบฅเบปเบโ, เปเบฅเบฐโเปเบเบโเบเบฒเบโเบเบฝเบโเปเบเปโเบชเบฒโเบกเบฒเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฒเบโเบฎเปเบงเบกโเบเบฑเบโเบเบฑเบโเบฅเบฐโเบซเบฑเบโเปเบซเบผเปเบโ. เบเปเปเบเปเบฒเบเบปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเปเบเบฒเบเปเบเบฑเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบซเบผเบฑเบเบเบฒเบเบเบญเบเบเบญเบเปเบงเบเบฃเบตเบเบตเปเบเปเบฒเบฅเบฑเบเปเบเปเบฎเบฑเบเบเบงเบฒเบกเบเบดเบเบปเบกเปเบเบเบธเบกเบเบตเบเบฑเปเบ, เบเบฑเปเบเบเบฑเปเบเบเบฒเบเบเบฒเบเปเบเบเบขเบฒเบ Linux เบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเบเบฒเบเบปเบเปเบเบเบปเปเบ 90s เปเบเปเปเบญเบปเบฒ Vixie cron เปเบเบฑเบเบฅเบฐเบเบปเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบฅเบฐเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบกเบฑเบเปเบเบกเบทเปเบเบตเป.
เปเบเบเบชเบฐเปเบเบฒเบฐ, Red Hat เปเบฅเบฐ SUSE เบเบฑเบเบเบฐเบเบฒเบชเปเบญเบกเบเบญเบ Vixie cron - cronie, เปเบฅเบฐ Debian เปเบฅเบฐ Ubuntu เปเบเปเบชเบฐเบเบฑเบเบเบปเปเบเบชเบฐเบเบฑเบเบเบญเบ Vixie cron เบเบตเปเบกเบตเบซเบผเบฒเบเปเบเปเบ.
เบเปเบฒเบญเบดเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบฎเบนเปเบเบฑเบเบเบฑเบ utility crontab เบเบญเบเบเบนเปเปเบเปเบเบตเปเบญเบฐเบเบดเบเบฒเบเปเบงเปเปเบ POSIX, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบดเปเบเบเบฒเบเบเบฐเบซเบเบฒเบ syntax เบเบตเปเบชเบฐเบซเบเบญเบเปเบซเปเบขเบนเปเปเบ Vixie cron เปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเปเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบ Vixie cron เปเบเบเบฒเบเปเบเบเบขเบฒเบ Linux เบเบตเปเบเบดเบเบปเบก. เปเบฅเบฐเบชเบธเบเบเปเบฒเบ, cherry เปเบ cake เปเบกเปเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเบญเบเบญเบธเบเบฐเบเบญเบ cron daemon.
POSIX crontab
เบเปเบฒ cron เบเบปเปเบเบชเบฐเบเบฑเบเปเบฎเบฑเบเบงเบฝเบเบชเบฐเปเบซเบกเบตเบชเปเบฒเบฅเบฑเบ superuser, เบเบนเปเบเปเบฒเบเบปเบเปเบงเบฅเบฒเบเบตเปเบเบฑเบเบชเบฐเปเบซเบกเบกเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเบฑเบเบงเบฝเบเบเบฒเบเบเบญเบเบเบนเปเปเบเปเบเบปเปเบงเปเบ, เปเบเบดเปเบเบกเบตเบเบงเบฒเบกเบเบญเบเปเบเปเบฅเบฐเบชเบฐเบเบงเบเบเบงเปเบฒ.
Crons เปเบเปเบเบทเบเบชเบฐเบซเบเบญเบเปเบซเปเปเบเบฑเบเบเบธเบเบเบญเบเบชเบญเบเปเบเบเบเบฒเบ: cron daemon เบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบฅเบฐเบเบปเบเบเบฐเปเบซเบเบ crontab เบเบตเปเบกเบตเปเบซเปเบเบฑเบเบเบนเปเปเบเป. เบญเบฑเบเบชเบธเบเบเปเบฒเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบชเบฐเปเบเบฒเบฐเบเบฑเบเบเบนเปเปเบเปเปเบเปเบฅเบฐเบเบปเบเปเบเบฅเบฐเบเบปเบ, เปเบเบเบฐเบเบฐเบเบตเป daemon เปเบเบตเบเบซเบเปเบฒเบงเบฝเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบนเปเปเบเปเปเบฅเบฐเบฅเบฐเบเบปเบ.
ะ
เปเบเบเบเบฒเบเปเบเบซเบฒ crontab utility, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบชเบตเปเบขเปเบฒเบ: เปเบเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบเบญเบเบเบนเปเปเบเปเปเบเบเบฑเบเบเบฒเบเบดเบเบฒเบ, เปเบซเบฅเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเปเบเบฅเป, เบชเบฐเปเบเบเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบเบฒเบเปเบเบเบฐเบเบธเบเบฑเบ, เปเบฅเบฐเบฅเบถเบเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบ. เบเบปเบงเบขเปเบฒเบเบเบญเบเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบ crontab:
crontab -e # ัะตะดะฐะบัะธัะพะฒะฐัั ัะฐะฑะปะธัั ะทะฐะดะฐั
crontab -l # ะฟะพะบะฐะทะฐัั ัะฐะฑะปะธัั ะทะฐะดะฐั
crontab -r # ัะดะฐะปะธัั ัะฐะฑะปะธัั ะทะฐะดะฐั
crontab path/to/file.crontab # ะทะฐะณััะทะธัั ัะฐะฑะปะธัั ะทะฐะดะฐั ะธะท ัะฐะนะปะฐ
เปเบกเบทเปเบญเบเบทเบเปเบญเบตเปเบ crontab -e
เบเบปเบงเปเบเปเปเบเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบกเบฒเบเบเบฐเบเบฒเบเบเบฐเบเบทเบเปเบเป EDITOR
.
เบงเบฝเบโเบเบฒเบโเบเบญเบโเบเบปเบโเปเบญเบโเปเบเปโเบเบทเบโเบญเบฐโเบเบดโเบเบฒเบโเปเบโเบฎเบนเบโเปเบเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ:
# ัััะพะบะธ-ะบะพะผะผะตะฝัะฐัะธะธ ะธะณะฝะพัะธัััััั
#
# ะทะฐะดะฐัะฐ, ะฒัะฟะพะปะฝัะตะผะฐั ะตะถะตะผะธะฝััะฝะพ
* * * * * /path/to/exec -a -b -c
# ะทะฐะดะฐัะฐ, ะฒัะฟะพะปะฝัะตะผะฐั ะฝะฐ 10-ะน ะผะธะฝััะต ะบะฐะถะดะพะณะพ ัะฐัะฐ
10 * * * * /path/to/exec -a -b -c
# ะทะฐะดะฐัะฐ, ะฒัะฟะพะปะฝัะตะผะฐั ะฝะฐ 10-ะน ะผะธะฝััะต ะฒัะพัะพะณะพ ัะฐัะฐ ะบะฐะถะดะพะณะพ ะดะฝั ะธ ะธัะฟะพะปัะทัััะฐั ะฟะตัะตะฝะฐะฟัะฐะฒะปะตะฝะธะต ััะฐะฝะดะฐััะฝะพะณะพ ะฟะพัะพะบะฐ ะฒัะฒะพะดะฐ
10 2 * * * /path/to/exec -a -b -c > /tmp/cron-job-output.log
เบซเปเบฒเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเปเบฒเบญเบดเบเบเบญเบเบเบฒเบเบเบฑเบเบเบถเบ: เบเบฒเบเบต [1..60], เบเบปเปเบงเปเบกเบ [0..23], เบงเบฑเบเบเบญเบเปเบเบทเบญเบ [1..31], เปเบเบทเบญเบ [1..12], เบกเบทเปเบเบญเบเบญเบฒเบเบดเบ [0. .6], เบเปเบญเบเบเบตเป 0 เปเบกเปเบเบงเบฑเบเบญเบฒเบเบดเบ. เบชเบธเบเบเปเบฒเบ, เบซเบปเบ, เบเบฒเบเบชเบฐเบซเบเบฒเบกเปเบกเปเบเปเบชเบฑเปเบเบเบตเปเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเบฒเบเบเบฒเบชเบฒเบเปเบฒเบชเบฑเปเบเบกเบฒเบเบเบฐเบเบฒเบ.
เปเบเบซเปเบฒเบเปเบญเบเบเปเปเบกเบนเบเบเปเบฒเบญเบดเบ, เบเปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบฅเบฐเบเบธเปเบงเปเปเบเบเบเปเบงเบเปเบเบทเปเบญเบเปเบฒเบเบเบธเบ:
# ะทะฐะดะฐัะฐ, ะฒัะฟะพะปะฝัะตะผะฐั ะฒ ะฟะตัะฒัั ะธ ะดะตััััั ะผะธะฝััั ะบะฐะถะดะพะณะพ ัะฐัะฐ
1,10 * * * * /path/to/exec -a -b -c
เบซเบผเบทเบเปเบงเบเบเบตเบเปเบฒเบ:
# ะทะฐะดะฐัะฐ, ะฒัะฟะพะปะฝัะตะผะฐั ะฒ ะบะฐะถะดัั ะธะท ะฟะตัะฒัั
ะดะตัััะธ ะผะธะฝัั ะบะฐะถะดะพะณะพ ัะฐัะฐ
0-9 * * * * /path/to/exec -a -b -c
เบเบนเปเปเบเปเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเปเบฒเบเบปเบเปเบงเบฅเบฒเบงเบฝเบเปเบกเปเบเบเบทเบเบเบงเบเบเบธเบกเปเบ POSIX เปเบเบเปเบเบฅเป cron.allow เปเบฅเบฐ cron.deny, เปเบเบดเปเบเบฅเบฒเบเบเบทเปเบเบนเปเปเบเปเบเบตเปเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ crontab เปเบฅเบฐเบเบนเปเปเบเปเบเบตเปเบเปเปเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเปเบเบเบเบฒเบ, เบเบฒเบกเบฅเปเบฒเบเบฑเบ. เบกเบฒเบเบเบฐเบเบฒเบเบเปเปเปเบเปเบเปเบฒเบเบปเบเบชเบฐเบเบฒเบเบเบตเปเบเบญเบเปเบเบฅเปเปเบซเบผเบปเปเบฒเบเบตเปเปเบเบเบฒเบเปเบเบเปเปเบเบฒเบก.
เบญเบตเบโเบเบฒเบกโเบกเบฒเบโเบเบฐโเบเบฒเบโ, เบขเปเบฒเบโเบซเบเปเบญเบโเบชเบตเปโเบเบปเบงโเปเบโเบชเบฐโเบเบฒเบโเปเบงเบโเบฅเปเบญเบกโเบเปเบญเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเปเบฒเบโเบเบฒเบโเปเบเบตเบโเปเบเบโเบเบฒเบโ:
- HOME - เปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบฎเบทเบญเบเบเบญเบเบเบนเปเปเบเป.
- LOGNAME โ เปเบเบปเปเบฒโเบชเบนเปโเบฅเบฐโเบเบปเบโเบเบนเปโเปเบเป.
- PATH เปเบกเปเบเปเบชเบฑเปเบเบเบฒเบเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเปเบเบทเปเบญเบเปเบเปเบฅเบฐเบเบปเบเบกเบฒเบเบเบฐเบเบฒเบเปเบเป.
- SHELL โ เปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเบเบฒเบเบเบฒเบชเบฒเบเปเบฒเบชเบฑเปเบเบเบตเปเปเบเปเปเบฅเปเบง.
เบเบตเปเบซเบเปเบฒเบชเบฑเบเปเบเบ, POSIX เปเบงเบปเปเบฒเบเปเปเบกเบตเบซเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเปเบญเบเบเบตเปเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบเปเบซเบผเบปเปเบฒเบเบตเปเบกเบฒเบเบฒเบ.
เบเบฒเบเบเบตเบเบตเปเบชเบธเบ - Vixie cron 3.0pl1
เบเบฑเบเบเบฐเบเบธเบฅเบธเบเบเบปเปเบงเปเบเบเบญเบเบเบปเบงเปเบ cron เบเบตเปเบเบดเบเบปเบกเปเบกเปเบ Vixie cron 3.0pl1, เบเปเบฒเบชเบฐเปเบซเบเบตเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฒเบเปเบเบชเบฐเบเบต comp.sources.unix เปเบเบเบต 1992. เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฒเบฅเบฐเบเบฒเบฅเบฑเบเบชเบฐเบเบฐเบเบปเปเบเบเปเบเบญเบเบชเบฐเบเบฑเบเบเบตเปเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก.
Vixie cron เบกเบฒเปเบเบชเบญเบเปเบเบเบเบฒเบ (cron เปเบฅเบฐ crontab). เบเบฒเบกเบเบปเบเบเบฐเบเบด, daemon เปเบกเปเบเบฎเบฑเบเบเบดเบเบเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเปเบฒเบเปเบฅเบฐเปเบฅเปเบเบงเบฝเบเบเบฒเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบเบฒเบเบเบญเบเบฅเบฐเบเบปเบเปเบฅเบฐเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบเบฒเบเบเบญเบเบเบนเปเปเบเปเบชเปเบงเบเบเบธเบเบเบปเบ, เปเบฅเบฐเบเบปเบเบเบฐเปเบซเบเบ crontab เปเบกเปเบเบฎเบฑเบเบเบดเบเบเบญเบเปเบเบเบฒเบเปเบเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบนเปเปเบเป.
เบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเปเบฅเบฐเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ
เบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบเบฒเบ superuser เปเบกเปเบเบขเบนเปเปเบ /etc/crontab. syntax เบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบฅเบฐเบเบปเบเบเบปเบเบเบฑเบเบเบฑเบ syntax เบเบญเบ Vixie cron, เบเบปเบเปเบงเบฑเปเบเบงเปเบฒเบเปเบฅเปเบฒเบเบต VI เปเบเบกเบฑเบเบเบตเปเปเบซเปเปเบซเบฑเบเบเบทเปเบเบญเบเบเบนเปเปเบเปเบเบฒเบเปเบเปเบเบฒเบเปเบเบตเบเบเบปเบงเบเบญเบเบงเบฝเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบง:
# ะะฐะฟััะบะฐะตััั ะตะถะตะผะธะฝััะฝะพ ะพั ะฟะพะปัะทะพะฒะฐัะตะปั vlad
* * * * * vlad /path/to/exec
เบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบเบฒเบเบเบญเบเบเบนเปเปเบเปเบเบปเบเบเบฐเบเบดเปเบกเปเบเบขเบนเปเปเบ /var/cron/tabs/username เปเบฅเบฐเปเบเป syntax เบเบฝเบงเบเบฑเบ. เปเบกเบทเปเบญเบเปเบฒเบเปเบญเบตเปเบเปเบเป crontab utility เปเบเบฑเบเบเบนเปเปเบเป, เปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเปเบเบฅเปเบเบตเปเบเบทเบเบเบฑเบเปเบเป.
เบฅเบฒเบเบเบทเปเบเบนเปเปเบเปเบเบตเปเบกเบตเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบ crontab เปเบกเปเบเบเบทเบเบเบฑเบเบเบฒเบเบขเบนเปเปเบเปเบเบฅเป /var/cron/allow เปเบฅเบฐ /var/cron/deny, เบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบฒเบเปเบชเปเบเบทเปเบเบนเปเปเบเปเปเบเปเบเบงเปเบเบเบเปเบฒเบเบซเบฒเบ.
syntax เบเบฐเบซเบเบฒเบ
เปเบกเบทเปเบญเบเบฝเบเบเบฝเบเบเบฑเบ POSIX crontab, เบเบฒเบเปเบเปเปเบเบเบญเบ Paul Vixey เบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเบเบฑเบเปเบเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเบเปเป syntax เบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบเบฒเบเบเบญเบเบเบปเบเบเบฐเปเบซเบเบ.
syntax เบเบฒเบเบฐเบฅเบฒเบเปเบซเบกเปเปเบเปเบเบฒเบเปเบเบฑเบเบเบตเปเบกเบตเบขเบนเป: เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบกเบทเปเบเบญเบเบญเบฒเบเบดเบเบซเบผเบทเปเบเบทเบญเบเปเบเบเบเบทเป (เบเบฑเบ, เบญเบฑเบเบเบฒเบ, เปเบฅเบฐเบญเบทเปเบเป):
# ะะฐะฟััะบะฐะตััั ะตะถะตะผะธะฝััะฝะพ ะฟะพ ะฟะพะฝะตะดะตะปัะฝะธะบะฐะผ ะธ ะฒัะพัะฝะธะบะฐะผ ะฒ ัะฝะฒะฐัะต
* * * Jan Mon,Tue /path/to/exec
เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเบฅเบฐโเบเบธโเบเบฑเปเบโเบเบญเบโเบเบตเปโเบงเบฝเบโเบเบฒเบโเบเบตเปโเปเบเปโเบฎเบฑเบโเบเบฒเบโเปเบเบตเบโ:
# ะะฐะฟััะบะฐะตััั ั ัะฐะณะพะผ ะฒ ะดะฒะต ะผะธะฝััั
*/2 * * * Mon,Tue /path/to/exec
เบเบฑเปเบเบเบญเบ เปเบฅเบฐเปเบฅเบเบฐเบซเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบชเบปเบกเบเบฑเบเปเบเป:
# ะะฐะฟััะบะฐะตััั ั ัะฐะณะพะผ ะฒ ะดะฒะต ะผะธะฝััั ะฒ ะฟะตัะฒัั
ะดะตัััั ะผะธะฝัั ะบะฐะถะดะพะณะพ ัะฐัะฐ
0-10/2 * * * * /path/to/exec
เบเบฒเบเปเบฅเบทเบญเบเบเบตเปเปเบเบปเปเบฒเปเบเปเบเปเบเบฑเบ syntax เบเบปเบเบเบฐเบเบดเปเบกเปเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ (reboot, เบเบต, เบเบต, เปเบเบทเบญเบ, เบญเบฒเบเบดเบ, เบเบฐเบเปเบฒเบงเบฑเบ, เปเบงเบฅเบฒเบเปเบฝเบเบเบทเบ, เบเบปเปเบงเปเบกเบ):
# ะะฐะฟััะบะฐะตััั ะฟะพัะปะต ะฟะตัะตะทะฐะณััะทะบะธ ัะธััะตะผั
@reboot /exec/on/reboot
# ะะฐะฟััะบะฐะตััั ัะฐะท ะฒ ะดะตะฝั
@daily /exec/daily
# ะะฐะฟััะบะฐะตััั ัะฐะท ะฒ ัะฐั
@hourly /exec/daily
เบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบฐเบเบดเบเบฑเบเบงเบฝเบเบเบฒเบ
Vixie cron เบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเปเบเปเปเบเป.
เบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก USER, LOGNAME เปเบฅเบฐ HOME เบเปเปเบเบฝเบเปเบเปเบชเบฐเบซเบเบญเบเปเบซเปเปเบเบ daemon, เปเบเปเบเบทเบเปเบญเบปเบฒเบกเบฒเบเบฒเบเปเบเบฅเป.
เบเบฒเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก (เปเบเบเบชเบฐเปเบเบฒเบฐ SHELL เปเบฅเบฐ HOME) เปเบกเปเบเปเบเปเปเบเบ cron เบเบปเบงเบกเบฑเบเปเบญเบเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบ. เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเปเบเป bash เปเบเบ sh เบกเบฒเบเบเบฐเบเบฒเบเปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเบงเบฝเบเบเบฒเบเบเบตเปเบเปเบฒเบซเบเบปเบเปเบญเบเบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒ:
SHELL=/bin/bash
HOME=/tmp/
# exec ะฑัะดะตั ะทะฐะฟััะตะฝ bash-ะตะผ ะฒ /tmp/
* * * * * /path/to/exec
เปเบเบเบตเปเบชเบธเบ, เบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฑเบเบซเบกเบปเบเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเปเบเบเบฒเบเบฐเบฅเบฒเบ (เปเบเปเปเบเบ cron เบซเบผเบทเบเปเบญเบเบเบฒเบเปเบเบเบเบฐเบเบงเบเบเบฒเบ) เบเบฐเบเบทเบเบชเบปเปเบเบเบฑเบเบงเบฝเบเบเบฒเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบ.
เปเบเบทเปเบญเปเบเปเปเบเปเบเบฅเป, crontab เปเบเปเบเบปเบงเปเบเปเปเบเบเบตเปเบฅเบฐเบเบธเปเบงเปเปเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก VISUAL เบซเบผเบท EDITOR. เบเปเบฒเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเป crontab เบเบทเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเปเปเบเปเบเปเบฒเบเบปเบเบเบปเบงเปเบเปเบซเบผเบปเปเบฒเบเบตเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ "/usr/ucb/vi" เบเบทเบเบเปเบฒเปเบเป (ucb เปเบกเปเบเบญเบฒเบเบเบฐเปเบเบฑเบเบกเบฐเบซเบฒเบงเบดเบเบฐเบเบฒเปเบฅเบเบฒเบฅเบดเบเปเปเบเบ, Berkeley).
cron เปเบ Debian เปเบฅเบฐ Ubuntu
เบเบฑเบเบเบฑเบเบเบฐเบเบฒ Debian เปเบฅเบฐเบเบฒเบเปเบเปเบเบฐเบเบฒเบเบญเบฐเบเบธเบเบฑเบเปเบเปเบเปเบญเบเบญเบญเบเบกเบฒ
เบชเบฑเบเปเบเบเปเบซเบฑเบเบซเบเปเบญเบ, เปเบเปเบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเปเบซเบฑเบเปเบเปเบเบฑเบเปเบเบเบเบฐเบเบญเบเบกเบตเบชเบฐเบเบฒเบเบเบตเปเบเบญเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบฐเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบ.
เบเบฒเบเบฐเบฅเบฒเบเบเบนเปเปเบเปเปเบ Debian เปเบกเปเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบต /var/spool/cron/crontabs, เบเบฒเบเบฐเบฅเบฒเบเบฅเบฐเบเบปเบเปเบกเปเบเบเบฑเบเบกเบตเบขเบนเป - เปเบ /etc/crontab. เบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบเบชเบฐเปเบเบฒเบฐเบเบญเบเปเบเบฑเบเปเบเบฑเบ Debian เปเบกเปเบเบเบทเบเบเบฑเบเปเบชเปเปเบ /etc/cron.d, เบเบฒเบเบเปเบญเบเบเบตเป cron daemon เบญเปเบฒเบเบเบงเบเบกเบฑเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบเบฒเบเบเบงเบเบเบธเบกเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบนเปเปเบเปเบเบทเบเบเบงเบเบเบธเบกเปเบเบเปเบเบฅเป /etc/cron.allow เปเบฅเบฐ /etc/cron.deny.
เปเบเบฅเปเบฅเบตเปเบกเบเบปเปเบเปเบกเปเบเบเบฑเบ /bin/sh, เปเบเบดเปเบเปเบ Debian เปเบกเปเบเปเบเบฐเบเบตเปเบเบฐเบเบดเบเบฑเบเบเบฒเบก POSIX เบเบฐเบซเบเบฒเบเบเปเบญเบ.
Cron เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเปเบเบชเบฐเบเบฑเบเบซเบฅเปเบฒเบชเบธเบเบเบญเบ Debian เปเบกเปเบเปเบเบตเบเบเบปเบงเบเปเบฒเบ systemd, เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเปเบเบตเบเบเบปเบงเบชเบฒเบกเบฒเบเปเบเบดเปเบเปเบเปเปเบ /lib/systemd/system/cron.service. เบเปเปเบกเบตเบซเบเบฑเบเบเบดเปเบชเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเปเบฅเบดเบเบฒเบ; เบเบฒเบเบเบฑเบเบเบฒเบเบงเบฝเบเบเบตเปเบฅเบฐเบญเบฝเบเบญเปเบญเบเบเบงเปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเบฒเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบตเปเบเบฐเบเบฒเบเปเบเบเบเบปเบเปเบ crontab เบเบญเบเบเบนเปเปเบเปเปเบเปเบฅเบฐเบเบปเบ.
cronie เปเบ RedHat, Fedora เปเบฅเบฐ CentOS
เบเบฒเบเบเบฑเปเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเปเบกเปเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบปเบเบเบฐเบเบด: เบเบฒเบเบฐเบฅเบฒเบเบฅเบฐเบเบปเบเบขเบนเปเปเบ /etc/crontab, packages เบงเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบ /etc/cron.d, เบเบฒเบเบฐเบฅเบฒเบเบเบนเปเปเบเปเปเบเบปเปเบฒเปเบเปเบ /var/spool/cron/crontabs.
daemon เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฒเบเปเบเปเบเบฒเบเบเบงเบเบเบธเบกเบฅเบฐเบเบปเบ, เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบกเปเบ /lib/systemd/system/crond.service.
เบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบเบเบขเบฒเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ Red Hat, /bin/sh เบเบทเบเปเบเปเปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบ, เปเบเบดเปเบเปเบเบฑเบ bash เบกเบฒเบเบเบฐเบเบฒเบ. เบกเบฑเบเบเบงเบเบเบฐเบชเบฑเบเปเบเบเบงเปเบฒเปเบกเบทเปเบญเปเบฅเปเบเบงเบฝเบ cron เบเปเบฒเบ /bin/sh, bash shell เปเบฅเบตเปเบกเบเบปเปเบเปเบเปเบซเบกเบ POSIX-compliant เปเบฅเบฐเบเปเปเปเบเปเบญเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบตเปเบกเปเบเบตเบก, เปเบฅเปเบเบขเบนเปเปเบเปเบซเบกเบเบเบตเปเบเปเปเบกเบตเบเบฒเบเปเบเปเบเบญเบ.
cronie เปเบ SLES เปเบฅเบฐ openSUSE
เบเบฒเบเปเบเบเบขเบฒเบเปเบเบเบฅเบฐเบกเบฑเบ SLES เปเบฅเบฐเบญเบฐเบเบธเบเบฑเบ openSUSE เบเบญเบเบกเบฑเบเปเบเป cronie เบเบฝเบงเบเบฑเบ. daemon เบขเบนเปเบเบตเปเบเบตเปเบเบฑเบเบเบทเบเปเบเบตเบเบเบปเบงเบเบฒเบเปเบเป systemd, เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบฑเปเบเบขเบนเปเปเบ /usr/lib/systemd/system/cron.service. เบเบฒเบเบเบฑเปเบเบเปเบฒ: /etc/crontab, /etc/cron.d, /var/spool/cron/tabs. /bin/sh เปเบกเปเบ bash เบเบฝเบงเบเบฑเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเปเปเบเบเปเปเปเบเปเบเบญเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบเบฒเบก POSIX.
เบญเบธเบเบฐเบเบญเบ Vixie cron
เบฅเบนเบเบซเบฅเบฒเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบกเบเบญเบ cron เบเปเปเปเบเปเบเปเบฝเบเปเบเบเบขเปเบฒเบเปเบซเบเปเบซเบผเบงเบเปเบกเบทเปเบญเบเบฝเบเบเบฑเบ Vixie cron, เปเบเปเบเบฑเบเปเบเปเบฎเบฑเบเบเบธเบเบชเบปเบกเบเบฑเบเปเบซเบกเปเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบปเปเบฒเปเบเบซเบผเบฑเบเบเบฒเบเบเบญเบเปเบเบเบเบฒเบ. เบซเบผเบฒเบเปเบชเปเบงเบเบเบฐเบซเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบทเบเบญเบญเบเปเบเบเบเปเปเบเบต เปเบฅเบฐเบชเบฑเบเบชเบปเบเบฅเบฐเบซเบฑเบ. เบฅเบฐเบซเบฑเบเปเบซเบผเปเบ cron เบเบปเปเบเบชเบฐเบเบฑเบเปเบเบ Paul Vixey เปเบกเปเบเบกเบตเบเบงเบฒเบกเบเบดเบเบเบตเบเบตเปเบเบฐเบญเปเบฒเบ.
เบเบฑเปเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบเบงเบดเปเบเบฒเบฐเบญเบธเบเบฐเบเบญเบ cron เปเบเบเปเบเปเบเบปเบงเบขเปเบฒเบเบเบญเบเปเบเบเบเบฒเบ cron เบเบปเปเบงเปเบเบเบฑเบเบเบฑเบเบชเบญเบเบชเบฒเบเบฒเบเบญเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ - Vixie cron 3.0pl1. เบเปเบญเบเบเบฐเปเบฎเบฑเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบเบเบฒเบเบเบญเบ ifdefs เบเบตเปเบชเบฑเบเบชเบปเบเบเบฒเบเบญเปเบฒเบเปเบฅเบฐเบฅเบปเบเบฅเปเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบฅเบฑเบเบเปเบญเบ.
เบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเบตเบเบตเบชเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบเบญเบญเบเปเบเบฑเบเบซเบผเบฒเบเบเบฑเปเบเบเบญเบ:
- เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบเบฒเบ.
- เปเบเบฑเบเบเปเบฒเปเบฅเบฐเบเบฑเบเบเบธเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบซเบเปเบฒเบงเบฝเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ.
- เปเบฅเปเบ cron loop เบซเบผเบฑเบ.
- เปเบฅเบตเปเบกเปเปเบฒเบงเบฝเบ.
เปเบซเปเปเบเบดเปเบเบขเบนเปเปเบเบเปเบฒเบชเบฑเปเบ.
เบเบฒเบเบฅเบดเปเบฅเบตเปเบก
เปเบกเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเปเบเปเบเบฝเบเบเบฐเบเบงเบเบเบฒเบ, cron เบเบดเบเบเบฑเปเบเบเบปเบงเบเบฑเบเบเบฒเบเบชเบฑเบเบเบฒเบ SIGCHLD เปเบฅเบฐ SIGHUP. เบญเบฑเบเบเปเบฒเบญเบดเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเปเบเบปเปเบฒเบเบฑเบเบเบถเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบชเบดเปเบเบชเบธเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบเปเบญเบ, เบญเบฑเบเบเบตเบชเบญเบเบเบดเบเบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเปเบเบญเบเปเบเบฅเปเบเบฑเบเบเบถเบ:
signal(SIGCHLD, sigchld_handler);
signal(SIGHUP, sighup_handler);
cron daemon เปเบฎเบฑเบเบงเบฝเบเบขเบนเปเบเบปเบเบเบฝเบงเบขเบนเปเปเบเบฅเบฐเบเบปเบ, เบเบฝเบเปเบเปเปเบเบฑเบ superuser เปเบฅเบฐเบเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบต cron เบเบปเปเบเบเป. เบเบฒเบเปเบเบเปเปเปเบเบเบตเปเบชเปเบฒเบเปเบเบฅเปเบฅเบฑเบญเบเบเปเบงเบ PID เบเบญเบเบเบฐเบเบงเบเบเบฒเบ daemon, เปเบซเปเปเบเปเปเบเบงเปเบฒเบเบนเปเปเบเปเบเบทเบเบเปเบญเบเปเบฅเบฐเบเปเบฝเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฐเบเบธเบเบฑเบเปเบเบฑเบเบเบปเปเบเบเป:
acquire_daemonlock(0);
set_cron_uid();
set_cron_cwd();
เปเบชเบฑเปเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบทเบเบเบฑเปเบเปเบงเป, เปเบเบดเปเบเบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเปเบงเบฅเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบฐเบเบงเบเบเบฒเบ:
setenv("PATH", _PATH_DEFPATH, 1);
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฐเบเบงเบเบเบฒเบเปเบกเปเบ "daemonized": เบกเบฑเบเบชเปเบฒเบเบชเปเบฒเปเบเบปเบฒเปเบเบฑเบเบเปเบญเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเปเบเบเบเบฒเบเปเบเบซเบฒ fork เปเบฅเบฐเบเบญเบเบเบฐเบเบธเบกเปเบซเบกเปเปเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบ (เปเบเบซเบฒ setsid). เบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเปเปเปเบกเปเปเบกเปเบเบเปเปเบเปเบฒเปเบเบฑเบ, เปเบฅเบฐเบกเบฑเบเบญเบญเบเบเบฒเบ:
switch (fork()) {
case -1:
/* ะบัะธัะธัะตัะบะฐั ะพัะธะฑะบะฐ ะธ ะทะฐะฒะตััะตะฝะธะต ัะฐะฑะพัั */
exit(0);
break;
case 0:
/* ะดะพัะตัะฝะธะน ะฟัะพัะตัั */
(void) setsid();
break;
default:
/* ัะพะดะธัะตะปััะบะธะน ะฟัะพัะตัั ะทะฐะฒะตััะฐะตั ัะฐะฑะพัั */
_exit(0);
}
เบเบฒเบเบขเบธเบเปเบเบปเบฒเบเบฐเบเบงเบเบเบฒเบเบเปเปเปเบกเปเบเปเบญเบเบเบปเบงเบฅเบฑเบญเบเปเบเปเบเบฅเปเบฅเบฑเบญเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฑเบเบเบธเบ PID เปเบเปเบเบฅเปเปเบซเปเบเบฑเบเปเบเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบตเป, เบเบฒเบเบเปเปเบกเบนเบเบซเบเปเบฒเบงเบฝเบเบเบฐเบเบทเบเบเบทเปเบกเปเบชเปเปเบ:
/* ะฟะพะฒัะพัะฝัะน ะทะฐั
ะฒะฐั ะปะพะบะฐ */
acquire_daemonlock(0);
/* ะะฐะฟะพะปะฝะตะฝะธะต ะะ */
database.head = NULL;
database.tail = NULL;
database.mtime = (time_t) 0;
load_database(&database);
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, cron เบเปเบฒเบเปเบเบชเบนเปเบงเบปเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบปเปเบเบเป. เปเบเปเบเปเบญเบเบเบฑเปเบ, เบกเบฑเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบตเปเบเบดเบเบฒเบฅเบฐเบเบฒเบเบฒเบเปเบซเบผเบเบฅเบฒเบเบเบฒเบเบงเบฝเบ.
เบเบฒเบโเปเบเบฑเบโเบเปเบฒโเปเบฅเบฐโเบเบฒเบโเบเบฑเบโเบเบธเบโเบเบฑเบโเบเบตโเบฅเบฒเบโเบเบฒเบโเบงเบฝเบโเบเบฒเบโ
เบเบฑเบเบเบฑเบ load_database เบฎเบฑเบเบเบดเบเบเบญเบเปเบเบเบฒเบเปเบซเบผเบเบฅเบฒเบเบเบทเปเปเปเบฒเบงเบฝเบ. เบกเบฑเบเบเบงเบเปเบเบดเปเบ crontab เบฅเบฐเบเบปเบเบเบปเปเบเบเปเปเบฅเบฐเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบกเบตเปเบเบฅเปเบเบนเปเปเบเป. เบเปเบฒเปเบเบฅเปเปเบฅเบฐเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเปเปเบเปเบเปเบฝเบเปเบเบ, เบฅเบฒเบเบเบทเปเบซเบเปเบฒเบงเบฝเบเบเบฐเบเปเปเบเบทเบเบญเปเบฒเบเบเบทเบเปเบซเบกเป. เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบ, เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบงเบฝเบเบเบฒเบเปเบซเบกเปเบเบฐเปเบฅเบตเปเบกเบเบปเปเบ.
เบเบฒเบเปเบซเบผเบเปเบเบฅเปเบฅเบฐเบเบปเบเบเบตเปเบกเบตเปเบเบฅเปเบเบดเปเบชเบ เปเบฅเบฐเบเบทเปเบเบฒเบเบฐเบฅเบฒเบ:
/* ะตัะปะธ ัะฐะนะป ัะธััะตะผะฝะพะน ัะฐะฑะปะธัั ะธะทะผะตะฝะธะปัั, ะฟะตัะตัะธััะฒะฐะตะผ */
if (syscron_stat.st_mtime) {
process_crontab("root", "*system*",
SYSCRONTAB, &syscron_stat,
&new_db, old_db);
}
เบเบณเบฅเบฑเบเปเบซเบผเบเบเบฒเบเบฐเบฅเบฒเบเบเบนเปเปเบเปเปเบเบงเบปเบ:
while (NULL != (dp = readdir(dir))) {
char fname[MAXNAMLEN+1],
tabname[MAXNAMLEN+1];
/* ัะธัะฐัั ัะฐะนะปั ั ัะพัะบะพะน ะฝะต ะฝะฐะดะพ*/
if (dp->d_name[0] == '.')
continue;
(void) strcpy(fname, dp->d_name);
sprintf(tabname, CRON_TAB(fname));
process_crontab(fname, fname, tabname,
&statbuf, &new_db, old_db);
}
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบเปเปเบกเบนเบเปเบเบปเปเบฒเบเบทเบเปเบเบเบเบตเปเบเปเบงเบเบญเบฑเบเปเบซเบกเป.
เปเบเบเบปเบงเบขเปเบฒเบเบเปเบฒเบเปเบเบดเบ, เบเบฒเบเปเบเบเบฑเบเบเบฑเบ process_crontab เบเบงเบเบชเบญเบเบงเปเบฒเบเบนเปเปเบเปเบเบตเปเบเบปเบเบเบฑเบเบเบทเปเปเบเบฅเปเบเบฒเบเบฐเบฅเบฒเบเบกเบตเบขเบนเป (เปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบกเบฑเบเปเบเบฑเบ superuser) เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบซเบฒ load_user. เบเปเปเบกเบฒเปเบเปเบญเปเบฒเบเปเบเบฅเปเบเบปเบงเบกเบฑเบเปเบญเบเปเบเบฑเบเปเบเบงเปเบฅเปเบง:
while ((status = load_env(envstr, file)) >= OK) {
switch (status) {
case ERR:
free_user(u);
u = NULL;
goto done;
case FALSE:
e = load_entry(file, NULL, pw, envp);
if (e) {
e->next = u->crontab;
u->crontab = e;
}
break;
case TRUE:
envp = env_set(envp, envstr);
break;
}
}
เปเบเบเบตเปเบเบตเป, เบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเปเบเปเบเบทเบเบเปเบฒเบเบปเบ (เปเบชเบฑเปเบเบเบญเบเปเบเบเบเบญเบก VAR=value) เปเบเบเปเบเปเบเบฑเบเบเบฑเบ load_env / env_set, เบซเบผเบทเบเปเบฒเบญเบฐเบเบดเบเบฒเบเบซเบเปเบฒเบงเบฝเบเบเบทเบเบญเปเบฒเบ (* * * * * /path/to/exec) เปเบเบเปเบเปเบเบฑเบเบเบฑเบ load_entry.
เบซเบเปเบงเบเบเบฒเบเบเบฒเปเบเบปเปเบฒเบเบตเป load_entry เบเบฑเบเบเบทเบเบกเบฒเปเบกเปเบเบงเบฝเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบเบดเปเบเบเบทเบเบเบฑเบเปเบชเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบปเปเบงเปเบเบเบญเบเบงเบฝเบเบเบฒเบ. เบเบฑเบเบเบฑเบเบเบปเบงเบกเบฑเบเปเบญเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบงเบดเปเบเบฒเบฐ verbose เบเบญเบเบฎเบนเบเปเบเบเปเบงเบฅเบฒ, เปเบเปเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเบซเบผเบฒเบเปเบเบเบฒเบเบชเปเบฒเบเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเปเบฅเบฐเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบเปเบเบตเบเบเบปเบง:
/* ะฟะพะปัะทะพะฒะฐัะตะปั ะธ ะณััะฟะฟะฐ ะดะปั ะทะฐะฟััะบะฐ ะทะฐะดะฐัะธ ะฑะตััััั ะธะท passwd*/
e->uid = pw->pw_uid;
e->gid = pw->pw_gid;
/* ัะตะปะป ะฟะพ ัะผะพะปัะฐะฝะธั (/bin/sh), ะตัะปะธ ะฟะพะปัะทะพะฒะฐัะตะปั ะฝะต ัะบะฐะทะฐะป ะดััะณะพะต */
e->envp = env_copy(envp);
if (!env_get("SHELL", e->envp)) {
sprintf(envstr, "SHELL=%s", _PATH_BSHELL);
e->envp = env_set(e->envp, envstr);
}
/* ะดะพะผะฐัะฝัั ะดะธัะตะบัะพัะธั */
if (!env_get("HOME", e->envp)) {
sprintf(envstr, "HOME=%s", pw->pw_dir);
e->envp = env_set(e->envp, envstr);
}
/* ะฟััั ะดะปั ะฟะพะธัะบะฐ ะฟัะพะณัะฐะผะผ */
if (!env_get("PATH", e->envp)) {
sprintf(envstr, "PATH=%s", _PATH_DEFPATH);
e->envp = env_set(e->envp, envstr);
}
/* ะธะผั ะฟะพะปัะทะพะฒัะตะปั ะฒัะตะณะดะฐ ะธะท passwd */
sprintf(envstr, "%s=%s", "LOGNAME", pw->pw_name);
e->envp = env_set(e->envp, envstr);
loop เบเบปเปเบเบเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบงเบฝเบเบเบฒเบเปเบเบเบฐเบเบธเบเบฑเบ.
เบชเบฒเบเบซเบผเบฑเบ
cron เบเบปเปเบเบชเบฐเบเบฑเบเบเบฒเบ Version 7 Unix เปเบฎเบฑเบเบงเบฝเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบ: เบกเบฑเบ re-read the configuration in a loop, launching the tasks of the current minutes as a superuser, and sleep until the start of the next minutes. เบงเบดเบเบตเบเปเบฒเบเปเบเบตเปเปเบเปเบเบทเปเบญเบเปเบเบปเปเบฒเบเปเบญเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบซเบผเบฒเบเปเบเบตเบเปเบ.
เบชเบฐเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเปเบเปเบเบทเบเบชเบฐเปเบซเบเบตเปเบ SysV, เปเบเบดเปเบ daemon เปเบเปเปเบเบเบญเบเบเบปเบเบเปเบงเบฒเบเบฒเบเบตเบเบตเปเปเบเปเบเบตเปเบชเบธเบเบเบตเปเบงเบฝเบเบเบฒเบเปเบเปเบเบทเบเบเปเบฒเบเบปเบ, เบซเบผเบทเบชเปเบฒเบฅเบฑเบ 30 เบเบฒเบเบต. เบกเบตเบเบฒเบเบเปเบฅเบดเปเบเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเปเปเบญเบเบฅเบปเบเบชเบณเบฅเบฑเบเบเบฒเบเบญเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒ เปเบฅเบฐเบเบฒเบเบเบงเบเบชเบญเบเปเปเบฒเบงเบฝเบเบเบทเบเปเปเปเปเบเปเปเบเบเบตเป, เปเบเปเบเบฒเบเบญเบฑเบเปเบเบเบฅเบฒเบเบเบทเปเปเปเบฒเบงเบฝเบเบขเปเบฒเบเบงเปเบญเบเปเบงเปเบเปเบเบฒเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเปเบเปเปเบชเบฐเบเบงเบ.
Vixie cron เบเบฑเบเบเบทเบเปเบเบซเบฒเบเบฒเบเบเบงเบเบชเบญเบเบฅเบฒเบเบเบฒเบเบงเบฝเบเบซเบเบถเปเบเบเบฑเปเบเบเปเปเบเบฒเบเบต, เปเบเบเบเบตเปเบเบเบญเบเบเปเบฒเบเบเบญเบ 80s เบกเบตเบเบฑเบเบเบฐเบเบฒเบเบญเบเบซเบผเบฒเบเปเบเปเบเบทเปเบญเบ Unix เบกเบฒเบเบเบฐเบเบฒเบ:
/* ะฟะตัะฒะธัะฝะฐั ะทะฐะณััะทะบะฐ ะทะฐะดะฐั */
load_database(&database);
/* ะทะฐะฟัััะธัั ะทะฐะดะฐัะธ, ะฟะพััะฐะฒะปะตะฝะฝัะต ะบ ะฒัะฟะพะปะฝะตะฝะธั ะฟะพัะปะต ะฟะตัะตะทะฐะณััะทะบะธ ัะธััะตะผั */
run_reboot_jobs(&database);
/* ัะดะตะปะฐัั TargetTime ะฝะฐัะฐะปะพะผ ะฑะปะธะถะฐะนัะตะน ะผะธะฝััั */
cron_sync();
while (TRUE) {
/* ะฒัะฟะพะปะฝะธัั ะทะฐะดะฐัะธ, ะฟะพัะปะต ัะตะณะพ ัะฟะฐัั ะดะพ TargetTime ั ะฟะพะฟัะฐะฒะบะพะน ะฝะฐ ะฒัะตะผั, ะฟะพััะฐัะตะฝะฝะพะต ะฝะฐ ะทะฐะดะฐัะธ */
cron_sleep();
/* ะฟะตัะตัะธัะฐัั ะบะพะฝัะธะณััะฐัะธั */
load_database(&database);
/* ัะพะฑัะฐัั ะทะฐะดะฐัะธ ะดะปั ะดะฐะฝะฝะพะน ะผะธะฝััั */
cron_tick(&database);
/* ะฟะตัะตะฒะตััะธ TargetTime ะฝะฐ ะฝะฐัะฐะปะพ ัะปะตะดัััะตะน ะผะธะฝััั */
TargetTime += 60;
}
เบเบฑเบเบเบฑเบ cron_sleep เปเบกเปเบเบกเบตเบชเปเบงเบเบฎเปเบงเบกเปเบเบเบเบปเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบงเบฝเบ, เปเบเบซเบฒ job_runqueue (เบเบฑเบเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบงเบฝเบ) เปเบฅเบฐ do_command (เบเปเบฒเปเบเบตเบเบเบฒเบเปเบเปเบฅเบฐเบซเบเปเบฒเบงเบฝเบเปเบเปเบฅเบฐเบเบปเบ). เบซเบเปเบฒเบเบตเปเบชเบธเบเบเปเบฒเบเปเบกเปเบเบเบปเบเปเบเบฑเบเบกเบนเบเบเปเบฒเบเบฒเบเบเบงเบเบชเบญเบเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก.
เปเบฅเปเบเปเปเบฒเบงเบฝเบ
เบเบฑเบเบเบฑเบ do_command เบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเปเบเบ Unix เบเบตเปเบเบต, เบเบฑเปเบเปเบกเปเบ, เบกเบฑเบเปเบฎเบฑเบเบเบฒเบเบชเปเบญเบกเปเบเบกเปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบงเบฝเบเปเบเบ asynchronous. เบเบฐโเบเบงเบโเบเบฒเบโเบเปเปโเปเบกเปโเบเบฑเบโเบชเบทเบโเบเปเปโเปเบเบตเบโเบเบฐโเบเบดโเบเบฑเบโเบงเบฝเบโเบเบฒเบโ, เบเบฐโเบเบงเบโเบเบฒเบโเปเบเบฑเบโเบเปเบญเบโเบเบฐโเบเบฝเบกโเบเบฐโเบเบงเบโเบเบฒเบโเบงเบฝเบโเบเบฒเบโ:
switch (fork()) {
case -1:
/*ะฝะต ัะผะพะณะปะธ ะฒัะฟะพะปะฝะธัั fork */
break;
case 0:
/* ะดะพัะตัะฝะธะน ะฟัะพัะตัั: ะฝะฐ ะฒััะบะธะน ัะปััะฐะน ะตัะต ัะฐะท ะฟัะพะฑัะตะผ ะทะฐั
ะฒะฐัะธัั ะณะปะฐะฒะฝัะน ะปะพะบ */
acquire_daemonlock(1);
/* ะฟะตัะตั
ะพะดะธะผ ะบ ัะพัะผะธัะพะฒะฐะฝะธั ะฟัะพัะตััะฐ ะทะฐะดะฐัะธ */
child_process(e, u);
/* ะฟะพ ะทะฐะฒะตััะตะฝะธั ะดะพัะตัะฝะธะน ะฟัะพัะตัั ะทะฐะบะฐะฝัะธะฒะฐะตั ัะฐะฑะพัั */
_exit(OK_EXIT);
break;
default:
/* ัะพะดะธัะตะปััะบะธะน ะฟัะพัะตัั ะฟัะพะดะพะปะถะฐะตั ัะฐะฑะพัั */
break;
}
เบกเบตเปเบซเบเบเบปเบเบซเบผเบฒเบเบขเปเบฒเบเปเบเบเบฐเบเบงเบเบเบฒเบ child_process: เบกเบฑเบเปเบญเบปเบฒเบเบปเบเบเบฐเบฅเบดเบเบกเบฒเบเบเบฐเบเบฒเบเปเบฅเบฐเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ, เปเบเบทเปเบญเบชเบปเปเบเบกเบฑเบเปเบเบซเบฒเปเบกเบฅ (เบเปเบฒเบเบปเบงเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบก MAILTO เบเบทเบเบฅเบฐเบเบธเปเบงเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบงเบฝเบ), เปเบฅเบฐเบชเบธเบเบเปเบฒเบ, เบฅเปเบเปเบฒเบเบปเปเบเบเป. เบเบฐโเบเบงเบโเบเบฒเบโเบเบญเบโเบงเบฝเบโเบเบฒเบโเบเบตเปโเบเบฐโเบชเปเบฒโเปเบฅเบฑเบโ.
เบเบฐเบเบงเบเบเบฒเบเบงเบฝเบเบเบฒเบเปเบกเปเบเบชเปเบฒเบเบเบทเปเบเปเบเบเบชเปเบญเบกเบญเบทเปเบ:
switch (vfork()) {
case -1:
/* ะฟัะธ ะพัะธะฑะบะธ ััะฐะทั ะทะฐะฒะตััะฐะตััั ัะฐะฑะพัะฐ */
exit(ERROR_EXIT);
case 0:
/* ะฟัะพัะตัั-ะฒะฝัะบ ัะพัะผะธััะตั ะฝะพะฒัั ัะตััะธั, ัะตัะผะธะฝะฐะป ะธ ั.ะด.
*/
(void) setsid();
/*
* ะดะฐะปััะต ะผะฝะพะณะพัะปะพะฒะฝะฐั ะฝะฐัััะพะนะบะฐ ะฒัะฒะพะดะฐ ะฟัะพัะตััะฐ, ะพะฟัััะธะผ ะดะปั ะบัะฐัะบะพััะธ
*/
/* ัะผะตะฝะฐ ะดะธัะตะบัะพัะธะธ, ะฟะพะปัะทะพะฒะฐัะตะปั ะธ ะณััะฟะฟั ะฟะพะปัะทะพะฒะฐัะตะปั,
* ัะพ ะตััั ะฟัะพัะตัั ะฑะพะปััะต ะฝะต ััะฟะตัะฟะพะปัะทะพะฒะฐัะตะปััะบะธะน
*/
setgid(e->gid);
setuid(e->uid);
chdir(env_get("HOME", e->envp));
/* ะทะฐะฟััะบ ัะฐะผะพะน ะบะพะผะฐะฝะดั
*/
{
/* ะฟะตัะตะผะตะฝะฝะฐั ะพะบััะถะตะฝะธั SHELL ัะบะฐะทัะฒะฐะตั ะฝะฐ ะธะฝัะตัะฟัะตัะฐัะพั ะดะปั ะทะฐะฟััะบะฐ */
char *shell = env_get("SHELL", e->envp);
/* ะฟัะพัะตัั ะทะฐะฟััะบะฐะตััั ะฑะตะท ะฟะตัะตะดะฐัะธ ะพะบััะถะตะฝะธั ัะพะดะธัะตะปััะบะพะณะพ ะฟัะพัะตััะฐ,
* ัะพ ะตััั ะธะผะตะฝะฝะพ ัะฐะบ, ะบะฐะบ ะพะฟะธัะฐะฝะพ ะฒ ัะฐะฑะปะธัะต ะทะฐะดะฐั ะฟะพะปัะทะพะฒะฐัะตะปั */
execle(shell, shell, "-c", e->cmd, (char *)0, e->envp);
/* ะพัะธะฑะบะฐ โ ะธ ะฟัะพัะตัั ะฝะฐ ะทะฐะฟัััะธะปัั? ะทะฐะฒะตััะตะฝะธะต ัะฐะฑะพัั */
perror("execl");
_exit(ERROR_EXIT);
}
break;
default:
/* ัะฐะผ ะฟัะพัะตัั ะฟัะพะดะพะปะถะฐะตั ัะฐะฑะพัั: ะถะดะตั ะทะฐะฒะตััะตะฝะธั ัะฐะฑะพัั ะธ ะฒัะฒะพะดะฐ */
break;
}
เบเบฑเปเบเปเบกเปเบเบเบทเปเบเบเบฒเบ cron เบเบฑเบเบซเบกเบปเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบฅเบฐเปเบงเบฑเปเบเบเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เบเบฑเบเบเบตเบชเปเบฒเบฅเบฑเบเบเบนเปเปเบเปเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ, เปเบเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบญเบฐเบเบดเบเบฒเบเบชเบดเปเบเบเบตเปเบเบปเปเบเบเป.
Afterword
Cron เปเบเบฑเบเปเบเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเปเบฅเบฐเปเบเบฑเบเบเบฐเปเบซเบเบเบเบตเปเบซเบเปเบฒเบเบฐเบซเบฅเบฒเบเปเบ, เปเบฎเบฑเบเปเบเบเบฐเปเบเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบญเบเปเบฅเบ Unix. เบเบฒเบเบเปเปเปเบเปเปเบฎเบฑเบเบซเบเบฑเบเบเบดเปเบชเบ, เปเบเปเบเบฒเบเปเบเปเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเบฒเบเบขเปเบฒเบเบกเบฐเบซเบฑเบเบชเบฐเบเบฑเบเบซเบผเบฒเบเบชเบดเบเบเบตเปเบฅเปเบง. เบเบฒเบเปเบเปเบฎเบฑเบเบฅเบฐเบซเบฑเบเบชเปเบฒเบฅเบฑเบเบฎเบธเปเบเบเบตเปเบกเบฒเบเปเบญเบกเบเบฑเบ Ubuntu เปเบเปเปเบงเบฅเบฒเบเปเปเปเบเบตเบเบซเบเบถเปเบเบเบปเปเบงเปเบกเบ, เปเบฅเบฐเบเปเบญเบเบกเบตเบเบงเบฒเบกเบกเปเบงเบเบซเบผเบฒเบ! เบเปเบญเบเบซเบงเบฑเบเบงเปเบฒเบเปเบญเบเบชเบฒเบกเบฒเบเปเบเปเบเบเบฑเบเบกเบฑเบเบเบฑเบเบเปเบฒเบ.
เบเปเบญเบเบเปเปเบฎเบนเปเบเปเบฝเบงเบเบฑเบเปเบเบปเปเบฒ, เปเบเปเบเปเบญเบเปเบชเบเปเบเปเบฅเบฑเบเบเปเบญเบเบเบตเปเบฎเบนเปเบงเปเบฒเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก, เปเบเบเบกเบตเปเบเบงเปเบเปเบกเบเบตเปเบเบฐเบชเบฑเบเบชเบปเบเปเบฅเบฐเบเปเปเบกเบตเบเบปเบงเบเบปเบเปเบเบตเบเปเบ, เบเปเปเปเบเปเปเบญเบทเปเบญเบญเปเบฒเบเบงเบเปเบซเปเปเบเปเบเบงเบฒเบกเบเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเปเบเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบ.
เบกเบตเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบกเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบ cron: systemd-timers เบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบฐเบเบฝเบเบฅเบฐเบเบปเบเบเบตเปเบเบฑเบเบเปเบญเบเบเปเบงเบเบเบฒเบเปเบเบดเปเบเบเบฒเบญเบฒเปเบช, fcron เบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเบเบธเบกเบเบฒเบเบเปเบฅเบดเปเบเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเปเบเปเปเบเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ. เปเบเปเบชเปเบงเบเบเบปเบง, crontab เบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบชเบธเบเปเบกเปเบเบเบฝเบเบเปเบชเปเบฒเบฅเบฑเบเบเปเบญเบเบชเบฐเปเบซเบกเบต.
เปเบเบชเบฑเปเบ, เบฎเบฑเบ Unix, เปเบเปเปเบเปเบเบผเบกเบเปเบฒเบเปเปเบฅเบฐเบขเปเบฒเบฅเบทเบกเบญเปเบฒเบ mana เบชเปเบฒเบฅเบฑเบเปเบงเบเบตเบเบญเบเบเปเบฒเบ!
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com