Visa obesvarade inlägg | Visa aktiva trådar Aktuellt datum och tid: 11 aug 2020, 14:51



Svara på tråd  [ 4 inlägg ] 
 När är det dags att boota om...?? 
Författare Meddelande
Användarvisningsbild

Blev medlem: 06 apr 2008, 00:09
Inlägg: 5565
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg När är det dags att boota om...??
Det finns många åsikter om när det är dags att starta om datorn och enklast är det för de som stänger av den på kvällen för att sedan starta den på morgonen...

Jag är däremot till stor del "uppväxt" i server-världen och där handlar det om att en dator måste gå så länge som det bara är möjligt, innan man startar om den...

Jovisst, inom Linux är det ju många som gärna säger att "det bara är att låta den gå hur länge som helst, för Linux minneshantering (etc.) är så himla effektiv"...

Men nådå, eller nja, eller kanske, knappast eller näääeeee.....

Hemma kör man ju ofta en dator där man gärna uppgraderar för att åtminstone någotsånär ha moderna saker, men ute på företag (framförallt drifts- och produktions-maskiner), så står samma gamla saker och snurrar, år efter år. Just för att det är stabilt och riskerna är små....

Själv låter jag ofta burken gå i en månad eller två utan att starta om (ja ok, den "spinner ned" på natten), bara för att jag är så van vid att en dator ska inte stängas av i onödan....

Men om man då är osäker, eller om man själv ska kolla när man borde starta om, hur gör man då...??

Så jag "hackade ihop" ett lite enkelt script som man kan använda för att kontrollera det.

Jag har provat det i Ubuntu, Mint, Debian, OpenSUSE, SLED, SLES, RedHat, Fedora och CentOS och det funkar jättebra i alla förutom RedHat-gruppen där det lite omotiverat antyder att omstart måste göras, trots att det inte behövs. Dessutom ingår den här kontrollen numera i "dnf" (nya versionen av "yum"), men funkar alltså inte riktigt ändå (för mig). Jag ska kolla närmare på det....

Men i Debian-Ubuntu-Mint och Opensuse-SLED-SLES funkar det bra.... :)

Kom gärna med synpunkter!
Kod:
#! /bin/bash
#
function chkProc {
   RETURN=0
   NPROC=$(ps -ef | tail -n +2 | wc -l)
   NPROCT=$(ps -efT | tail -n +2 | wc -l)
   MAX_PROC=$(cat /proc/sys/kernel/pid_max)
   if [[ -z $1 || $1 == "INIT" ]]; then
      MAX_PROC=$(cat /proc/sys/kernel/pid_max)
      MAX_UPROC=$(ulimit -u)
   fi
   let Z_count=0
   PIDS=$(ls -d /proc/[0-9]* 2> /dev/null | awk -F/ '{ print $3 }' 2>> /dev/null)
   for PID in $PIDS; do
      PSTATE=$(grep State: /proc/$PID/status  2>> /dev/null| awk '{ print $2 }')
      if [[ ! -z $PSTATE ]]; then
         if [[ $PSTATE == "X" ]]; then
            let X_count+=1
            RETURN=1
         elif [[ $PSTATE == "Z" ]]; then
            let Z_count+=1
            RETURN=1
         fi
      fi
   done
   echo "Number of processes:            $NPROC"         
   echo "Number of processes+threads:    $NPROCT"         
   echo "Max process limit:              $MAX_PROC"
   if [[ $X_count -ne 0 ]]; then
      echo "-Dead processes:                $X_count"
   fi
   if [[ $Z_count -ne 0 ]]; then
      echo "-Zombie processes:              $Z_count"
   fi
   if [[ $X_count -ne 0 || $Z_count -ne 0 ]]; then
      echo "*** Consider REBOOT ***"
   fi
   return $RETURN
}
if [[ $UID != 0 ]]; then
   echo
   echo "-This script must be run as root..."
   echo
   exit
fi
clear
echo
echo "========================================"
echo '-Checking "/var/run/reboot-recuired"'
if [[ -r /var/run/reboot-required ]]; then
   cat /var/run/reboot-required
   if [[ -r /var/run/reboot-required.pkgs ]]; then
      echo "-Packages that need reboot:"
      cat /var/run/reboot-required.pkgs | sort -u
   fi
