Решение от @lesmana с использованием trap является традиционным подходом, но, как уже отмечалось, не подходит для случая kill -9
.
Существует альтернативный вариант: настроить процесс для наблюдения за основным процессом и выполнить уничтожение при завершении основного процесса. Простой способ выполнить мониторинг — настроить канал к монитору, когда основной процесс завершится, тогда ядро закроет канал,которые может обнаружить монитор.
Вот пример
#!/bin/bash
# show monitoring main process - Icarus Sparry
# linkedin@icarus.freeuk.com
# Handler function. Reads from stdin. If it doesn't read the word clean
# then send SIGINT to the process group.
handler(){
read
[ "$REPLY" = "clean" ] || kill -INT -$$
}
# invoke handler as a coprocess.
coproc handler
# some work in the background, wait for 20 seconds and print a message
{ sleep 20 ; echo bye 20 ; } &
# some work in the foreground
sleep 5 ; echo bye 5
# At this point tell the coprocess it was a clean end, so don't
# terminate the background
echo clean >&"${COPROC[1]}"
Через 5 секунд выводится bye 5
, а еще через 15 секунд — bye 20
. уничтожение процесса приведет к тому, что сопроцесс отключит фоновый сон.
Если желательно, чтобы фоновая обработка была прекращена после завершения работы переднего плана, опустите окончательный echo clean >&"${COPROC[1]}"
и, возможно, удалите [ "$REPLY" = "clean" ] ||
из обработчика, оставив чтение и уничтожение.
CentOS 7 не включает эту библиотеку.
Содержит:
libpng-1.5.13-8.el7.x86_64
lrwxrwxrwx 1 root root 19 Oct 13 15:52 /usr/lib64/libpng15.so.15 -> libpng15.so.15.13.0
-rwxr-xr-x 1 root root 179328 Oct 13 15:52 /usr/lib64/libpng15.so.15.13.0
drwxr-xr-x 2 root root 0 Oct 13 15:52 /usr/share/doc/libpng-1.5.13
-rw-r--r-- 1 root root 192660 Sep 27 2012 /usr/share/doc/libpng-1.5.13/CHANGES
-rw-r--r-- 1 root root 4205 Sep 27 2012 /usr/share/doc/libpng-1.5.13/LICENSE
-rw-r--r-- 1 root root 10418 Sep 27 2012 /usr/share/doc/libpng-1.5.13/README
-rw-r--r-- 1 root root 1120 Aug 27 2010 /usr/share/doc/libpng-1.5.13/TODO
-rw-r--r-- 1 root root 31690 Sep 27 2012 /usr/share/doc/libpng-1.5.13/example.c
-rw-r--r-- 1 root root 195566 Sep 27 2012 /usr/share/doc/libpng-1.5.13/libpng-manual.txt
-rw-r--r-- 1 root root 1146 Oct 13 15:52 /usr/share/man/man5/png.5.gz
XPDFReader не похож на приложение, включенное в официальные репозитории RHEL/CentOS. Я не уверен, что это будет работать в CentOS, даже если вы установите эту версию libpng, что вы абсолютно можете сделать.
Официальные версии Google Chrome и Mozilla Firefox работают в CentOS и могут открывать файлы PDF.