เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจ•เจฐเฉ‹เจจ: เจ‡เจคเจฟเจนเจพเจธ, เจตเจฐเจคเฉ‹เจ‚ เจ…เจคเฉ‡ เจกเจฟเจตเจพเจˆเจธ

เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจ•เจฐเฉ‹เจจ: เจ‡เจคเจฟเจนเจพเจธ, เจตเจฐเจคเฉ‹เจ‚ เจ…เจคเฉ‡ เจกเจฟเจตเจพเจˆเจธ

เจŸเจ•เจธเจพเจฒเฉ€ เจจเฉ‡ เจฒเจฟเจ–เจฟเจ† เจ•เจฟ เจ–เฉเจธเจผเฉ€ เจฆเฉ‡ เจ˜เฉฐเจŸเฉ‡ เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ–เจฃเจพเฅค เจ‰เจจเฉเจนเจพเจ‚ เจœเฉฐเจ—เจฒเฉ€ เจธเจฎเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจจเจพ เจคเจพเจ‚ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฐ เจธเจจ เจ…เจคเฉ‡ เจจเจพ เจนเฉ€ เจฏเฉ‚เจจเจฟเจ•เจธ, เจชเจฐ เจ…เฉฑเจœ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฐ เจชเฉฑเจ•เจพ เจœเจพเจฃเจฆเฉ‡ เจนเจจ: เจ•เฉเจฐเฉ‹เจจ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฌเจœเจพเจ เจธเจฎเฉ‡เจ‚ เจฆเจพ เจงเจฟเจ†เจจ เจฐเฉฑเจ–เฉ‡เจ—เจพเฅค

เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ•เฉฐเจฎ เจนเจจ. sed, awk, wc, cut เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจชเฉเจฐเจพเจฃเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจนเจฐ เจฐเฉ‹เจœเจผ เจธเจพเจกเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจšเจฒเจพเจ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ•เฉเจฐเฉ‹เจจ เจฒเจˆ เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ, เจ‡เฉฑเจ• เจธเจผเจกเจฟเจŠเจฒเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš 70 เจฆเฉ‡ เจฆเจนเจพเจ•เฉ‡ เจคเฉ‹เจ‚เฅค

เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจฎเฉˆเจ‚ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเจพเจฃ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚, เจ•เฉเจฐเฉ‹เจจ เจฆเฉ€ เจธเจคเจนเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€, เจชเจฐ เจ‡เฉฑเจ• เจฆเจฟเจจ, เจœเจฆเฉ‹เจ‚ เจ‡เฉฑเจ• เจธเจ•เฉเจฐเจฟเจชเจŸ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจฟเจ†, เจคเจพเจ‚ เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ‡เจ–เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพเฅค เจ‡เจน เจฒเฉ‡เจ– เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ†, เจ‡เจธ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจตเฉ‡เจฒเฉ‡ เจฎเฉˆเจ‚ POSIX เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ, เจชเฉเจฐเจธเจฟเฉฑเจง เจฒเฉ€เจจเจ•เจธ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ– เจ•เฉเจฐเฉ‹เจจ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจฆเฉ€ เจฌเจฃเจคเจฐ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจนเฉ‹ เจ—เจฟเจ†เฅค

เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจฒเฉ€เจจเจ•เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ•เฉเจฐเฉ‹เจจ เจŸเจพเจธเจ• เจšเจฒเจพ เจฐเจนเฉ‡ เจนเฉ‹? เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจฏเฉ‚เจจเจฟเจ•เจธ เจตเจฟเฉฑเจš เจธเจฟเจธเจŸเจฎ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹? เจซเจฟเจฐ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจฐเจพเจน 'เจคเฉ‡ เจนเจพเจ‚!

เจธเจฎเฉฑเจ—เจฐเฉ€

เจธเจชเฉ€เจธเฉ€เจœเจผ เจฆเจพ เจฎเฉ‚เจฒ

เจธเจพเจฐเฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจœเจพเจ‚ เจธเจฟเจธเจŸเจฎ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจฆเฉ€ เจธเจฎเฉ‡เจ‚-เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจšเฉฑเจฒเจฃ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจชเฉฑเจธเจผเจŸ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจฆเจพ เจ…เจนเจฟเจธเจพเจธ เจนเฉ‹เจ‡เจ† เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉ‡เจ‚เจฆเจฐเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค

