ຊຸດ RHCSA: ການຄຸ້ມຄອງຂັ້ນຕອນໃນ RHEL 7: ເກີບ, ການປິດ, ແລະທຸກຢ່າງໃນລະຫວ່າງ - ພາກທີ 5


ພວກເຮົາຈະເລີ່ມຕົ້ນບົດຄວາມນີ້ໂດຍມີການປັບປຸງໂດຍລວມແລະຫຍໍ້ກ່ຽວກັບສິ່ງທີ່ເກີດຂື້ນຕັ້ງແຕ່ເວລາທີ່ທ່ານກົດປຸ່ມ Power ເພື່ອເປີດເຄື່ອງແມ່ຂ່າຍ RHEL 7 ຂອງທ່ານຈົນກວ່າທ່ານຈະຖືກ ນຳ ສະ ເໜີ ໜ້າ ຈໍເຂົ້າສູ່ລະບົບໃນອິນເຕີເຟດເສັ້ນ ຄຳ ສັ່ງ.

ກະລຸນາສັງເກດວ່າ:

1. ນຳ ໃຊ້ຫຼັກການພື້ນຖານດຽວກັນ, ບາງທີອາດມີການດັດແປງເລັກນ້ອຍ, ການແຈກຈ່າຍ Linux ອື່ນໆເຊັ່ນດຽວກັນ, ແລະ
2. ຄຳ ອະທິບາຍຕໍ່ໄປນີ້ບໍ່ໄດ້ມີຈຸດປະສົງເພື່ອເປັນຕົວແທນໃຫ້ ຄຳ ອະທິບາຍຢ່າງລະອຽດຂອງຂະບວນການບູດ, ແຕ່ວ່າມີພຽງແຕ່ພື້ນຖານເທົ່ານັ້ນ.

Linux Boot Process

1. POST (Power On Self Test) ເລີ່ມຕົ້ນແລະເຮັດການກວດສອບຮາດແວ.

2. ເມື່ອ POST ສຳ ເລັດແລ້ວ, ການຄວບຄຸມລະບົບຈະຖືກສົ່ງໄປຫາ loader bootloader ຂັ້ນຕອນ ທຳ ອິດ, ເຊິ່ງມັນຈະຖືກເກັບໄວ້ໃນຂະ ແໜງ boot ຂອງ ໜຶ່ງ ໃນຮາດດິດ (ສຳ ລັບລະບົບເກົ່າທີ່ໃຊ້ BIOS ແລະ MBR), ຫລື UF (U) ທີ່ອຸທິດຕົນ. ການແບ່ງປັນ.

3. ເວບໄຊທ໌ boot loader ຂັ້ນຕອນ ທຳ ອິດຫຼັງຈາກນັ້ນກໍ່ຈະມີ load boot boot ຂັ້ນຕອນທີສອງ, ສ່ວນໃຫຍ່ແມ່ນ GRUB (GRand Unified Boot Loader), ເຊິ່ງຕັ້ງຢູ່ພາຍໃນ/boot, ເຊິ່ງໃນນັ້ນມັນຈະໂຫລດແກ່ນແລະລະບົບແຟ້ມຂໍ້ມູນ RAM ເບື້ອງຕົ້ນ (ຍັງເອີ້ນວ່າ initramfs) , ເຊິ່ງປະກອບມີໂປແກຼມແລະແຟ້ມເອກະສານຄູ່ທີ່ປະຕິບັດການກະ ທຳ ທີ່ ຈຳ ເປັນທີ່ ຈຳ ເປັນເພື່ອຕິດຕັ້ງລະບົບແຟ້ມເອກະສານຮາກທີ່ແທ້ຈິງ).

4. ພວກເຮົາຖືກ ນຳ ສະ ເໜີ ດ້ວຍ ໜ້າ ຈໍ splash ເຊິ່ງຊ່ວຍໃຫ້ພວກເຮົາເລືອກລະບົບປະຕິບັດການແລະແກ່ນ ສຳ ຮອງ:

