Tempo de atividade do eco no linux

1

Preciso determinar o número de usuários no sistema e, se o valor for igual ou superior a uma variável de contagem de usuários definida no script, imprima por quanto tempo o sistema está ativo e qual é a carga do sistema. Como adiciono isso ao meu eco? Aqui no meu código

#!/bin/sh
#
# Syswatch       Shows a variety of different task based on my Linux System
#
# description:   This script will first check the percentage of the filesystem
#                being used. If the percentage is above ___, the root user will
#                be emailed. There will be 4 things echoed in this script. The
#                first thing being the amount of free/total memory being used,
#                second the amount of free/total swap space being used, the
#                third is the user count, and the last thing is the amount
#                of time that the system has been up for and the system load.

#Prints amount of Free/Total Memory and Swap

free -t -m | grep "Total" | awk '{ print "Free/Total Memory : "$4"/"$2"  MB";}'
free -t -m | grep "Swap" | awk '{ print "Free/Total Swap : "$4"/"$2" MB";}'

#Displays the user count for the system

printf "User count is at %d\n" $(who | wc -l)

count=$(who | wc -l)
if [ $count -eq 2 ]
then
  echo "The system has been up for _______  with a system load of average: __"
fi

exit 0
    
por Nicole Romain 17.06.2015 / 01:39

1 resposta

1

uptime fornece as informações que você está procurando, portanto, basta chamá-las em vez de echo :

> uptime
 23:40pm  up 13 days  8:09,  6 users,  load average: 1.28, 1.25, 1.23

Se o formato não for satisfatório, você poderá substituir a declaração echo por algo como:

uptime | sed 's/.*up/The system has been up for/' | sed 's/,.*load/ with a system load/'

Ou, se realmente quiser usar echo , você poderá analisar a uptime output para obter os valores desejados (como acontece com $count ) e usá-los na instrução echo.

Notas laterais:

  • você já está recebendo a conta do usuário depois de reorganizar o código para não ligar novamente:
count=$(who | wc -l)
printf "User count is at %d\n" $count
  • o operador "maior ou igual" é -ge não -eq :

if [ $count -ge 2 ]

    
por 17.06.2015 / 05:45