Powered by Drupal, an open source content management system

โฆษณาโดย Google

สร้าง script เพื่อหา PID ของ program แล้วสั่ง kill

จำเป็นต้องสร้าง script สั่งโปรแกรมที่สร้างสร้าง erlang ให้ทำงานเป็น background process ตอนสั่งนี่ก็ใช้

erl -noshell -detatched

แต่ตอนจะสั่ง stop หรือ kill -9 $PID ต้องมานั่งหา PID เองด้วยการสั่ง ps ax | grep program_name
เลยหาวิธีว่าจะทำยังไงจะได้ PID จะได้มาเขียน script เพื่อสั่ง stop ก็ไปแกะจาก โค้ด ของ nitrogen ที่ใช้ในการ stop
เจอว่าใช้วิธีแบบนี้

    stop)
        # Wait for the node to completely stop...
        PID=`ps -ef|grep "$RUNNER_BASE_DIR/.*/[b]eam.smp|awk '{print $2}'"`
        $NODETOOL stop
        while `kill -0 $PID 2>/dev/null`;
        do
             sleep 1
        done
        ;;

ก็คือใช้ ps -ef นั่นแหละ แล้วใช้ grep ค้นหา เสร็จแล้ว pipe ให้กับ awk '{pint $2}' เพื่อเลือกเฉพาะ column ที่ 2
แล้วก็ สั่ง kill -0 $PID 2>/dev/null ไม่รู้เหมือนกันว่าทำไมใช้ -0 แต่พอเอามาทำของตัวเองแล้วผมต้องใช้ -9 ถึงจะ kill process ได้

มี pgrep ด้วยนะ : D

มี pgrep ด้วยนะ : D