เจฏเฉ‚เจจเจฟเจ•เจธ-เจตเจฐเจ—เฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ†เจชเจฃเฉ‡ เจฎเฉ‚เจฒ เจจเฉ‚เฉฐ เจตเจฐเจœเจจ 7 เจฏเฉ‚เจจเจฟเจ•เจธ เจคเฉ‹เจ‚ เจฒเฉฑเจญเจฆเฉ‡ เจนเจจ, เจœเฉ‹ เจ•เจฟ เจชเจฟเจ›เจฒเฉ€ เจธเจฆเฉ€ เจฆเฉ‡ 70 เจฆเฉ‡ เจฆเจนเจพเจ•เฉ‡ เจตเจฟเฉฑเจš เจฌเฉ‡เจฒ เจฒเฉˆเจฌเจœเจผ เจตเจฟเฉฑเจš เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจœเจฟเจธ เจตเจฟเฉฑเจš เจฎเจธเจผเจนเฉ‚เจฐ เจ•เฉ‡เจจ เจฅเฉŒเจฎเจธเจจ เจตเฉ€ เจธเจผเจพเจฎเจฒ เจธเจจเฅค เจธเฉฐเจธเจ•เจฐเจฃ 7 เจฏเฉ‚เจจเจฟเจ•เจธ เจตเจฟเฉฑเจš เจ•เฉเจฐเฉ‹เจจ เจตเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉˆ, เจœเฉ‹ เจธเฉเจชเจฐเจฏเฉ‚เจœเจผเจฐ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฏเจฎเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเฉ‡เจตเจพ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจ†เจฎ เจ†เจงเฉเจจเจฟเจ• เจ•เฉเจฐเฉ‹เจจ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจนเฉˆ, เจชเจฐ เจ…เจธเจฒ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเจพ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจนเฉ‹เจฐ เจตเฉ€ เจธเจฐเจฒ เจธเฉ€: เจธเฉ‡เจตเจพ เจ‡เฉฑเจ• เจฎเจฟเฉฐเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจพเจฐ เจ‰เฉฑเจ เจฆเฉ€ เจนเฉˆ, เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจซเจพเจˆเจฒ (/etc/lib/crontab) เจคเฉ‹เจ‚ เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจชเฉœเฉเจนเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‰เจนเจจเจพเจ‚ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉเจชเจฐเจฏเฉ‚เจœเจผเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจเฅค

เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจธเฉ‡เจตเจพ เจฆเฉ‡ เจธเฉเจงเจฐเฉ‡ เจนเฉ‹เจ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจฏเฉ‚เจจเจฟเจ•เจธ-เจตเจฐเจ—เฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎเจพเจ‚ เจจเจพเจฒ เจธเจชเจฒเจพเจˆ เจ•เฉ€เจคเจพ เจ—เจฟเจ†เฅค

เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจซเจพเจฐเจฎเฉˆเจŸ เจฆเฉ‡ เจธเจงเจพเจฐเจฃ เจตเจฐเจฃเจจ เจ…เจคเฉ‡ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉ‡ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเจฟเจงเจพเจ‚เจคเจพเจ‚ เจจเฉ‚เฉฐ 1992 เจตเจฟเฉฑเจš เจฏเฉ‚เจจเจฟเจ•เจธ-เจตเจฐเจ—เฉ‡ เจ“เจชเจฐเฉ‡เจŸเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ - เจชเฉ‹เจธเจฟเจ•เจธ - เจฆเฉ‡ เจฎเฉเฉฑเจ– เจธเจŸเฉˆเจ‚เจกเจฐเจก เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ‡เฉฑเจ• เจกเฉ€ เจซเฉˆเจ•เจŸเฉ‹ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจคเฉ‹เจ‚ เจ•เฉเจฐเฉ‹เจจ เจ‡เฉฑเจ• เจกเฉ€ เจœเจฟเจŠเจฐ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฌเจฃ เจ—เจฟเจ†เฅค

1987 เจตเจฟเฉฑเจš, เจชเฉŒเจฒ เจตเจฟเจ•เจธเฉ€, เจฏเฉ‚เจจเจฟเจ•เจธ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจฐเฉ‹เจจ เจฒเจˆ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจ‡เฉฑเจ›เจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจธเจฐเจตเฉ‡เจ–เจฃ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจกเฉˆเจฎเจจ เจฆเจพ เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจœเจฟเจธ เจจเฉ‡ เจฐเจตเจพเจ‡เจคเฉ€ เจ•เฉเจฐเฉ‹เจจ เจฆเฉ€เจ†เจ‚ เจ•เฉเจ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เฉ€เจคเจพ เจ…เจคเฉ‡ เจŸเฉ‡เจฌเจฒ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจธเฉฐเจŸเฉˆเจ•เจธ เจฆเจพ เจตเจฟเจธเจคเจพเจฐ เจ•เฉ€เจคเจพเฅค

เจตเจฟเจ•เจธเฉ€ เจ•เฉเจฐเฉ‹เจจ เจฆเฉ‡ เจคเฉ€เจœเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉเจ†เจฐเจพ เจชเฉ‹เจธเจฟเจ•เจธ เจฆเฉ€เจ†เจ‚ เจœเจผเจฐเฉ‚เจฐเจคเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ†, เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจ‰เจฆเจพเจฐเจตเจพเจฆเฉ€ เจฒเจพเจ‡เจธเฉˆเจ‚เจธ เจธเฉ€, เจœเจพเจ‚ README เจตเจฟเฉฑเจš เจ‡เฉฑเจ›เจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจ•เฉ‡, เจ•เฉ‹เจˆ เจฒเจพเจ‡เจธเฉˆเจ‚เจธ เจจเจนเฉ€เจ‚ เจธเฉ€: เจฒเฉ‡เจ–เจ• เจ—เจพเจฐเฉฐเจŸเฉ€ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเจพ, เจฒเฉ‡เจ–เจ• เจฆเจพ เจจเจพเจฎ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‡เจ† เจจเจนเฉ€เจ‚ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจฆเฉ‡ เจจเจพเจฒ เจตเฉ‡เจšเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจฒเฉ‹เฉœเจพเจ‚ เจฎเฉเจซเจค เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ‡ เจธเจฟเจงเจพเจ‚เจคเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒ เจธเจพเจฌเจค เจนเฉ‹เจˆเจ†เจ‚ เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจธเจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจธเจฟเฉฑเจงเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจฐเจนเฉ‡ เจธเจจ, เจ‡เจธเจฒเจˆ 90 เจฆเฉ‡ เจฆเจนเจพเจ•เฉ‡ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจ•เฉเจ เจฎเฉเฉฑเจ– เจฒเฉ€เจจเจ•เจธ เจตเฉฐเจกเจพเจ‚ เจจเฉ‡ เจตเจฟเจ•เจธเฉ€ เจ•เฉเจฐเฉ‹เจจ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจธเจฟเจธเจŸเจฎ เจตเจœเฉ‹เจ‚ เจฒเจฟเจ† เจ…เจคเฉ‡ เจ…เฉฑเจœ เจตเฉ€ เจ‡เจธเจจเฉ‚เฉฐ เจตเจฟเจ•เจธเจค เจ•เจฐ เจฐเจนเฉ‡ เจนเจจเฅค

เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, Red Hat เจ…เจคเฉ‡ SUSE Vixie cron - cronie เจฆเจพ เจ‡เฉฑเจ• เจซเฉ‹เจฐเจ• เจตเจฟเจ•เจธเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจกเฉ‡เจฌเฉ€เจ…เจจ เจ…เจคเฉ‡ เจ‰เจฌเฉฐเจŸเฉ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจชเฉˆเจšเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ Vixie cron เจฆเฉ‡ เจ…เจธเจฒ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ†เจ“ เจชเจนเจฟเจฒเจพเจ‚ POSIX เจตเจฟเฉฑเจš เจตเจฐเจฃเจฟเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจนเฉ‹เจˆเจ, เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ…เจธเฉ€เจ‚ Vixie cron เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเฉ‡ เจ—เจ เจธเจฟเฉฐเจŸเฉˆเจ•เจธ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจ…เจคเฉ‡ เจชเฉเจฐเจธเจฟเฉฑเจง Linux เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจ เจตเจฟเฉฑเจš Vixie cron เจฆเฉ‡ เจญเจฟเฉฐเจจเจคเจพเจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเฉ‚เฉฐ เจตเฉ‡เจ–เจพเจ‚เจ—เฉ‡เฅค เจ…เจคเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจ•เฉ‡เจ• เจ‰เฉฑเจคเฉ‡ เจšเฉˆเจฐเฉ€ เจ•เฉเจฐเฉ‹เจจ เจกเฉˆเจฎเจจ เจกเจฟเจตเจพเจˆเจธ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจนเฉˆเฅค

เจชเฉ‹เจธเจฟเจ•เจธ เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ

เจœเฉ‡ เจ…เจธเจฒเฉ€ เจ•เจฐเฉ‹เจจ เจนเจฎเฉ‡เจธเจผเจพ เจธเฉเจชเจฐเจฏเฉ‚เจœเจผเจฐ เจฒเจˆ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ†เจงเฉเจจเจฟเจ• เจธเจผเจกเจฟเจŠเจฒเจฐ เจ…เจ•เจธเจฐ เจ†เจฎ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจ•เฉฐเจฎเจพเจ‚ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฆเฉ‡ เจนเจจ, เจœเฉ‹ เจ•เจฟ เจตเจงเฉ‡เจฐเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ…เจคเฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆเฅค

ะกron-ั‹ ะฟะพัั‚ะฐะฒะปััŽั‚ัั ะบะพะผะฟะปะตะบั‚ะพะผ ะธะท ะดะฒัƒั… ะฟั€ะพะณั€ะฐะผะผ: ะฟะพัั‚ะพัะฝะฝะพ ั€ะฐะฑะพั‚ะฐัŽั‰ะตะณะพ ะดะตะผะพะฝะฐ cron ะธ ะดะพัั‚ัƒะฟะฝะพะน ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัะผ ัƒั‚ะธะปะธั‚ั‹ crontab. ะŸะพัะปะตะดะฝัั ะฟะพะทะฒะพะปัะตั‚ ั€ะตะดะฐะบั‚ะธั€ะพะฒะฐั‚ัŒ ั‚ะฐะฑะปะธั†ั‹ ะทะฐะดะฐั‡, ัะฟะตั†ะธั„ะธั‡ะฝั‹ะต ะดะปั ะบะฐะถะดะพะณะพ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั ะฒ ัะธัั‚ะตะผะต, ะดะตะผะพะฝ ะถะต ะทะฐะฟัƒัะบะฐะตั‚ ะทะฐะดะฐั‡ะธ ะธะท ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธั… ะธ ัะธัั‚ะตะผะฝะพะน ั‚ะฐะฑะปะธั†.

