Nohup, ສັ້ນສໍາລັບການບໍ່ວາງສາຍແມ່ນຄໍາສັ່ງໃນລະບົບ Linux ທີ່ຮັກສາຂະບວນການເຮັດວຽກເຖິງແມ່ນວ່າຫຼັງຈາກອອກຈາກ shell ຫຼື terminal. Nohup ປ້ອງກັນຂະບວນການຫຼືວຽກຈາກການໄດ້ຮັບສັນຍານ SIGHUP (Signal Hang UP). ນີ້ແມ່ນສັນຍານທີ່ຖືກສົ່ງໄປຫາຂະບວນການໃນເວລາທີ່ປິດຫຼືອອກຈາກ terminal.
ການນໍາໃຊ້ຄໍາສັ່ງ nohup ໃນ Linux ແມ່ນຫຍັງ?
nohup ຢືນສໍາລັບການບໍ່ມີການວາງສາຍ, ມັນເປັນຜົນປະໂຫຍດ Linux ທີ່ ຮັກສາຂະບວນການເຮັດວຽກເຖິງແມ່ນວ່າຫຼັງຈາກອອກຈາກ terminal ຫຼື shell. ມັນປ້ອງກັນຂະບວນການຈາກການໄດ້ຮັບສັນຍານ SIGHUP (Signal hang up); ສັນຍານເຫຼົ່ານີ້ຖືກສົ່ງໄປຫາຂະບວນການເພື່ອຢຸດຫຼືສິ້ນສຸດຂະບວນການ.
ເປັນຫຍັງພວກເຮົາຕ້ອງການ nohup?
ໃນເວລາທີ່ການນໍາໃຊ້ການນໍາເຂົ້າຂໍ້ມູນຂະຫນາດໃຫຍ່ກ່ຽວກັບການເປັນເຈົ້າພາບຫ່າງໄກສອກຫຼີກ, ສໍາລັບການຍົກຕົວຢ່າງ, you may want to use nohup to ໃຫ້ແນ່ໃຈວ່າການຕັດການເຊື່ອມຕໍ່ຈະບໍ່ໃຫ້ທ່ານເລີ່ມຕົ້ນໃຫມ່ເມື່ອທ່ານເຊື່ອມຕໍ່ໃຫມ່. ມັນຍັງຖືກນໍາໃຊ້ໃນເວລາທີ່ນັກພັດທະນາບໍ່ໄດ້ daemonize ການບໍລິການຢ່າງຖືກຕ້ອງ, ດັ່ງນັ້ນທ່ານຕ້ອງໃຊ້ nohup ເພື່ອຮັບປະກັນວ່າມັນບໍ່ໄດ້ຖືກຂ້າຕາຍເມື່ອທ່ານອອກຈາກລະບົບ.
ຂ້ອຍຈະດໍາເນີນການຄໍາສັ່ງ nohup ໄດ້ແນວໃດ?
ເພື່ອດໍາເນີນການຄໍາສັ່ງ nohup ໃນພື້ນຫລັງ, ເພີ່ມ & (ampersand) ໄປໃນຕອນທ້າຍຂອງຄໍາສັ່ງ. ຖ້າຂໍ້ຜິດພາດມາດຕະຖານຖືກສະແດງຢູ່ໃນ terminal ແລະຖ້າຜົນໄດ້ຮັບມາດຕະຖານບໍ່ສະແດງຢູ່ໃນ terminal, ຫຼືຖືກສົ່ງໄປຫາໄຟລ໌ຜົນຜະລິດທີ່ຜູ້ໃຊ້ລະບຸ (ໄຟລ໌ຜົນຜະລິດເລີ່ມຕົ້ນແມ່ນ nohup. out), ທັງ ./nohup.
ຂ້ອຍຈະແລ່ນສະຄິບ nohup ໃນ Linux ໄດ້ແນວໃດ?
syntax ຄໍາສັ່ງ nohup:
command-name : ແມ່ນຊື່ຂອງ shell script ຫຼືຊື່ຄໍາສັ່ງ. ທ່ານສາມາດຜ່ານ argument ກັບຄໍາສັ່ງຫຼື shell script. & : nohup ບໍ່ອັດຕະໂນມັດໃສ່ຄໍາສັ່ງທີ່ມັນແລ່ນຢູ່ໃນພື້ນຫລັງ; ທ່ານຕ້ອງເຮັດຢ່າງຈະແຈ້ງ, ໂດຍ ສິ້ນສຸດເສັ້ນຄໍາສັ່ງດ້ວຍ & ສັນຍາລັກ.
ຄວາມແຕກຕ່າງລະຫວ່າງ nohup ແລະ &?
nohup ຈັບສັນຍານ hangup (ເບິ່ງ man 7 signal ) ໃນຂະນະທີ່ ampersand ບໍ່ (ຍົກເວັ້ນ shell ໄດ້ຖືກ confgured ແບບນັ້ນຫຼືບໍ່ໄດ້ສົ່ງ SIGHUP ທັງຫມົດ). ໂດຍປົກກະຕິ, ເມື່ອແລ່ນຄຳສັ່ງໂດຍໃຊ້ & ແລະອອກຈາກ shell ຫລັງຈາກນັ້ນ, shell ຈະປິດຄຳສັ່ງຍ່ອຍດ້ວຍສັນຍານ hangup ( kill -SIGHUP ).
ເປັນຫຍັງ nohup ບໍ່ເຮັດວຽກ?
Re: nohup ບໍ່ເຮັດວຽກ
Shell ອາດຈະເຮັດວຽກໂດຍປິດການຄວບຄຸມວຽກ. … ເວັ້ນເສຍແຕ່ວ່າທ່ານກໍາລັງໃຊ້ Shell ທີ່ຖືກຈໍາກັດ, ການຕັ້ງຄ່ານີ້ຄວນຈະສາມາດປ່ຽນແປງໄດ້ໂດຍຜູ້ໃຊ້. ແລ່ນ “stty -a |grep tostop”. ຖ້າຕັ້ງຕົວເລືອກ "tostop" TTY, ວຽກພື້ນຖານໃດໆກໍ່ຢຸດທັນທີທີ່ມັນພະຍາຍາມຜະລິດຜົນຜະລິດໃດໆໄປຫາເຄື່ອງໃຊ້ໄຟຟ້າ.
ເປັນຫຍັງ nohup ບໍ່ສົນໃຈການປ້ອນຂໍ້ມູນ?
nohup ແມ່ນ ບອກທ່ານຢ່າງແນ່ນອນວ່າມັນກໍາລັງເຮັດຫຍັງ, ວ່າມັນບໍ່ສົນໃຈ ວັດສະດຸປ້ອນ. "ຖ້າການປ້ອນຂໍ້ມູນມາດຕະຖານເປັນຈຸດເຊື່ອມຕໍ່, ປ່ຽນເສັ້ນທາງຈາກໄຟລ໌ທີ່ບໍ່ສາມາດອ່ານໄດ້." ມັນກໍາລັງເຮັດສິ່ງທີ່ມັນຄວນຈະເຮັດ, ເຖິງວ່າຈະມີລາຍການ OPTION, ນັ້ນແມ່ນເຫດຜົນທີ່ການປ້ອນຂໍ້ມູນຖືກຍົກເລີກ.
ຂ້ອຍຈະຮູ້ໄດ້ແນວໃດວ່າວຽກເຮັດວຽກຢູ່ໃນ nohup?
ຄໍາຕອບ 1
- ທ່ານຈໍາເປັນຕ້ອງຮູ້ pid ຂອງຂະບວນການທີ່ທ່ານຕ້ອງການທີ່ຈະເບິ່ງ. ທ່ານສາມາດໃຊ້ pgrep ຫຼື jobs -l : jobs -l [1]- 3730 Running sleep 1000 & [2]+ 3734 Running nohup sleep 1000 & …
- ລອງເບິ່ງ /proc/ /fd .
ເຈົ້າໃຊ້ການປະຕິເສດແນວໃດ?
ຄໍາສັ່ງ disown ແມ່ນ built-in ທີ່ເຮັດວຽກກັບ shells ເຊັ່ນ bash ແລະ zsh. ເພື່ອໃຊ້ມັນ, ເຈົ້າ ພິມ "ປະຕິເສດ" ຕາມດ້ວຍ ID ຂະບວນການ (PID) ຫຼືຂະບວນການທີ່ທ່ານຕ້ອງການທີ່ຈະປະຕິເສດ.
ຂ້ອຍຈະປ່ຽນເສັ້ນທາງຜົນຜະລິດຂອງ nohup ໄດ້ແນວໃດ?
ການປ່ຽນເສັ້ນທາງຜົນຜະລິດໄປຫາໄຟລ໌
ໂດຍຕົວຢ່າງ, nohup redirects ຄໍາສັ່ງອອກໄປຫາ nohup. ອອກໄຟລ໌. ຖ້າຫາກວ່າທ່ານຕ້ອງການທີ່ຈະປ່ຽນເສັ້ນທາງຜົນຜະລິດກັບໄຟລ໌ທີ່ແຕກຕ່າງກັນ, ການນໍາໃຊ້ການປ່ຽນເສັ້ນທາງ shell ມາດຕະຖານ.
ໄຟລ໌ nohup ແມ່ນຫຍັງ?
nohup ແມ່ນ ຄໍາສັ່ງ POSIX ຊຶ່ງຫມາຍຄວາມວ່າ "ບໍ່ວາງສາຍ". ຈຸດປະສົງຂອງມັນແມ່ນເພື່ອປະຕິບັດຄໍາສັ່ງທີ່ມັນລະເລີຍສັນຍານ HUP (hangup) ແລະດັ່ງນັ້ນຈຶ່ງບໍ່ໄດ້ຢຸດເຊົາໃນເວລາທີ່ຜູ້ໃຊ້ອອກຈາກລະບົບ. ຜົນຜະລິດທີ່ປົກກະຕິຈະໄປຫາ terminal ໄປຫາໄຟລ໌ທີ່ເອີ້ນວ່າ nohup.