Köra bash script vid uppstart av system

Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
Kategoriregler
Varning! Det som diskuteras här är inte alltid enkelt och det kan hända att vissa installationer/modifieringar kan göra ditt system oanvändbart. Inget för nybörjare. Gör alltid backup av känslig data innan du experimenterar.
ApeviaX
Inlägg: 20
Blev medlem: 11 feb 2020, 22:52
OS: Annat GNU/Linux
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Sturefors (Linköping)

Köra bash script vid uppstart av system

Inlägg av ApeviaX »

Hej på er

Jag har labbet lite med att få till ett bash script som körs automatiskt vid uppstart av systemet.
Tanken är att scriptet ska kicka igång terminalen och per automatik köra:

Kod: Markera allt

sudo apt update && sudo apt upgrade -y
Scriptet i sig kickas igång av en crontab uppgift.

Lyckades få till ett test script (efter lite googlande) som genom echo skickar in mitt sudo lösenord för att hela kedjan skall gå per automatik...
Inte optimalt, men det är mest på skoj i testmiljö just nu.

Hur som helst är det ett par punkter som inte lirar, dels lyckas jag inte få till det så att terminalen faktiskt visas ("gnome-terminal" i detta fall) och ibland hänger sig upgrade biten.
Jag har gjort det så att scriptet skickar ut en .txt fil med output från terminalen, men jag blir inte klok på varför det tar stopp.

(Har inte access till min testmiljö i fråga nu, så kan inte ladda upp bash filen för stunden)

Vore kul med input från någon som faktiskt (till skillnad från mig) vet hur bash scripting funkar. Ex. på lösning och ev. ändringar jag kanske bör betänka?

Med vänlig hälsning,
Nicke
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

Det handlar i princip om att något av rc-scripten i /etc, automatiskt ska köra en update/upgrade och i det läget finns du själv inte riktigt med, eftersom det i början inte är ett fleranvändarsystem.

Kika t.ex på: https://www.cyberciti.biz/faq/how-to-se ... nux-18-04/...att det står 18.04 behöver inte nödvändigtvis innebära att något har ändrat sig...

Har inte provat själv, eftersom jag själv föredrar att välja när jag vill göra en uppdatering, istället för att booten ibland tar några minuter extra... Jag kör det hellre manuellt när jag ändå ska hämta lite kaffe... :)

[EDIT]
Ska du lägga in det i "/etc/rc*" så blir det givetvis under "/etc/rcS.d" då. Men tänk på att om du har något fel i scriptet, eller något som inte stämmer, så måste du veta hur man gör en recovery-boot och går ut i root-prompten och fixar till det, annars är allting "muerto" som det heter på finare språk....
Senast redigerad av 1 Osprey, redigerad totalt 20 gånger.
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...
ApeviaX
Inlägg: 20
Blev medlem: 11 feb 2020, 22:52
OS: Annat GNU/Linux
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Sturefors (Linköping)

Re: Köra bash script vid uppstart av system

Inlägg av ApeviaX »

Osprey skrev:Det handlar i princip om att något av rc-scripten i /etc, automatiskt ska köra en update/upgrade och i det läget finns du själv inte riktigt med, eftersom det i början inte är ett fleranvändarsystem.

Kika t.ex på: https://www.cyberciti.biz/faq/how-to-se ... nux-18-04/...att det står 18.04 behöver inte nödvändigtvis innebära att något har ändrat sig...

Har inte provat själv, eftersom jag själv föredrar att välja när jag vill göra en uppdatering, istället för att booten ibland tar några minuter extra... Jag kör det hellre manuellt när jag ändå ska hämta lite kaffe... :)

[EDIT]
Ska du lägga in det i "/etc/rc*" så blir det givetvis under "/etc/rcS.d" då. Men tänk på att om du har något fel i scriptet, eller något som inte stämmer, så måste du veta hur man gör en recovery-boot, går ut i root-prompten och fixar till det....

Hej

Var inte beredd på att få svar så snabbt :)
Ska kika på länken och fundera lite, är nog dock inte så bevandrad med recovery-boot som du nämner är jag rädd ::)
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

Här på Ubuntu-se får du (nästan) alltid rätt snabba svar, men läs nu också det senaste tillägget jag gjorde i mitt svar ovanför...

Att få det att ske automatiskt är "systemgrejor" och egentligen inget konstigt. Men det är alltså inget som en "vanlig användare" kan göra, eftersom det är något som påverkar hela systemet och Linux/Unix i grund och botten är/kan vara ett fleranvändarsystem.

Men som sagt och jag har kört Linux i 25 år och Unix i ungefär 35 år. Det finns egentligen ingen vinst i att köra alla update och och upgrade automatiskt. Visst går det, men var ligger vinsten...?? :)
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...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

ApeviaX skrev:Ska kika på länken och fundera lite, är nog dock inte så bevandrad med recovery-boot som du nämner är jag rädd ::)
En recovery-boot är inte så konstig eller krånglig egentligen (Conversational boot heter det i VAX/VMS och OpenVMS)....

Men du bör kunna använda vi/vim som ofta är den enda editor som finns tillgänglig då (min favorit) och du bör veta tillräckligt för att kunna se vad det var som gick fel (/var/log etc.) och veta ungefär hur /etc fungerar... :)

Inget svårt egentligen och i motsats till "vissa" andra operativsystem, där man inte kan "dyka ned under ytan" och se var det gick fel.... ;D
Senast redigerad av 2 Osprey, redigerad totalt 20 gång.
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...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

Kan tillägga att av alla de företag jag jobbat på som kör Linux eller övriga derivat av Unix, dvs. t.ex Volvo, Ericsson, ABB, Scania, Electrolux, SKF, FMV, Cactus Rail etc. så är det inga som kör några automatiska uppdateringar...

Det viktiga är att allting är stabilt och säkert. Ubuntu är väldigt aktiva och snabba och uppdaterar hela tiden (en gång per halvår), Fedora är ungefär (i kamp med Ubuntu) cutting edge, men sedan är SuSE (SLED och SLES) och CentOS (~RHEL (där även Fedora ingår)) väldigt återhållsamma med nya releaser, ja förutom Fedora då alltså....

Oj, oj. oj hängde det här ihop...?? :) ???
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...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

ApeviaX skrev:Ska kika på länken och fundera lite, är nog dock inte så bevandrad med recovery-boot som du nämner är jag rädd ::)
En recovery-boot är inte så konstig eller krånglig egentligen (Conversational boot heter det i VAX/VMS och OpenVMS)....

Men du bör kunna använda vi/vim som ofta är den enda editor som finns tillgänglig då (min favorit) och du bör veta tillräckligt för att kunna se vad det var som gick fel (/var/log etc.) och veta ungefär hur /etc fungerar... :)

Inget svårt egentligen i motsats till "vissa" andra operativsystem, där man inte kan "dyka ned under ytan" och se var det egentligen gick fel.... ;D
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...
ApeviaX
Inlägg: 20
Blev medlem: 11 feb 2020, 22:52
OS: Annat GNU/Linux
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Sturefors (Linköping)

Re: Köra bash script vid uppstart av system

Inlägg av ApeviaX »

Spännande :)

Jag har inget egentligt syfte med detta mer än att lära mig.
Tänkte testa detta i en av mina VirtualBox installationer, mest för att labba och eftersom jag inte använder maskinen dagligen så finns nästan alltid något att hämta nästa gång jag kör igång den.

Tänkte då att det kunde vara lite kul att både lära mig att skriva ett enkelt script samt schemalägga det att köras helt automatiskt vid uppstart.
Ser dock gärna att terminalfönstret laddas upp så att man kan se all "action" :P

/Nicke
ApeviaX
Inlägg: 20
Blev medlem: 11 feb 2020, 22:52
OS: Annat GNU/Linux
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Sturefors (Linköping)

Re: Köra bash script vid uppstart av system

Inlägg av ApeviaX »

Jag har gjort detta i 2 steg då jag först inte hajade hur jag fick igång allt via ett enskilt script.

Script #1.
Detta script skapar en textfil som heter "datum.txt" i vilken den skriver ut dagens datum samt tid vid tillfället då kommandot körs i scriptet. Detta blir ett kvitto på att något funkar.
Sista delen i det scriptet pekar på script #2 för att kicka igång det.

Kod: Markera allt

#!/bin/bash

date >> datum.txt

x-terminal-emulator -e /home/apeviax/startup.sh
Script #2. Har till syfte att köra igång terminalen och utföra uppdatering samt uppgradering av paket. Till sist vill jag ha output från terminalen till en textfil ("uu".txt) men detta har nu slutat funka efter att ha lirat något sånär vid manuell test.

Kod: Markera allt

#Bash prints out system message in terminal window.
echo "System update will start in 2 seconds."
#Bash pauses the xcript for 2 seconds.
sleep 2
echo upass | sudo -S sudo apt update >> uu.txt
#Bash pauses the script for 2 seconds.
sleep 2
#Bash prints out system message in terminal window.
echo "System upgrade will start in 2 seconds."
sleep 2
echo upass | sudo -S sudo apt upgrade -y >> uu.txt
OBS! att detta alltså är de första bash script jag försökt mig på på egen hand, kan det säkerligen finnas en del att slipa på. Särskilt om man bortser från det faktum att just det jag försöker göra inte är det mest korrekta användningsområdet.

/Nicke
ApeviaX
Inlägg: 20
Blev medlem: 11 feb 2020, 22:52
OS: Annat GNU/Linux
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Sturefors (Linköping)

Re: Köra bash script vid uppstart av system

Inlägg av ApeviaX »

Dessa script ovan är alltså tänkt att köras vid uppstart av min testmaskin, mest på skoj men som sagt även för att lära mig.
Som det är nu rullar alltså script #1. på utan problem via crontab uppgift.

Script #2. lyser med sin frånvaro såvida jag inte kör igång allt manuellt via terminalen i ett uppstartat system.

Avändningsområdet för vad dessa script gör är kanske inte stor, men kunskapen om att schemalägga via crontab eller ev. systemd (?) borde vara bra att greppa på sikt?

/Nicke
ApeviaX
Inlägg: 20
Blev medlem: 11 feb 2020, 22:52
OS: Annat GNU/Linux
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Sturefors (Linköping)

Re: Köra bash script vid uppstart av system

Inlägg av ApeviaX »

Här ser vi output från date kommandot som körs i Script #1. Det funkar gång på gång, både direkt vid start av system men även vid manuell test av scriptet via terminalen.
datum.txt.png
datum.txt.png (24.49 KiB) Visad 5336 gånger
Här ser vi själva testscriptet kickas igång manuellet via terminalen, det är alltså script #1 som kickas igång för att direkt (när terminalfönstret dyker upp) köra vidare med script #2.
Till sist har vi här output från script #2 som "bevis"/"logg" att det kördes. (Eftersom ingen output syns när scriptet i sig kör update & upgrade i terminalen (?!)...

Kod: Markera allt

Get:1 http://dl.google.com/linux/chrome/deb stable InRelease [1 811 B]
Get:2 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1 078 B]
Get:3 http://security.ubuntu.com/ubuntu impish-security InRelease [90,7 kB]
Get:4 http://security.ubuntu.com/ubuntu impish-security/main i386 Packages [1 728 B]
Get:5 http://security.ubuntu.com/ubuntu impish-security/main amd64 Packages [3 316 B]
Get:6 http://security.ubuntu.com/ubuntu impish-security/main Translation-en [2 760 B]
Get:7 http://security.ubuntu.com/ubuntu impish-security/universe i386 Packages [804 B]
Get:8 http://security.ubuntu.com/ubuntu impish-security/universe amd64 Packages [2 796 B]
Get:9 http://security.ubuntu.com/ubuntu impish-security/universe Translation-en [2 416 B]
Hit:10 http://se.archive.ubuntu.com/ubuntu impish InRelease
Get:11 http://se.archive.ubuntu.com/ubuntu impish-updates InRelease [90,7 kB]
Hit:12 http://se.archive.ubuntu.com/ubuntu impish-backports InRelease
Get:13 http://se.archive.ubuntu.com/ubuntu impish/main amd64 DEP-11 Metadata [460 kB]
Get:14 http://se.archive.ubuntu.com/ubuntu impish/main DEP-11 48x48 Icons [109 kB]
Get:15 http://se.archive.ubuntu.com/ubuntu impish/main DEP-11 64x64 Icons [160 kB]
Get:16 http://se.archive.ubuntu.com/ubuntu impish/universe amd64 DEP-11 Metadata [3 701 kB]
Get:17 http://se.archive.ubuntu.com/ubuntu impish/universe DEP-11 48x48 Icons [3 247 kB]
Get:18 http://se.archive.ubuntu.com/ubuntu impish/universe DEP-11 64x64 Icons [7 845 kB]
Get:19 http://se.archive.ubuntu.com/ubuntu impish/multiverse amd64 DEP-11 Metadata [46,7 kB]
Get:20 http://se.archive.ubuntu.com/ubuntu impish/multiverse DEP-11 48x48 Icons [31,3 kB]
Get:21 http://se.archive.ubuntu.com/ubuntu impish/multiverse DEP-11 64x64 Icons [198 kB]
Get:22 http://se.archive.ubuntu.com/ubuntu impish-updates/main amd64 Packages [17,8 kB]
Get:23 http://se.archive.ubuntu.com/ubuntu impish-updates/main i386 Packages [3 396 B]
Get:24 http://se.archive.ubuntu.com/ubuntu impish-updates/main Translation-en [6 972 B]
Fetched 16,0 MB in 8s (1 945 kB/s)
Reading package lists...
Building dependency tree...
Reading state information...
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
The following packages will be upgraded:
  caca-utils google-chrome-stable libcaca0
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
2 standard security updates
Need to get 89,3 MB of archives.
After this operation, 1 050 kB of additional disk space will be used.
Get:1 http://dl.google.com/linux/chrome/deb stable/main amd64 google-chrome-stable amd64 95.0.4638.54-1 [89,0 MB]
Get:2 http://security.ubuntu.com/ubuntu impish-security/main amd64 libcaca0 amd64 0.99.beta19-2.2ubuntu2.1 [224 kB]
Get:3 http://security.ubuntu.com/ubuntu impish-security/universe amd64 caca-utils amd64 0.99.beta19-2.2ubuntu2.1 [57,2 kB]
Fetched 89,3 MB in 9s (9 622 kB/s)
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 280330 files and directories currently installed.)
Preparing to unpack .../google-chrome-stable_95.0.4638.54-1_amd64.deb ...
Unpacking google-chrome-stable (95.0.4638.54-1) over (94.0.4606.81-1) ...
Preparing to unpack .../libcaca0_0.99.beta19-2.2ubuntu2.1_amd64.deb ...
Unpacking libcaca0:amd64 (0.99.beta19-2.2ubuntu2.1) over (0.99.beta19-2.2ubuntu2) ...
Preparing to unpack .../caca-utils_0.99.beta19-2.2ubuntu2.1_amd64.deb ...
Unpacking caca-utils (0.99.beta19-2.2ubuntu2.1) over (0.99.beta19-2.2ubuntu2) ...
Setting up google-chrome-stable (95.0.4638.54-1) ...
Setting up libcaca0:amd64 (0.99.beta19-2.2ubuntu2.1) ...
Setting up caca-utils (0.99.beta19-2.2ubuntu2.1) ...
Processing triggers for libc-bin (2.34-0ubuntu3) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for menu (2.1.47ubuntu4) ...
Processing triggers for mailcap (3.69ubuntu1) ...
Processing triggers for bamfdaemon (0.5.5+21.10.20210710-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for desktop-file-utils (0.26-1ubuntu2) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Hit:1 http://se.archive.ubuntu.com/ubuntu impish InRelease
Hit:2 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:3 http://se.archive.ubuntu.com/ubuntu impish-updates InRelease
Hit:4 http://se.archive.ubuntu.com/ubuntu impish-backports InRelease
Hit:5 http://security.ubuntu.com/ubuntu impish-security InRelease
Reading package lists...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

En viktig sak att tänka på om du kör script vid uppstart av systemet, är att i början finns inte speciellt mycket av det man normalt förväntar sig ska finnas. Det finns generellt sett 8 nivåer i Linux som som du även i efterhand kan nå via "init [0,1,2,3,4,5,6,S]".

Alla de här har sin motsvarighet i "/etc" alltså /etc/rc0.d, /etc/rc1.d, /etc/rc2.d, /etc/rc3.d, /etc/rc4.d, /etc/rc5.d, /etc/rc6.d och /etc/rcS.d, som alltså är de script och regler som används för att hantera respektive nivå.

Den första "/etc/rc0.d" är egentligen de script och kommandon som används när burken ska göra halt. Här kan man alltså lägga in sådant som man vill ska utföras varje gång systemet gör en "ordnad" halt/shutdown. Icke "ordnad" halt är, strömavbrott och sådant...

Resten är ungefär:
  • init 1 : Single user mode or emergency mode means no network no multitasking is present in this mode only root has access in this runlevel
  • init 2 : No network but multitasking support is present .
  • init 3 : Network is present multitasking is present but with out GUI .
  • init 4 : It is similar to runlevel 3; It is reserved for other purposes in research.
  • init 5 : Network is present multitasking and GUI is present with sound etc.
  • init 6 : This runlevel is defined to system restart.
  • init S : Tells the init command to enter the maintenance mode. When the system enters maintenance mode from another run level, only the system console is used as the terminal.
Det är alltså främst i "runlevel 6/S" som det kan vara meningsfullt att lägga in något. Det du har som du eventuellt går att lägga in tidigare, har du ändå inte någon användning av förrän här och du riskerar att det "kvaddar" hela booten om något inte är perfekt...

Om du vill prova så kan du öppna en terminal och "hoppa mellan de olika nivåerna", med t.ex "init 3", "init 5", etc. Det här gör man t.ex vid vissa former av trixiga installationer, för att få ned systemet till lämplig nivå. Som exempel är installationer av X11 och annat, där du måste ta ned systemet till "runlevel 3" (inget GUI) för att det ska funka...

Att köra script via crontab är en helt annan och mycket enklare sak. Då säger du helt enkelt bara till vilket script som ska köras och när. Men tänk på att utskrifter och felhantering ställer lite andra krav än vanligt... :)
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...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

