ເປັນຫຍັງພວກເຮົາໃຊ້ຄໍາສັ່ງ Nohup ໃນ Linux?

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

  1. ທ່ານຈໍາເປັນຕ້ອງຮູ້ pid ຂອງຂະບວນການທີ່ທ່ານຕ້ອງການທີ່ຈະເບິ່ງ. ທ່ານສາມາດໃຊ້ pgrep ຫຼື jobs -l : jobs -l [1]- 3730 Running sleep 1000 & [2]+ 3734 Running nohup sleep 1000 & …
  2. ລອງເບິ່ງ /proc/ /fd .

ເຈົ້າໃຊ້ການປະຕິເສດແນວໃດ?

ຄໍາສັ່ງ disown ແມ່ນ built-in ທີ່ເຮັດວຽກກັບ shells ເຊັ່ນ bash ແລະ zsh. ເພື່ອໃຊ້ມັນ, ເຈົ້າ ພິມ "ປະຕິເສດ" ຕາມດ້ວຍ ID ຂະບວນການ (PID) ຫຼືຂະບວນການທີ່ທ່ານຕ້ອງການທີ່ຈະປະຕິເສດ.

ຂ້ອຍຈະປ່ຽນເສັ້ນທາງຜົນຜະລິດຂອງ nohup ໄດ້ແນວໃດ?

ການປ່ຽນເສັ້ນທາງຜົນຜະລິດໄປຫາໄຟລ໌

ໂດຍຕົວຢ່າງ, nohup redirects ຄໍາສັ່ງອອກໄປຫາ nohup. ອອກໄຟລ໌. ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ຕ້ອງ​ການ​ທີ່​ຈະ​ປ່ຽນ​ເສັ້ນ​ທາງ​ຜົນ​ຜະ​ລິດ​ກັບ​ໄຟລ​໌​ທີ່​ແຕກ​ຕ່າງ​ກັນ​, ການ​ນໍາ​ໃຊ້​ການ​ປ່ຽນ​ເສັ້ນ​ທາງ shell ມາດ​ຕະ​ຖານ​.

ໄຟລ໌ nohup ແມ່ນຫຍັງ?

nohup ແມ່ນ ຄໍາສັ່ງ POSIX ຊຶ່ງຫມາຍຄວາມວ່າ "ບໍ່ວາງສາຍ". ຈຸດ​ປະ​ສົງ​ຂອງ​ມັນ​ແມ່ນ​ເພື່ອ​ປະ​ຕິ​ບັດ​ຄໍາ​ສັ່ງ​ທີ່​ມັນ​ລະ​ເລີຍ​ສັນ​ຍານ HUP (hangup​) ແລະ​ດັ່ງ​ນັ້ນ​ຈຶ່ງ​ບໍ່​ໄດ້​ຢຸດ​ເຊົາ​ໃນ​ເວ​ລາ​ທີ່​ຜູ້​ໃຊ້​ອອກ​ຈາກ​ລະ​ບົບ​. ຜົນຜະລິດທີ່ປົກກະຕິຈະໄປຫາ terminal ໄປຫາໄຟລ໌ທີ່ເອີ້ນວ່າ nohup.

ມັກໂພສນີ້ບໍ່? ກະລຸນາແບ່ງປັນໃຫ້ ໝູ່ ເພື່ອນຂອງທ່ານ:
OS ມື້ນີ້