
ビデオの長さほど長いbashスクリプトを実行するには?
午後7時にbashスクリプトを起動するためにcronを設定する予定で、動画の長さだけ実行するようにしたいと思います。どうすればいいですか?
例:bashスクリプトは午後7時に3分の長さのmovie.aviを起動します。 Bashスクリプトは3分間実行され続け、閉じられます。
答え1
あなたが使用できるwait
。
Linuxのマニュアルページから:
ちょっと待って、ちょっと待って- プロセスの状態が変わるのを待ちます。
これらのシステムコールはすべて、呼び出しプロセスの子プロセスで状態変更を待ち、状態が変更された子プロセスに関する情報を取得するために使用されます。状態の変更が考慮されます。サブプロセスが終了し、サブプロセスが信号によってブロックされるか、サブプロセスが再開されます。子プロセスがシャットダウンした場合、スタンバイを実行すると、システムは子プロセスに関連するリソースを解放できます。待機が実行されない場合、終了した子プロセスは「ゾンビ」状態のままになります。
たとえば、
#!/bin/bash
/usr/bin/vlc --vlc_args &
wait
echo "VLC has finished."
poweroff # you said: "then shuts down"
答え2
bashスクリプトがビデオを再生し、ビデオが終了したら終了させるには、--play-and-exit
次のようにvlcオプションを使用します。
#! /bin/bash
vlc --play-and-exit /path/to/video.mpg
これにより、ビデオが終了するとvlcが自動的に終了します。
答え3
スクリプトからビデオソフトウェアを呼び出す方法はわかりませんが、映画の終了後にソフトウェアが閉じると、次のことができますwait
。
#!/bin/bash
/video/software &
$PID=$!
wait $PID
echo "Movie complete!"