web-dev-qa-db-ja.com

evinceプロセスの開始と終了、ループ

特定のPDF=ファイルがあります。各ファイルを20秒間検査したいと思います。これを試みていた方法は次のようです:for file in *.pdf; do echo $file; evince $file; sleep 20s; killall evince; done。最初のファイルを表示しますが、20秒後も強制終了しません。ここで何が問題になっていますか?

3
rivu

バックグラウンドでevinceを実行するのを忘れたと思います。

for file in *.pdf; do echo $file; evince $file &; sleep 20s; killall evince; done

に注意してください & evinceコマンドの後。

1
Rmano

すべてを殺す必要はないことに注意してください:特定のインスタンスを殺すことができます:

for file in *.pdf; do
    echo "$file"
    evince "$file" &
    sleep 20s
    kill $!           
done

$!は、最新のバックグラウンドプロセスのPIDです。 ( http://www.gnu.org/software/bash/manual/bashref.html#Special-Parameters

2
glenn jackman