Решил немного заморочиться и вывести немного больше информации в строке приглашения для удобства. Помимо стандартных данных которые ранее выводились, такие как время, хост, пользователь и каталог, решил добавить в вывод ip, наличие свободного места и inode, среднею загрузку системы. Эта заметка дополнение к давней заметки про настройку строки приглашения в bash.
Получилось вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# ~/.bashrc: executed by bash(1) for non-login shells. # Функция для получения первого IP-адреса (IPv4 или IPv6) get_ip_address() { hostname -I | cut -d' ' -f1 } # Функция для получения информации о дисковом пространстве # Аргументы: # $1 - раздел (например, /) # $2 - колонка (1: файловая система, 2: размер, 3: использовано, 4: доступно, 5: использовано %, 6: смонтирован на) # $3 - ключ (-h для человеко-читаемого формата, -i для использования inodes) # $4 - пороговое значение свободного места в процентах get_disk_info() { local partition=$1 local column=$2 local option=$3 local used_percent=$4 local available_space local available_inode local used_percent_space local used_percent_inode case $option in -h) available_space=$(df -h $partition | awk -v col=$column 'NR==2 {print $col}') used_percent_space=$(df -h $partition | awk 'NR==2 {print $5}' | tr -d '%') # Проверка в процентах if [ "$used_percent_space" -gt "$used_percent" ]; then echo -e "\e[1;31m$available_space\e[0m\e[1;32m" # Красный цвет, если меньше порога else echo $available_space fi ;; -i) available_inode=$(df -i $partition | awk -v col=$column 'NR==2 {print $col}') used_percent_inode=$(df -i $partition | awk 'NR==2 {print $5}' | tr -d '%') # Проверка в процентах if [ "$used_percent_inode" -gt "$used_percent" ]; then echo -e "\e[1;31m$available_inode\e[0m\e[1;32m" # Красный цвет, если меньше порога else echo $available_inode fi ;; *) echo "Invalid option df" return ;; esac } # Функция для получения среднего значения загрузки системы # Аргумент: # $1 - интервал (1: за последнюю минуту, 2: за последние 5 минут, 3: за последние 15 минут) # $2 - коэффициент нагрузки в процентах get_load_average() { local interval=$1 local load_k=$2 local cpu_k=$(nproc) local avg=$(uptime | awk -v idx=$interval -F'load average: ' '{split($2, a, ", "); gsub(",", ".", a[idx]); print a[idx]}') # Преобразование avg в число с плавающей запятой local avg_x=$(echo $avg | awk '{printf "%.2f", $0}') # Вычисление порогового значения local threshold=$(awk -v cpu_k=$cpu_k -v load_k=$load_k 'BEGIN {printf "%.2f", cpu_k * (load_k / 100)}') if awk -v avg_x=$avg_x -v threshold=$threshold 'BEGIN {exit !(avg_x > threshold)}'; then echo -e "\e[1;31m$avg\e[0m\e[1;32m" # Красный цвет, если средняя загрузка превышает порог else echo $avg fi } export PS1='\[\e[1;32m\]\342\224\214[$(date "+%H:%M %d.%m.%Y")][\H($(get_ip_address))][FSpace: $(get_disk_info / 4 -h 80)/$(get_disk_info / 2 -h 100)(IUse: $(get_disk_info / 5 -i 90))][LAvg: $(get_load_average 1 80) $(get_load_average 2 85) $(get_load_average 3 90)]\n\342\224\224\342\225\274[\u][\w]\$\[\e[0m\] ' export PS2='\[\e[1;35m\][\A] -->\[\e[0m\] ' # Исправлен символ '>' umask 022 export LS_OPTIONS='--color=auto' eval "$(dircolors)" alias grep='grep "$LS_OPTIONS"' alias fgrep='fgrep "$LS_OPTIONS"' alias egrep='egrep "$LS_OPTIONS"' alias ll='ls "$LS_OPTIONS" -l' # Кавычки для $LS_OPTIONS alias iptbshow='iptables -n -L -v --line-numbers' shopt -s histappend PROMPT_COMMAND='history -a' shopt -s cdspell export HISTCONTROL="ignoredups" export HISTIGNORE="&:ls:[bf]g:exit" shopt -s cmdhist export HISTTIMEFORMAT='%d.%m.%Y %H:%M:%S ' export TIMEFORMAT=$'\nreal %3R\tuser %3U\tsys %3S\tpcpu %P\n' TZ='Asia/Krasnoyarsk'; export TZ |
Теперь заходя в консоль я всегда могу оценить приблизительное состояние системы, что для меня является достаточно удобным.
Добавить комментарий