2012-01-24 6 views
1

vlcを再起動するためにcron経由で実行するbashスクリプトがあります(私はベビーモニターとして使用するIPウェブカメラからストリームを表示するためにvlcを使用します)。ストリームが徐々に遅れてくるので、私はこのスクリプトを実行してvlcのすべてのインスタンスを強制終了し、再起動します)。このスクリプトは、Ubuntu 11.04で1年間正常に動作しました。私はUbuntu 11.10(ああ、ばかげた)にアップグレードし、現在はbashデバッグオプションをオンにして(bash -x script.sh)実行すると正しく動作します。 -xオプションを指定せずに実行すると、スクリプトはvlcのすべてのインスタンスを強制終了しますが、終了してvlc.cを再起動できません。理由はわかりません。私がそれを実行するかcronを使うかコマンドラインで直接実行するかは、-xオプションを指定しなくてもvlcを強制終了しますが、vlcを実行することはありません。Bashスクリプトはデバッグ時に(-x)実行されますが、正常に実行されるとエラーが発生します。

ここでは、次のとおりです。

#!/bin/bash 
DISPLAY=:0 
export DISPLAY 

VPID=($(ps -e | grep vlc | awk '{print $1;}')) 
if [ -n "$VPID" ];then 
     while [ -n "$VPID" ];do 
      kill $VPID 
      VPID=($(ps -e | grep vlc | awk '{print $1;}')) 

     done 
     vlc --volume=900 http://lily:@192.168.1.43/videostream.asf & 
     sleep 10 
     WID=($(xwininfo -display :0 -name "http://192.168.1.43/videostream.asf - VLC media player" -int | awk '/Window id:/ {print $4}')) 
     sleep 10 
     xdotool windowmove --sync $WID 0 0 
     xdotool windowsize --sync $WID 1600 1000 
     exit 
fi 
exit 
+1

'pkillはvlc'は、すべてのvlcのプロセスを殺すあなたの現在の方法よりもずっと簡単です。 –

+0

ありがとう、私はそれを行くつもりです - 私はいつもナットをクラックするためにハンマーを使用する傾向があります;) – prupert

答えて

1
  1. は、なぜあなたはVPIDWIDアレイを作製していますか?
  2. whileループでdoneの直後にecho "after while loop"を置いてみましたか?がデバッグモードではないであるときにスクリプトがループから脱落するかどうかを確認しましたか?明示的なexitあなたのスクリプトが

は、以下のことを試してみてください書かれている方法のための必要はありません

  • は:

    #!/bin/bash 
    export DISPLAY=":0" 
    
    VPID=$(pgrep vlc) 
    if [[ -n "$VPID" ]]; then 
        while [[ -n "$VPID" ]]; do 
        kill $VPID 
        VPID=$(pgrep vlc) 
        done 
    
        vlc --volume=900 http://lily:@192.168.1.43/videostream.asf & 
        sleep 10 
        WID=$(xwininfo -display :0 -name "http://192.168.1.43/videostream.asf - VLC media player" -int | awk '/Window id:/ {print $4}') 
        sleep 10 
        xdotool windowmove --sync "$WID" 0 0 
        xdotool windowsize --sync "$WID" 1600 1000 
    fi 
    
  • +0

    遅れた応答のため申し訳ありません、私はstackoverflowあなたの応答を電子メールだと思った。 VPIDはvlcのPIDを取得することでしたが、これを取得するより良い方法があるようです。ありがとうございます。 WIDは作成されたvlcウィンドウの名前を指定する簡単な方法でした。私はあなたの提案を試し、私がどれだけ得るかを見てみましょう。ありがとう。 – prupert

    関連する問題