ะ’ 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 เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจŸเจพเจธเจ• เจธเจผเจกเจฟเจŠเจฒเจฟเฉฐเจ— เจคเฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเฉเจฐเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เฉเจฐเจฎเจตเจพเจฐ เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจตเจพเจฒเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉ‚เจšเฉ€เจฌเฉฑเจง เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจธเจŸเฉˆเจ‚เจกเจฐเจก เจ•เจฟเจธเฉ‡ เจตเฉ€ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ‡เจนเจจเจพเจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเฉเจฐเจฟเจค เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจฒเจพเจ‚เจš เจ•เฉ€เจคเฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจฒเจˆ เจ˜เฉฑเจŸเฉ‹ เจ˜เฉฑเจŸ เจšเจพเจฐ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ:

  1. HOME - เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ€ เจนเฉ‹เจฎ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เฅค
  2. LOGNAME โ€” เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฒเฉŒเจ—เจ‡เจจเฅค
  3. PATH เจ‰เจน เจฎเจพเจฐเจ— เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจฎเจฟเจ†เจฐเฉ€ เจธเจฟเจธเจŸเจฎ เจ‰เจชเจฏเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
  4. เจธเจผเฉˆเฉฑเจฒ - เจตเจฐเจคเฉ‡ เจ—เจ เจ•เจฎเจพเจ‚เจก เจ‡เฉฐเจŸเจฐเจชเฉเจฐเฉ‡เจŸเจฐ เจฒเจˆ เจฎเจพเจฐเจ—เฅค

เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡, POSIX เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจ•เจนเจฟเฉฐเจฆเจพ เจ•เจฟ เจ‡เจนเจจเจพเจ‚ เจตเฉ‡เจฐเฉ€เจเจฌเจฒเจพเจ‚ เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจ•เจฟเฉฑเจฅเฉ‹เจ‚ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค

เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจตเจฟเจ•เจฐเฉ‡เจคเจพ - Vixie cron 3.0pl1

เจชเฉเจฐเจธเจฟเฉฑเจง เจ•เจฐเฉ‹เจจ เจฐเฉ‚เจชเจพเจ‚ เจฆเจพ เจธเจพเจ‚เจเจพ เจชเฉ‚เจฐเจตเจœ Vixie cron 3.0pl1 เจนเฉˆ, เจœเฉ‹ 1992 เจตเจฟเฉฑเจš comp.sources.unix เจฎเฉ‡เจฒเจฟเฉฐเจ— เจธเฉ‚เจšเฉ€ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจ…เจธเฉ€เจ‚ เจ‡เจธ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ€เจ†เจ‚ เจฎเฉเฉฑเจ– เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจตเจงเฉ‡เจฐเฉ‡ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจตเจฟเจšเจพเจฐเจพเจ‚เจ—เฉ‡.

Vixie cron เจฆเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ (cron เจ…เจคเฉ‡ crontab) เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ†เจฎ เจตเจพเจ‚เจ—, เจกเฉˆเจฎเจจ เจธเจฟเจธเจŸเจฎ เจŸเจพเจธเจ• เจŸเฉ‡เจฌเจฒ เจ…เจคเฉ‡ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจฏเฉ‚เจœเจผเจฐ เจŸเจพเจธเจ• เจŸเฉ‡เจฌเจฒ เจคเฉ‹เจ‚ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจ…เจคเฉ‡ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆ, เจ…เจคเฉ‡ เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆเฅค

เจŸเจพเจธเจ• เจŸเฉ‡เจฌเจฒ เจ…เจคเฉ‡ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐเฉ‡เจธเจผเจจ เจซเจพเจˆเจฒเจพเจ‚

เจธเฉเจชเจฐเจฏเฉ‚เจœเจผเจฐ เจŸเจพเจธเจ• เจŸเฉ‡เจฌเจฒ /etc/crontab เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆเฅค เจธเจฟเจธเจŸเจฎ เจŸเฉ‡เจฌเจฒ เจฆเจพ เจธเฉฐเจŸเฉˆเจ•เจธ เจตเจฟเจ•เจธเฉ€ เจ•เฉเจฐเฉ‹เจจ เจฆเฉ‡ เจธเฉฐเจŸเฉˆเจ•เจธ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เจธ เจ…เจชเจตเจพเจฆ เจฆเฉ‡ เจจเจพเจฒ เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจ›เฉ‡เจตเจพเจ‚ เจ•เจพเจฒเจฎ เจ‰เจธ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจจเจพเจฎ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธเจฆเฉ‡ เจ…เจงเฉ€เจจ เจ•เฉฐเจฎ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ:

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

เจจเจฟเจฏเจฎเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจŸเจพเจธเจ• เจŸเฉ‡เจฌเจฒ /var/cron/tabs/username เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเจจ เจ…เจคเฉ‡ เจ‰เจนเฉ€ เจธเฉฐเจŸเฉˆเจ•เจธ เจตเจฐเจคเจฆเฉ‡ เจนเจจเฅค เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจตเจœเฉ‹เจ‚ เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน เจ‰เจน เจซเจพเจˆเจฒเจพเจ‚ เจนเจจ เจœเฉ‹ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

crontab เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจตเจพเจฒเฉ‡ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจธเฉ‚เจšเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ /var/cron/allow เจ…เจคเฉ‡ /var/cron/deny เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจฒเจพเจˆเจจ เจตเจฟเฉฑเจš เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจจเจพเจฎ เจฆเจฐเจœ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจตเจฟเจธเจคเฉเจฐเจฟเจค เจธเฉฐเจŸเฉˆเจ•เจธ

