LINUX.ORG.RU

История изменений

Исправление rtxtxtrx, (текущая версия) :

Так зачем ты в файл постоянно пишешь?

monitor.sh

#!/bin/bash

# 1. Узнать PID по частичному имени с помощью pgrep
process_name="your_process_name"
pid=$(pgrep -f "$process_name")

if [ -z "$pid" ]; then
  echo "Process not found."
  exit 1
fi

# 2. Проверять, жив ли процесс, и выходить, если он умер
while kill -0 "$pid" 2>/dev/null; do
  # 3. Проверять, сколько процесс потребляет ресурсов
  cpu_usage=$(ps -p "$pid" -o %cpu=)
  mem_usage=$(ps -p "$pid" -o %mem=)
  echo "CPU Usage: $cpu_usage%, Memory Usage: $mem_usage%" >&2

  # Пауза перед следующей проверкой
  sleep 1
done

# 4. Записывать последний результат и время выполнения после выхода из цикла
end_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Process $pid has terminated at $end_time."
echo "Last CPU Usage: $cpu_usage%, Last Memory Usage: $mem_usage%"
./monitor.sh > result.txt

Исходная версия rtxtxtrx, :

Так зачем ты в файл постоянно пишешь?

#!/bin/bash

# 1. Узнать PID по частичному имени с помощью pgrep
process_name="your_process_name"
pid=$(pgrep -f "$process_name")

if [ -z "$pid" ]; then
  echo "Process not found."
  exit 1
fi

# 2. Проверять, жив ли процесс, и выходить, если он умер
while kill -0 "$pid" 2>/dev/null; do
  # 3. Проверять, сколько процесс потребляет ресурсов
  cpu_usage=$(ps -p "$pid" -o %cpu=)
  mem_usage=$(ps -p "$pid" -o %mem=)
  echo "CPU Usage: $cpu_usage%, Memory Usage: $mem_usage%"

  # Пауза перед следующей проверкой
  sleep 1
done

# 4. Записывать последний результат и время выполнения после выхода из цикла
end_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "Process $pid has terminated at $end_time."
echo "Last CPU Usage: $cpu_usage%, Last Memory Usage: $mem_usage%"