特定のPDF=ファイルがあります。各ファイルを20秒間検査したいと思います。これを試みていた方法は次のようです:for file in *.pdf; do echo $file; evince $file; sleep 20s; killall evince; done
。最初のファイルを表示しますが、20秒後も強制終了しません。ここで何が問題になっていますか?
バックグラウンドでevinceを実行するのを忘れたと思います。
for file in *.pdf; do echo $file; evince $file &; sleep 20s; killall evince; done
に注意してください & evinceコマンドの後。
すべてを殺す必要はないことに注意してください:特定のインスタンスを殺すことができます:
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 )