POSIX เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡, เจชเฉŒเจฒ เจตเจฟเจ•เจธเฉ€ เจฆเฉ‡ เจนเฉฑเจฒ เจตเจฟเฉฑเจš เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจŸเจพเจธเจ• เจŸเฉ‡เจฌเจฒ เจฆเฉ‡ เจธเฉฐเจŸเฉˆเจ•เจธ เจตเจฟเฉฑเจš เจ•เจˆ เจฌเจนเฉเจค เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจธเฉ‹เจงเจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเจจเฅค

เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจธเจพเจฐเจฃเฉ€ เจธเฉฐเจŸเฉˆเจ•เจธ เจ‰เจชเจฒเจฌเจง เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ: เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจจเจพเจฎ (เจธเฉ‹เจฎ, เจฎเฉฐเจ—เจฒเจตเจพเจฐ, เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚) เจฆเฉเจ†เจฐเจพ เจนเจซเจผเจคเฉ‡ เจฆเฉ‡ เจฆเจฟเจจเจพเจ‚ เจœเจพเจ‚ เจฎเจนเฉ€เจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

# ะ—ะฐะฟัƒัะบะฐะตั‚ัั ะตะถะตะผะธะฝัƒั‚ะฝะพ ะฟะพ ะฟะพะฝะตะดะตะปัŒะฝะธะบะฐะผ ะธ ะฒั‚ะพั€ะฝะธะบะฐะผ ะฒ ัะฝะฒะฐั€ะต
* * * 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 cron เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ USER, LOGNAME เจ…เจคเฉ‡ HOME เจธเจฟเจฐเจซเจผ เจกเฉˆเจฎเจจ เจฆเฉเจ†เจฐเจพ เจชเฉเจฐเจฆเจพเจจ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ, เจฌเจฒเจ•เจฟ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจคเฉ‹เจ‚ เจฒเจ เจ—เจ เจนเจจเฅค เจชเจพเจธเจตเจก. ะŸะตั€ะตะผะตะฝะฝะฐั PATH ะฟะพะปัƒั‡ะฐะตั‚ ะทะฝะฐั‡ะตะฝะธะต ยซ/usr/bin:/binยป, ะฐ SHELL โ€” ยซ/bin/shยป. ะ—ะฝะฐั‡ะตะฝะธั ะฒัะตั… ะฟะตั€ะตะผะตะฝะฝั‹ั…, ะบั€ะพะผะต LOGNAME, ะผะพะถะฝะพ ะธะทะผะตะฝะธั‚ัŒ ะฒ ั‚ะฐะฑะปะธั†ะฐั… ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะน.

เจ•เฉเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ (เจธเจญ เจคเฉ‹เจ‚ เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ SHELL เจ…เจคเฉ‡ HOME) เจ•เฉฐเจฎ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เฉเจฐเฉ‹เจจ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ•เจธเจŸเจฎ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจธเจŸเฉˆเจ‚เจกเจฐเจก sh เจฆเฉ€ เจฌเจœเจพเจ bash เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡ เจธเจ•เจฆเฉ€ เจนเฉˆ:

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

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจธเจพเจฐเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ (เจ•เฉเจฐเฉŒเจจ เจฆเฉเจ†เจฐเจพ เจตเจฐเจคเฉ‡ เจ—เจ เจœเจพเจ‚ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉเจ†เจฐเจพ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡) เจšเฉฑเจฒ เจฐเจนเฉ‡ เจ•เฉฐเจฎ เจฒเจˆ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡เฅค

เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจ เจฒเจˆ, เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจตเจฟเจœเจผเฉ‚เจ…เจฒ เจœเจพเจ‚ เจเจกเฉ€เจŸเจฐ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเจฟเฉฑเจš เจฆเจฐเจธเจพเจ เจธเฉฐเจชเจพเจฆเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจœเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจœเจฟเฉฑเจฅเฉ‡ เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจšเจฒเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€, เจตเจฟเฉฑเจš เจ‡เจน เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจจเจนเฉ€เจ‚ เจนเจจ, เจคเจพเจ‚ "/usr/ucb/vi" เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ (ucb เจธเจผเจพเจ‡เจฆ เจ•เฉˆเจฒเฉ€เจซเฉ‹เจฐเจจเฉ€เจ† เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฟเจŸเฉ€, เจฌเจฐเจ•เจฒเฉ‡ เจนเฉˆ)เฅค

เจกเฉ‡เจฌเฉ€เจ…เจจ เจ…เจคเฉ‡ เจ‰เจฌเฉฐเจŸเฉ‚ 'เจคเฉ‡ cron

เจกเฉ‡เจฌเฉ€เจ…เจจ เจ…เจคเฉ‡ เจกเฉˆเจฐเฉ€เจตเฉ‡เจŸเจฟเจต เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจ เจฆเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‡ เจœเจพเจฐเฉ€ เจ•เฉ€เจคเจพ เจนเฉˆ เจฌเจนเฉเจค เจนเฉ€ เจธเฉ‹เจงเจฟเจ† เจธเฉฐเจธเจ•เจฐเจฃ Vixie เจ•เฉเจฐเฉ‹เจจ เจธเฉฐเจธเจ•เจฐเจฃ 3.0pl1. เจŸเฉ‡เจฌเจฒ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจธเฉฐเจŸเฉˆเจ•เจธ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจ…เฉฐเจคเจฐ เจจเจนเฉ€เจ‚ เจนเจจ; เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฒเจˆ เจ‡เจน เจ‰เจนเฉ€ Vixie เจ•เฉเจฐเฉ‹เจจ เจนเฉˆ. เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจกเฉ€ เจจเจตเฉ€เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ: เจธเจนเจพเจ‡เจคเจพ syslog, SELinux ะธ WFP.

