Вы можете автоматизировать это. Crtl-Z и fg, как уже упоминалось, не более чем сигналы. В Unixes вы можете отправить их командой kill. Так что kill -19 $ PID остановит ваш процесс (когда $ PID является его PID), а kill -18 продолжит его.
Вам просто нужно написать скрипт-обертку, который выглядит так:
#!/bin/sh
PIDFILE=wherever/myprogram.pid
if [ -e $PIDFILE ]; then
kill -18 `cat $PIDFILE`
else
myprogram &
echo $! > $PIDFILE
fi
sleep 30
kill -19 `cat $PIDFILE`
(очень короткий, непроверенный, вы должны позаботиться о том, чтобы удалить pid-файл при завершении процесса). В первый раз, когда вы запустите его, он начнет выполнение (на 30 секунд), а в более поздние времена он просто отзовет вашу программу. Вы можете улучшить его, например, проверив вначале, есть ли процесс вашей программы в списке процессов, и если нет, удалите pid-файл, если он уже существует. Так что он даже будет вести себя корректно после перезагрузки или завершения вашего процесса.