Загрузить файлы в «/»

This commit is contained in:
2025-12-21 16:27:44 +03:00
commit 31b5ff647f

59
myps.sh Normal file
View File

@@ -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