fi
echo
echo "========================================"
echo "-Checking processes"
chkProc
echo
DIST=$(source /etc/os-release; echo $ID | awk -F \- '{ print $1 }')
if [[ $DIST == "ubuntu" || $DIST == "linuxmint" || $DIST == "debian" ]]; then
   echo "========================================"
   echo '-Running "needrestart"'
   if [[ ! -z $(which needrestart 2> /dev/null) ]]; then
      needrestart
   else
      echo 'needrestart is not installed - use "sudo apt install needrestart" to install it..."'
   fi
   echo
   echo "========================================"
   echo '-Running "checkrestart"'
   echo '-Note that most messages about "fuse" can be ignored...'
   if [[ ! -z $(which checkrestart 2> /dev/null) ]]; then
      checkrestart -t
   else
      echo 'debian-goodies is not installed - use "sudo apt install debian-goodies" to install it...'
   fi
   echo
elif [[ $DIST == "opensuse" || $DIST == "sles" || $DIST == "sled" || $DIST == "sle" ]]; then
   echo "========================================"
   if [[ -z $(which needs-restarting 2> /dev/null) ]]; then
      echo '-Running "zypper ps"'
      zypper ps
   else
      #echo 'yum-utils is not installed - use "sudo zypper install yum-utils" to install it...'
      echo '-Running "needs-restarting"'
      needs-restarting
   fi
   echo
elif [[ $DIST == "fedora" || $DIST == "centos" || $DIST == "redhat" || $DIST == "rhel" ]]; then
   echo "========================================"
   if [[ ! -z $(which needs-restarting 2> /dev/null) ]]; then
      echo '-Running "dnf needs-restarting -r"'
      dnf needs-restarting -r
      echo
   else
      echo '-Running "needs-restarting -r"'
      needs-restarting -r
      echo
   fi
else
   echo "========================================"
   echo "-$DIST is not supported yet, sorry!"
   echo
fi

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


Senast redigerad av Osprey 27 jun 2020, 22:31, redigerad totalt 1 gång.



26 jun 2020, 22:25
Profil WWW
Användarvisningsbild

Blev medlem: 06 apr 2008, 00:09
Inlägg: 5565
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg Re: När är det dags att boota om...??
Ny version med några små förbättringar.... :)

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


Igår, 22:09
Profil WWW
Användarvisningsbild

Blev medlem: 08 aug 2010, 13:49
Inlägg: 2700
Ort: Göteborg
OS: Ubuntu
Utgåva: 20.04 Focal Fossa LTS
Svara med citat
Inlägg Re: När är det dags att boota om...??
För trött att läsa kod just nu...

Kan du förklara på vanlig svenska vilka kriterier skriptet använder för att besvara frågan?


Igår, 23:37
Profil
Användarvisningsbild

Blev medlem: 06 apr 2008, 00:09
Inlägg: 5565
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg Re: När är det dags att boota om...??
Gunnar Hjalmarsson skrev:
Kan du förklara på vanlig svenska vilka kriterier skriptet använder för att besvara frågan?

Om man kör scriptet i Ubuntu, Mint etc. så gör det följande:

  1. Kontrollerar förekomsten av /var/run/reboot-recuired. I denna fil lägger systemet oftast ut information om en omstart är nödvändig.
    .
  2. Kontrollerar och visar antalet processer i systemet och hur många av dessa som är "döda" eller "zombies". Här får man själv göra en bedömning om ifall man vill starta om.
    .
  3. Kör "needrestart" som kontrollerar behovet av omstart. Detta program är fullt supportat av Ubuntu/Mint och ingår i standardprogramarkivet.
    .
  4. Kör "checkrestart" som gör en annan kontroll av behovet av omstart. Detta paket ingår i "debian-goodies", som i sin tur finns i standardprogramarkivet.

En automatisk funktion som man också får när man installerar "needrestart" är att behovet av omstart kontrolleras (med "needrestart") varje gång man kör "apt install" eller "apt-get install". Om så behövs så erbjuder den också möjligheten att under kontrollerade former starta om de demoner som eventuellt kör gammal utdaterad kod.

I SuSE (OpenSuSE, SLED & SLES) och i RedHat (RHEL, Fedora & CentOS) kör det liknande funktioner...

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


Idag, 10:23
Profil WWW
Visa inlägg nyare än:  Sortera efter  
Svara på tråd   [ 4 inlägg ] 

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 10 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
Main Engineer for phpBB3: Bertie at phpBB.com © 2000 - 2002, 2005 - 2007, the Group behind the Open Source code of phpBB.
Designed by STSoftware, modified by Katt, Konservburk & Peetra. Swedish translation by Peetra & phpBB Sweden © 2006-2011