ວິທີກວດຫາ ແລະ ແກ້ໄຂຂໍ້ຜິດພາດຂອງ systemd

Caleb McKee, Petr Bokoc, Peter Boy Version F32 Last review: 2020-04-10

ຫາກທ່ານພົບກັບບັນຫາໃນການເລີ່ມລະບົບເນື່ອງຈາກ systemd, ກະລຸນາເບິ່ງເອກະສານ commonbugs ກ່ອນທີ່ຈະແຈ້ງຂໍ້ຜິດພາດ. ການປັບແຕ່ງການຕັ້ງຄ່າບາງຢ່າງທີ່ງ່າຍດາຍເຊິ່ງສາມາດແກ້ໄຂບັນຫາໄດ້ຫຼາກຫຼາຍອາດຈະມີລາຍຊື່ຢູ່ນັ້ນ. ຫາກບັນຫາທີ່ທ່ານພົບບໍ່ມີລາຍຊື່ຢູ່ນັ້ນ ຫຼື ບໍ່ມີວິທີແກ້ໄຂໃດທີ່ຊ່ວຍໄດ້, ກະລຸນາພິຈາລະນາແຈ້ງຂໍ້ຜິດພາດເພື່ອຊ່ວຍໃຫ້ພວກເຮົາເຮັດໃຫ້ Fedora ເຮັດວຽກໄດ້ດີຂຶ້ນໃນຮາດແວຂອງທ່ານ.

ລອງເບິ່ງ ເອກະສານທີ່ເປັນປະໂຫຍດ ຂອງໂຄງການຕົ້ນທາງກ່ຽວກັບຫົວຂໍ້ນີ້.

  • ລາຍຊື່ງານທັງໝົດທີ່ "ກຳລັງເຮັດວຽກ" (running) ຫຼື "ກຳລັງລໍຖ້າ" (waiting). ຄຳສັ່ງນີ້ສາມາດໃຊ້ເພື່ອລະບຸສາເຫດຂອງການເລີ່ມລະບົບຊ້າ. ຂະບວນການເລີ່ມລະບົບຈະລໍຖ້າໃຫ້ງານທີ່ "ກຳລັງເຮັດວຽກ" ສຳເລັດສິ້ນ. ງານທີ່ມີລາຍຊື່ເປັນ "ກຳລັງລໍຖ້າ" ຈະຖືກປະຕິບັດຫຼັງຈາກງານທີ່ "ກຳລັງເຮັດວຽກ" ສຳເລັດແລ້ວເທົ່ານັ້ນ.

    $ systemctl list-jobs
  • ລາຍຊື່ການບໍລິການ (services) ທັງໝົດທີ່ມີ ແລະ ສະຖານະປັດຈຸບັນຂອງພວກມັນ

    $ systemctl list-units -t service --all
  • ສະແດງການບໍລິການທັງໝົດທີ່ກຳລັງເຮັດວຽກຢູ່

    $ systemctl list-units -t service
  • ກວດສອບສະຖານະການເຮັດວຽກປັດຈຸບັນຂອງການບໍລິການ. (ໃນຕົວຢ່າງນີ້ແມ່ນການບໍລິການ ssh)

    $ systemctl status sshd.service
  • ສະແດງເປົ້າໝາຍ (targets) ທັງໝົດທີ່ມີ.

    $ systemctl list-units -t target --all
  • ສະແດງເປົ້າໝາຍທັງໝົດທີ່ກຳລັງເຮັດວຽກຢູ່.

    $ systemctl list-units -t target
  • ສະແດງການບໍລິການທີ່ເປົ້າໝາຍດຶງເຂົ້າມາໃຊ້. (ໃນຕົວຢ່າງນີ້ແມ່ນ multi-user.target)

    $ systemctl show -p "Wants" multi-user.target
  • ກວດສອບວ່າສິ່ງໃດຖືກເລີ່ມຕົ້ນເມື່ອເລີ່ມລະບົບເຂົ້າສູ່ເປົ້າໝາຍສະເພາະໃດໜຶ່ງ. (ໃນຕົວຢ່າງນີ້ແມ່ນ multi-user.target)

    $ /usr/lib/systemd/systemd --test --system --unit=multi-user.target

ພະລາມິເຕີການເລີ່ມລະບົບຂອງ systemd ຕ່າງໆທີ່ເປັນປະໂຫຍດ

ພະລາມິເຕີການເລີ່ມລະບົບຕໍ່ໄປນີ້ແມ່ນມີໄວ້ເພື່ອຊ່ວຍໃນການກວດຫາຂໍ້ຜິດພາດຂອງການເລີ່ມລະບົບຕື່ມອີກ.

systemd.unit=

