เดฒเดฟเดจเด•เตเดธเดฟเดฒเต† เด•เตเดฐเต‹เตบ: เดšเดฐเดฟเดคเตเดฐเด‚, เด‰เดชเดฏเต‹เด—เด‚, เด‰เดชเด•เดฐเดฃเด‚

เดฒเดฟเดจเด•เตเดธเดฟเดฒเต† เด•เตเดฐเต‹เตบ: เดšเดฐเดฟเดคเตเดฐเด‚, เด‰เดชเดฏเต‹เด—เด‚, เด‰เดชเด•เดฐเดฃเด‚

เดธเดจเตเดคเต‹เดทเด•เดฐเดฎเดพเดฏ เดฎเดฃเดฟเด•เตเด•เต‚เดฑเตเด•เตพ เด•เดพเดฃเดฟเดฒเตเดฒเต†เดจเตเดจเต เด•เตเดฒเดพเดธเดฟเด•เต เดŽเดดเตเดคเดฟ. เด† เดตเดจเตเดฏเดฎเดพเดฏ เด•เดพเดฒเดคเตเดคเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตผเดฎเดพเดฐเต‹ เดฏเตเดฃเดฟเด•เตเดธเต‹ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด‡เดจเตเดจเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตผเดฎเดพเตผเด•เตเด•เต เด‰เดฑเดชเตเดชเดพเดฏเตเด‚ เด…เดฑเดฟเดฏเดพเด‚: เด•เตเดฐเต‹เตบ เด…เดตเตผเด•เตเด•เต เดชเด•เดฐเด‚ เดธเดฎเดฏเด‚ เดŸเตเดฐเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด‚.

เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เตพ เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เดฌเดฒเดนเต€เดจเดคเดฏเตเด‚ เดœเต‹เดฒเดฟเดฏเตเดฎเดพเดฃเต. sed, awk, wc, cut เดŽเดจเตเดจเดฟเดตเดฏเตเด‚ เดฎเดฑเตเดฑเต เดชเดดเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเตเด‚ เดŽเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเดฏเดฟเตฝ เดชเดฒเดคเตเด‚ เด•เตเดฐเต‹เดฃเดฟเดจเต เดตเต‡เดฃเตเดŸเดฟ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดณเตเดณเดคเดพเดฃเต, เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ 70-เด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด’เดฐเต เดทเต†เดกเตเดฏเต‚เดณเตผ.

เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เด•เดŸเด•เตเด•เดพเดคเต† เดตเดณเดฐเต†เด•เตเด•เดพเดฒเดฎเดพเดฏเดฟ เดžเดพเตป เด•เตเดฐเต‹เตบ เด‰เดชเดฐเดฟเดชเตเดฒเดตเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฆเดฟเดตเดธเด‚, เด’เดฐเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด’เดฐเต เดชเดฟเดถเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเดชเตเดชเต‹เตพ, เด…เดคเต เดจเดจเตเดจเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เดˆ เดฒเต‡เด–เดจเด‚ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเดคเต เด‡เด™เตเด™เดจเต†เดฏเดพเดฃเต, เด‡เดคเต เดŽเดดเตเดคเตเดฎเตเดชเต‹เตพ, เดœเดจเดชเตเดฐเดฟเดฏ เดฒเดฟเดจเด•เตเดธเต เดตเดฟเดคเดฐเดฃเด™เตเด™เดณเดฟเดฒเต† เดชเตเดฐเดงเดพเดจ เด•เตเดฐเต‹เตบ เด“เดชเตเดทเดจเตเด•เดณเดพเดฏ เดชเต‹เดธเดฟเด•เตเดธเต เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเตเด‚ เด…เดตเดฏเดฟเตฝ เดšเดฟเดฒเดคเดฟเดจเตเดฑเต† เด˜เดŸเดจเดฏเตเด‚ เดŽเดจเดฟเด•เตเด•เต เดชเดฐเดฟเดšเดฟเดคเดฎเดพเดฏเดฟ.

เดจเดฟเด™เตเด™เตพ Linux เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เด•เตเดฐเต‹เตบ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเตเดฃเตเดŸเต‹? Unix-เดฒเต† เดธเดฟเดธเตเดฑเตเดฑเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเดฑเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต‹? เด…เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดตเดดเดฟเดฏเดฟเดฒเดพเดฃเต!

เด‰เดณเตเดณเดŸเด•เตเด•เด‚

เดœเต€เดตเดฟเดตเตผเด—เด™เตเด™เดณเตเดŸเต† เด‰เดคเตเดญเดตเด‚

เดŽเดฒเตเดฒเดพ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเดฟเดฒเตเด‚ เดฏเต‚เดธเตผ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเตเดŸเต† เด†เดจเตเด•เดพเดฒเดฟเด• เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เด’เดฐเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เด†เดตเดถเตเดฏเด•เดคเดฏเดพเดฃเต. เด…เดคเดฟเดจเดพเตฝ, เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เด•เต‡เดจเตเดฆเตเดฐเต€เด•เตƒเดคเดฎเดพเดฏเดฟ เด†เดธเต‚เดคเตเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ เดธเต‡เดตเดจเด™เตเด™เดณเตเดŸเต† เด†เดตเดถเตเดฏเด•เดค เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตผเดฎเดพเตผ เดตเดณเดฐเต†เด•เตเด•เดพเดฒเด‚ เดฎเตเดฎเตเดชเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดžเต.

เดฏเตเดฃเดฟเด•เตโ€Œเดธเต เดชเต‹เดฒเตเดณเตเดณ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพ เด…เดตเดฏเตเดŸเต† เด‰เดคเตเดญเดตเด‚ เดตเต‡เตผเดทเตป 7 เดฏเตเดฃเดฟเด•เตโ€Œเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเต, เด‡เดคเต เด•เดดเดฟเดžเตเดž เดจเต‚เดฑเตเดฑเดพเดฃเตเดŸเดฟเดจเตเดฑเต† 70 เด•เดณเดฟเตฝ เดฌเต†เตฝ เดฒเดพเดฌเดฟเตฝ เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเดคเตเดคเดคเดพเดฃเต, เดชเตเดฐเดถเดธเตเดค เด•เต†เตป เดคเต‹เด‚เดธเตบ เด‰เตพเดชเตเดชเต†เดŸเต†. เดชเดคเดฟเดชเตเดชเต 7 เดฏเตเดฃเดฟเด•เตเดธเดฟเตฝ เด•เตเดฐเต‹เตบ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดชเดคเดฟเดตเดพเดฏเดฟ เดธเต‚เดชเตเดชเตผ เดฏเต‚เดธเตผ เดŸเดพเดธเตเด•เตเด•เตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดธเต‡เดตเดจเด‚.

เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดฎเต‹เดกเต‡เตบ เด•เตเดฐเต‹เตบ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดฏเดฅเดพเตผเดคเตเดฅ เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เด‡เดคเดฟเดฒเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต: เดธเต‡เดตเดจเด‚ เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเตฝ เด’เดฐเดฟเด•เตเด•เตฝ เด‰เดฃเตผเดจเตเดจเต, เด’เดฐเตŠเดฑเตเดฑ เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต (/etc/lib/crontab) เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเดณเตเดณ เด’เดฐเต เดŸเต‡เดฌเดฟเตพ เดตเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด‡เดคเดฟเดจเดพเดฏเดฟ เดจเดฟเตผเดตเตเดตเดนเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดจเดฟเดฒเดตเดฟเดฒเต† เดจเดฟเดฎเดฟเดทเดคเตเดคเดฟเตฝ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดœเต‹เดฒเดฟเด•เตพ เดธเต‚เดชเตเดชเตผ เดฏเต‚เดธเตผ เดšเต†เดฏเตเดฏเตเด•.

