ຄູ່ມືກ່ຽວກັບການຂ້າ, Pkill ແລະ ຄຳ ສັ່ງ Killall ເພື່ອຍຸຕິຂັ້ນຕອນໃນ Linux
ລະບົບປະຕິບັດການ Linux ມາພ້ອມກັບ ຄຳ ສັ່ງ kill ເພື່ອຢຸດຂະບວນການ. ຄໍາສັ່ງເຮັດໃຫ້ມັນສາມາດສືບຕໍ່ແລ່ນ server ໂດຍບໍ່ ຈຳ ເປັນຕ້ອງເລີ່ມຕົ້ນ ໃໝ່ ຫຼັງຈາກມີການປ່ຽນແປງ/ປັບປຸງ ໃໝ່. ນີ້ແມ່ນ ອຳ ນາດທີ່ຍິ່ງໃຫຍ່ຂອງ Linux ແລະນີ້ແມ່ນ ໜຶ່ງ ໃນເຫດຜົນ, ເປັນຫຍັງ Linux ກຳ ລັງເຮັດວຽກຢູ່ 90% ຂອງ server, ຢູ່ເທິງໂລກ.
ຂ້າ ຄຳ ສັ່ງສົ່ງສັນຍານ, ສັນຍານທີ່ລະບຸໄວ້ເພື່ອໃຫ້ສົມບູນກວ່າກັບຂະບວນການ. ຄຳ ສັ່ງຂ້າສາມາດປະຕິບັດໄດ້ໃນຫລາຍໆດ້ານ, ໂດຍກົງຫລືຈາກ ຄຳ ສັ່ງຫອຍ.
ການໃຊ້ ຄຳ ສັ່ງ kill ຈາກ/usr/bin ໃຫ້ຄຸນລັກສະນະພິເສດບາງຢ່າງເພື່ອຂ້າຂະບວນການໂດຍຊື່ຂັ້ນຕອນໂດຍໃຊ້ pkill.
syntax ທົ່ວໄປ ສຳ ລັບ ຄຳ ສັ່ງ kill ແມ່ນ:
# kill [signal or option] PID(s)
ສຳ ລັບ ຄຳ ສັ່ງຂ້າຊື່ສັນຍານອາດຈະແມ່ນ:
Signal Name Signal Value Behaviour SIGHUP 1 Hangup SIGKILL 9 Kill Signal SIGTERM 15 Terminate
ຢ່າງຊັດເຈນຈາກພຶດຕິ ກຳ ທີ່ຢູ່ຂ້າງເທິງ SIGTERM ແມ່ນວິທີການທີ່ບໍ່ມີເຫດຜົນແລະປອດໄພທີ່ສຸດໃນການຂ້າຂັ້ນຕອນ. SIGHUP ແມ່ນວິທີທີ່ປອດໄພ ໜ້ອຍ ກວ່າການຂ້າຂະບວນການຄື SIGTERM. SIGKILL ແມ່ນວິທີທີ່ບໍ່ປອດໄພທີ່ສຸດໃນສາມວິທີຂ້າງເທິງ, ເພື່ອຂ້າຂັ້ນຕອນ ໜຶ່ງ ທີ່ຈະສິ້ນສຸດຂະບວນການໂດຍບໍ່ປະຢັດ.
ເພື່ອຈະຂ້າຂະບວນການ ໜຶ່ງ, ພວກເຮົາຕ້ອງຮູ້ລະຫັດ Process ຂອງຂັ້ນຕອນໃດ ໜຶ່ງ. Process ແມ່ນຕົວຢ່າງຂອງໂປແກຼມ. ທຸກໆຄັ້ງທີ່ໂຄງການເລີ່ມຕົ້ນ, PID ອັດຕະໂນມັດຈະຖືກສ້າງຂື້ນໂດຍອັດຕະໂນມັດ ສຳ ລັບຂະບວນການນັ້ນ.
ທຸກໆ Process ໃນ Linux, ມີໃບ pid. ຂັ້ນຕອນ ທຳ ອິດທີ່ເລີ່ມຕົ້ນເມື່ອ Linux System ຖືກເລີ່ມຕົ້ນແມ່ນ - init process, ເພາະສະນັ້ນມັນຖືກມອບ ໝາຍ ໃຫ້ມີຄ່າ 1 'ໃນກໍລະນີສ່ວນໃຫຍ່
Init ແມ່ນຂະບວນການແມ່ບົດແລະບໍ່ສາມາດຂ້າແບບນີ້ໄດ້, ເຊິ່ງຮັບປະກັນວ່າຂະບວນການແມ່ບົດບໍ່ໄດ້ຖືກຂ້າໂດຍບັງເອີນ. Init ຕັດສິນໃຈແລະອະນຸຍາດໃຫ້ຕົວເອງຖືກຂ້າ, ບ່ອນທີ່ການຂ້າຕົວຕາຍແມ່ນພຽງແຕ່ການຮ້ອງຂໍໃຫ້ມີການປິດ.
ເພື່ອຮູ້ຂັ້ນຕອນທັງ ໝົດ ແລະກົງກັນກັບ pid ທີ່ຖືກມອບ ໝາຍ ຂອງພວກເຂົາ, ໃຫ້ເຮັດຕາມ ຄຳ ສັ່ງ ps ຕໍ່ໄປນີ້.
# ps -A
PID TTY TIME CMD 1 ? 00:00:01 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 migration/0 6 ? 00:00:00 watchdog/0 7 ? 00:00:01 events/0 8 ? 00:00:00 cgroup 9 ? 00:00:00 khelper 10 ? 00:00:00 netns 11 ? 00:00:00 async/mgr 12 ? 00:00:00 pm 13 ? 00:00:00 sync_supers 14 ? 00:00:00 bdi-default 15 ? 00:00:00 kintegrityd/0 16 ? 00:00:00 kblockd/0 17 ? 00:00:00 kacpid 18 ? 00:00:00 kacpi_notify 19 ? 00:00:00 kacpi_hotplug 20 ? 00:00:00 ata/0 21 ? 00:00:00 ata_aux 22 ? 00:00:00 ksuspend_usbd
ແນວໃດກ່ຽວກັບການປັບແຕ່ງຜົນໄດ້ຮັບຂ້າງເທິງໂດຍໃຊ້ syntax ເປັນ 'ຂະບວນການ pidof'.
# pidof mysqld
1684
ອີກວິທີ ໜຶ່ງ ທີ່ຈະບັນລຸເປົ້າ ໝາຍ ຂ້າງເທິງແມ່ນການປະຕິບັດຕາມ ຄຳ ສັບລຸ່ມນີ້.
# ps aux | grep mysqld
root 1582 0.0 0.0 5116 1408 ? S 09:49 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql mysql 1684 0.1 0.5 136884 21844 ? Sl 09:49 1:09 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock root 20844 0.0 0.0 4356 740 pts/0 S+ 21:39 0:00 grep mysqld
ກ່ອນທີ່ພວກເຮົາຈະກ້າວໄປ ໜ້າ ແລະປະຕິບັດ ຄຳ ສັ່ງຂ້າ, ບາງຈຸດ ສຳ ຄັນທີ່ຕ້ອງໄດ້ຍົກໃຫ້ເຫັນ:
<
ອີກວິທີ ໜຶ່ງ ທີ່ເຮັດ ໜ້າ ທີ່ດຽວກັນຄືການປະຕິບັດ ຄຳ ສັ່ງ 'pgrep'.
# pgrep mysql
3139
ເພື່ອຂ້າຂັ້ນຕອນຂ້າງເທິງ PID, ໃຫ້ໃຊ້ ຄຳ ສັ່ງ kill ດັ່ງທີ່ສະແດງໄວ້.
kill -9 3139
ຄຳ ສັ່ງຂ້າງເທິງຈະຂ້າຂະບວນການທີ່ມີ pid = 3139, ເຊິ່ງ PID ແມ່ນຕົວເລກມູນຄ່າຂອງຂະບວນການ.
ອີກວິທີ ໜຶ່ງ ທີ່ຈະເຮັດ ໜ້າ ທີ່ດຽວກັນ, ສາມາດຂຽນ ໃໝ່ ໄດ້ຄືກັນ.
# kill -SIGTERM 3139
ຄ້າຍຄືກັນ 'kill -9 PID' ແມ່ນຄ້າຍຄືກັບ 'ຂ້າ -SIGKILL PID' ແລະໃນທາງກັບກັນ.
ທ່ານຕ້ອງມີສະຕິລະວັງຕົວກ່ຽວກັບຊື່ຂອງຂະບວນການ, ກ່ອນຈະຂ້າແລະໃສ່ຊື່ຂະບວນການທີ່ບໍ່ຖືກຕ້ອງອາດເຮັດໃຫ້ທ່ານເບື່ອ ໜ່າຍ.
# pkill mysqld
ຂ້າຫຼາຍກ່ວາ ໜຶ່ງ ຂັ້ນຕອນໃນແຕ່ລະຄັ້ງ.
# kill PID1 PID2 PID3 or # kill -9 PID1 PID2 PID3 or # kill -SIGKILL PID1 PID2 PID3
ຈະເປັນແນວໃດຖ້າວ່າຂະບວນການ ໜຶ່ງ ມີຫຼາຍກໍລະນີແລະຂະບວນການ ຈຳ ນວນ ໜຶ່ງ ຂອງເດັກ, ພວກເຮົາມີ ຄຳ ສັ່ງ“ killall”. ນີ້ແມ່ນ ຄຳ ສັ່ງດຽວຂອງຄອບຄົວນີ້, ເຊິ່ງໃຊ້ຊື່ຂະບວນການເປັນການໂຕ້ຖຽງໃນສະຖານທີ່ຂອງ ຈຳ ນວນຂັ້ນຕອນ.
# killall [signal or option] Process Name
ເພື່ອຂ້າທຸກກໍລະນີ mysql ພ້ອມກັບຂະບວນການຂອງເດັກ, ໃຊ້ ຄຳ ສັ່ງດັ່ງຕໍ່ໄປນີ້.
# killall mysqld
ທ່ານສາມາດກວດສອບສະຖານະຂອງຂະບວນການໄດ້ສະ ເໝີ ຖ້າມັນ ກຳ ລັງເຮັດວຽກຢູ່ຫຼືບໍ່, ໂດຍໃຊ້ ຄຳ ສັ່ງຂ້າງລຸ່ມໃດ ໜຶ່ງ.
# service mysql status # pgrep mysql # ps -aux | grep mysql
ທັງ ໝົດ ນີ້ແມ່ນມາຈາກຂ້າງຂ້ອຍ. ໃນໄວໆນີ້ຂ້ອຍຈະມາອີກເທື່ອ ໜຶ່ງ ດ້ວຍຫົວຂໍ້ທີ່ ໜ້າ ສົນໃຈແລະໃຫ້ຂໍ້ມູນອີກ. ຈົນກ່ວານັ້ນ, ຕິດຕາມ, ເຊື່ອມຕໍ່ກັບ Tecmint ແລະສຸຂະພາບດີ. ຢ່າລືມໃຫ້ ຄຳ ຕິຊົມທີ່ມີຄຸນຄ່າຂອງທ່ານໃນພາກ ຄຳ ເຫັນ.