ຂຽນທັບຢູນິດທີ່ຈະເປີດໃຊ້ຕອນເລີ່ມລະບົບ. ສິ່ງນີ້ອາດຈະຖືກໃຊ້ເພື່ອເລີ່ມລະບົບເຂົ້າສູ່ຢູນິດອື່ນເປັນການຊົ່ວຄາວ, ຕົວຢ່າງ rescue.target ຫຼື emergency.target. ຄ່າເລີ່ມຕົ້ນແມ່ນ default.target.

systemd.dump_core=

ຮັບຄ່າເປັນບູນີນ (boolean). ຫາກເປັນ true, systemd ຈະເຮັດການ dump core ເມື່ອມັນຄັ້ງ (crash). ຖ້າບໍ່ດັ່ງນັ້ນຈະບໍ່ມີການສ້າງ core dump. ຄ່າເລີ່ມຕົ້ນແມ່ນ true.

systemd.crash_shell=

ຮັບຄ່າເປັນບູນີນ. ຫາກເປັນ true, systemd ຈະເປີດໃຊ້ shell ເມື່ອມັນຄ້າງ. ຖ້າບໍ່ດັ່ງນັ້ນຈະບໍ່ມີການສ້າງ core dump. ຄ່າເລີ່ມຕົ້ນແມ່ນ false ຍ້ອນເຫດຜົນດ້ານຄວາມປອດໄພ ເພາະ shell ນັ້ນບໍ່ໄດ້ຖືກປ້ອງກັນດ້ວຍການຢືນຢັນຕົວຕົນຜ່ານລະຫັດຜ່ານ.

systemd.crash_chvt=

ຮັບຄ່າເປັນຕົວເລກຖ້ວນ. ຫາກເປັນຄ່າບວກ, systemd ຈະເປີດໃຊ້ virtual terminal ທີ່ລະບຸໄວ້ເມື່ອມັນຄ້າງ. ຄ່າເລີ່ມຕົ້ນແມ່ນ -1.

systemd.confirm_spawn=

ຮັບຄ່າເປັນບູນີນ. ຫາກເປັນ true, ຈະມີການຖາມເພື່ອຢືນຢັນເມື່ອມີການສ້າງຂະບວນການ (processes) ໃໝ່. ຄ່າເລີ່ມຕົ້ນແມ່ນ false.

systemd.show_status=

ຮັບຄ່າເປັນບູນີນ. ຫາກເປັນ true, ຈະສະແດງການອັບເດດສະຖານະການບໍລິການແບບຫຍໍ້ໃນໜ້າຈໍ console ລະຫວ່າງການເລີ່ມລະບົບ. ຄ່າເລີ່ມຕົ້ນແມ່ນ true.

systemd.sysv_console=

ຮັບຄ່າເປັນບູນີນ. ຫາກເປັນ true, ຜົນການເຮັດວຽກຂອງ SysV init scripts ຈະຖືກສົ່ງໄປທີ່ console. ຄ່າເລີ່ມຕົ້ນແມ່ນ true, ເວັ້ນເສຍແຕ່ວ່າມີການສົ່ງຄ່າ quiet ໃນ kernel command line ເຊິ່ງໃນກໍລະນີນັ້ນຄ່າເລີ່ມຕົ້ນຈະເປັນ false.

systemd.log_target=

ຕັ້ງເປົ້າໝາຍຂອງການບັນທຶກ (log target). ຄ່າທີ່ຮັບໄດ້ແມ່ນ console, syslog, kmsg, syslog-or-kmsg, ຫຼື null.

systemd.log_level=

ຕັ້ງລະດັບຂອງການບັນທຶກ (log level). ຄຳສັ່ງນີ້ຮັບຄ່າເປັນຕົວເລກລະດັບ log ຫຼື ຊື່ສັນຍະລັກຂອງ syslog ທີ່ຮູ້ຈັກກັນດີ (ຕົວພິມນ້ອຍ): emerg, alert, crit, err, warning, notice, info, debug.

systemd.log_color=

ເນັ້ນຂໍ້ຄວາມບັນທຶກທີ່ສຳຄັນ. ຄ່າທີ່ຮັບແມ່ນບູນີນ. ຫາກບໍ່ໄດ້ລະບຸຄ່າ, ຄ່າເລີ່ມຕົ້ນແມ່ນ true.

systemd.log_location=

ລວມຕຳແໜ່ງຂອງໂຄ້ດໃນຂໍ້ຄວາມບັນທຶກ. ສ່ວນຫຼາຍແມ່ນກ່ຽວຂ້ອງກັບຈຸດປະສົງໃນການກວດຫາຂໍ້ຜິດພາດ. ຄ່າທີ່ຮັບແມ່ນບູນີນ. ຫາກບໍ່ໄດ້ລະບຸຄ່າ, ຄ່າເລີ່ມຕົ້ນແມ່ນ true.

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