ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະເລືອກເອົາເວລາປະຕິບັດທີ່ແປກປະຫລາດ, ເພາະວ່າວຽກຂອງລະບົບມັກຈະເຮັດວຽກຢູ່ໃນຊົ່ວໂມງ "ຮອບ", ດັ່ງທີ່ເຈົ້າເຫັນໃນພາກ 4.4.4 ໃນພາກຕໍ່ໄປ. ຕົວຢ່າງ, ວຽກມັກຈະດໍາເນີນການໃນເວລາ 1 ໂມງເຊົ້າ (ເຊັ່ນ: ການສ້າງດັດສະນີລະບົບເພື່ອປັບປຸງຖານຂໍ້ມູນສະຖານທີ່ມາດຕະຖານ), ດັ່ງນັ້ນການເຂົ້າໄປໃນເວລາຂອງ 0100 ອາດຈະເຮັດໃຫ້ລະບົບຂອງທ່ານຊ້າລົງໄດ້ງ່າຍກວ່າການດັບໄຟ. ເພື່ອປ້ອງກັນບໍ່ໃຫ້ວຽກເຮັດວຽກທັງຫມົດໃນເວລາດຽວກັນ, ທ່ານອາດຈະໃຊ້ batch ຄໍາສັ່ງ, ເຊິ່ງຈັດຄິວຂະບວນການແລະສົ່ງວຽກຢູ່ໃນຄິວໄປຫາລະບົບດ້ວຍວິທີທີ່ມີຄວາມສົມດູນກັນ, ປ້ອງກັນການລະເບີດຂອງການໃຊ້ຊັບພະຍາກອນຂອງລະບົບຫຼາຍເກີນໄປ. ເບິ່ງໜ້າຂໍ້ມູນສຳລັບຂໍ້ມູນເພີ່ມເຕີມ.
![]()
4.4.4. Cron ແລະ crontab
ລະບົບ cron ໄດ້ຖືກຄຸ້ມຄອງໂດຍ cron ເດມອນ ມັນໄດ້ຮັບຂໍ້ມູນກ່ຽວກັບໂຄງການໃດແລະເວລາທີ່ເຂົາເຈົ້າຄວນຈະດໍາເນີນການຈາກການເຂົ້າ crontab ຂອງລະບົບແລະຜູ້ໃຊ້. ຜູ້ໃຊ້ຮາກເທົ່ານັ້ນທີ່ມີການເຂົ້າເຖິງ crontabs ລະບົບ, ໃນຂະນະທີ່ຜູ້ໃຊ້ແຕ່ລະຄົນຄວນຈະມີການເຂົ້າເຖິງ crontabs ຂອງຕົນເອງເທົ່ານັ້ນ. ໃນບາງລະບົບ (ບາງຄົນ) ຜູ້ໃຊ້ອາດຈະບໍ່ມີການເຂົ້າເຖິງສະຖານທີ່ cron.
ໃນຕອນເລີ່ມຕົ້ນຂອງລະບົບ, cron daemon ຄົ້ນຫາ / var / spool / cron / ສໍາລັບການເຂົ້າ crontab ທີ່ມີຊື່ຫຼັງຈາກບັນຊີໃນ / etc / passwd, ມັນຄົ້ນຫາ /etc/cron.d/ ແລະມັນຄົ້ນຫາ / etc / crontab, ຫຼັງຈາກນັ້ນໃຊ້ຂໍ້ມູນນີ້ທຸກໆນາທີເພື່ອກວດເບິ່ງວ່າມີບາງສິ່ງບາງຢ່າງທີ່ຕ້ອງເຮັດ. ມັນປະຕິບັດຄໍາສັ່ງເປັນຜູ້ໃຊ້ທີ່ເປັນເຈົ້າຂອງໄຟລ໌ crontab ແລະສົ່ງຜົນໄດ້ຮັບຂອງຄໍາສັ່ງໃດໆກັບເຈົ້າຂອງ.
ໃນລະບົບທີ່ໃຊ້ Vixie cron, ວຽກທີ່ເກີດຂື້ນເປັນຊົ່ວໂມງ, ປະຈໍາວັນ, ອາທິດແລະປະຈໍາເດືອນແມ່ນຖືກເກັບໄວ້ໃນລາຍການແຍກຕ່າງຫາກໃນ. / ແລະອື່ນໆ ເພື່ອຮັກສາພາບລວມ, ກົງກັນຂ້າມກັບຟັງຊັນ UNIX cron ມາດຕະຖານ, ບ່ອນທີ່ວຽກງານທັງຫມົດຖືກເຂົ້າໄປໃນໄຟລ໌ໃຫຍ່ຫນຶ່ງ.
ຕົວຢ່າງຂອງໄຟລ໌ Vixie crontab:
[root@blob /etc]# crontab ຫຼາຍ SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=ຮາກ
ໜ້າຫຼັກ=/
# ພາກສ່ວນແລ່ນ
# ຄໍາສັ່ງທີ່ຈະປະຕິບັດທຸກໆຊົ່ວໂມງ
01 * * * * root run-parts /etc/cron.hourly
# ຄໍາສັ່ງທີ່ຈະປະຕິບັດທຸກໆມື້
02 4 * * * root run-parts /etc/cron.daily
# ຄໍາສັ່ງທີ່ຈະປະຕິບັດທຸກໆອາທິດ
22 4 * * 0 root run-parts /etc/cron.weekly ຄໍາສັ່ງທີ່ຈະປະຕິບັດທຸກໆເດືອນ
42 4 1 * * root run-parts /etc/cron.monthly
[root@blob /etc]# crontab ຫຼາຍ SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=ຮາກ
ໜ້າຫຼັກ=/
# ພາກສ່ວນແລ່ນ
# ຄໍາສັ່ງທີ່ຈະປະຕິບັດທຸກໆຊົ່ວໂມງ
01 * * * * root run-parts /etc/cron.hourly
# ຄໍາສັ່ງທີ່ຈະປະຕິບັດທຸກໆມື້
02 4 * * * root run-parts /etc/cron.daily
# ຄໍາສັ່ງທີ່ຈະປະຕິບັດທຸກໆອາທິດ
22 4 * * 0 root run-parts /etc/cron.weekly ຄໍາສັ່ງທີ່ຈະປະຕິບັດທຸກໆເດືອນ
42 4 1 * * root run-parts /etc/cron.monthly
ທາງເລືອກ
ທ່ານຍັງສາມາດນໍາໃຊ້ໄດ້ crontab -l ຄໍາສັ່ງເພື່ອສະແດງ crontabs.
ບາງຕົວແປຖືກກໍານົດ, ແລະຫຼັງຈາກນັ້ນມີການກໍານົດເວລາຕົວຈິງ, ຫນຶ່ງແຖວຕໍ່ວຽກ, ເລີ່ມຕົ້ນດ້ວຍ 5 ຊ່ອງເວລາແລະວັນທີ. ພາກສະຫນາມທໍາອິດປະກອບມີນາທີ (ຈາກ 0 ຫາ 59), ທີສອງກໍານົດຊົ່ວໂມງປະຕິບັດ (0-23), ທີສາມແມ່ນມື້ຂອງເດືອນ (1-31), ຫຼັງຈາກນັ້ນຈໍານວນຂອງເດືອນ (1-12) , ສຸດທ້າຍແມ່ນມື້ຂອງອາທິດ (0-7, ທັງ 0 ແລະ 7 ແມ່ນວັນອາທິດ). ເຄື່ອງໝາຍດາວຢູ່ໃນຊ່ອງຂໍ້ມູນເຫຼົ່ານີ້ສະແດງເຖິງຂອບເຂດທີ່ຍອມຮັບໄດ້ທັງໝົດສຳລັບຊ່ອງຂໍ້ມູນ. ລາຍຊື່ຖືກອະນຸຍາດ; to execute a job from Monday to Friday enter 1-5 in the final field , ການປະຕິບັດວຽກເຮັດງານທໍາວັນຈັນ, ວັນພຸດແລະວັນສຸກເຂົ້າ 1,3,5.
ຫຼັງຈາກນັ້ນ, ຜູ້ໃຊ້ທີ່ຄວນຈະດໍາເນີນການຂະບວນການທີ່ໄດ້ລະບຸໄວ້ໃນຄໍລໍາສຸດທ້າຍ. ຕົວຢ່າງຂ້າງເທິງນີ້ແມ່ນມາຈາກການຕັ້ງຄ່າ Vixie cron ບ່ອນທີ່ root ດໍາເນີນການໂຄງການ ພາກສ່ວນແລ່ນ ໃນໄລຍະທີ່ເປັນປົກກະຕິ, ມີລາຍການທີ່ເຫມາະສົມເປັນທາງເລືອກ. ໃນໄດເລກະທໍລີເຫຼົ່ານີ້, ວຽກຕົວຈິງທີ່ຈະປະຕິບັດໃນເວລາທີ່ກໍານົດແມ່ນຖືກເກັບໄວ້ເປັນ Shell scripts, ເຊັ່ນ script ນ້ອຍນີ້ທີ່ດໍາເນີນການປະຈໍາວັນເພື່ອປັບປຸງຖານຂໍ້ມູນທີ່ໃຊ້ໂດຍ ຊອກຫາສະຖານທີ່ ຄໍາສັ່ງ:
billy@ahost cron.daily]$ cat slocate.cron
#! / bin / sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"
billy@ahost cron.daily]$ cat slocate.cron
#! / bin / sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts" -e \ "/tmp,/var/tmp, /usr/tmp,/afs,/net"
ຜູ້ໃຊ້ຄວນຈະແກ້ໄຂ crontabs ຂອງເຂົາເຈົ້າໃນວິທີການທີ່ປອດໄພໂດຍການນໍາໃຊ້ crontab -e ຄໍາສັ່ງ. ນີ້ຈະປ້ອງກັນບໍ່ໃຫ້ຜູ້ໃຊ້ເປີດຫຼາຍກວ່າຫນຶ່ງສໍາເນົາຂອງໄຟລ໌ crontab ຂອງລາວໂດຍບັງເອີນ. ບັນນາທິການເລີ່ມຕົ້ນແມ່ນ vi (ເບິ່ງບົດທີ 6, ແຕ່ທ່ານສາມາດນໍາໃຊ້ຕົວແກ້ໄຂຂໍ້ຄວາມໃດໆ, ເຊັ່ນ: ຈີມ or gedit ຖ້າທ່ານຮູ້ສຶກສະດວກສະບາຍກັບບັນນາທິການ GUI.
ເມື່ອທ່ານອອກ, ລະບົບຈະບອກທ່ານວ່າມີການຕິດຕັ້ງ crontab ໃໝ່.
ການເຂົ້າ crontab ນີ້ເຕືອນ billy ໄປສະໂມສອນກິລາຂອງລາວທຸກໆຄືນວັນພະຫັດ:
billy:~> crontab-l
# ຢ່າແກ້ໄຂໄຟລ໌ນີ້ - ແກ້ໄຂຕົ້ນສະບັບແລະຕິດຕັ້ງໃຫມ່.
# (/tmp/crontab.20264 ຕິດຕັ້ງໃນ Sun Jul 20 22:35:14 2003)
billy:~> crontab-l
# ຢ່າແກ້ໄຂໄຟລ໌ນີ້ - ແກ້ໄຂຕົ້ນສະບັບແລະຕິດຕັ້ງໃຫມ່.
# (/tmp/crontab.20264 ຕິດຕັ້ງໃນ Sun Jul 20 22:35:14 2003)
# (Cron version -- $Id: chap4.xml,v 1.28 2007/09/19 12:22:26 tille Exp $)
38 16 * * 3 mail -s "ຕອນແລງກິລາ" billy
# (Cron version -- $Id: chap4.xml,v 1.28 2007/09/19 12:22:26 tille Exp $)
38 16 * * 3 mail -s "ຕອນແລງກິລາ" billy
ຫຼັງຈາກເພີ່ມວຽກທີ່ກໍານົດໄວ້ໃຫມ່, ລະບົບຈະບອກທ່ານວ່າມີການຕິດຕັ້ງ crontab ໃຫມ່. ທ່ານບໍ່ຈໍາເປັນຕ້ອງ restart cron daemon ສໍາລັບການປ່ຽນແປງທີ່ຈະມີຜົນ. ໃນຕົວຢ່າງ, billy ເພີ່ມແຖວໃໝ່ຊີ້ໄປຫາສະຄຣິບສຳຮອງ:
billy:~> crontab-e
45 15 * * 3 mail -s "ຕອນແລງກິລາ" billy
4 4 * * 4,7 /home/billy/bin/backup.sh
<-- ຂຽນ ແລະ ອອກ-->
crontab: ການຕິດຕັ້ງໃຫມ່ crontab billy:~>
billy:~> crontab-e
45 15 * * 3 mail -s "ຕອນແລງກິລາ" billy
4 4 * * 4,7 /home/billy/bin/backup.sh
<-- ຂຽນ ແລະ ອອກ-->
crontab: ການຕິດຕັ້ງໃຫມ່ crontab billy:~>
ໄດ້ backup.sh script ຖືກປະຕິບັດທຸກໆວັນພະຫັດແລະວັນອາທິດ. ເບິ່ງພາກ 7.2.5 ສໍາລັບການແນະນໍາກ່ຽວກັບ Shell scripting. ຈົ່ງຈື່ໄວ້ວ່າຜົນຜະລິດຂອງຄໍາສັ່ງ, ຖ້າມີ, ຖືກສົ່ງໄປຫາເຈົ້າຂອງໄຟລ໌ crontab. ຖ້າຫາກວ່າບໍ່ມີການບໍລິການເມລໄດ້ຖືກຕັ້ງຄ່າ, ທ່ານອາດຈະຊອກຫາຜົນຜະລິດຂອງຄໍາສັ່ງຂອງທ່ານຢູ່ໃນ mailbox ທ້ອງຖິ່ນຂອງທ່ານ,
/var/spool/mail/ , ໄຟລ໌ຂໍ້ຄວາມທໍາມະດາ.
ເອກະສານ