/etc/init.dに似た方法

/etc/init.dに似た方法

/etc/init.dこの方法を使用して実行するスクリプトを設定しました。みんな大丈夫です。問題は、私のスクリプトがパケットキャプチャを実行し、ロード後にコンピュータを再起動すると、私のスクリプトがロードされ、crondパケットキャプチャプロセスがその時点で開始されなくなりました。 Linuxが完全にロードされたときにのみ強制的に起動する方法はありますか?

以下は私のスクリプトの外観です。

#!/bin/bash
# chkconfig: 2345 95 05
# myapp daemon
# description: myapp daemon
# processname: myapp

DAEMON_PATH="/usr/local/bin/"
DAEMON=pc1.c
#DAEMONOPTS="-my opts"
NAME=pc1.c
DESC="my packet capture"

PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

case "$1" in
start)
    printf "%-50s" "Starting $NAME..."
    insmod /usr/local/pfring/kernel/pf_ring.ko
    /usr/local/bin/pc1.c &
    $! > PIDFILE    
;;
status)
        if [ -f $PIDFILE]; 
        then if [ -d /proc/cat $PIDFILE ]; 
             then echo "Process is running"; 
             fi; 
        else echo "Error! PID file is missing!"; 

        fi

;;
stop)
        printf "%-50s" "Stopping $NAME"
            PID=`cat $PIDFILE`
            cd $DAEMON_PATH
        if [ -f $PIDFILE ]; then
            kill -HUP $PID
            printf "%s\n" "Ok"
            rm -f $PIDFILE
        else
            printf "%s\n" "pidfile not found"
        fi
;;
restart)
    $0 stop
    $0 start 
;;
*)
        echo "Usage: $0 {status|start|stop|restart}"
        exit 1
esac

ベストアンサー1

コマンドの最後に "&" を付けて init.d スクリプトでコマンドを実行すると、バックグラウンドプロセスになり、次のサービスを開始できます。

起動プロセスの最後のステップとしてスクリプトを実行するには(バックグラウンドでない場合はまだブロックされています)、/etc/rc.local(またはそのディストリビューションがない場合はそのディストリビューション)を介して実行できます。一つ)。 ..)

おすすめ記事