86 lines
2.3 KiB
Bash
86 lines
2.3 KiB
Bash
#!/bin/bash
|
|
# usage
|
|
# bash watch.sh /path/t/dir processname logfile
|
|
set -e
|
|
|
|
if [ -z $1 ]; then
|
|
dir='.'
|
|
else
|
|
dir=$1
|
|
fi
|
|
|
|
if [ -z $2 ]; then
|
|
process_name='none'
|
|
else
|
|
process_name=$2
|
|
fi
|
|
|
|
if [ ! -f $3 ]; then
|
|
log_name=/dev/null
|
|
else
|
|
log_name=$3
|
|
fi
|
|
|
|
# uptime
|
|
uptime_dirty=$(uptime | awk '{print $3,$4}')
|
|
uptime_cleaned=${uptime_dirty:0:-1}
|
|
|
|
# date and time (default date command)
|
|
# ex. Sat May 17 11:36:04 PM MDT 2025
|
|
date_time=$(date)
|
|
|
|
echo -e "Uptime: $uptime_cleaned\t\tTime: $date_time\n"
|
|
|
|
# list filenames ordered by size large to small
|
|
list_files=$(ls -lAhS $dir | awk '{print $9}')
|
|
eval "list_files_names=($list_files)"
|
|
# echo -e "\nda names\n${list_files_names[1]}\n\n"
|
|
|
|
# size (human) ordered by size large to small
|
|
list_human=$(ls -lAhS $dir | awk '{print $5}')
|
|
eval "list_files_human=($list_human)"
|
|
# echo -e "\nda humans\n${list_files_human[1]}\n\n"
|
|
|
|
# size (bytes) ordered by size large to small
|
|
list_bytes=$(du -d 1 $dir/* | awk '{print $1}' | sort -r -n)
|
|
eval "list_files_bytes=($list_bytes)"
|
|
# echo -e "\nda bytes\n${list_files_bytes[1]}\n\n"
|
|
|
|
echo -e "Size (h)\tBytes\tName"
|
|
|
|
count=0
|
|
for name in ${list_files_names[@]}; do
|
|
echo -e "${list_files_human[$count]}\t\t${list_files_bytes[$count]} \t$name"
|
|
count=$(($count + 1))
|
|
done
|
|
|
|
# pid
|
|
list_processes_pid=$(ps aux | grep $process_name | awk '{print $2}')
|
|
eval "list_processes_pid=($list_processes_pid)"
|
|
# echo -e "\nda pids\n${list_processes_pid[1]}\n\n"
|
|
|
|
# %CPU usage
|
|
list_processes_cpu=$(ps aux | grep $process_name | awk '{print $3}')
|
|
eval "list_processes_cpu=($list_processes_cpu)"
|
|
# echo -e "\nda cpu%\n${list_processes_cpu[1]}\n\n"
|
|
|
|
# %MEMORY usage
|
|
list_processes_mem=$(ps aux | grep $process_name | awk '{print $4}')
|
|
eval "list_processes_mem=($list_processes_mem)"
|
|
# echo -e "\nda mem%\n${list_processes_mem[1]}\n\n"
|
|
|
|
# process names
|
|
list_processes_name=$(ps aux | grep $process_name | awk '{print $12,$13,$14,$15,$16,$17,$18}' | sed 's/\s/_/g')
|
|
eval "list_processes_name=($list_processes_name)"
|
|
# echo -e "\nda name\n${list_processes_name[1]}\n\n"
|
|
|
|
echo -e "\nPID\t\t%MEM\t%CPU\tNAME"
|
|
count=0
|
|
for name in ${list_processes_name[@]}; do
|
|
echo -e "${list_processes_pid[$count]}\t\t${list_processes_mem[$count]}%\t${list_processes_cpu[$count]}%\t$name"
|
|
count=$(($count + 1))
|
|
done
|
|
|
|
echo -e "\n$log_name"
|
|
tail -10 $log_name
|