เดคเตเดŸเตผเดจเตเดจเต, เดฒเดณเดฟเดคเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดตเตเดฎเดพเดฏ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเด•เตพ เดŽเดฒเตเดฒเดพ เดฏเตเดฃเดฟเด•เตโ€Œเดธเต เดชเต‹เดฒเตเดณเตเดณ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเดฟเดฒเตเด‚ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดคเต.

เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดจเตเดฑเต† เดธเดพเดฎเดพเดจเตเดฏเดตเตฝเด•เตเด•เดฐเดฟเดšเตเดš เดตเดฟเดตเดฐเดฃเด™เตเด™เดณเตเด‚ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดคเดคเตเดตเด™เตเด™เดณเตเด‚ 1992-เตฝ เดฏเตเดฃเดฟเด•เตเดธเต เดชเต‹เดฒเตเดณเตเดณ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดงเดพเดจ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเดพเดฏ POSIX-เตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เด…เด™เตเด™เดจเต† เด’เดฐเต เดกเดฟ เดซเดพเด•เตเดŸเต‹ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด•เตเดฐเต‹เตบ เด’เดฐเต เดกเดฟ เดœเต‚เตผ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเดพเดฏเดฟ เดฎเดพเดฑเดฟ.

1987-เตฝ, เดชเต‹เตพ เดตเดฟเด•เตเดธเดฟ, Unix เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เด•เตเดฐเต‹เดฃเดฟเดจเต‹เดŸเตเดณเตเดณ เด…เดตเดฐเตเดŸเต† เด†เด—เตเดฐเดนเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเตผเดตเต‡ เดจเดŸเดคเตเดคเดฟ, เดกเต†เดฎเดฃเดฟเดจเตเดฑเต† เดฎเดฑเตเดฑเตŠเดฐเต เดชเดคเดฟเดชเตเดชเต เดชเตเดฑเดคเตเดคเดฟเดฑเด•เตเด•เดฟ, เด…เดคเต เดชเดฐเดฎเตเดชเดฐเดพเด—เดค เด•เตเดฐเต‹เดฃเดฟเดจเตเดฑเต† เดšเดฟเดฒ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดŸเต‡เดฌเดฟเตพ เดซเดฏเดฒเตเด•เดณเตเดŸเต† เดตเดพเด•เตเดฏเด˜เดŸเดจ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต.

Vixie เด•เตเดฐเต‹เดฃเดฟเดจเตเดฑเต† เดฎเต‚เดจเตเดจเดพเด‚ เดชเดคเดฟเดชเตเดชเต POSIX เด†เดตเดถเตเดฏเด•เดคเด•เตพ เดจเดฟเดฑเดตเต‡เดฑเตเดฑเดพเตป เดคเตเดŸเด™เตเด™เดฟ, เด•เต‚เดŸเดพเดคเต†, เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเต เด’เดฐเต เดฒเดฟเดฌเดฑเตฝ เดฒเตˆเดธเตปเดธเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ README เดฒเต† เด†เด—เตเดฐเดนเด™เตเด™เตพ เด’เดดเดฟเด•เต† เด’เดฐเต เดฒเตˆเดธเตปเดธเตเด‚ เด‡เดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต: เดฐเดšเดฏเดฟเดคเดพเดตเต เด—เตเดฏเดพเดฐเดฃเตเดŸเดฟ เดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เดฐเดšเดฏเดฟเดคเดพเดตเดฟเดจเตเดฑเต† เดชเต‡เดฐเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เดธเต‹เดดเตเดธเต เด•เต‹เดกเดฟเดจเตŠเดชเตเดชเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดตเดฟเตฝเด•เตเด•เดพเตป เด•เดดเดฟเดฏเต‚. เดˆ เด†เดตเดถเตเดฏเด•เดคเด•เตพ เด† เดตเตผเดทเด™เตเด™เดณเดฟเตฝ เดœเดจเดชเตเดฐเต€เดคเดฟ เดจเต‡เดŸเดฟเดฏ เดธเตเดตเดคเดจเตเดคเตเดฐ เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเดฟเดจเตเดฑเต† เดคเดคเตเดตเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเดคเดพเดฏเดฟ เดฎเดพเดฑเดฟ, เด…เดคเดฟเดจเดพเตฝ 90-เด•เดณเตเดŸเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸ เดšเดฟเดฒ เดชเตเดฐเดงเดพเดจ เดฒเดฟเดจเด•เตโ€Œเดธเต เดตเดฟเดคเดฐเดฃเด™เตเด™เตพ เดตเดฟเด•เตโ€Œเดธเดฟ เด•เตเดฐเต‹เดฃเดฟเดจเต† เดคเด™เตเด™เดณเตเดŸเต† เดธเดฟเดธเตเดฑเตเดฑเด‚ เด’เดจเตเดจเดพเดฏเดฟ เดธเตเดตเต€เด•เดฐเดฟเดšเตเดšเต, เด‡เดจเตเดจเตเด‚ เด…เดคเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตเด‚, Red Hat เด‰เด‚ SUSE เด‰เด‚ Vixie cron - cronie เดฏเตเดŸเต† เด’เดฐเต เดซเต‹เตผเด•เตเด•เต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† Debian เด‰เด‚ Ubuntu เด‰เด‚ Vixie เด•เตเดฐเต‹เดฃเดฟเดจเตเดฑเต† เดฏเดฅเดพเตผเดคเตเดฅ เดชเดคเดฟเดชเตเดชเต เดงเดพเดฐเดพเดณเด‚ เดชเดพเดšเตเดšเตเด•เดณเต‹เดŸเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดฎเตเด•เตเด•เต เด†เดฆเตเดฏเด‚ POSIX-เตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเดฟเดจเต† เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเดพเด‚, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ Vixie เด•เตเดฐเต‹เดฃเดฟเตฝ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเดฟเดจเตเดฑเดพเด•เตเดธเต เดŽเด•เตเดธเตเดฑเตเดฑเตปเดทเดจเตเด•เดณเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏ เดฒเดฟเดจเด•เตเดธเต เดตเดฟเดคเดฐเดฃเด™เตเด™เดณเดฟเตฝ Vixie เด•เตเดฐเต‹เดฃเดฟเดจเตเดฑเต† เดตเตเดฏเดคเดฟเดฏเดพเดจเด™เตเด™เดณเตเดŸเต† เด‰เดชเดฏเต‹เด—เดตเตเด‚ เดจเต‹เด•เตเด•เดพเด‚. เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เด•เต‡เด•เตเด•เดฟเดฒเต† เดšเต†เดฑเดฟ เด•เตเดฐเต‹เตบ เดกเต†เดฎเตบ เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดถเด•เดฒเดจเดฎเดพเดฃเต.

เดชเต‹เดธเดฟเด•เตเดธเต เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเต

เดฏเดฅเดพเตผเดคเตเดฅ เด•เตเดฐเต‹เตบ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดธเต‚เดชเตเดชเตผเด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เด†เดงเตเดจเดฟเด• เดทเต†เดกเตเดฏเต‚เดณเตผเดฎเดพเตผ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เดšเตเดฎเดคเดฒเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเต เด•เต‚เดŸเตเดคเตฝ เดธเตเดฐเด•เตเดทเดฟเดคเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเดฃเต.

เดฐเดฃเตเดŸเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเดฎเดพเดฏเดพเดฃเต เด•เตเดฐเต‹เดฃเตเด•เตพ เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต: เดจเดฟเดฐเดจเตเดคเดฐเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฐเต‹เตบ เดกเต†เดฎเดฃเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เดฒเดญเตเดฏเดฎเดพเดฏ เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเต เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเด‚. เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต† เด“เดฐเต‹ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด•เดฎเดพเดฏเดฟ เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเตเด•เตพ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต‡เดธเดฎเดฏเด‚ เดกเต†เดฎเตบ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต.

ะ’ POSIX เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดกเต†เดฎเดจเตเดฑเต† เดชเต†เดฐเตเดฎเดพเดฑเตเดฑเด‚ เด’เดฐเต เดคเดฐเดคเตเดคเดฟเดฒเตเด‚ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ เด•เต‚เดŸเดพเดคเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด”เดชเดšเดพเดฐเดฟเด•เดฎเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดณเตเดณเต‚ 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-เดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เด‰เดณเตเดณ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต†เดฏเตเด‚ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เด‡เดฒเตเดฒเดพเดคเตเดค เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเต†เดฏเตเด‚ เดฒเดฟเดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดˆ เดซเดฏเดฒเตเด•เดณเตเดŸเต† เดธเตเดฅเดพเดจเด‚ เด’เดฐเต เดคเดฐเดคเตเดคเดฟเดฒเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ.

เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด…เดจเตเดธเดฐเดฟเดšเตเดšเต, เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดค เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เด•เตเดฑเดžเตเดžเดคเต เดจเดพเดฒเต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเต†เด™เตเด•เดฟเดฒเตเด‚ เดจเตฝเด•เดฃเด‚:

  1. เดนเต‹เด‚ - เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เดนเต‹เด‚ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ.
  2. LOGNAME โ€” เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดฒเต‹เด—เดฟเตป.
  3. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเดจเตเดจ เดชเดพเดคเดฏเดพเดฃเต PATH.
  4. เดทเต†เตฝ โ€” เด‰เดชเดฏเต‹เด—เดฟเดšเตเดš เด•เดฎเดพเตปเดกเต เด‡เดจเตเดฑเตผเดชเตเดฐเต†เดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดค.

เดˆ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดŽเดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เดตเดฐเตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต POSIX เด’เดจเตเดจเตเด‚ เดชเดฑเดฏเตเดจเตเดจเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฃเต.

เดฌเต†เดธเตเดฑเตเดฑเต เดธเต†เดฒเตเดฒเตผ - Vixie cron 3.0pl1

3.0-เตฝ comp.sources.unix เดฎเต†เดฏเดฟเดฒเดฟเด‚เด—เต เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเดšเตเดš Vixie cron 1pl1992 เด†เดฃเต เดœเดจเดชเตเดฐเดฟเดฏ เด•เตเดฐเต‹เตบ เดตเต‡เดฐเดฟเดฏเดจเตเดฑเตเด•เดณเตเดŸเต† เดชเตŠเดคเต เดชเต‚เตผเดตเตเดตเดฟเด•เตป. เดˆ เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดžเด™เตเด™เตพ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด‚.

เดตเดฟเด•เตเดธเดฟ เด•เตเดฐเต‹เตบ เดฐเดฃเตเดŸเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเดฟเดฒเดพเดฃเต เดตเดฐเตเดจเตเดจเดคเต (เด•เตเดฐเต‹เตบ, เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเต). เดชเดคเดฟเดตเตเดชเต‹เดฒเต†, เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดตเตเดฏเด•เตเดคเดฟเด—เดค เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดกเต†เดฎเตบ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเดŸเตเดŸเดฟเด•เด•เตพ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด‚ เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเต เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเดพเดฃเต.

เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเตเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เดณเตเด‚

เดธเต‚เดชเตเดชเตผ เดฏเต‚เดธเตผ เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเตพ /etc/crontab-เตฝ เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเดณเดฟเดจเตเดฑเต† เดตเดพเด•เตเดฏเด˜เดŸเดจ เดตเดฟเด•เตเดธเดฟ เด•เตเดฐเต‹เดฃเดฟเดจเตเดฑเต† เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด…เดคเดฟเดฒเต† เด†เดฑเดพเดฎเดคเตเดคเต† เด•เต‹เดณเด‚ เด†เดฐเตเดŸเต† เดชเต‡เดฐเดฟเตฝ เดŸเดพเดธเตโ€Œเด•เต เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเตเดตเต‹ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต† เดชเต‡เดฐเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเตŠเดดเดฟเดšเตเดšเดพเตฝ:

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ะตะถะตะผะธะฝัƒั‚ะฝะพ ะพั‚ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั vlad
* * * * * vlad /path/to/exec

เดธเดพเดงเดพเดฐเดฃ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเตเด•เตพ /var/cron/tabs/username-เตฝ เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเต‡ เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพ เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดพเดฏเดฟ crontab เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เดซเดฏเดฒเตเด•เตพ เด‡เดตเดฏเดพเดฃเต.

crontab-เดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เด‰เดณเตเดณ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเตเด•เตพ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต /var/cron/allow, /var/cron/deny เดŽเดจเตเดจเต€ เดซเดฏเดฒเตเด•เดณเดฟเตฝ เด†เดฃเต, เด…เดตเดฟเดŸเต† เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเดฐเดฟเดฏเดฟเตฝ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดจเดพเดฎเด‚ เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดตเดฟเดชเตเดฒเต€เด•เดฐเดฟเดšเตเดš เดตเดพเด•เตเดฏเด˜เดŸเดจ

เดชเต‹เดธเดฟเด•เตเดธเต เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเตเดชเต‹เตพ, เดชเต‹เตพ เดตเดฟเด•เตเดธเดฟเดฏเตเดŸเต† เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเตฝ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดŸเต† เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเดŸเต† เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเดฟเตฝ เดตเดณเดฐเต† เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฃเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดŸเตเดŸเดฟเด• เดตเดพเด•เตเดฏเด˜เดŸเดจ เดฒเดญเตเดฏเดฎเดพเดฃเต: เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดดเตโ€Œเดšเดฏเดฟเดฒเต† เดฆเดฟเดตเดธเด™เตเด™เดณเต‹ เดฎเดพเดธเด™เตเด™เดณเต‹ เดชเต‡เดฐเต เดชเตเดฐเด•เดพเดฐเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เดคเดฟเด™เตเด•เตพ, เดšเตŠเดตเตเดต, เดฎเตเดคเดฒเดพเดฏเดต):

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ะตะถะตะผะธะฝัƒั‚ะฝะพ ะฟะพ ะฟะพะฝะตะดะตะปัŒะฝะธะบะฐะผ ะธ ะฒั‚ะพั€ะฝะธะบะฐะผ ะฒ ัะฝะฒะฐั€ะต
* * * Jan Mon,Tue /path/to/exec

เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด˜เดŸเตเดŸเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเด‚:

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ั ัˆะฐะณะพะผ ะฒ ะดะฒะต ะผะธะฝัƒั‚ั‹
*/2 * * * Mon,Tue /path/to/exec

เด˜เดŸเตเดŸเด™เตเด™เดณเตเด‚ เด‡เดŸเดตเต‡เดณเด•เดณเตเด‚ เดฎเดฟเดถเตเดฐเดฟเดคเดฎเดพเด•เตเด•เดพเด‚:

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ั ัˆะฐะณะพะผ ะฒ ะดะฒะต ะผะธะฝัƒั‚ั‹ ะฒ ะฟะตั€ะฒั‹ั… ะดะตััั‚ัŒ ะผะธะฝัƒั‚ ะบะฐะถะดะพะณะพ ั‡ะฐัะฐ
0-10/2 * * * * /path/to/exec

เดธเดพเดงเดพเดฐเดฃ เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเตเด•เตเด•เตเดณเตเดณ เด…เดตเดฌเต‹เดงเดœเดจเตเดฏเดฎเดพเดฏ เดฌเดฆเดฒเตเด•เตพ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต (เดฑเต€เดฌเต‚เดŸเตเดŸเต, เดตเดพเตผเดทเดฟเด•เด‚, เดตเดพเตผเดทเดฟเด•เด‚, เดชเตเดฐเดคเดฟเดฎเดพเดธ, เดชเตเดฐเดคเดฟเดตเดพเดฐ, เดฆเดฟเดตเดธเต‡เดจ, เด…เตผเดฆเตเดงเดฐเดพเดคเตเดฐเดฟ, เดฎเดฃเดฟเด•เตเด•เต‚เตผ เดคเต‹เดฑเตเด‚):

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ะฟะพัะปะต ะฟะตั€ะตะทะฐะณั€ัƒะทะบะธ ัะธัั‚ะตะผั‹
@reboot /exec/on/reboot
# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ั€ะฐะท ะฒ ะดะตะฝัŒ
@daily /exec/daily
# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ั€ะฐะท ะฒ ั‡ะฐั
@hourly /exec/daily

เดŸเดพเดธเตเด•เต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดทเตป เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ

เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดŸเต† เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดฎเดพเดฑเตเดฑเดพเตป Vixie เด•เตเดฐเต‹เตบ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ USER, LOGNAME, HOME เดŽเดจเตเดจเดฟเดต เด•เต‡เดตเดฒเด‚ เดกเต†เดฎเตบ เดจเตฝเด•เดฟเดฏเดคเดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต เด’เดฐเต เดซเดฏเดฒเดฟเตฝ เดจเดฟเดจเตเดจเต เดŽเดŸเตเดคเตเดคเดคเดพเดฃเต เดชเดพเดธเตเดธเตเดตเต‡เตผเดกเต. PATH เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ "/usr/bin:/bin" เด†เดฏเตเด‚ SHELL เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ "/bin/sh" เด†เดฏเตเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. LOGNAME เด’เดดเดฟเด•เต†เดฏเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเตฝ เดฎเดพเดฑเตเดฑเดพเดตเตเดจเตเดจเดคเดพเดฃเต.

เดšเดฟเดฒ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ (เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เดทเต†เตฝ, เดนเต‹เด‚ เดŽเดจเตเดจเดฟเดต) เดŸเดพเดธเตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เตเดฐเต‹เตบ เดคเดจเตเดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต sh-เดจเต เดชเด•เดฐเด‚ เดฌเดพเดทเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚:

SHELL=/bin/bash
HOME=/tmp/
# exec ะฑัƒะดะตั‚ ะทะฐะฟัƒั‰ะตะฝ bash-ะตะผ ะฒ /tmp/
* * * * * /path/to/exec

เด†เดคเตเดฏเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ, เดŸเต‡เดฌเดฟเดณเดฟเตฝ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเด‚ (เด•เตเดฐเต‹เตบ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต) เดฑเดฃเตเดฃเดฟเด‚เด—เต เดŸเดพเดธเตเด•เตเด•เดฟเดฒเต‡เด•เตเด•เต เด•เตˆเดฎเดพเดฑเตเด‚.

เดซเดฏเดฒเตเด•เตพ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดตเดฟเดทเตเดตเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดกเดฟเดฑเตเดฑเตผ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดŽเดกเดฟเดฑเตเดฑเตผ crontab เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดš เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดˆ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, "/usr/ucb/vi" เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต (ucb เด’เดฐเตเดชเด•เตเดทเต‡ เด•เดพเดฒเดฟเดซเต‹เตผเดฃเดฟเดฏ เดธเตผเดตเด•เดฒเดพเดถเดพเดฒ, เดฌเต†เตผเด•เตเด•เตโ€Œเดฒเดฟ).

เดกเต†เดฌเดฟเดฏเตป, เด‰เดฌเตเดฃเตเดŸเต เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เด•เตเดฐเต‹เตบ

เดกเต†เดฌเดฟเดฏเตป, เดกเต†เดฑเดฟเดตเต‡เดฑเตเดฑเต€เดตเต เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดทเดจเตเด•เดณเตเดŸเต† เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดชเตเดฑเดคเตเดคเดฟเดฑเด•เตเด•เดฟ เดตเดณเดฐเต† เดชเดฐเดฟเดทเตเด•เดฐเดฟเดšเตเดš เดชเดคเดฟเดชเตเดชเต เดตเดฟเด•เตเดธเดฟ เด•เตเดฐเต‹เตบ เดชเดคเดฟเดชเตเดชเต 3.0pl1. เดŸเต‡เดฌเดฟเตพ เดซเดฏเดฒเตเด•เดณเตเดŸเต† เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเดฟเตฝ เดตเตเดฏเดคเตเดฏเดพเดธเด™เตเด™เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ; เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เต เด‡เดคเต เด’เดฐเต‡ เดตเดฟเด•เตเดธเดฟ เด•เตเดฐเต‹เตบ เด†เดฃเต. เดเดฑเตเดฑเดตเตเด‚ เดตเดฒเดฟเดฏ เดชเตเดคเดฟเดฏ เดซเต€เดšเตเดšเตผ: เดชเดฟเดจเตเดคเตเดฃ เดธเดฟเดธเตโ€Œเดฒเต‹เด—เต, เดŽเดธเตเด‡เดฒเดฟเดจเด•เตเดธเต ะธ PAM.

เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฒเตŠเด•เตเด•เต‡เดทเดจเตเด‚ เดถเตเดฐเดฆเตเดงเดฏเดฟเตฝเดชเตเดชเต†เดŸเดพเดคเตเดคเดคเตเด‚ เดŽเดจเตเดจเดพเตฝ เดฎเต‚เตผเดšเตเดšเดฏเตเดณเตเดณเดคเตเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดกเต†เดฌเดฟเดฏเดจเดฟเดฒเต† เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเดŸเตเดŸเดฟเด•เด•เตพ /var/spool/cron/crontabs เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเดฒเดพเดฃเต เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต, เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเตพ เด‡เดชเตเดชเต‹เดดเตเด‚ เด…เดตเดฟเดŸเต†เดฏเตเดฃเตเดŸเต - /etc/crontab-เตฝ. เดกเต†เดฌเดฟเดฏเตป เดชเดพเด•เตเด•เต‡เดœเต-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเตเด•เตพ /etc/cron.d-เตฝ เดธเตเดฅเดพเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เด•เตเดฐเต‹เตบ เดกเต†เดฎเตบ เด…เดต เดธเตเดตเดฏเดฎเต‡เดต เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด†เด•เตเดธเดธเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต /etc/cron.allow, /etc/cron.deny เดซเดฏเดฒเตเด•เดณเดพเดฃเต.

เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดทเต†เตฝ เด‡เดชเตเดชเต‹เดดเตเด‚ /bin/sh เด†เดฃเต, เดกเต†เดฌเดฟเดฏเดจเดฟเตฝ เด‡เดคเต เด’เดฐเต เดšเต†เดฑเดฟเดฏ POSIX-เด•เด‚เดชเตเดฒเดฏเดจเตเดฑเต เดทเต†เดฒเตเดฒเดพเดฃเต. เดกเดพเดทเต, เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเดคเต† เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเต (เด‡เดจเตเดฑเดฑเดพเด•เตเดŸเต€เดตเต เด…เดฒเตเดฒเดพเดคเตเดค เดฎเต‹เดกเดฟเตฝ).

เดกเต†เดฌเดฟเดฏเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเตฝ เด•เตเดฐเต‹เตบ เดคเดจเตเดจเต† systemd เดตเดดเดฟเดฏเดพเดฃเต เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต, เด•เต‚เดŸเดพเดคเต† เดฒเต‹เดžเตเดšเต เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป /lib/systemd/system/cron.service-เตฝ เด•เดพเดฃเดพเดตเตเดจเตเดจเดคเดพเดฃเต. เดธเต‡เดตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเตฝ เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเตŠเดจเตเดจเตเด‚ เด‡เดฒเตเดฒ; เด“เดฐเต‹ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเดฑเต†เดฏเตเด‚ เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเดฟเตฝ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเตเดฐเด–เตเดฏเดพเดชเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดณเตเดณ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดตเดดเดฟ เด•เต‚เดŸเตเดคเตฝ เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏ เดŸเดพเดธเตโ€Œเด•เต เดฎเดพเดจเต‡เดœเตโ€Œเดฎเต†เดจเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚.

RedHat, Fedora, CentOS เดŽเดจเตเดจเดฟเดตเดฏเดฟเดฒเต† เด•เตเดฐเต‹เดฃเดฟ

เด•เตเดฐเต‹เดฃเดฟ โ€” เดซเต‹เตผเด•เตเด•เต เดตเดฟเด•เตเดธเดฟ เด•เตเดฐเต‹เตบ เดชเดคเดฟเดชเตเดชเต 4.1. เดกเต†เดฌเดฟเดฏเดจเดฟเดฒเต† เดชเต‹เดฒเต†, เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเดฟเตฝ เดฎเดพเดฑเตเดฑเดฎเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ PAM, SELinux เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ, เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, inotify เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดซเดฏเดฒเตเด•เตพ เดŸเตเดฐเดพเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดฎเดฑเตเดฑเต เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดŽเดจเตเดจเดฟเดต เดšเต‡เตผเดคเตเดคเต.

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเดพเดงเดพเดฐเดฃ เดธเตเดฅเดฒเด™เตเด™เดณเดฟเดฒเดพเดฃเต: เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเตพ /etc/crontab-เดฒเดพเดฃเต, เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เด…เดตเดฏเตเดŸเต† เดŸเต‡เดฌเดฟเดณเตเด•เตพ /etc/cron.d-เตฝ เด‡เดŸเตเดจเตเดจเต, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดชเดŸเตเดŸเดฟเด•เด•เตพ /var/spool/cron/crontabs-เตฝ เดชเต‹เด•เตเดจเตเดจเต.

เดกเต†เดฎเตบ systemd เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเดฒเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต, เดธเต‡เดตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป /lib/systemd/system/crond.service เด†เดฃเต.

Red Hat เดชเต‹เดฒเตเดณเตเดณ เดตเดฟเดคเดฐเดฃเด™เตเด™เดณเดฟเตฝ, เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเดชเตเดชเดฟเตฝ เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ /bin/sh เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฌเดพเดทเต เด†เดฃเต. /bin/sh เดตเดดเดฟ เด•เตเดฐเต‹เตบ เดœเต‹เดฒเดฟเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฌเดพเดทเต เดทเต†เตฝ POSIX-เด•เด‚เดชเตเดฒเดฏเดจเตเดฑเต เดฎเต‹เดกเดฟเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดจเต‹เตบ-เด‡เดจเตเดฑเดฑเดพเด•เตเดŸเต€เดตเต เดฎเต‹เดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด…เดงเดฟเด• เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต.

SLES, openSUSE เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เด•เตเดฐเต‹เดฃเดฟ

เดœเตผเดฎเตเดฎเตป เดกเดฟเดธเตเดŸเตเดฐเดฟเดฌเตเดฏเต‚เดทเตป SLES เด‰เด‚ เด…เดคเดฟเดจเตเดฑเต† เดกเต†เดฑเดฟเดตเต‡เดฑเตเดฑเต€เดตเต openSUSE เด‰เด‚ เด’เดฐเต‡ เด•เตเดฐเต‹เดฃเดฟเดฏเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต. เด‡เดตเดฟเดŸเต†เดฏเตเดณเตเดณ เดกเต†เดฎเตบ systemd-เดจเต เด•เต€เดดเดฟเตฝ เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เดธเต‡เดตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป /usr/lib/systemd/system/cron.service-เตฝ เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป: /etc/crontab, /etc/cron.d, /var/spool/cron/tabs. POSIX-เด•เด‚เดชเตเดฒเดฏเดจเตเดฑเต เดจเต‹เตบ-เด‡เดจเตเดฑเดฑเดพเด•เตเดŸเต€เดตเต เดฎเต‹เดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด…เดคเต‡ เดฌเดพเดทเต เด†เดฃเต /bin/sh.

เดตเดฟเด•เตเดธเดฟ เด•เตเดฐเต‹เตบ เด‰เดชเด•เดฐเดฃเด‚

เดตเดฟเด•เตเดธเดฟ เด•เตเดฐเต‹เดฃเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดฎเตเดชเต‹เตพ เด•เตเดฐเต‹เดฃเดฟเดจเตเดฑเต† เด†เดงเตเดจเดฟเด• เดชเดฟเตปเด—เดพเดฎเดฟเด•เตพ เดธเดฎเต‚เดฒเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เดคเดคเตเดตเด™เตเด™เตพ เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เด‡เดชเตเดชเต‹เดดเตเด‚ เดจเต‡เดŸเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดˆ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เดชเดฒเดคเตเด‚ เดฎเต‹เดถเดฎเดพเดฏเดฟ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดคเตเด‚ เด•เต‹เดกเดฟเดจเต† เด†เดถเดฏเด•เตเด•เตเดดเดชเตเดชเดคเตเดคเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเตเดฎเดพเดฃเต. เดชเต‹เตพ เดตเดฟเด•เตเดธเดฟเดฏเตเดŸเต† เดฏเดฅเดพเตผเดคเตเดฅ เด•เตเดฐเต‹เตบ เดธเต‹เดดเตเดธเต เด•เต‹เดกเต เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดธเดจเตเดคเต‹เดทเดฎเตเดฃเตเดŸเต.

เด…เดคเดฟเดจเดพเตฝ, เดตเดฟเด•เดธเดจเดคเตเดคเดฟเดจเตเดฑเต† เดฐเดฃเตเดŸเต เดถเดพเด–เด•เตพเด•เตเด•เตเด‚ เดชเตŠเดคเตเดตเดพเดฏเตเดณเตเดณ เด’เดฐเต เด•เตเดฐเต‹เตบ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตเดฐเต‹เตบ เด‰เดชเด•เดฐเดฃเด‚ เดตเดฟเดถเด•เดฒเดจเด‚ เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต - Vixie cron 3.0pl1. เดตเดพเดฏเดจเดฏเต† เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเด•เตเด•เตเดจเตเดจ ifdefs เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดคเตเด‚ เดšเต†เดฑเดฟเดฏ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดฟเดฏเตเด‚ เดžเดพเตป เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เตเด‚.

