shell指令碼後臺運行於伺服器,忘記kill導致指令碼不斷產生新的指令碼相關的PID,如何kill這個後臺指令碼?
阿新 • • 發佈:2022-03-27
指令碼運行於後臺後,忘記kill,這個指令碼會產生大量的子程序,將伺服器的大量資源佔用。
那麼問題來了,如何將該指令碼在後臺中kill呢?如果直接kill子程序,那麼將會子子孫孫無窮盡。。。。。顯然這個方法是行不通的!
使用如下命令:
ps -ef | grep “後臺執行的指令碼名”
會打印出相關資訊
ps -ef | grep disk_test.sh user 2326 17774 0 16:59 pts/1 00:00:00 grep --color=auto disk_test.sh user 21902 21889 0 16:37 ? 00:00:00 /bin/sh -c /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh user 21905 21902 10 16:37 ? 00:02:22 /bin/sh /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh user 25068 1 10 16:41 ? 00:01:54 /bin/sh /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh user 29020 28977 0 16:43 ? 00:00:00 /bin/sh -c /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh user 29032 29020 10 16:43 ? 00:01:43 /bin/sh /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh user 30307 30305 0 16:36 ? 00:00:00 /bin/sh -c /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh user 30309 30307 10 16:36 ? 00:02:28 /bin/sh /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh user 30752 30719 0 16:40 ? 00:00:00 /bin/sh -c /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh user 30758 30752 10 16:40 ? 00:02:00 /bin/sh /home_b/nfsroot/user/chip_rootfs/root-uclibc-toolchain/system/disk_test.sh
使用kill將相關的程序ID刪除,然後在top命令下看到執行指令碼已經關閉了!