5. Kernel ຕັ້ງຄ່າຮາດແວທີ່ຕິດກັບລະບົບແລະເມື່ອລະບົບແຟ້ມລະບົບຮາກໄດ້ຖືກເປີດຕົວແລ້ວ, ເປີດຂັ້ນຕອນກັບ PID 1 ເຊິ່ງໃນເບື້ອງຕົ້ນມັນຈະເລີ່ມຕົ້ນຂັ້ນຕອນອື່ນແລະ ນຳ ສະ ເໜີ ພວກເຮົາດ້ວຍການເຂົ້າສູ່ລະບົບ.

ໝາຍ ເຫດ: ຖ້າພວກເຮົາຢາກເຮັດໃນເວລາຕໍ່ມາ, ພວກເຮົາສາມາດກວດກາສະເພາະຂອງຂະບວນການນີ້ໂດຍໃຊ້ ຄຳ ສັ່ງ dmesg ແລະການກັ່ນຕອງຜົນຜະລິດຂອງມັນໂດຍໃຊ້ເຄື່ອງມືທີ່ພວກເຮົາໄດ້ອະທິບາຍໄວ້ໃນບົດຄວາມກ່ອນ ໜ້າ ນີ້ຂອງຊຸດນີ້.

ໃນຕົວຢ່າງຂ້າງເທິງ, ພວກເຮົາໄດ້ໃຊ້ ຄຳ ສັ່ງ ps ທີ່ມີຊື່ສຽງເພື່ອສະແດງບັນຊີລາຍຊື່ຂອງຂະບວນການປະຈຸບັນເຊິ່ງຂັ້ນຕອນຂອງຜູ້ປົກຄອງ (ຫລືເວົ້າອີກຢ່າງ ໜຶ່ງ, ຂະບວນການທີ່ເລີ່ມຕົ້ນພວກມັນ) ແມ່ນລະບົບ (ລະບົບແລະຜູ້ຈັດການບໍລິການທີ່ການແຈກຈ່າຍ Linux ທີ່ທັນສະ ໄໝ ໄດ້ປ່ຽນໄປແລ້ວ ກັບ) ໃນລະຫວ່າງການເລີ່ມຕົ້ນລະບົບ:

# ps -o ppid,pid,uname,comm --ppid=1

ຈົ່ງຈື່ໄວ້ວ່າທຸງ -o (ສັ້ນ ສຳ ລັບ –format) ຊ່ວຍໃຫ້ທ່ານສາມາດ ນຳ ສະ ເໜີ ຜົນຜະລິດຂອງ ps ໃນຮູບແບບທີ່ ກຳ ຫນົດເອງໃຫ້ ເໝາະ ສົມກັບຄວາມຕ້ອງການຂອງທ່ານໂດຍໃຊ້ ຄຳ ທີ່ລະບຸໄວ້ໃນພາກ STANDARD FORMAT SPECIFIERS ໃນ man ps.

ອີກກໍລະນີ ໜຶ່ງ ທີ່ທ່ານຈະຕ້ອງການ ກຳ ນົດຜົນຜະລິດຂອງ ps ແທນທີ່ຈະໄປກັບຄ່າເລີ່ມຕົ້ນແມ່ນເມື່ອທ່ານຕ້ອງການຊອກຫາຂະບວນການທີ່ເຮັດໃຫ້ເກີດ CPU ແລະ/ຫຼື load ໜ່ວຍ ຄວາມ ຈຳ ທີ່ ສຳ ຄັນ, ແລະຈັດຮຽງຕາມຄວາມ ເໝາະ ສົມ:

# ps aux --sort=+pcpu              # Sort by %CPU (ascending)
# ps aux --sort=-pcpu              # Sort by %CPU (descending)
# ps aux --sort=+pmem              # Sort by %MEM (ascending)
# ps aux --sort=-pmem              # Sort by %MEM (descending)
# ps aux --sort=+pcpu,-pmem        # Combine sort by %CPU (ascending) and %MEM (descending)

ບົດແນະ ນຳ ກ່ຽວກັບ SystemD