เดญเต‚เดคเดคเตเดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเต† เดชเดฒ เด˜เดŸเตเดŸเด™เตเด™เดณเดพเดฏเดฟ เดคเดฟเดฐเดฟเด•เตเด•เดพเด‚:

  1. เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตฝ.
  2. เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸ เดœเต‹เดฒเดฟเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  3. เดชเตเดฐเดงเดพเดจ เด•เตเดฐเต‹เตบ เดฒเต‚เดชเตเดชเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต.
  4. เด’เดฐเต เดŸเดพเดธเตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด•.

เดจเดฎเตเด•เตเด•เต เด…เดตเดฏเต† เด•เตเดฐเดฎเดคเตเดคเดฟเตฝ เดจเต‹เด•เตเด•เดพเด‚.

เดชเตเดฐเดพเดฐเด‚เดญเด‚

เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดชเตเดฐเต‹เดธเดธเตเดธเต เด†เตผเด—เตเดฏเตเดฎเต†เดจเตเดฑเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดš เดถเต‡เดทเด‚, เด•เตเดฐเต‹เตบ SIGCHLD, SIGHUP เดธเดฟเด—เตเดจเตฝ เดนเดพเตปเดกเตโ€Œเดฒเดฑเตเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเต เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเต เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด’เดฐเต เดฒเต‹เด—เต เดŽเตปเดŸเตเดฐเดฟ เดจเดŸเดคเตเดคเตเดจเตเดจเต, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เดฒเต‹เด—เต เดซเดฏเดฒเดฟเดจเตเดฑเต† เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตผ เด…เดŸเดฏเตเด•เตเด•เตเดจเตเดจเต:

signal(SIGCHLD, sigchld_handler);
signal(SIGHUP, sighup_handler);

เด•เตเดฐเต‹เตบ เดกเต†เดฎเตบ เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เด’เดฑเตเดฑเดฏเตโ€Œเด•เตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด’เดฐเต เดธเต‚เดชเตเดชเตผ เดฏเต‚เดธเดฑเดพเดฏเตเด‚ เดชเตเดฐเดงเดพเดจ เด•เตเดฐเต‹เตบ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดฎเดพเดคเตเดฐเด‚. เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เต‹เดณเตเด•เตพ เดกเต†เดฎเตบ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเตเดฑเต† PID เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดฒเต‹เด•เตเด•เต เดซเดฏเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดถเดฐเดฟเดฏเดพเดฃเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด•เดฏเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเต† เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ เดชเตเดฐเดงเดพเดจ เด’เดจเตเดจเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

acquire_daemonlock(0);
set_cron_uid();
set_cron_cwd();

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดชเดพเดค เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚:

setenv("PATH", _PATH_DEFPATH, 1);

เดคเตเดŸเตผเดจเตเดจเต เดชเตเดฐเต‹เดธเดธเตเดธเต โ€œเดกเต†เดฎเต‹เดฃเตˆเดธเตเดกเตโ€ เด†เดฃเต: เด‡เดคเต เดซเต‹เตผเด•เตเด•เต เดตเดฟเดณเดฟเดšเตเดšเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเดŸเต† เด’เดฐเต เดšเตˆเตฝเดกเต เด•เต‹เดชเตเดชเดฟเดฏเตเด‚ เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดธเต†เดทเดจเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต (เดธเต†เดฑเตเดฑเตโ€Œเดธเดฟเดกเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต). เดชเดพเดฐเดจเตเดฑเต เดชเตเดฐเต‹เดธเดธเตเดธเต เด‡เดจเดฟ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด…เดคเต เดชเตเดฑเดคเตเดคเตเด•เดŸเด•เตเด•เตเดจเตเดจเต:

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);

เดคเตเดŸเตผเดจเตเดจเต เด•เตเดฐเต‹เตบ เดชเตเดฐเดงเดพเดจ เดตเตผเด•เตเด•เต เดธเตˆเด•เตเด•เดฟเดณเดฟเดฒเต‡เด•เตเด•เต เดจเต€เด™เตเด™เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เด…เดคเดฟเดจเตเดฎเตเดฎเตเดชเต, เดŸเดพเดธเตโ€Œเด•เต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเต‹เดกเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดจเต‹เด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต.

เดŸเดพเดธเตโ€Œเด•เต เดฒเดฟเดธเตเดฑเตเดฑเต เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เดŸเดพเดธเตเด•เตเด•เตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเด‚ load_database เดซเด‚เด—เตเดทเดจเดพเดฃเต. เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดซเดฏเดฒเตเด•เดณเตเดณเตเดณ เดชเตเดฐเดงเดพเดจ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเตเด‚ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเด‚ เด‡เดคเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเต. เดซเดฏเดฒเตเด•เดณเตเด‚ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเตเด‚ เดฎเดพเดฑเดฟเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดŸเดพเดธเตโ€Œเด•เต เดฒเดฟเดธเตเดฑเตเดฑเต เดตเต€เดฃเตเดŸเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เดฟเดฒเตเดฒ. เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดœเต‹เดฒเดฟเด•เดณเตเดŸเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดฒเดฟเดธเตเดฑเตเดฑเต เดฐเต‚เดชเดชเตเดชเต†เดŸเดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต.

เดชเตเดฐเดคเตเดฏเต‡เด• เดซเดฏเดฒเตเด•เดณเตเด‚ เดชเดŸเตเดŸเดฟเด• เดจเดพเดฎเด™เตเด™เดณเตเด‚ เด‰เดณเตเดณ เด’เดฐเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดซเดฏเตฝ เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต:

/* ะตัะปะธ ั„ะฐะนะป ัะธัั‚ะตะผะฝะพะน ั‚ะฐะฑะปะธั†ั‹ ะธะทะผะตะฝะธะปัั, ะฟะตั€ะตั‡ะธั‚ั‹ะฒะฐะตะผ */
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 เดซเด‚เด—เตโ€Œเดทเตป เด•เต‹เตพ, เดŸเต‡เดฌเดฟเตพ เดซเดฏเดฒเดฟเดจเตเดฑเต† เดชเต‡เดฐเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดจเดฟเดฒเดตเดฟเดฒเตเดฃเตเดŸเต†เดจเตเดจเต เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต (เด…เดคเต เด’เดฐเต เดธเต‚เดชเตเดชเตผ เดฏเต‚เดธเตผ เด…เดฒเตเดฒเดพเดคเตเดค เดชเด•เตเดทเด‚) เดคเตเดŸเตผเดจเตเดจเต 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;
    }
}

เด‡เดตเดฟเดŸเต†, เด’เดจเตเดจเตเด•เดฟเตฝ load_env / env_set เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เดซเต‹เด‚ VAR=เดฎเต‚เดฒเตเดฏเด‚) เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ load_entry เดซเด‚เด—เตโ€Œเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŸเดพเดธเตโ€Œเด•เต เดตเดฟเดตเดฐเดฃเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต (* * * * * /path/to/exec).

