Обучение и трудоустройство Java-программистов от Junior до Senior

Программа для мониторинга

 
 
 
Сообщения:4
Здравствуйте форумчане, хочу обратиться за советом. Т. к. я новичок в этом деле не знаю с чего начать.
Есть задача, сделать прогу которая будет мониторить приложение которое запускается через консоль, а точнее не само приложение, а температуру видеокарты во время работы этого приложения и при достижении определенной температуры, нужно перезагружать это приложение.
Это вообще как то можно реализовать? Подскажите пожалуйста.
 
 
Сообщения:1
Именно java реализация нужна?
 
 
Сообщения:4
Denya:
Именно java реализация нужна?

Ну желательно т.к. я только java пока изучаю
Но если есть возможность на другом языке, интересно узнать как
 
 
Сообщения:4
Короче вот до чего я додумался. Взял прогу gpu-z, она мониторит много данных видеокарты и есть возможность записи всех данных в блокнот, я вытягиваю из блокнота данные о температуре, и для начала просто проверяю, если выше ноля то завершаю программу. Вопрос в чем. Как сделать так что бы не нужно было в ручную удалять все данные из лога проги? Что бы проверка начиналась с текущего времени, а не с начала. Удалять все данные лога перед проверкой? Или какой то другой способ?
Вот небольшой код
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
 
public class Main {
 
    private static String FILE_NAME = "C:\\GPU-Z Sensor Log.txt";
 
    public static void main(String[] args) throws IOException {
        try (BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME))) {
            String c;
            while ((c = reader.readLine()) != null) {
                String[] line = c.split(",");              // Разбиваем строку на массив
                double number = Double.parseDouble(line[3].trim()); // 4 столбец это температура, берем именно его и убераем все пробелы
                if (number > 0) {
                    System.out.println("Close program!");
                    System.exit(0);
                }
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}
 
 
Сообщения:4
Вот кое как работающий код, перезапускает пока блокнот, взял просто что бы потестить( не ругайте сильно если что)
import org.apache.log4j.Logger;

import java.io.*;
import java.util.concurrent.TimeUnit;

public class Main {

    private static final Logger log = Logger.getLogger(Main.class);

    private static String FILE_NAME = "C:\\GPU-Z Sensor Log.txt";

    public static void main(String[] args) throws IOException, InterruptedException {

        while (true) {
            if (parseLog()) {
                restart();
            }
            TimeUnit.SECONDS.sleep(10);
        }
    }

    public static void restart() throws InterruptedException {
        try {
            Runtime.getRuntime().exec("taskkill /im notepad.exe");
            Runtime.getRuntime().exec("notepad");
            log.info("Restart application");
        } catch (IOException e) {
            e.printStackTrace();
            log.error("Application restart error");
        }
    }
    
    public static boolean parseLog() {
        clearFileBeforeCheck();
        double temp = 0;
        try (BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME))) {
            log.info("Temperature reading started.");
            String c;
            TimeUnit.SECONDS.sleep(1);
            while ((c = reader.readLine()) != null) {
                TimeUnit.SECONDS.sleep(1);
                String[] line = c.split(",");              // Разбиваем строку на массив
                temp = Double.parseDouble(line[3].trim()); // 4 столбец это температура, берем именно его и убераем все пробелы
                log.info("Current temperature is " + temp + ".");
                if (temp > 42) { // указываем температуру
                    return true;
                }
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return false;
    }

    public static void clearFileBeforeCheck() {
        try {
            FileWriter fstream1 = new FileWriter(FILE_NAME);// конструктор с одним параметром - для перезаписи
            BufferedWriter out1 = new BufferedWriter(fstream1); //  создаём буферезированный поток
            out1.write(""); // очищаем, перезаписав поверх пустую строку
            out1.close(); // закрываем
            System.out.println("File is clear!");
            log.info("File is clear!");
        } catch (Exception e) {
            System.err.println("Error in file cleaning: " + e.getMessage());
            log.error("Error in file cleaning: ", e);
        }
    }
}
Изменен:06 сен 2017 16:52
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет