ວິທີການສ້າງແລະເປີດໃຊ້ ໜ່ວຍ ບໍລິການ ໃໝ່ ໃນ Systemd ໂດຍໃຊ້ Shell Script


ສອງສາມມື້ທີ່ຜ່ານມາ, ຂ້ອຍໄດ້ພົບກັບ Centos 7 32-bit distro ແລະຂ້ອຍຮູ້ສຶກຢາກຈະທົດລອງໃຊ້ໃນເຄື່ອງ 32-bit ເກົ່າ. ຫຼັງຈາກບູດຂ້ອຍກໍ່ຮູ້ວ່າມັນມີຂໍ້ບົກພ່ອງແລະມັນ ກຳ ລັງລຸດຜ່ອນການເຊື່ອມຕໍ່ເຄືອຂ່າຍ, ເຊິ່ງຂ້ອຍຕ້ອງປ່ຽນມັນດ້ວຍຕົນເອງທຸກໆຄັ້ງຫຼັງຈາກ boot. ດັ່ງນັ້ນ, ຄຳ ຖາມກໍ່ຄືວ່າຂ້ອຍສາມາດ ກຳ ນົດສະຄິບທີ່ເຮັດວຽກນີ້ໄດ້ແນວໃດ, ແລ່ນທຸກໆຄັ້ງທີ່ຂ້ອຍໃສ່ເກີບຂອງຂ້ອຍ?

ດີ, ນີ້ແມ່ນງ່າຍດາຍຫຼາຍແລະຂ້ອຍຈະສະແດງໃຫ້ເຈົ້າເຫັນລະບົບການ ນຳ ໃຊ້ ໜ່ວຍ ບໍລິການ. ແຕ່ກ່ອນອື່ນ ໝົດ ແມ່ນແນະ ນຳ ນ້ອຍໆ ສຳ ລັບ ໜ່ວຍ ບໍລິການ.

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

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

ໃນວິທີການເປົ້າ ໝາຍ ທີ່ງ່າຍດາຍແມ່ນການຮວບຮວມຫົວ ໜ່ວຍ ບໍລິການ. ຖ້າທ່ານຕ້ອງການເບິ່ງ ໜ່ວຍ ບໍລິການທີ່ແລ່ນຢູ່ໃນລະດັບ graphical.target ຂອງທ່ານ, ໃຫ້ພິມ:

# systemctl --type=service

ດັ່ງທີ່ທ່ານສາມາດເຫັນວ່າການບໍລິການບາງຢ່າງມີການເຄື່ອນໄຫວແລະ“ ແລ່ນ” ຢູ່ຕະຫຼອດເວລາ, ໃນຂະນະທີ່ບໍລິການອື່ນໆ ດຳ ເນີນການ ໜຶ່ງ ຄັ້ງແລະສິ້ນສຸດລົງ (ອອກ). ຖ້າທ່ານຕ້ອງການກວດສອບສະຖານະຂອງການບໍລິການ, ໃຫ້ພິມ:

# systemctl status firewalld.service

ດັ່ງທີ່ທ່ານສາມາດເຫັນຂ້ອຍໄດ້ກວດເບິ່ງສະຖານະພາບຂອງ firewalld.service (ຄຳ ແນະ ນຳ: ທ່ານສາມາດໃຊ້ແບບອັດຕະໂນມັດ ສຳ ລັບຊື່ຂອງບໍລິການ). ມັນແຈ້ງໃຫ້ຂ້ອຍຮູ້ວ່າບໍລິການ firewalld ແມ່ນແລ່ນຢູ່ຕະຫຼອດເວລາແລະມັນຖືກເປີດໃຊ້ງານ.

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

ຍົກຕົວຢ່າງ, ຖ້າທ່ານພິມ:

# systemctl stop firewalld.service
# systemctl status firewalld.service

ທ່ານສາມາດເຫັນໄດ້ວ່າ firewalld.service ແມ່ນໃຊ້ງານບໍ່ໄດ້ (ຕາຍແລ້ວ) ແຕ່ມັນຍັງຖືກເປີດໃຊ້ຢູ່, ໝາຍ ຄວາມວ່າໃນລະຫວ່າງເກີບຕໍ່ໄປມັນຈະຖືກໂຫລດ. ສະນັ້ນຖ້າພວກເຮົາຕ້ອງການໃຫ້ບໍລິການໂຫຼດໃນຊ່ວງເວລາໃສ່ເກີບໃນອະນາຄົດພວກເຮົາຕ້ອງໄດ້ເປີດໃຊ້ມັນ. ສິ່ງທີ່ເປັນການສະຫລຸບທີ່ຍິ່ງໃຫຍ່! ໃຫ້ເຮົາສ້າງມັນໄດ້ງ່າຍ,.

ຖ້າທ່ານໄປທີ່ໂຟນເດີ:

# cd /etc/systemd/system
# ls -l

ທ່ານສາມາດເບິ່ງເອກະສານເຊື່ອມຕໍ່ຂອງບໍລິການ ໜ່ວຍ ງານແລະບາງລາຍການກ່ຽວກັບຄວາມຕ້ອງການຂອງເປົ້າ ໝາຍ. ຕົວຢ່າງ: ສິ່ງທີ່ເປົ້າ ໝາຍ ຜູ້ໃຊ້ຫຼາຍຄົນຕ້ອງການທີ່ຈະໂຫລດເມື່ອຂັ້ນຕອນການບູດຮອດລະດັບຂອງມັນ, ຖືກລະບຸໄວ້ໃນໄດເລກະທໍລີທີ່ມີຊື່ /etc/systemd/system/multi-user.target.wants/.

