Вы могли перенести все свои страницы в сценарии, который выглядит примерно так:
$ bzcat 1.bz2
Где 1$ является требуемым файлом. Быстрый PHP/Perl/whatever сценарий может довольно эффективно вытащить путь из переменных запроса, и там Вы идете.
Вы действительно теряете скорость статических файлов, но это не могло бы иметь значения для Вашего варианта использования.
Я утверждал бы, что, если процесс перестал работать, необходимо зафиксировать его для не сбоя больше.
Чтобы сделать, что Вы ожидаете, что-то вроде этого было бы достаточно (непротестированный, используйте на Ваш собственный риск):
#!/bin/bash
for i in $(seq 1 4)
do
(
echo "Starting node $i..."
while ! java -DNodeNumber=$i CalculationNode
do
sleep 1
echo "Restarting node $i..."
done
) &
done
wait
Каждый процесс должен закончиться с нулем кода выхода для повреждения цикла. Иначе это перезапущено сценарием.
Решение Juliano могло бы работать в простых случаях, но оно не покрывает каждую ситуацию. Например, один из Ваших процессов мог выйти со статусом выхода 0 даже при том, что ошибка произошла, если существует ошибка в коде обработки ошибок. Или это могло зайти в тупик или столкнуться с некоторым другим видом бесконечного цикла, не делая ничего полезного.
Таким образом, если Вы хотите более необычное решение, попробуйте Nagios. Это позволяет Вам писать плагины для специальных контрольных задач.
Вы могли всегда использовать daemontools, чтобы контролировать и перезапустить Ваши процессы.