En speciell sak att tänka på är att både "echo" och "printf" skickar sina utskrifter "ut i binära rymden", eftersom det inte finns någon terminal knuten till processen.

Ibland funkar det med typ "echo foobar >> /dev/tty", men annars får man skriva till en fil istället, vanliga "echo" och "printf" funkar oftast inte....
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...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

Och för den delen:

Kod: Markera allt

sudo apt update && sudo apt upgrade -y
...kan du utan vidare köra automatiskt, givetvis med "-y" som du anger. Men tänk på att du måste köra det i root:s crontab, eftersom du inte kan svara på "sudo" när det kör igång....
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...
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Köra bash script vid uppstart av system

Inlägg av Osprey »

Ett problem till som kan uppstå är när det kommer en ny kärna eller så, för då hjälper inte ens "-y".

Du kan kolla lite med det här scriptet som jag "hackat ihop"...

Kod: Markera allt

#! /bin/bash
#
function krnl {
	NAME=$(uname -s)
	MACHINE=$(uname -m)
	RUNNING_KRNL=$(uname -r)
	NEWEST_KRNL=$(ls -l /boot/vmlinuz | awk '{ print $11 }' | sed 's/vmlinuz-//g')
	#echo
	echo "Running kernel is:   $(uname -rms)"
	if [[ $RUNNING_KRNL != $NEWEST_KRNL ]]; then
		echo -e "\033[1m\033[31m=>A newer kernel exists, consider rebooting !!!!!\033[0m"
		#echo "Newer version is:    $NAME $NEWEST_KRNL $MACHINE"
		echo "Newer kernel is:     $NAME $NEWEST_KRNL $MACHINE"
	else
		echo "-Ok"
	fi
	echo
}
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 [[ -z $EUID ]]; then
	EFFUID=$(ps --no-headers -o euid --pid $$ | xargs)
else
	EFFUID=$EUID
fi
clear -x
echo
echo "=============================================================================="
echo "-Up in $(uptime -p)"
echo
echo "=============================================================================="
echo '-Checking "/var/run/reboot-recuired"'
if [[ -r /var/run/reboot-required ]]; then
	echo -en "\033[1m\033[31m"
	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
	else
		echo "-No info about pkgs"
	fi
	echo -en "\033[0m"
else
	echo "-Ok"
fi
echo
echo "=============================================================================="
echo "-Checking kernel"
krnl
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 -r l
		#needrestart -r l | grep "Your outdated processes"
		if [[ $EFFUID != "0" ]]; then
			PROCESSES=$(needrestart 2> /dev/null | tail -n +2 | tr -d -c '[:digit:] ' | xargs)
			if [[ ! -z $PROCESSES ]]; then
				#echo "-Own processes that need restart:"
				echo "-Info about outdated processes:"
				#echo "PROCESSES:  $PROCESSES"
				ps -fp $PROCESSES
			fi
		fi
	else
		echo 'needrestart is not installed - use "sudo apt install needrestart" to install it..."'
	fi
	echo
	echo "=============================================================================="
	if [[ $EFFUID == "0" ]]; then
		echo '-Running "checkrestart"'
		echo '-Note that most messages from "lsof" 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
	else
		echo '-Can not run "checkrestart", as we are not root...'
		echo
	fi
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...
Skriv svar

Återgå till "Experimentverkstad"