ການຕັດສິນໃຈບໍ່ຫຼາຍປານໃດໃນໂລກ Linux ໄດ້ກໍ່ໃຫ້ເກີດການໂຕ້ຖຽງຫຼາຍກ່ວາການຮັບຮອງເອົາລະບົບໂດຍການແຈກຢາຍ Linux ທີ່ ສຳ ຄັນ. ຜູ້ສະ ໜັບ ສະ ໜູນ ຂອງ Systemd ຕັ້ງຊື່ເປັນຂໍ້ໄດ້ປຽບຕົ້ນຕໍຂອງຂໍ້ເທັດຈິງດັ່ງຕໍ່ໄປນີ້:

ອ່ານອີກ: ເລື່ອງຢູ່ເບື້ອງຫຼັງ ‘init’ ແລະ ‘systemd’

1. Systemd ອະນຸຍາດໃຫ້ມີການປະມວນຜົນເພີ່ມເຕີມໃນຂະຫນານໃນລະຫວ່າງການເລີ່ມຕົ້ນຂອງລະບົບ (ກົງກັນຂ້າມກັບ SysVinit ເກົ່າ, ເຊິ່ງມັກຈະມີຄວາມຊ້າກວ່າເກົ່າເພາະວ່າມັນເລີ່ມຕົ້ນການປະມວນຜົນແຕ່ລະອັນ, ກວດສອບຖ້າມັນຂື້ນກັບອີກ, ແລະຫຼັງຈາກນັ້ນລໍຖ້າ daemons ເປີດຕົວດັ່ງນັ້ນ ການບໍລິການເພີ່ມເຕີມສາມາດເລີ່ມຕົ້ນ), ແລະ

2. ມັນເຮັດວຽກເປັນການຄຸ້ມຄອງຊັບພະຍາກອນແບບເຄື່ອນໄຫວໃນລະບົບແລ່ນ. ດັ່ງນັ້ນ, ການບໍລິການແມ່ນເລີ່ມຕົ້ນໃນເວລາທີ່ຕ້ອງການ (ເພື່ອຫລີກລ້ຽງການໃຊ້ຊັບພະຍາກອນຂອງລະບົບຖ້າພວກເຂົາບໍ່ຖືກ ນຳ ໃຊ້) ແທນທີ່ຈະຖືກເປີດຕົວໂດຍບໍ່ມີເຫດຜົນທີ່ຖືກຕ້ອງໃນເວລາບູດ.

3. ຄວາມເຂົ້າກັນໄດ້ກັບຫລັງກັບສະຄິບ SysVinit.

Systemd ຖືກຄວບຄຸມໂດຍລະບົບປະໂຫຍດຂອງ systemctl. ຖ້າທ່ານມາຈາກພື້ນຫລັງຂອງ SysVinit, ທ່ານອາດຈະຄຸ້ນເຄີຍກັບ:

<

  • ເຄື່ອງມືການບໍລິການ, ເຊິ່ງໃນລະບົບເກົ່າເຫຼົ່ານັ້ນ - ໄດ້ຖືກ ນຳ ໃຊ້ເພື່ອຈັດການສະຄິບ SysVinit, ແລະ
  • ຜົນປະໂຫຍດຂອງ chkconfig, ເຊິ່ງເຮັດ ໜ້າ ທີ່ເພື່ອປັບປຸງແລະສອບຖາມຂໍ້ມູນກ່ຽວກັບລະດັບ runlevel ສຳ ລັບການບໍລິການລະບົບ.
  • ປິດ, ເຊິ່ງທ່ານຕ້ອງໄດ້ໃຊ້ຫຼາຍໆຄັ້ງເພື່ອເຮັດວຽກ ໃໝ່ ຫຼືຢຸດການເຮັດວຽກ.
  • ຕາຕະລາງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນຄວາມຄ້າຍຄືກັນລະຫວ່າງການ ນຳ ໃຊ້ເຄື່ອງມືມໍລະດົກເຫຼົ່ານີ້ແລະລະບົບ systemctl:

    Systemd ຍັງໄດ້ແນະ ນຳ ແນວຄວາມຄິດຂອງ ໜ່ວຍ ງານຕ່າງໆ (ເຊິ່ງສາມາດເປັນທັງການບໍລິການ, ຈຸດເຊື່ອມຕໍ່, ອຸປະກອນ, ຫລືເຕົ້າສຽບເຄືອຂ່າຍ) ແລະເປົ້າ ໝາຍ (ເຊິ່ງເປັນວິທີທີ່ systemd ຈັດການເພື່ອເລີ່ມຕົ້ນຂະບວນການທີ່ກ່ຽວຂ້ອງຫຼາຍໆຄັ້ງໃນເວລາດຽວກັນ, ແລະສາມາດພິຈາລະນາ - ເຖິງແມ່ນວ່າບໍ່ເທົ່າກັນ - ເທົ່າກັບລະດັບ runlevel ໃນລະບົບທີ່ອີງໃສ່ SysVinit.

    Summing Up

    ວຽກອື່ນທີ່ກ່ຽວຂ້ອງກັບການຄຸ້ມຄອງຂັ້ນຕອນປະກອບມີ, ແຕ່ອາດຈະບໍ່ ຈຳ ກັດຄວາມສາມາດໃນການ:

    ສິ່ງນີ້ໄດ້ປະສົບຜົນ ສຳ ເລັດໂດຍຜ່ານການໃຊ້ປະໂຫຍດທີ່ມີຊື່ສຽງເຊິ່ງປ່ຽນແປງຄວາມ ສຳ ຄັນຂອງການ ກຳ ນົດເວລາຂອງ ໜຶ່ງ ຫຼືຫຼາຍຂະບວນການທີ່ ກຳ ລັງແລ່ນ. ໃນ ຄຳ ສັບທີ່ງ່າຍດາຍ, ບຸລິມະສິດການຈັດຕາຕະລາງແມ່ນຄຸນລັກສະນະ ໜຶ່ງ ທີ່ອະນຸຍາດໃຫ້ແກ່ນ (ປະຈຸບັນເປັນຮຸ່ນ => 2.6) ຈັດສັນຊັບພະຍາກອນລະບົບຕາມຄວາມ ສຳ ຄັນຂອງການປະຕິບັດທີ່ຖືກມອບ ໝາຍ (aka niceness, ໃນຂອບເຂດຕັ້ງແຕ່ -20 ເຖິງ 19) ຂອງຂະບວນການໃດ ໜຶ່ງ.

    syntax ພື້ນຖານຂອງການມີຊື່ສຽງແມ່ນດັ່ງຕໍ່ໄປນີ້:

    # renice [-n] priority [-gpu] identifier
    

    ໃນ ຄຳ ສັ່ງທົ່ວໄປຂ້າງເທິງ, ການຖົກຖຽງຄັ້ງ ທຳ ອິດແມ່ນມູນຄ່າບູລິມະສິດທີ່ຈະ ນຳ ໃຊ້, ໃນຂະນະທີ່ການໂຕ້ຖຽງອື່ນໆສາມາດຖືກແປເປັນ ID ຂອງຂະບວນການ (ເຊິ່ງເປັນການ ກຳ ນົດຄ່າເລີ່ມຕົ້ນ), ID ກຸ່ມຂະບວນການ, ID ຜູ້ໃຊ້, ຫຼືຊື່ຜູ້ໃຊ້. ຜູ້ໃຊ້ປົກກະຕິ (ນອກ ເໜືອ ຈາກຮາກ) ພຽງແຕ່ສາມາດດັດແກ້ບູລິມະສິດການ ກຳ ນົດເວລາຂອງຂະບວນການທີ່ລາວເປັນເຈົ້າຂອງແລະພຽງແຕ່ເພີ່ມລະດັບຄວາມງາມເທົ່ານັ້ນ (ໝາຍ ຄວາມວ່າຈະເອົາຊັບພະຍາກອນລະບົບ ໜ້ອຍ ລົງ).

    ໃນຂໍ້ ກຳ ນົດທີ່ລະອຽດກວ່າ, ການຂ້າຂະບວນການເຮັດໃຫ້ມັນສົ່ງສັນຍານເພື່ອເຮັດໃຫ້ການປະຕິບັດຂອງມັນສິ້ນສຸດລົງ (SIGTERM = 15) ຫຼືທັນທີ (SIGKILL = 9) ໂດຍຜ່ານ ຄຳ ສັ່ງຂ້າຫຼື pkill.

    ຄວາມແຕກຕ່າງລະຫວ່າງສອງເຄື່ອງມືດັ່ງກ່າວແມ່ນວ່າເຄື່ອງເກົ່າຖືກໃຊ້ເພື່ອຍຸຕິຂະບວນການສະເພາະໃດ ໜຶ່ງ ຫຼືກຸ່ມຂະບວນການທັງ ໝົດ, ໃນຂະນະທີ່ເຄື່ອງມືຊ່ວຍໃຫ້ທ່ານເຮັດແບບດຽວກັນໂດຍອີງໃສ່ຊື່ແລະຄຸນລັກສະນະອື່ນໆ.

    ນອກຈາກນັ້ນ, pkill ມາພ້ອມກັບ pgrep, ເຊິ່ງສະແດງໃຫ້ທ່ານເຫັນ PIDs ທີ່ຈະໄດ້ຮັບຜົນກະທົບຄວນໃຊ້ pkill. ຍົກຕົວຢ່າງ, ກ່ອນທີ່ຈະແລ່ນ:

    # pkill -u gacanepa
    

    ມັນອາດຈະເປັນປະໂຫຍດທີ່ຈະເບິ່ງໂດຍທັນທີເຊິ່ງ PIDs ເປັນເຈົ້າຂອງໂດຍ gacanepa:

    # pgrep -l -u gacanepa
    

    ໂດຍຄ່າເລີ່ມຕົ້ນ, ທັງການຂ້າແລະ pkill ສົ່ງສັນຍານ SIGTERM ໄປສູ່ຂັ້ນຕອນ. ດັ່ງທີ່ພວກເຮົາໄດ້ກ່າວມາຂ້າງເທິງ, ສັນຍານນີ້ສາມາດຖືກລະເວັ້ນ (ໃນຂະນະທີ່ຂະບວນການດັ່ງກ່າວສິ້ນສຸດການປະຕິບັດຫຼືເພື່ອທີ່ດີ), ດັ່ງນັ້ນ, ເມື່ອທ່ານຕ້ອງການຢ່າງຮຸນແຮງທີ່ຈະຢຸດຂະບວນການແລ່ນດ້ວຍເຫດຜົນທີ່ຖືກຕ້ອງ, ທ່ານຈະຕ້ອງລະບຸສັນຍານ SIGKILL ຢູ່ໃນເສັ້ນ ຄຳ ສັ່ງ:

    # kill -9 identifier               # Kill a process or a process group
    # kill -s SIGNAL identifier        # Idem
    # pkill -s SIGNAL identifier       # Kill a process by name or other attributes 
    

    ສະຫຼຸບ

    ໃນບົດຂຽນນີ້ພວກເຮົາໄດ້ອະທິບາຍພື້ນຖານຂອງຂະບວນການບູດໃນລະບົບ RHEL 7, ແລະໄດ້ວິເຄາະເຄື່ອງມືບາງຢ່າງທີ່ມີຢູ່ເພື່ອຊ່ວຍທ່ານໃນການຈັດການຂັ້ນຕອນຕ່າງໆໂດຍໃຊ້ລະບົບສາທາລະນະປະໂຫຍດທົ່ວໄປແລະ ຄຳ ສັ່ງສະເພາະເຈາະຈົງລະບົບ.

    ໃຫ້ສັງເກດວ່າບັນຊີລາຍຊື່ນີ້ບໍ່ໄດ້ມີຈຸດປະສົງທີ່ຈະກວມເອົາລະຄັງແລະສຽງກະທິງທັງ ໝົດ ຂອງຫົວຂໍ້ນີ້, ສະນັ້ນທ່ານສາມາດເພີ່ມເຄື່ອງມືແລະ ຄຳ ສັ່ງທີ່ທ່ານຕ້ອງການເຂົ້າໄປໃນບົດຄວາມນີ້ໂດຍໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້. ຄຳ ຖາມແລະ ຄຳ ເຫັນອື່ນໆແມ່ນຍິນດີຕ້ອນຮັບ.