1

У меня странная проблема, которая, вероятно, связана с аппаратной инициализацией. Я работаю над системой автоматического сбора данных на основе Java, которая работает на SBC с Ubuntu 16.04. На данный момент программа сбора данных запущена через cron, хотя я планирую перейти на systemd.

Он запускается и работает нормально, если я перезагружаю систему. Однако, если он выключен и запущен холодным способом (что является нормальным способом), программа завершает работу с ошибкой free(): corrupted unsorted chunks . Если я начну это снова, кажется, работает нормально. Мне нужно выяснить, почему и, надеюсь, будет, но это может занять некоторое время, и в то же время система нуждается в дальнейшем тестировании, и мне нужен обходной путь, который перезапустит ее в случае сбоя. Просто добавление задержки не помогает.

Я хотел бы перезапустить процесс Java или перезагрузить систему из сценария оболочки bash, но только в случае сбоя. Если он завершается с нулевым кодом выхода (или, в идеале, с любым кодом из заранее определенного набора допустимых кодов выхода), он не должен быть перезапущен, и сценарий также должен завершиться.

1 ответ1

3

Если вы можете написать сценарий Bash, запланируйте этот сценарий вместо вашей программы:

#!/bin/bash
myprogram
while [ $? -ne 0 ]; do
    myprogram
done

Этот скрипт перезапустит вашу программу до тех пор, пока он не завершится с кодом ошибки 0 (указывающим на успех). Кроме того, перезагрузка всей системы кажется мне немного излишней.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .