jobs -p не работает во всех оболочках, если вызывается в под-оболочке, возможно, если его вывод не перенаправлен в файл, а не в канал. (Я предполагаю, что изначально он был предназначен только для интерактивного использования.)
А как насчет следующего:
trap 'while kill %% 2>/dev/null; do jobs > /dev/null; done' INT TERM EXIT [...]
Вызов "jobs" необходим в dash-оболочке Debian, которая не может обновить текущее задание ("%%"), если оно отсутствует.