# ls multi-user.target.wants/

ດັ່ງທີ່ທ່ານສາມາດເຫັນໄດ້ວ່າມັນບໍ່ພຽງແຕ່ມີການບໍລິການເທົ່ານັ້ນແຕ່ຍັງມີເປົ້າ ໝາຍ ອື່ນໆອີກເຊິ່ງເປັນການຮວບຮວມການບໍລິການ.

ຂໍໃຫ້ສ້າງ ໜ່ວຍ ບໍລິການທີ່ມີຊື່ວ່າ connect.service.

# vim connection.service

ແລະພິມສິ່ງຕໍ່ໄປນີ້ (ກົດ “ i” ສຳ ລັບ ໂໝດ ການແຊກ), ບັນທຶກມັນແລະອອກຈາກ (ດ້ວຍ “ esc” ແລະ “: wq!” ):

[Unit]
Description = making network connection up
After = network.target

[Service]
ExecStart = /root/scripts/conup.sh

[Install]
WantedBy = multi-user.target

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

ຄວາມມ່ວນຊື່ນເລີ່ມຕົ້ນຈາກພາກສ່ວນສຸດທ້າຍ [ຕິດຕັ້ງ]. ມັນບອກວ່າມັນຈະຖືກຕ້ອງການໂດຍ“ multi -user.target”. ສະນັ້ນຖ້າພວກເຮົາເປີດໃຊ້ບໍລິການຂອງພວກເຮົາການເຊື່ອມຕໍ່ທີ່ເປັນສັນຍາລັກກັບການບໍລິການນັ້ນຈະຖືກສ້າງຂື້ນພາຍໃນໂຟນເດີແບບ user.target.wants! ໄດ້ແລ້ວບໍ? ແລະຖ້າພວກເຮົາປິດມັນມັນລິ້ງຈະຖືກລຶບອອກ. ງ່າຍດາຍດັ່ງນັ້ນ.

ພຽງແຕ່ເປີດໃຊ້ມັນແລະກວດເບິ່ງ:

# systemctl enable connection.service

ມັນແຈ້ງໃຫ້ພວກເຮົາຮູ້ວ່າການເຊື່ອມໂຍງແບບສັນຍາລັກຢູ່ໃນໂຟນເດີຫລາຍ user.target.wants ໄດ້ຖືກສ້າງຂື້ນແລ້ວ. ກວດເບິ່ງ:

# ls multi-user.target.wants/

ດັ່ງທີ່ທ່ານສາມາດເຫັນ“ connection.service” ແມ່ນກຽມພ້ອມ ສຳ ລັບການໃສ່ເກີບຄັ້ງຕໍ່ໄປ, ແຕ່ພວກເຮົາຕ້ອງສ້າງເອກະສານສະຄິບກ່ອນ.

# cd /root
# mkdir scripts
# cd scripts
# vim conup.sh

ຕື່ມສາຍຕໍ່ໄປນີ້ພາຍໃນ Vim ແລະບັນທຶກມັນ:

#!/bin/bash
nmcli connection up enp0s3

ແນ່ນອນຖ້າທ່ານຕ້ອງການໃຫ້ສະຄິບຂອງທ່ານ ດຳ ເນີນການສິ່ງອື່ນ, ທ່ານສາມາດພິມສິ່ງໃດກໍ່ຕາມທີ່ທ່ານຕ້ອງການແທນເສັ້ນທີສອງ.

ຍົກຕົວຢ່າງ,

#!/bin/bash
touch /tmp/testbootfile

ທີ່ຈະສ້າງແຟ້ມເອກະສານພາຍໃນ/tmp (ພຽງແຕ່ກວດເບິ່ງວ່າການບໍລິການຂອງທ່ານ ກຳ ລັງເຮັດວຽກຢູ່).

ພວກເຮົາຍັງຕ້ອງເຮັດໃຫ້ສະຄິບ ດຳ ເນີນການໄດ້:

# chmod +x conup.sh

ດຽວນີ້ພວກເຮົາພ້ອມແລ້ວ. ຖ້າທ່ານບໍ່ຕ້ອງການລໍຖ້າຈົນກ່ວາເກີບຕໍ່ໄປ (ມັນຖືກເປີດໃຊ້ແລ້ວ) ພວກເຮົາສາມາດເລີ່ມຕົ້ນການບໍລິການ ສຳ ລັບການພິມແບບພາກຕໍ່ໄປນີ້:

# systemctl start connection.service

Voila! ການເຊື່ອມຕໍ່ຂອງຂ້ອຍແມ່ນ ກຳ ລັງແລ່ນຢູ່ແລ້ວ!

ຖ້າທ່ານເລືອກທີ່ຈະຂຽນ ຄຳ ສັ່ງທີ່ວ່າ“ touch/tmp/testbootfile” ພາຍໃນສະຄິບ, ພຽງແຕ່ກວດເບິ່ງຟັງຊັນຂອງມັນ, ທ່ານຈະເຫັນເອກະສານນີ້ສ້າງຂື້ນໃນ/tmp folder.

ຂ້າພະເຈົ້າຫວັງຢ່າງຍິ່ງວ່າຈະຊ່ວຍທ່ານໃຫ້ຮູ້ວ່າມີການບໍລິການຫຍັງ, ຄວາມຕ້ອງການ, ເປົ້າ ໝາຍ ແລະການເຮັດວຽກສະຄິບໃນຊ່ວງບູດ.