เจ˜เฉฑเจŸ เจงเจฟเจ†เจจ เจฆเฉ‡เจฃ เจฏเฉ‹เจ—, เจชเจฐ เจ เฉ‹เจธ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจ…เจคเฉ‡ เจŸเจพเจธเจ• เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉˆเฅค

เจกเฉ‡เจฌเฉ€เจ…เจจ เจตเจฟเฉฑเจš เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจŸเฉ‡เจฌเจฒ /var/sool/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 'เจคเฉ‡ cronie

เจ•เจฐเฉ‹เจจเฉ€ โ€” Vixie เจ•เฉเจฐเฉ‹เจจ เจธเฉฐเจธเจ•เจฐเจฃ 4.1 เจฆเจพ เจซเฉ‹เจฐเจ•เฅค เจœเจฟเจตเฉ‡เจ‚ เจกเฉ‡เจฌเฉ€เจ…เจจ เจตเจฟเฉฑเจš, เจธเฉฐเจŸเฉˆเจ•เจธ เจจเจนเฉ€เจ‚ เจฌเจฆเจฒเจฟเจ† เจนเฉˆ, เจชเจฐ PAM เจ…เจคเฉ‡ SELinux เจฒเจˆ เจธเจฎเจฐเจฅเจจ, เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจเจพ, inotify เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจŸเจฐเฉˆเจ• เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจเฅค

เจกเจฟเจซเจพเจฒเจŸ เจธเฉฐเจฐเจšเจจเจพ เจ†เจฎ เจธเจฅเจพเจจเจพเจ‚ เจตเจฟเฉฑเจš เจนเฉˆ: เจธเจฟเจธเจŸเจฎ เจŸเฉ‡เจฌเจฒ /etc/crontab เจตเจฟเฉฑเจš เจนเฉˆ, เจชเฉˆเจ•เฉ‡เจœ เจ†เจชเจฃเฉ‡ เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ /etc/cron.d เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจ, เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจŸเฉ‡เจฌเจฒ /var/sool/cron/crontabs เจตเจฟเฉฑเจš เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

เจกเฉˆเจฎเจจ systemd เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจ…เจงเฉ€เจจ เจšเฉฑเจฒเจฆเจพ เจนเฉˆ, เจธเฉ‡เจตเจพ เจธเฉฐเจฐเจšเจจเจพ /lib/systemd/system/crond.service เจนเฉˆเฅค

Red Hat-เจตเจฐเจ—เฉ€เจ†เจ‚ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจเจพเจ‚ เจ‰เฉฑเจคเฉ‡, /bin/sh เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจฎเฉ‡เจ‚ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฌเฉˆเจธเจผ เจนเฉˆเฅค เจ‡เจน เจจเฉ‹เจŸ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ เจ•เจฟ เจœเจฆเฉ‹เจ‚ /bin/sh เจฐเจพเจนเฉ€เจ‚ เจ•เฉเจฐเฉ‹เจจ เจœเฉŒเจฌเจพเจ‚ เจšเจฒเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจ, เจคเจพเจ‚ เจฌเฉˆเจธเจผ เจธเจผเฉˆเฉฑเจฒ POSIX-เจ…เจจเฉเจ•เฉ‚เจฒ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ—เฉˆเจฐ-เจ‡เฉฐเจŸเจฐเจเจ•เจŸเจฟเจต เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจšเฉฑเจฒเจฆเฉ‡ เจนเฉ‹เจ, เจ•เฉ‹เจˆ เจตเจพเจงเฉ‚ เจธเฉฐเจฐเจšเจจเจพ เจจเจนเฉ€เจ‚ เจชเฉœเฉเจนเจฆเจพ เจนเฉˆเฅค

cronie ะฒ SLES ะธ openSUSE

เจœเจฐเจฎเจจ เจกเจฟเจธเจŸเฉเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจ SLES เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจกเฉˆเจฐเฉ€เจตเฉ‡เจŸเจฟเจต เจ“เจชเจจเจธเฉ‚เจธเฉ‡ เจ‡เฉฑเจ•เฉ‹ เจ•เฉเจฐเฉ‹เจจเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ‡เฉฑเจฅเฉ‡ เจกเฉˆเจฎเจจ เจตเฉ€ systemd เจ…เจงเฉ€เจจ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจธเฉ‡เจตเจพ เจธเฉฐเจฐเจšเจจเจพ /usr/lib/systemd/system/cron.service เจตเจฟเฉฑเจš เจธเจฅเจฟเจค เจนเฉˆเฅค เจธเฉฐเจฐเจšเจจเจพ: /etc/crontab, /etc/cron.d, /var/spool/cron/tabs. /bin/sh เจ‰เจนเฉ€ เจฌเฉˆเจธเจผ เจนเฉˆ เจœเฉ‹ POSIX-เจ…เจจเฉเจ•เฉ‚เจฒ เจ—เฉˆเจฐ-เจ‡เฉฐเจŸเจฐเจเจ•เจŸเจฟเจต เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจตเจฟเจ•เจธเฉ€ เจ•เฉเจฐเฉ‹เจจ เจกเจฟเจตเจพเจˆเจธ

