Bash
儘管等待並殺死(bash),但仍會產生無限數量的程序
這段程式碼應該是一個保持活動
nc
命令的守護程序。如果nc
實例死了,那麼守護程序應該重新生成它。#!/bin/sh if [ "$1" != "__forked__" ]; then setsid "$0" __forked__ "$@" & exit else shift fi trap 'echo "Clean up and exit"; kill $nc_pid; exit' TERM exec > outfile exec 2> errfile exec 0< /dev/null while true; do (nc -lkp 1234 -e /usr/bin/bash &>/dev/null) & nc_pid=$! wait $nc_pid kill $nc_pid &>/dev/null done
當我執行此程式碼時,它會不斷產生一個新
nc
實例而不會殺死前一個實例。logan 14443 0.0 0.0 2588 1860 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash logan 14446 0.0 0.0 2588 1844 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash logan 14449 0.0 0.0 2588 1900 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash logan 14452 0.0 0.0 2588 1888 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash logan 14455 0.0 0.0 2588 1880 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash logan 14458 0.0 0.0 2588 1944 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash logan 14461 0.0 0.0 2588 1880 ? S 18:45 0:00 nc -lkp 1234 -e /usr/bin/bash ...
我在任何時候都只想要一個實例。
nc
如何修復此程式碼?
這不起作用
/bin/sh
,切換到/bin/bash
它應該。