āĻā§āĻ˛āĻžāĻ¸āĻŋāĻ āĻ˛āĻŋāĻā§āĻā§āĻ¨ āĻ¯ā§ āĻ¸ā§āĻā§ āĻāĻ¨ā§āĻāĻž āĻĻā§āĻāĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻ¸ā§āĻ āĻŦāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¯āĻŧā§ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ° āĻŦāĻž āĻāĻāĻ¨āĻŋāĻā§āĻ¸ āĻāĻŋāĻ˛ āĻ¨āĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ°āĻ°āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤āĻāĻžāĻŦā§ āĻāĻžāĻ¨ā§: āĻā§āĻ°āĻ¨ āĻ¤āĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻĒāĻ° āĻ¨āĻāĻ° āĻ°āĻžāĻāĻŦā§āĨ¤
āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĻā§āĻ˛āĻŋ āĻāĻŽāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻāĻāĻ¯āĻŧāĻāĨ¤ sed, awk, wc, cut āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻĻāĻŋāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻā§āĻ°āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻŽā§āĻ˛āĻ¤ 70 āĻāĻ° āĻĻāĻļāĻā§āĻ° āĻāĻāĻāĻŋ āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ°āĨ¤
āĻĻā§āĻ°ā§āĻāĻāĻžāĻ˛ āĻ§āĻ°ā§ āĻāĻŽāĻŋ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖā§ āĻ¨āĻž āĻāĻŋāĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻāĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻĻāĻŋāĻ¨, āĻ¯āĻāĻ¨ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋāĻ° āĻ¸āĻŽā§āĻŽā§āĻā§āĻ¨ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ, āĻāĻŽāĻŋ āĻāĻāĻŋ āĻĒā§āĻā§āĻāĻžāĻ¨ā§āĻĒā§āĻā§āĻāĻāĻžāĻŦā§ āĻĻā§āĻāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻāĻžāĻŦā§āĻ āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻāĻŋ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻŋ POSIX āĻā§āĻ°ā§āĻ¨ā§āĻāĻžāĻŦā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ, āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻā§āĻ°ā§āĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ° āĻāĻ¯āĻŧā§āĻāĻāĻŋāĻ° āĻāĻžāĻ āĻžāĻŽā§āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻā§āĻ¨ āĻāĻŦāĻ āĻā§āĻ°āĻ¨ āĻāĻžāĻ¸ā§āĻ āĻāĻžāĻ˛āĻžāĻā§āĻā§āĻ¨? āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻāĻāĻ¨āĻŋāĻā§āĻ¸ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§ āĻāĻā§āĻ°āĻšā§? āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻĨā§!
āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻ
āĻĒā§āĻ°āĻāĻžāĻ¤āĻŋāĻ° āĻāĻ¤āĻĒāĻ¤ā§āĻ¤āĻŋ POSIX āĻā§āĻ°ā§āĻ¨ā§āĻāĻžāĻŦ āĻ¸ā§āĻ°āĻž āĻŦāĻŋāĻā§āĻ°ā§āĻ¤āĻž - āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ 3.0pl1 āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻŦāĻ āĻāĻŦā§āĻ¨ā§āĻā§āĻ¤ā§ āĻā§āĻ°ā§āĻ¨ āĻ°ā§āĻĄ āĻšā§āĻ¯āĻžāĻ, āĻĢā§āĻĄā§āĻ°āĻž āĻāĻŦāĻ āĻ¸ā§āĻ¨ā§āĻā§āĻ¸ā§ āĻā§āĻ°āĻ¨āĻŋ SLES āĻāĻŦāĻ openSUSE-āĻ āĻā§āĻ°ā§āĻ¨āĻŋ āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻāĻ¤ā§āĻ¤āĻ°āĻāĻžāĻˇ
āĻĒā§āĻ°āĻāĻžāĻ¤āĻŋāĻ° āĻāĻ¤āĻĒāĻ¤ā§āĻ¤āĻŋ
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻŦāĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ°āĻŽāĻŋāĻ āĻ¸āĻā§āĻāĻžāĻ˛āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĨ¤ āĻ āĻ¤āĻāĻŦ, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ°āĻ°āĻž āĻāĻŽāĻ¨ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž āĻāĻĒāĻ˛āĻŦā§āĻ§āĻŋ āĻāĻ°ā§āĻāĻŋāĻ˛ āĻ¯āĻž āĻ¤āĻžāĻĻā§āĻ° āĻā§āĻ¨ā§āĻĻā§āĻ°ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ āĻ āĻ¨ā§āĻ āĻāĻā§āĨ¤
āĻāĻāĻ¨āĻŋāĻā§āĻ¸-āĻ¸āĻĻā§āĻļ āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻā§āĻ˛āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻā§āĻĒāĻ¤ā§āĻ¤āĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 7 āĻāĻāĻ¨āĻŋāĻā§āĻ¸ā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§, āĻ¯āĻž āĻāĻ¤ āĻļāĻ¤āĻžāĻŦā§āĻĻā§āĻ° 70-āĻāĻ° āĻĻāĻļāĻā§ āĻŦā§āĻ˛ āĻ˛ā§āĻ¯āĻžāĻŦāĻ¸ā§ āĻŦāĻŋāĻāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻā§āĻ¯āĻžāĻ¤ āĻā§āĻ¨ āĻĨāĻŽā§āĻĒāĻ¸āĻ¨āĻ āĻāĻŋāĻ˛ā§āĻ¨āĨ¤ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 7 āĻāĻāĻ¨āĻŋāĻā§āĻ¸ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻā§āĻ°āĻ¨ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤, āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤āĻāĻžāĻŦā§ āĻ¸ā§āĻĒāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻžāĻ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĨ¤
āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻ§ā§āĻ¨āĻŋāĻ āĻā§āĻ°āĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ, āĻ¤āĻŦā§ āĻŽā§āĻ˛ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽāĻāĻŋ āĻāĻ°āĻ āĻ¸āĻšāĻ āĻāĻŋāĻ˛: āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻāĻŋ āĻāĻ āĻŽāĻŋāĻ¨āĻŋāĻā§ āĻāĻāĻŦāĻžāĻ° āĻā§āĻā§ āĻāĻ ā§, āĻāĻāĻāĻŋ āĻāĻāĻ āĻĢāĻžāĻāĻ˛ (/etc/lib/crontab) āĻĨā§āĻā§ āĻāĻžāĻ āĻ¸āĻš āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻĒāĻĄāĻŧāĻ¤ āĻāĻŦāĻ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻ¸ā§āĻĒāĻžāĻ° āĻāĻāĻāĻžāĻ° āĻ¯ā§ āĻāĻžāĻāĻā§āĻ˛ā§ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻāĻŋāĻ˛āĨ¤
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻ˛ā§, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻŦāĻ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¨āĻ¤ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻāĻ¨āĻŋāĻā§āĻ¸-āĻāĻ° āĻŽāĻ¤ā§ āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻā§āĻ°āĻ¨āĻā§āĻ¯āĻžāĻŦ āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻā§āĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻŦāĻ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĻ° āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻŽā§āĻ˛ āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻāĻāĻ¨āĻŋāĻā§āĻ¸-āĻ¸āĻĻā§āĻļ āĻ āĻĒāĻžāĻ°ā§āĻāĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŽāĻžāĻ¨ - POSIX - 1992 āĻ¸āĻžāĻ˛ā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻĄāĻŋ āĻĢā§āĻ¯āĻžāĻā§āĻā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĨā§āĻā§ āĻā§āĻ°ā§āĻ¨ āĻāĻāĻāĻŋ āĻĄāĻŋ āĻā§āĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
1987 āĻ¸āĻžāĻ˛ā§, āĻĒāĻ˛ āĻāĻŋāĻā§āĻ¸āĻŋ, āĻāĻāĻ¨āĻŋāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻā§āĻ°āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¤āĻžāĻĻā§āĻ° āĻāĻā§āĻāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°āĻŋāĻĒ āĻāĻ°ā§, āĻĄā§āĻŽāĻ¨ā§āĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§ āĻ¯āĻž āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤ āĻā§āĻ°āĻ¨ā§āĻ° āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻā§āĻŦāĻŋāĻ˛ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°ā§āĨ¤
āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ā§āĻ° āĻ¤ā§āĻ¤ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ POSIX āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻ° āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸ āĻāĻŋāĻ˛, āĻŦāĻž README-āĻāĻ° āĻļā§āĻā§āĻā§āĻāĻž āĻŦā§āĻ¯āĻ¤ā§āĻ¤ āĻā§āĻ¨āĻ āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸ āĻāĻŋāĻ˛ āĻ¨āĻž: āĻ˛ā§āĻāĻ āĻā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻāĻŋ āĻĻā§āĻ¨ āĻ¨āĻž, āĻ˛ā§āĻāĻā§āĻ° āĻ¨āĻžāĻŽ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻž, āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻ¸āĻš āĻāĻāĻ¸āĻžāĻĨā§ āĻŦāĻŋāĻā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§. āĻāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĻā§āĻ˛āĻŋ āĻĢā§āĻ°āĻŋ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§āĻ° āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻŦāĻ˛ā§ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¯āĻž āĻ¸ā§āĻ āĻŦāĻāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧāĻ¤āĻž āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°ā§āĻāĻŋāĻ˛, āĻ¤āĻžāĻ 90 āĻāĻ° āĻĻāĻļāĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĻāĻŋāĻā§ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻāĻŋāĻā§ āĻŽā§āĻ˛ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨āĻā§āĻ˛āĻŋ āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°ā§āĻ¨āĻā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻ āĻāĻāĻŋ āĻŦāĻŋāĻāĻžāĻļ āĻāĻ°āĻā§āĨ¤
āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§, Red Hat āĻāĻŦāĻ SUSE Vixie cron - cronie-āĻāĻ° āĻāĻāĻāĻŋ āĻāĻžāĻāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻŦāĻ āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻŦāĻ āĻāĻŦā§āĻ¨ā§āĻā§ āĻ āĻ¨ā§āĻ āĻĒā§āĻ¯āĻžāĻ āĻ¸āĻš āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ā§āĻ° āĻāĻ¸āĻ˛ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻĨāĻŽā§ POSIX-āĻ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻāĻāĻāĻžāĻ° āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻā§āĻ°āĻ¨āĻā§āĻ¯āĻžāĻŦā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻšāĻ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ā§ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨ āĻāĻŦāĻ āĻāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ā§ āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ā§āĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨āĻ¤āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻĻā§āĻāĻŦāĨ¤ āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻˇā§, āĻā§āĻā§āĻ° āĻā§āĻ°āĻŋ āĻā§āĻ°ā§āĻ¨ āĻĄā§āĻŽāĻ¨ āĻĄāĻŋāĻāĻžāĻāĻ¸ā§āĻ° āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĨ¤
POSIX āĻā§āĻ°ā§āĻ¨ā§āĻāĻžāĻŦ
āĻ¯āĻĻāĻŋ āĻāĻ¸āĻ˛ āĻā§āĻ°āĻ¨ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸ā§āĻĒāĻžāĻ° āĻāĻāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ āĻāĻ°ā§, āĻāĻ§ā§āĻ¨āĻŋāĻ āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ°āĻ°āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻŽā§āĻāĻžāĻŦā§āĻ˛āĻž āĻāĻ°ā§, āĻ¯āĻž āĻāĻ°āĻ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻāĨ¤
āĻā§āĻ°āĻ¨ āĻĻā§āĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻž āĻšāĻ¯āĻŧ: āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻāĻ˛āĻŽāĻžāĻ¨ āĻā§āĻ°āĻ¨ āĻĄā§āĻŽāĻ¨ āĻāĻŦāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻā§āĻ°āĻ¨ā§āĻāĻžāĻŦ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻ¸ā§āĻ āĻā§āĻŦāĻŋāĻ˛ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ, āĻ¯āĻāĻ¨ āĻĄā§āĻŽāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻā§āĻŦāĻŋāĻ˛ āĻĨā§āĻā§ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĨ¤
Đ
āĻā§āĻ°āĻ¨ā§āĻāĻžāĻŦ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻāĻ˛ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻ°āĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨: āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻ¸ā§āĻ āĻā§āĻŦāĻŋāĻ˛ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻāĻ°ā§āĻ¨, āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻĨā§āĻā§ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻ˛ā§āĻĄ āĻāĻ°ā§āĻ¨, āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻāĻžāĻ¸ā§āĻ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻĻā§āĻāĻžāĻ¨ āĻāĻŦāĻ āĻāĻžāĻ¸ā§āĻ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻ¸āĻžāĻĢ āĻāĻ°ā§āĻ¨āĨ¤ āĻā§āĻ°āĻ¨ā§āĻāĻžāĻŦ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¤āĻžāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ:
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 āĻĢāĻžāĻāĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻā§āĻ°āĻ¨āĻā§āĻ¯āĻžāĻŦā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸āĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻāĻ°ā§ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻžāĻĄāĻŧāĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻāĻ°ā§āĨ¤ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻā§āĻ¨ā§āĻāĻžāĻŦā§āĻ āĻāĻ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°ā§ āĻ¨āĻžāĨ¤
āĻŽāĻžāĻ¨ āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻ˛āĻā§āĻ āĻāĻ°āĻž āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻŽāĻĒāĻā§āĻˇā§ āĻāĻžāĻ°āĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
- HOME - āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻšā§āĻŽ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĨ¤
- LOGNAME â āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ˛āĻāĻāĻ¨āĨ¤
- PATH āĻšāĻ˛ āĻ¸ā§āĻ āĻĒāĻĨ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋāĻā§āĻ˛āĻŋ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
- SHELL â āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻ¨ā§āĻāĻžāĻ°āĻĒā§āĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻĒāĻĨāĨ¤
āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§, āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻĨāĻž āĻĨā§āĻā§ āĻāĻ¸ā§ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ POSIX āĻāĻŋāĻā§āĻ āĻŦāĻ˛ā§ āĻ¨āĻžāĨ¤
āĻ¸ā§āĻ°āĻž āĻŦāĻŋāĻā§āĻ°ā§āĻ¤āĻž - āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ 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
āĻāĻžāĻ¸ā§āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦā§āĻļ
āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ˛āĻŽāĻžāĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ USER, LOGNAME āĻāĻŦāĻ HOME āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄā§āĻŽāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻĨā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ
āĻāĻŋāĻā§ āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ (āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ SHELL āĻāĻŦāĻ HOME) āĻāĻžāĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ°ā§āĻ¨ āĻ¨āĻŋāĻā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻāĻžāĻ¸ā§āĻāĻŽ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ sh āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ bash āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ˛ā§ āĻĻā§āĻāĻ¤ā§ āĻā§āĻŽāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¤āĻž āĻāĻāĻžāĻ¨ā§:
SHELL=/bin/bash
HOME=/tmp/
# exec ĐąŅĐ´ĐĩŅ СаĐŋŅŅĐĩĐŊ bash-ĐĩĐŧ в /tmp/
* * * * * /path/to/exec
āĻĒāĻ°āĻŋāĻļā§āĻˇā§, āĻā§āĻŦāĻŋāĻ˛ā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ (āĻā§āĻ°āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻŦāĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ) āĻāĻ˛āĻŽāĻžāĻ¨ āĻāĻžāĻ¸ā§āĻā§ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻāĻ°āĻ¤ā§, āĻā§āĻ°ā§āĻ¨ā§āĻāĻžāĻŦ āĻāĻŋāĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛ āĻŦāĻž āĻāĻĄāĻŋāĻāĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻ¯ā§ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ crontab āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¯āĻĻāĻŋ āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§āĻ˛āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ¨āĻž āĻĨāĻžāĻā§, āĻ¤āĻžāĻšāĻ˛ā§ "/usr/ucb/vi" āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻāĻāĻ¸āĻŋāĻŦāĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻā§āĻ¯āĻžāĻ˛āĻŋāĻĢā§āĻ°ā§āĻ¨āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻļā§āĻŦāĻŦāĻŋāĻĻā§āĻ¯āĻžāĻ˛āĻ¯āĻŧ, āĻŦāĻžāĻ°ā§āĻāĻ˛ā§)āĨ¤
āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻŦāĻ āĻāĻŦā§āĻ¨ā§āĻā§āĻ¤ā§ āĻā§āĻ°ā§āĻ¨
āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻāĻŦāĻ āĻĄā§āĻ°āĻŋāĻā§āĻāĻŋāĻ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻļāĻ¨ā§āĻ° āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§āĻā§
āĻāĻŽ āĻ˛āĻā§āĻˇāĻŖā§āĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ āĻāĻŦāĻ āĻāĻžāĻ¸ā§āĻ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¨āĨ¤
āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ /var/spool/cron/crontabs āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻ āĻŦāĻ¸ā§āĻĨāĻŋāĻ¤, āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻāĻāĻ¨āĻ āĻāĻā§ - /etc/crontab-āĻāĨ¤ āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻĒā§āĻ¯āĻžāĻā§āĻ-āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻ¸ā§āĻ āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ /etc/cron.d-āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§āĻāĻžāĻ¨ āĻĨā§āĻā§ āĻā§āĻ°ā§āĻ¨ āĻĄā§āĻŽāĻ¨ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻĒāĻĄāĻŧā§āĨ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ /etc/cron.allow āĻāĻŦāĻ /etc/cron.deny āĻĢāĻžāĻāĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻļā§āĻ˛āĻāĻŋ āĻāĻāĻ¨āĻ /bin/sh, āĻ¯āĻž āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻā§āĻ POSIX-āĻ¸āĻŽā§āĻŽāĻ¤ āĻļā§āĻ˛
āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ā§āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻā§āĻ°ā§āĻ¨ āĻ¨āĻŋāĻā§āĻ systemd āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻžāĻ˛ā§ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻ˛āĻā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ /lib/systemd/system/cron.service-āĻ āĻĻā§āĻāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻŦāĻŋāĻļā§āĻˇ āĻāĻŋāĻā§ āĻ¨ā§āĻ; āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻā§āĻ°āĻ¨āĻā§āĻ¯āĻžāĻŦā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻā§āĻˇāĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ°āĻ āĻ¸ā§āĻā§āĻˇā§āĻŽ āĻāĻžāĻ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ°ā§āĻĄāĻšā§āĻ¯āĻžāĻ, āĻĢā§āĻĄā§āĻ°āĻž āĻāĻŦāĻ āĻ¸ā§āĻ¨ā§āĻā§āĻ¸ā§ āĻā§āĻ°āĻ¨āĻŋ
āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨āĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻ°āĻ¯āĻŧā§āĻā§: āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ /etc/crontab-āĻ āĻ°āĻ¯āĻŧā§āĻā§, āĻĒā§āĻ¯āĻžāĻā§āĻāĻā§āĻ˛āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ /etc/cron.d-āĻ āĻ°āĻžāĻā§, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻā§āĻŦāĻŋāĻ˛āĻā§āĻ˛āĻŋ /var/spool/cron/crontabs-āĻ āĻ¯āĻžāĻ¯āĻŧāĨ¤
āĻĄā§āĻŽāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻĄ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖā§āĻ° āĻ āĻ§ā§āĻ¨ā§ āĻāĻ˛ā§, āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻšāĻ˛ /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āĨ¤ /bin/sh āĻšāĻ˛ āĻāĻāĻ āĻŦā§āĻ¯āĻžāĻļ āĻ¯āĻž POSIX-āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ¨āĻ¨-āĻāĻ¨ā§āĻāĻžāĻ°ā§āĻā§āĻāĻŋāĻ āĻŽā§āĻĄā§ āĻāĻ˛āĻā§āĨ¤
āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ āĻĄāĻŋāĻāĻžāĻāĻ¸
āĻā§āĻ°āĻ¨ā§āĻ° āĻāĻ§ā§āĻ¨āĻŋāĻ āĻŦāĻāĻļāĻ§āĻ°āĻ°āĻž āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻāĻŽā§āĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻ¨āĻŋ, āĻ¤āĻŦā§ āĻāĻāĻ¨āĻ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°ā§āĻā§ āĻ¯āĻž āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻ¨ā§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻŦā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻ āĻāĻā§āĻ¸āĻā§āĻ¨āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ°āĻžāĻĒāĻāĻžāĻŦā§ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻā§āĻĄāĻāĻŋāĻā§ āĻŦāĻŋāĻā§āĻ°āĻžāĻ¨ā§āĻ¤ āĻāĻ°ā§āĨ¤ āĻĒāĻ˛ āĻāĻŋāĻā§āĻ¸āĻŋāĻ° āĻŽā§āĻ˛ āĻā§āĻ°ā§āĻ¨ āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄāĻāĻŋ āĻĒāĻĄāĻŧā§ āĻāĻ¨āĻ¨ā§āĻĻāĻŋāĻ¤āĨ¤
āĻ āĻ¤āĻāĻŦ, āĻāĻŽāĻŋ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻāĻ¯āĻŧ āĻļāĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻāĻāĻŋ āĻā§āĻ°āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻ°ā§āĻ¨ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ - āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ 3.0pl1āĨ¤ āĻāĻŽāĻŋ āĻ¯āĻĻāĻŋ āĻĒāĻĄāĻŧāĻžāĻā§ āĻāĻāĻŋāĻ˛ āĻāĻ°ā§ āĻāĻŽāĻ¨ ifdef āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻŦāĻ āĻā§āĻāĻāĻžāĻā§ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻ°āĻ˛ āĻāĻ°āĻŦā§ˇ
āĻ°āĻžāĻā§āĻˇāĻ¸ā§āĻ° āĻāĻžāĻāĻā§ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ:
- āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻāĻ°āĻŽā§āĻāĨ¤
- āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻāĻā§āĻ°āĻš āĻ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻžāĨ¤
- āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻā§āĻ°āĻ¨ āĻ˛ā§āĻĒ āĻāĻ˛āĻŽāĻžāĻ¨.
- āĻāĻāĻāĻŋ āĻāĻžāĻ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻ° āĻā§āĻ°āĻŽāĻžāĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¤āĻžāĻāĻžāĻ¨.
āĻāĻ°āĻŽā§āĻ
āĻ¯āĻāĻ¨ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ, āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻā§āĻ°āĻ¨ SIGCHLD āĻāĻŦāĻ SIGHUP āĻ¸āĻāĻā§āĻ¤ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĨ¤ āĻĒā§āĻ°āĻĨāĻŽāĻāĻŋ āĻāĻžāĻāĻ˛ā§āĻĄ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻāĻāĻŋ āĻ˛āĻ āĻāĻ¨ā§āĻā§āĻ°āĻŋ āĻāĻ°ā§, āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋ āĻ˛āĻ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĢāĻžāĻāĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻāĻžāĻ°ā§ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§:
signal(SIGCHLD, sigchld_handler);
signal(SIGHUP, sighup_handler);
āĻā§āĻ°āĻ¨ āĻĄā§āĻŽāĻ¨ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§ āĻāĻāĻžāĻ āĻāĻ˛ā§, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĒāĻžāĻ° āĻāĻāĻāĻžāĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻŦāĻ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻā§āĻ°āĻ¨ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻĨā§āĻā§āĨ¤ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻ˛āĻā§āĻ˛āĻŋ āĻĄā§āĻŽāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻĒāĻŋāĻāĻāĻĄāĻŋ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ˛āĻ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§, āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¸āĻ āĻŋāĻ āĻāĻŦāĻ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻāĻŋāĻā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨āĻāĻŋāĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻ¨:
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;
}
}
āĻāĻāĻžāĻ¨ā§, āĻšāĻ¯āĻŧ āĻ˛ā§āĻĄ_āĻāĻ¨āĻāĻŋ / āĻāĻ¨āĻāĻŋ_āĻ¸ā§āĻ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ (āĻāĻŋāĻāĻāĻ° = āĻā§āĻ¯āĻžāĻ˛ā§ āĻĢāĻ°ā§āĻŽā§āĻ° āĻ˛āĻžāĻāĻ¨) āĻ āĻĨāĻŦāĻž āĻ˛ā§āĻĄ_āĻāĻ¨ā§āĻā§āĻ°āĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻžāĻ¸ā§āĻā§āĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ āĻĒāĻĄāĻŧāĻž āĻšāĻ¯āĻŧā§āĻā§ (* * * * * /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 āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĒāĻĄāĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŦāĻ āĻāĻ āĻŽā§āĻĄā§ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĻā§āĻ°ā§āĻ¤ āĻāĻžāĻā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĨ¤
āĻāĻŋāĻā§āĻ¸āĻŋ āĻā§āĻ°āĻ¨ āĻŽāĻŋāĻ¨āĻŋāĻā§ āĻāĻāĻŦāĻžāĻ° āĻāĻžāĻ¸ā§āĻ āĻ˛āĻŋāĻ¸ā§āĻ āĻā§āĻ āĻāĻ°āĻ¤ā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻ¨, āĻ¸ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤ 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