เจ•เฉเจฐเฉ‹เจจ เจฆเฉ‡ เจ†เจงเฉเจจเจฟเจ• เจตเฉฐเจธเจผเจœเจพเจ‚ เจจเฉ‡ เจตเจฟเจ•เจธเฉ€ เจ•เฉเจฐเฉ‹เจจ เจฆเฉ‡ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจฎเฉ‚เจฒ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจฌเจฆเจฒเจฟเจ† เจนเฉˆ, เจชเจฐ เจซเจฟเจฐ เจตเฉ€ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจจเจตเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€เจ†เจ‚ เจนเจจ เจœเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ‡ เจธเจฟเจงเจพเจ‚เจคเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฎเจเจฃ เจฒเจˆ เจœเจผเจฐเฉ‚เจฐเฉ€ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ‡เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจฎเจพเฉœเฉ‡ เจขเฉฐเจ— เจจเจพเจฒ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ เจ…เจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ‰เจฒเจเจพเจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจชเจพเจฒ เจตเจฟเจ•เจธเฉ€ เจฆเฉเจ†เจฐเจพ เจฎเฉ‚เจฒ เจ•เฉเจฐเฉ‹เจจ เจธเฉ‹เจฐเจธ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจชเฉœเฉเจน เจ•เฉ‡ เจ–เฉเจธเจผเฉ€ เจนเฉ‹เจˆเฅค

เจ‡เจธ เจฒเจˆ, เจฎเฉˆเจ‚ เจตเจฟเจ•เจพเจธ เจฆเฉ€เจ†เจ‚ เจฆเฉ‹เจตเจพเจ‚ เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจฒเจˆ เจธเจพเจ‚เจเฉ‡ เจ•เฉเจฐเฉ‹เจจ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เฉเจฐเฉ‹เจจ เจกเจฟเจตเจพเจˆเจธ เจฆเจพ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ - 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);
}

เจชเฉ‡เจฐเฉˆเจ‚เจŸ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจธเจฎเจพเจชเจคเฉ€ เจฒเจพเจ• เจซเจพเจˆเจฒ 'เจคเฉ‡ เจฒเจพเจ• เจจเฉ‚เฉฐ เจœเจพเจฐเฉ€ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฌเฉฑเจšเฉ‡ เจจเฉ‚เฉฐ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจชเฉ€เจ†เจˆเจกเฉ€ เจจเฉ‚เฉฐ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจŸเจพเจธเจ• เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจญเจฐเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ:

/* ะฟะพะฒั‚ะพั€ะฝั‹ะน ะทะฐั…ะฒะฐั‚ ะปะพะบะฐ */
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 เจฏเฉ‚เจจเจฟเจ•เจธ เจคเฉ‹เจ‚ เจ…เจธเจฒ เจ•เฉเจฐเฉ‹เจจ เจจเฉ‡ เจ•เจพเจซเจผเฉ€ เจ…เจธเจพเจจเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ: เจ‡เจธเจจเฉ‡ เจ‡เฉฑเจ• เจฒเฉ‚เจช เจตเจฟเฉฑเจš เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจชเฉœเฉเจนเจฟเจ†, เจฎเฉŒเจœเฉ‚เจฆเจพ เจฎเจฟเฉฐเจŸ เจฆเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉเจชเจฐเจฏเฉ‚เจœเจผเจฐ เจตเจœเฉ‹เจ‚ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ, เจ…เจคเฉ‡ เจ…เจ—เจฒเฉ‡ เจฎเจฟเฉฐเจŸ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจคเฉฑเจ• เจธเฉเฉฑเจคเจพ เจฐเจฟเจนเจพเฅค เจชเฉเจฐเจพเจฃเฉ€เจ†เจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ 'เจคเฉ‡ เจ‡เจธ เจธเจงเจพเจฐเจจ เจชเจนเฉเฉฐเจš เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

SysV เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจชเจฟเจ• เจธเฉฐเจธเจ•เจฐเจฃ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจœเจฟเจธ เจตเจฟเฉฑเจš เจกเฉˆเจฎเจจ เจœเจพเจ‚ เจคเจพเจ‚ เจ‰เจธ เจธเจญ เจคเฉ‹เจ‚ เจจเจœเจผเจฆเฉ€เจ•เฉ€ เจฎเจฟเฉฐเจŸ เจคเฉฑเจ• เจธเฉŒเจ‚ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจฒเจˆ เจ•เจพเจฐเจœ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจœเจพเจ‚ 30 เจฎเจฟเฉฐเจŸเจพเจ‚ เจฒเจˆเฅค เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ-เจชเฉœเฉเจนเจจ เจ…เจคเฉ‡ เจ‡เจธ เจฎเฉ‹เจก เจตเจฟเฉฑเจš เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจ˜เฉฑเจŸ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€, เจชเจฐ เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจเจพ เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉ‹ เจ—เจฟเจ†เฅค

Vixie cron เจ‡เฉฑเจ• เจฎเจฟเฉฐเจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจพเจฐ เจ•เจพเจฐเจœ เจธเฉ‚เจšเฉ€เจ†เจ‚ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฒเจˆ เจตเจพเจชเจธ เจชเจฐเจคเจฟเจ†, เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ 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;
}