เดฒเต‹เดกเต_เดŽเตปเดŸเตเดฐเดฟ เดฑเดฟเดŸเตเดŸเต‡เตบ เดจเตฝเด•เตเดจเตเดจ เดŽเตปเดŸเตเดฐเดฟ เดŽเดจเตเดฑเดฟเดฑเตเดฑเดฟเดฏเดพเดฃเต เดžเด™เตเด™เดณเตเดŸเต† เดŸเดพเดธเตเด•เตเด•เต, เด…เดคเต เดŸเดพเดธเตเด•เตเด•เตเด•เดณเตเดŸเต† เดชเตŠเดคเตเดตเดพเดฏ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดซเด‚เด—เตโ€Œเดทเตป เดคเดจเตเดจเต† เดธเดฎเดฏ เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดจเตเดฑเต† เด’เดฐเต เดตเดพเดšเดพเดฒเดฎเดพเดฏ เดชเดพเดดเตโ€Œเดธเดฟเด‚เด—เต เดจเดŸเดคเตเดคเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดŸเดพเดธเตโ€Œเด•เต เดฒเต‹เดžเตเดšเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดฐเต‚เดชเต€เด•เดฐเดฃเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต:

/* ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒ ะธ ะณั€ัƒะฟะฟะฐ ะดะปั ะทะฐะฟัƒัะบะฐ ะทะฐะดะฐั‡ะธ ะฑะตั€ัƒั‚ัั ะธะท 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);

เดชเตเดฐเดงเดพเดจ เดฒเต‚เดชเตเดชเต เดœเต‹เดฒเดฟเด•เดณเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเตเดฐเดงเดพเดจ เดฒเต‚เดชเตเดชเต

เดชเดคเดฟเดชเตเดชเต 7 Unix-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฏเดฅเดพเตผเดคเตเดฅ เด•เตเดฐเต‹เตบ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดšเต: เด‡เดคเต เด’เดฐเต เดฒเต‚เดชเตเดชเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดตเต€เดฃเตเดŸเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเต† เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดฑเต† เดšเตเดฎเดคเดฒเด•เตพ เด’เดฐเต เดธเต‚เดชเตเดชเตผ เดฏเต‚เดธเดฑเดพเดฏเดฟ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดŸเตเดคเตเดค เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเดจเตเดฑเต† เด†เดฐเด‚เดญเด‚ เดตเดฐเต† เด‰เดฑเด™เตเด™เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต. เดชเดดเดฏ เดฎเต†เดทเต€เดจเตเด•เดณเดฟเดฒเต† เดˆ เดฒเดณเดฟเดคเดฎเดพเดฏ เดธเดฎเต€เดชเดจเดคเตเดคเดฟเดจเต เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดตเดฟเดญเดตเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.

SysV-เตฝ เด’เดฐเต เด‡เดคเดฐ เดชเดคเดฟเดชเตเดชเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเต, เด…เดคเดฟเตฝ เดกเต†เดฎเตบ เด‰เดฑเด™เตเด™เดพเตป เดชเต‹เดฏเดคเต เดŸเดพเดธเตโ€Œเด•เต เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸ เดเดฑเตเดฑเดตเตเด‚ เด…เดŸเตเดคเตเดค เดฎเดฟเดจเดฟเดฑเตเดฑเต เดตเดฐเต† เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ 30 เดฎเดฟเดจเดฟเดฑเตเดฑเต เดตเดฐเต†. เดˆ เดฎเต‹เดกเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดตเต€เดฃเตเดŸเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เด•เตเดฑเดšเตเดšเต เดตเดฟเดญเดตเด™เตเด™เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดŸเตเดŸเตเดณเตเดณเต‚, เดŽเดจเตเดจเดพเตฝ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด…เดธเต—เด•เดฐเตเดฏเดฎเดพเดฏเดฟ.

เดตเดฟเด•เตเดธเดฟ เด•เตเดฐเต‹เตบ เด’เดฐเต เดฎเดฟเดจเดฟเดฑเตเดฑเดฟเตฝ เด’เดฐเดฟเด•เตเด•เตฝ เดŸเดพเดธเตโ€Œเด•เต เดฒเดฟเดธเตเดฑเตเดฑเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เดฟ, เดญเดพเด—เตเดฏเดตเดถเดพเตฝ 80-เด•เดณเตเดŸเต† เด…เดตเดธเดพเดจเดคเตเดคเต‹เดŸเต† เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดฏเตเดฃเดฟเด•เตเดธเต เดฎเต†เดทเต€เดจเตเด•เดณเดฟเตฝ เด•เดพเดฐเตเดฏเดฎเดพเดฏ เด•เต‚เดŸเตเดคเตฝ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต:

/* ะฟะตั€ะฒะธั‡ะฝะฐั ะทะฐะณั€ัƒะทะบะฐ ะทะฐะดะฐั‡ */
load_database(&database);
/* ะทะฐะฟัƒัั‚ะธั‚ัŒ ะทะฐะดะฐั‡ะธ, ะฟะพัั‚ะฐะฒะปะตะฝะฝั‹ะต ะบ ะฒั‹ะฟะพะปะฝะตะฝะธัŽ ะฟะพัะปะต ะฟะตั€ะตะทะฐะณั€ัƒะทะบะธ ัะธัั‚ะตะผั‹ */
run_reboot_jobs(&database);
/* ัะดะตะปะฐั‚ัŒ TargetTime ะฝะฐั‡ะฐะปะพะผ ะฑะปะธะถะฐะนัˆะตะน ะผะธะฝัƒั‚ั‹ */
cron_sync();
while (TRUE) {
    /* ะฒั‹ะฟะพะปะฝะธั‚ัŒ ะทะฐะดะฐั‡ะธ, ะฟะพัะปะต ั‡ะตะณะพ ัะฟะฐั‚ัŒ ะดะพ TargetTime ั ะฟะพะฟั€ะฐะฒะบะพะน ะฝะฐ ะฒั€ะตะผั, ะฟะพั‚ั€ะฐั‡ะตะฝะฝะพะต ะฝะฐ ะทะฐะดะฐั‡ะธ */
    cron_sleep();

    /* ะฟะตั€ะตั‡ะธั‚ะฐั‚ัŒ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธัŽ */
    load_database(&database);

    /* ัะพะฑั€ะฐั‚ัŒ ะทะฐะดะฐั‡ะธ ะดะปั ะดะฐะฝะฝะพะน ะผะธะฝัƒั‚ั‹ */
    cron_tick(&database);

    /* ะฟะตั€ะตะฒะตัั‚ะธ TargetTime ะฝะฐ ะฝะฐั‡ะฐะปะพ ัะปะตะดัƒัŽั‰ะตะน ะผะธะฝัƒั‚ั‹ */
    TargetTime += 60;
}

เด•เตเดฐเต‹เตบ_เดธเตเดฒเต€เดชเตเดชเต เดซเด‚เด—เตโ€Œเดทเตป เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดจเต‡เดฐเดฟเดŸเตเดŸเต เด‰เตพเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, job_runqueue (เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดŽเดฃเตเดฃเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•), do_command (เด“เดฐเต‹ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•) เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เดŽเดจเตเดจเดฟเดต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดตเดธเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดพเดฃเต.

เด’เดฐเต เดŸเดพเดธเตเด•เต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

do_command เดซเด‚เด—เตโ€Œเดทเตป เดจเดฒเตเดฒ เดฏเตเดฃเดฟเด•เตเดธเต เดถเตˆเดฒเดฟเดฏเดฟเดฒเดพเดฃเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเต, เด…เดคเดพเดฏเดคเต, เดŸเดพเดธเตโ€Œเด•เต เด…เดธเดฎเดจเตเดตเดฟเดคเดฎเดพเดฏเดฟ เดจเดฟเตผเดตเดนเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดคเต เด’เดฐเต เดซเต‹เตผเด•เตเด•เต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดฐเด•เตเดทเดพเด•เตผเดคเตƒ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เดคเตเดŸเดฐเตเดจเตเดจเต, เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดŸเดพเดธเตโ€Œเด•เต เดชเตเดฐเต‹เดธเดธเตเดธเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดจเตเดจเต:

switch (fork()) {
case -1:
    /*ะฝะต ัะผะพะณะปะธ ะฒั‹ะฟะพะปะฝะธั‚ัŒ fork */
    break;
case 0:
    /* ะดะพั‡ะตั€ะฝะธะน ะฟั€ะพั†ะตัั: ะฝะฐ ะฒััะบะธะน ัะปัƒั‡ะฐะน ะตั‰ะต ั€ะฐะท ะฟั€ะพะฑัƒะตะผ ะทะฐั…ะฒะฐั‚ะธั‚ัŒ ะณะปะฐะฒะฝั‹ะน ะปะพะบ */
    acquire_daemonlock(1);
    /* ะฟะตั€ะตั…ะพะดะธะผ ะบ ั„ะพั€ะผะธั€ะพะฒะฐะฝะธัŽ ะฟั€ะพั†ะตััะฐ ะทะฐะดะฐั‡ะธ */
    child_process(e, u);
    /* ะฟะพ ะทะฐะฒะตั€ัˆะตะฝะธัŽ ะดะพั‡ะตั€ะฝะธะน ะฟั€ะพั†ะตัั ะทะฐะบะฐะฝั‡ะธะฒะฐะตั‚ ั€ะฐะฑะพั‚ัƒ */
    _exit(OK_EXIT);
    break;
default:
    /* ั€ะพะดะธั‚ะตะปัŒัะบะธะน ะฟั€ะพั†ะตัั ะฟั€ะพะดะพะปะถะฐะตั‚ ั€ะฐะฑะพั‚ัƒ */
    break;
}

เดšเตˆเตฝเดกเต_เดชเตเดฐเต‹เดธเดธเตเดธเดฟเตฝ เดงเดพเดฐเดพเดณเด‚ เดฒเต‹เดœเดฟเด•เต เด‰เดฃเตเดŸเต: เด…เดคเต เดฎเต†เดฏเดฟเดฒเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด”เดŸเตเดŸเตโ€ŒเดชเตเดŸเตเดŸเตเด‚ เดชเดฟเดถเด•เต เดธเตเดŸเตเดฐเต€เดฎเตเด•เดณเตเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจเต (เดŸเดพเดธเตโ€Œเด•เต เดŸเต‡เดฌเดฟเดณเดฟเตฝ 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;
}

เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ เด•เตเดฐเต‹เตบ เด…เดคเดพเดฃเต. เดžเดพเตป เดšเดฟเดฒ เดฐเดธเด•เดฐเดฎเดพเดฏ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด’เดดเดฟเดตเดพเด•เตเด•เดฟ, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเดฟเดฆเต‚เดฐ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพเด•เตเด•เตเดณเตเดณ เด…เด•เตเด•เต—เดฃเตเดŸเดฟเด‚เด—เต, เดชเด•เตเดทเต‡ เดžเดพเตป เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเตเดฏเด‚ เดฐเต‚เดชเดฐเต‡เด– เดจเตฝเด•เดฟ.

Afterword

เดฏเตเดฃเดฟเด•เตเดธเต เดฒเต‹เด•เดคเตเดคเต† เดเดฑเตเดฑเดตเตเด‚ เดฎเดฟเด•เดšเตเดš เดชเดพเดฐเดฎเตเดชเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดš, เด…เดคเดฟเดถเดฏเด•เดฐเดฎเดพเด‚เดตเดฟเดงเด‚ เดฒเดณเดฟเดคเดตเตเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดตเตเดฎเดพเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดพเดฃเต เด•เตเดฐเต‹เตบ. เด…เดตเตพ เด…เดงเดฟเด•เดฎเดพเดฏเดฟ เด’เดจเตเดจเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด‡เดชเตเดชเต‹เตพ เดจเดฟเดฐเดตเดงเดฟ เดชเดคเดฟเดฑเตเดฑเดพเดฃเตเดŸเตเด•เดณเดพเดฏเดฟ เด…เดตเตพ เดคเดจเตเดฑเต† เดœเต‹เดฒเดฟ เด…เดคเตเดญเตเดคเด•เดฐเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‰เดฌเตเดฃเตเดŸเตเดตเดฟเดจเตŠเดชเตเดชเด‚ เดตเดฐเตเดจเตเดจ เดชเดคเดฟเดชเตเดชเดฟเดจเดพเดฏเตเดณเตเดณ เด•เต‹เดกเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เด’เดฐเต เดฎเดฃเดฟเด•เตเด•เต‚เดฑเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดŽเดŸเตเดคเตเดคเดฟเดฒเตเดฒ, เดŽเดจเดฟเด•เตเด•เต เด’เดฐเตเดชเดพเดŸเต เดธเดจเตเดคเต‹เดทเด‚ เดคเต‹เดจเตเดจเดฟ! เด…เดคเต เดจเดฟเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดชเด™เตเด•เตเดตเต†เด•เตเด•เดพเตป เดธเดพเดงเดฟเดšเตเดšเต เดŽเดจเตเดจเต เดžเดพเตป เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดจเดฟเด•เตเด•เต เดจเดฟเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดฑเดฟเดฏเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด†เดงเตเดจเดฟเด• เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต, เด…เดคเดฟเดธเด™เตเด•เต€เตผเดฃเตเดฃเดตเตเด‚ เด…เดฎเดฟเดคเดฎเดพเดฏ เด…เดฎเต‚เตผเดคเตเดคเดตเตเด‚ เด‰เดณเตเดณ เดชเตเดฐเดตเดฃเดค, เดตเดณเดฐเต†เด•เตเด•เดพเดฒเดฎเดพเดฏเดฟ เด…เดคเตเดคเดฐเด‚ เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดฒเตเดฒเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เด…เตฝเดชเตเดชเด‚ เดธเด™เตเด•เดŸเดฎเตเดฃเตเดŸเต.

เด•เตเดฐเต‹เดฃเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เด†เดงเตเดจเดฟเด• เด‡เดคเดฐเดฎเดพเตผเด—เด™เตเด™เดณเตเดฃเตเดŸเต: เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพ เด“เตผเด—เดจเตˆเดธเตเดšเต†เดฏเตเดฏเดพเตป systemd-เดŸเตˆเดฎเดฑเตเด•เตพ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดตเดดเดฟ เดตเดฟเดญเดต เด‰เดชเดญเต‹เด—เด‚ เด•เต‚เดŸเตเดคเตฝ เดตเดดเด•เตเด•เดคเตเดคเต‹เดŸเต† เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป fcron เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดตเตเดฏเด•เตเดคเดฟเดชเดฐเดฎเดพเดฏเดฟ, เดเดฑเตเดฑเดตเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏ เด•เตเดฐเต‹เดฃเตเดŸเดพเดฌเต เดŽเดจเดฟเด•เตเด•เต เดŽเดชเตเดชเต‹เดดเตเด‚ เดฎเดคเดฟเดฏเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เดšเตเดฐเตเด•เตเด•เดคเตเดคเดฟเตฝ, Unix-เดจเต† เดธเตเดจเต‡เดนเดฟเด•เตเด•เตเด•, เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเดจเดพเดฏเดฟ เดฎเดจ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต!

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•