• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af jørgen | 10.01.2015 08:11

Opensuse - start af script ved boot

Hjælp generelt
Jeg skal starte et script når Opensuse er booted og alle services tilgængelige (start af Homeautomation).

Har jeg forstået det rigtigt, at jeg lægger det ind i after.local i /etc.init.d/ ?
- og hvis ja, skal jeg flytte/kopiere after.local til en af rcx.d mapperne?


/jørgen
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer5

# 1

10 år 5 måneder siden

Permalink

Indsendt af McDonnell den 11. januar 2015 kl. 12:43

Permalink

Hej Jørgen
Jeg går ud fra

Hej Jørgen

Jeg går ud fra det du gerne vil opnå er at køre et script ved start op og luk ned?

Først skal du have lavet et init script som skal gemmes i /etc/init.d/my_maintenance

#!/bin/bash
# Author: your name here
#
# /etc/init.d/my_maintenance
#
### BEGIN INIT INFO
# Provides: my_maintenance
# Required-Start: network
# Should-Start: $null
# Required-Stop: xdm
# Should-Stop: $null
# Default-Start: 5
# Default-Stop: 5
# Short-Description: Runs various maintenance scripts.
# Description: Not actually a service at all.
### END INIT INFO

. /etc/rc.status

rc_reset

case "$1" in
start)
# use colour for ease of spotting
echo -e "\E[36mRunning $0 (start)...\E[0m";
/etc/init.d/my_maintenance.d/start
echo -e "\E[36mDone $0 \E[0m";
;;
stop)

echo -e "\E[36mRunning $0 (stop)...\E[0m";
/etc/init.d/my_maintenance.d/stop
echo -e "\E[36mDone $0 \E[0m";
;;
restart)
$0 stop
$0 start
rc_status
;;
*)
echo "Usage $0 (start|stop|restart)"
exit 1;
;;
esac

rc_exit


Giv filen de nødvendige rettigheder.

$ chmod u+x /etc/init.d/my_maintenance

Den overstående fil sørger for at netværk er startet op før dit script hvis det er nødvendigt.

Her efter skal du lave to mapper.

$ mkdir -p /etc/init.d/my_maintenance.d/start.d
$ mkdir -p /etc/init.d/my_maintenance.d/stop.d


De scripts der skal køres under op start ligges i start.d og under nedlukning stop.d

Nu skal du lave filen /etc/init.d/my_maintenance.d/start script

#!/bin/bash

# run scripts with names starting 0-9 in foreground. if you want to
# put a script in start.d and you care about when it gets run in relation
# to other scripts, give it a name starting 0-9
for i in $(dirname $0)/start.d/[0-9]*;do
test -x $i && echo -e "\E[36mRunning ${i} \E[0m" && $i
done

# run scripts with names starting a-z in the background
# as this reduces the over all time this script takes to run.
for i in $(dirname $0)/start.d/[a-z]*;do
test -x $i && echo -e "\E[36mRunning ${i} \E[0m" && $i &
done

# wait for children to exit
wait;


Og filen /etc/init.d/my_maintenance.d/stop

#!/bin/bash

# run scripts with names starting 0-9 in foreground. if you want to
# put a script in start.d and you care about when it gets run in relation
# to other scripts, give it a name starting 0-9
for i in $(dirname $0)/stop.d/[0-9]*;do
test -x $i && echo -e "\E[36mRunning ${i} \E[0m" && $i
done

# run scripts with names starting a-z in the background
# as this reduces the over all time this script takes to run.
for i in $(dirname $0)/stop.d/[a-z]*;do
test -x $i && echo -e "\E[36mRunning ${i} \E[0m" && $i &
done

# wait for children to exit
wait;


Giv begge filer de nødvendige rettigheder.

$ chmod u+x /etc/init.d/my_maintenance.d/start
$ chmod u+x /etc/init.d/my_maintenance.d/stop


Til sidst skal init scriptet aktiveres.

$ insserv /etc/init.d/my_maintenance

