История изменений
Исправление 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%"