Я сделал что-то похожее на восстановление ted (Torrent Episode Downloader) из его обычных сбоев. Ниже приведен сценарий, который я использовал.
Редактировать: как это работает
Ted имеет файл журнала. Поскольку он проверяет новые эпизоды каждые полчаса, в этом журнале есть метка времени, которая не старше получаса. Конечно, временная метка не существует, если ted разбился за это время.
Редактировать: как это работает
Вы можете перенаправить вывод своей проблемной программы в файл. Напишите скрипт, похожий на мой, который проверяет этот файл. Если он найдет там плохую строку, перезапустит приложение (и удалит выходной файл). Вы можете запустить скрипт в бесконечном цикле или использовать cron. Я решил использовать cron, поэтому у меня меньше загрязнений процесса, и проверки не обязательно должны быть невероятно частыми.
#!/bin/bash
# indent-mode: spaces, indentsize: 4, encoding: utf-8
# © 2011 con-f-use@gmx.net.
# Use permitted under MIT license:
# http://www.opensource.org/licenses/mit-license.php (NO WARRANTY IMPLIED)
teddir='/home/confus/ted' # Location of the ted executable
logpath='/home/confus/.Torrent Episode Downloader/log.txt' # Location of ted's log
# Get the process id for ted so it can be killed later
pid=$(lsof "$teddir/ted.jar" | grep -m1 java )
set -- $pid
pid=$2
echo "Ted is running unter pid: $pid."
# Check if the log is recent
search=$(date "+%b %d, %Y @ {0,1}%l:[0-9]{2} %p")
search=$(cat "$logpath" | grep -oE "$search")
# If ted is running and the log is not recent, kill crashed process and
#+restart it.
if [ -n "$pid" ] && [ ! -n "$search" ]; then
echo "Killig $pid."
kill "$pid" || exit 1
echo "Restarting ted..."
cd "$teddir"
/usr/bin/java -jar ted.jar noTray
fi
exit 0
В моем случае был все еще активный процесс для ted после сбоя, но Тед ничего не делал. Убивает этот процесс, тогда вы можете, конечно, пропустить pid-Parts.
P.S. Это может быть или не быть плохой частью кода. Может быть, гораздо лучший способ, но он работает, и я собрал его в очень короткое время.
Пока файлы, которые вы хотите использовать в Windows и Mac, находятся на отдельном разделе, он ничего не должен делать для Ubuntu
Пока файлы, которые вы хотите использовать в Windows и Mac, находятся на отдельном разделе, он ничего не должен делать для Ubuntu
Пока файлы, которые вы хотите использовать в Windows и Mac, находятся на отдельном разделе, он ничего не должен делать для Ubuntu