1. 程式人生 > 其它 >shell指令碼後臺運行於伺服器,忘記kill導致指令碼不斷產生新的指令碼相關的PID,如何kill這個後臺指令碼?

shell指令碼後臺運行於伺服器,忘記kill導致指令碼不斷產生新的指令碼相關的PID,如何kill這個後臺指令碼?

指令碼運行於後臺後,忘記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命令下看到執行指令碼已經關閉了!