cron_sleep เจซเฉฐเจ•เจธเจผเจจ เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจพเจฐเจœเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, 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;
}

เจœเฉ‹ เจ•เจฟ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจธเจญ cron เจนเฉˆ. เจฎเฉˆเจ‚ เจ•เฉเจ เจฆเจฟเจฒเจšเจธเจช เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเจฟเฉฑเจคเจพ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฐเจฟเจฎเฉ‹เจŸ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฒเจˆ เจฒเฉ‡เจ–เจพ, เจชเจฐ เจฎเฉˆเจ‚ เจฎเฉเฉฑเจ– เจšเฉ€เจœเจผ เจฆเฉ€ เจฐเฉ‚เจชเจฐเฉ‡เจ–เจพ เจฆเจฟเฉฑเจคเฉ€.

เจฌเจพเจ…เจฆ

เจ•เจฐเฉ‹เจจ เจ‡เฉฑเจ• เจนเฉˆเจฐเจพเจจเฉ€เจœเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจ‰เจชเจฏเฉ‹เจ—เฉ€ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจนเฉˆ, เจœเฉ‹ เจฏเฉ‚เจจเจฟเจ•เจธ เจธเฉฐเจธเจพเจฐ เจฆเฉ€เจ†เจ‚ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจชเจฐเฉฐเจชเจฐเจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆเฅค เจ‰เจน เจ•เฉเจ เจตเจพเจงเฉ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€, เจชเจฐ เจ‰เจน เจ•เจˆ เจฆเจนเจพเจ•เจฟเจ†เจ‚ เจคเฉ‹เจ‚ เจ†เจชเจฃเจพ เจ•เฉฐเจฎ เจธเจผเจพเจจเจฆเจพเจฐ เจขเฉฐเจ— เจจเจพเจฒ เจ•เจฐ เจฐเจนเฉ€ เจนเฉˆเฅค เจ‰เจฌเฉฐเจŸเฉ‚ เจฆเฉ‡ เจจเจพเจฒ เจ†เจ‰เจฃ เจตเจพเจฒเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ˜เฉฐเจŸเฉ‡ เจคเฉ‹เจ‚ เจตเฉฑเจง เจธเจฎเจพเจ‚ เจจเจนเฉ€เจ‚ เจฒเฉฑเจ—เจพ, เจ…เจคเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจนเฉเจค เจฎเจœเจผเจพ เจ†เจ‡เจ†! เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ‡ เจจเจพเจฒ เจธเจพเจ‚เจเจพ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจธเฉ€เฅค

เจฎเฉˆเจ‚ เจคเฉเจนเจพเจกเฉ‡ เจฌเจพเจฐเฉ‡ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจฆเจพ, เจชเจฐ เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เจน เจธเจฎเจ เจ•เฉ‡ เจฅเฉ‹เฉœเจพ เจ‰เจฆเจพเจธ เจนเฉˆ เจ•เจฟ เจ†เจงเฉเจจเจฟเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ—, เจ‡เจธเจฆเฉ€ เจœเจผเจฟเจ†เจฆเจพ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจ…เจคเฉ‡ เจœเจผเจฟเจ†เจฆเจพ-เจธเจพเจฐเจคเจพ เจฆเฉ€ เจชเฉเจฐเจตเจฟเจฐเจคเฉ€ เจฆเฉ‡ เจจเจพเจฒ, เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจ…เจœเจฟเจนเฉ€ เจธเจพเจฆเจ—เฉ€ เจฒเจˆ เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจนเฉ€เจ‚ เจฐเจนเฉ€ เจนเฉˆเฅค

เจ•เฉเจฐเฉ‹เจจ เจฆเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ†เจงเฉเจจเจฟเจ• เจตเจฟเจ•เจฒเจช เจนเจจ: เจธเจฟเจธเจŸเจฎเจก-เจŸเจพเจˆเจฎเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจจเจฟเจฐเจญเจฐเจคเจพ เจฆเฉ‡ เจจเจพเจฒ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ, fcron เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจพเจฐเจœเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจธเจฐเฉ‹เจค เจฆเฉ€ เจ–เจชเจค เจจเฉ‚เฉฐ เจตเจงเฉ‡เจฐเฉ‡ เจฒเจšเจ•เจฆเจพเจฐ เจขเฉฐเจ— เจจเจพเจฒ เจจเจฟเจฏเฉฐเจคเฉเจฐเจฟเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจชเจฐ เจจเจฟเฉฑเจœเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเจญ เจคเฉ‹เจ‚ เจธเจงเจพเจฐเจจ เจ•เฉเจฐเฉ‹เจจเจŸเฉˆเจฌ เจนเจฎเฉ‡เจธเจผเจพ เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจ•เจพเจซเฉ€ เจธเฉ€.

เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš, เจฏเฉ‚เจจเจฟเจ•เจธ เจจเฉ‚เฉฐ เจชเจฟเจ†เจฐ เจ•เจฐเฉ‹, เจธเจงเจพเจฐเจจ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฒเจˆ เจฎเจจ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจเจพ เจจเจพ เจญเฉเฉฑเจฒเฉ‹!

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