commit 31b5ff647f7b8636a2e77e5c4188bcb47dab3615 Author: alex Date: Sun Dec 21 16:27:44 2025 +0300 Загрузить файлы в «/» diff --git a/myps.sh b/myps.sh new file mode 100644 index 0000000..3558270 --- /dev/null +++ b/myps.sh @@ -0,0 +1,59 @@ +#!/bin/bash + + +# Выводим заголовок +printf "%-20s %-10s %-10s %-10s %-10s %-10s %s\n" "User" "PID" "PPID" "CPU_Time" "Memory" "Status" "Command" +echo "------------------------------------------------------------------------------------------" + +# Проходим по всем PID в /proc +for pid in /proc/[0-9]*/; do + pid=$(basename "$pid") + + #читаем информацию о процессе + if [[ -f "/proc/$pid/status" ]] + then + #Ищем имя пользователя, от имени которого запущен процесс + userName=$(id -un "$(grep '^Uid:' "/proc/$pid/status" | awk '{print $2}')") + + #Получаем роодителя + ppid=$(grep '^PPid:' "/proc/$pid/status" | awk '{print $2}') + + #Статус процесса + status=$(grep '^State:' "/proc/$pid/status" | awk '{print $2}' | cut -c1) + + #Время использования CPU + cpuTimeSeconds=$(userTime=$(cat /proc/$pid/stat | awk '{print $14}'); systemTime=$(cat /proc/$pid/stat | awk '{print $15}'); echo "$(( (userTime + systemTime) / 100))") + #Переводим в формат М:С + cpuTime=$(date -u -d "@$cpuTimeSeconds" +"%M:%S") + + # Получаем использование памяти + memUsage=$(cat /proc/$pid/status| grep VmRSS | awk '{print $2}') + if [[ -z "$memUsage" ]]; then + memUsage="0" + fi + + #берем командную строку + cmdLine="" + if [[ -f "/proc/$pid/cmdline" ]]; then + # Читаем cmdLine, заменяем нулевые байты на пробелы + cmdLine=$(tr '\0' ' ' < "/proc/$pid/cmdline" 2>/dev/null | sed 's/ $//') + + fi + + #Если командная строка пустая, берем имя процесса + if [[ -z "$cmdLine" ]] + then + cmdLine="[$(grep '^Name:' "/proc/$pid/status" | awk '{print $2}')]" + fi + + #Укорачиваем до 50 символов + if [[ ${#cmdLine} -gt 50 ]] + then + cmdLine="${cmdLine:0:47}..." + fi + + # Выводим информацию + printf "%-20s %-10s %-10s %-10s %-10s %-10s %s\n" \ + "$userName" "$pid" "$ppid" "$cpuTime" "$memUsage" "$status" "$cmdLine" + fi +done | sort -n -k2 # Сортируем по PID \ No newline at end of file