Sig lige til om det virker, da min post er baseret på en note jeg har fra 2011 :)

Fortsat god dag!





  • Log ind eller opret dig for at tilføje kommentarer

# 2

10 år 5 måneder siden

Permalink

Indsendt af cb400f den 11. januar 2015 kl. 20:00

Permalink

Siden 2011 er openSUSE,

Siden 2011 er openSUSE, ligesom de fleste andre distro, skiftet til systemd. Der er ganske vist noget legacy-kompatibilitet med det gamle sysvinit, men jeg er usikker på hvor godt det virker. Og der er i hvert fald ikke de store fremtidsperspektiver i det.

I stedet burde #0 lære at skrive en systemd unit file, da det er den "korrekte" måde at gøre tingene på nu om stunder. Efter sigende skulle det ikke være så vanskeligt igen, på trods af at det er et Lennart Poettering/Red Hat-design.

Og så kan han fortælle mig hvordan man griber det an, når jeg en dag selv får brug for det ;-)

Hvis scriptet kan køres som almindelig bruger, og det kan vente til skrivebordsmiljøet er startet, vil man i stedet kunne bruge "autostart" funktionalitet fra skrivebordsmiljøet, hvilket er umanerligt nemt.
  • Log ind eller opret dig for at tilføje kommentarer

# 3

10 år 5 måneder siden

Permalink

Indsendt af Kresten Kjaer den 11. januar 2015 kl. 20:07

Permalink

Systemd er dejlig nem at

Systemd er dejlig nem at arbejde med. Dels fordi abstraktionslaget er på et lidt højere niveau.
I /etc/systemd/system/test.service skriver du:

[Unit]
Description=Write anything here.
After=network.target

[Service]
User=aUser
Group=aGroup
ExecStart=/opt/my_runner.sh
RestartSec=5
Restart=on-failure

[Install]
WantedBy=multi-user.target


Husk at sætte chmod +x på den fil du skriver under ExecStart.
  • Log ind eller opret dig for at tilføje kommentarer

# 4

10 år 5 måneder siden

Permalink

Indsendt af dudsen den 12. januar 2015 kl. 08:39

Permalink

hvis jeg husker rigtigt

/etc/init.d/boot.local er det sidste der eksekveres efter systemd er færdig hvis ellers jeg husker rigtigt. brugte vist det trick til at løse et problem skabt af systemd's forsøg på at "fixe" netværks opsætningen.

after.local burde også virke.

For normale service bruger man idag unit filer men hvis du bare skal rydde op efter standard boot så er de 3 post boot scripts ofte en bedre løsning.
  • Log ind eller opret dig for at tilføje kommentarer

# 5

10 år 5 måneder siden

Permalink

Indsendt af jørgen den 12. januar 2015 kl. 21:24

Permalink

Tusind tak, Dudsen
Jeg var

Tusind tak, Dudsen


Jeg var gået i gang med systemd, men kløjs i fejl på rettigheder. (Jeg havde installeret system_ui så jeg grafisk kunne se hvad pokker der skete efter jeg havde enablet (imit tilfælde "systemctl enable Homeseer.service")

Læste så dit indlæg, og opdagede at jeg tidligere havde skrevet Home i stedet for home i path i min boot local

Nu er jeg en glad mand. Min Gigabyte Brix kan starte efter strømnedbrud, og starter Homeseer (mit homeautomation) automatisk. - Så kan jeg gemme boksen på min sommerlejr i et skab.

/jørgen
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

den er sjov 0
llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

Reserve kernel og btrfs 3
En snak om Linux-kompatibel software 12
PCLinuxOS 28
"Intet realistisk alternativ" - mig i r*ven 17
Open source events i danmark? 3
Virtuel maskine? 4
Gode anmeldelser Zorin OS 17.3 8
Open Source-eksperimentet 5
Nulstilling af adgangskode 6
Ingen Mint 5
Linux App Store Flathub når 3 milliarder downloads 2
Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 3
Mest sikker webbrowser 5
Firefox 2
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2
Vanilla OS 15

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !