.sh script beim Systemstart starten

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

.sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 00:21:54

Hallo,
ich bin Neuling und habe schon einiges gelesen.

Ich versucher jetzt schon seit Stunden ein .sh Script beim Systemstart automatisch zu starten.

Bitte kann mir jemand sagen in welche Autostart-Datei ich das einfügen muss und wie die genaue
Befehlszeile lautet ?

danke im voraus.

mfg
mfg
Gelbervogel

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: .sh script beim Systemstart starten

Beitrag von smutbert » 03.09.2015 00:28:55

/etc/rc.local böte sich an, da könntest du eine Zeile wie

Code: Alles auswählen

/usr/local/bin/meinSkript.sh &
einfügen, "exit 0" muss aber die letzte Zeile bleiben und "/usr/local/bin/meinSkript.sh" muss ausführbar sein.

wanne
Moderator
Beiträge: 7623
Registriert: 24.05.2010 12:39:42

Re: .sh script beim Systemstart starten

Beitrag von wanne » 03.09.2015 00:44:22

Die elegantere methode ist ein .service datei unter /etc/systemd/system anzulegen

Code: Alles auswählen

[Unit]
Description=Dein Script
Requires=[Was eventuell zuerst gestartet werden muss]

[Service]
Type=oneshot
ExecStart=/usr/local/bin/meinSkript.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Links:
Vergleiche mal
/lib/systemd/systemd-remount-fs.service
Beste hilfe zu systemd Service unit configuration: http://www.freedesktop.org/software/sys ... rvice.html
Siehe auch: https://wiki.archlinux.org/index.php/Systemd
rot: Moderator wanne spricht, default: User wanne spricht.

Alfex
Beiträge: 16
Registriert: 02.09.2015 19:53:38

Re: .sh script beim Systemstart starten

Beitrag von Alfex » 03.09.2015 09:18:38

Oder ein startscript in /etc/init.d/ ? Die Methode mit /etc/rc.local kenne ich auch aber das mit /etc/systemd/system kenne ich noch nicht nicht.
Was ist der Unterschied wenn ich ein Script da oder in init.d Ordner erstelle?

TomL

Re: AW: .sh script beim Systemstart starten

Beitrag von TomL » 03.09.2015 09:41:09

Gelbervogel hat geschrieben:Ich versucher jetzt schon seit Stunden ein .sh Script beim Systemstart automatisch zu starten.

Bitte kann mir jemand sagen in welche Autostart-Datei ich das einfügen muss und wie die genaue
Befehlszeile lautet ?
Ich empfehle dir, dass über systemd zu machen. Du benötigst dazu nur ein kleines Service-Unit-File, in der das zu startende Programm oder Script drinsteht und zu welcher Zeit (entsprechend zu ggf. notwendigen Abhängigkeiten) es gestartet werden soll.

Such mal hier nach "mountctrl". Das ist ein script mit einer besonderen Aufgabe von mir, welches gestartet wird, wenn der Rechner bereit ist. Daraus müsstest du alles notwendige ableiten können.

TomL

Re: AW: .sh script beim Systemstart starten

Beitrag von TomL » 03.09.2015 09:51:15

Alfex hat geschrieben:Was ist der Unterschied wenn ich ein Script da oder in init.d Ordner erstelle?
Vermutlich gibt's für das Ergebnis keinen, beides führt zum gleichen Ziel. Ich lasse jetzt aber trotzdem mal ein pro-systemd raus, in der Hoffnung, durch den möglichen Widerspruch der Fachleute selbst einen besseren Durchblick zu bekommen.

Fakt ist meines Erachtens, es kann keine zwei gleichzeitig und konkurrierend arbeitenden Startsysteme geben.....d.h. systemd und sysvinit zu selben Zeit geht nicht. Und so wie ich das verstanden habe, gibt's sysvinit jetzt schon nicht mehr in Debian. Stattdessen "emuliert" systemd die Funktionalität von sysvinit. Also warum dann nicht von vornherein komplett auf systemd setzen? Ich habe mich (auch Anfänger) entschieden, nur nach vorne zu schauen und sysvinit keine Beachtung mehr zu schenken.

Jm2c

Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

Re: .sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 14:28:38

smutbert hat geschrieben:/etc/rc.local böte sich an, da könntest du eine Zeile wie

Code: Alles auswählen

/usr/local/bin/meinSkript.sh &
einfügen, "exit 0" muss aber die letzte Zeile bleiben und "/usr/local/bin/meinSkript.sh" muss ausführbar sein.
ich bin im Moment auf der Arbeit :(

exakt so, bzw. (in der /etc/rc.local)
/home/gelbervogel/script.sh &

habe ich mein Script aufgerufen. Aber da passiert nichts.

Das Script ist ausführbar und startet auch mit ./script.sh manuell.

Das Script startet Firefox mit einem Link von einem Besuchertausch und überprüft alle 120 Sekunden ob noch alles läuft.
(Sinn oder Unsinn dafür ist egal :D )

Die andere Lösung schaue ich mir heute Abend mal an. (klingt für mich erstmal kompliziert 8O - wird aber auch machbar sein)

Oder liegt es an dem was ich da aufrufe, dass das nicht startet ?

mfg
mfg
Gelbervogel

eggy
Beiträge: 3334
Registriert: 10.05.2008 11:23:50

Re: .sh script beim Systemstart starten

Beitrag von eggy » 03.09.2015 14:40:53

Versuch mal ob es mit curl oder wget geht, Firefox könnte nen laufendes X haben wollen und deswegen den Dienst verweigern.

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: .sh script beim Systemstart starten

Beitrag von smutbert » 03.09.2015 14:44:03

Gelbervogel hat geschrieben:[…]
Das Script startet Firefox mit einem Link von einem Besuchertausch und überprüft alle 120 Sekunden ob noch alles läuft.
(Sinn oder Unsinn dafür ist egal :D )
[…]
Nein, ist nicht egal.

Alle bis hierher beschriebenen Varianten führen das Skript oder andere Befehle als root aus und bieten dem Programm keine richtige Konsole und Zugriff auf den X-Server, der zu dem Zeitpunkt zu dem das Skript aufgerufen wird, obendrein noch gar nicht läuft, hat es so normalerweise auch keinen - das ist hier also keinesfalls das Mittel der Wahl, es sei denn du willst doch auf Kommandozeilenprogramme beschränken, wie eggy es gerade vorgeschlagen hat.


Dein Skript sollte bei der Anmeldung des Benutzers unter seinem Account ausgeführt werden. Dazu kann man zB eine .desktop-Datei unter ~/.config/autostart anlegen. Abhängig vom Desktop gibt es aber auch andere Vorgehensweisen:
https://wiki.ubuntuusers.de/autostart

Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

Re: .sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 14:57:57

smutbert hat geschrieben:Dein Skript sollte bei der Anmeldung des Benutzers unter seinem Account ausgeführt werden. Dazu kann man zB eine .desktop-Datei unter ~/.config/autostart anlegen. Abhängig vom Desktop gibt es aber auch andere Vorgehensweisen:
https://wiki.ubuntuusers.de/autostart
auch das hatte schon probiert. Hat leider auch nicht funktioniert :(

In meinem Script wird das Prüfen, ob der Besuchertausch noch läuft, über Curl gemacht

ich nutze LXDE
mfg
Gelbervogel

TomL

Re: .sh script beim Systemstart starten

Beitrag von TomL » 03.09.2015 15:09:06

Gelbervogel hat geschrieben:habe ich mein Script aufgerufen. Aber da passiert nichts.
Mit diesen paar Zeilen, eingefügt relativ oben am Anfang deines Script kannst du prüfen, ob die eingestellten Automatismen überhaupt funktionieren. Es wird in Deinem HomeDir ein Log angelegt, wo Du genau sehen kann, ob das Script gestartet wurde, und (wenn) mit welchen 2 Parametern.

Code: Alles auswählen

#Debug
d=`date +%d-%m-%Y-%H-%M-%S`
log=~/$0_Debug.Log
echo $d `basename $0`": Programm gestartet. Param:" $1  $2 >>$log
Diese paar obigen Zeilen kannst Du auch in die rclocal eintragen, damit Du prüfen kannst, ob die überhaupt noch gestartet wird. Ich hatte auf 2 Systemen das Problem, dass sie nicht mehr gestartet wird. Allerdings solltest Du dann den LogFile-Pfad explizit bestimmen, weil das sonst vermutlich unter root landet, also z.B.: log=/home/thomas/$0_Debug.Log

Das erzeugte Log-File aus dem Script sieht dann bei mir so aus:
/home/thomas/MyProg_Debug.Log

Code: Alles auswählen

03-09-2015-14-58-32 MyProg: Programm gestartet.
03-09-2015-14-58-36 MyProg: Programm gestartet.
03-09-2015-14-59-48 MyProg: Programm gestartet. Parameter: 10  22
03-09-2015-14-59-51 MyProg: Programm gestartet. Parameter: a  bcd
03-09-2015-14-59-55 MyProg: Programm gestartet. Parameter: asdf  jklö
Zuletzt geändert von TomL am 03.09.2015 15:25:44, insgesamt 2-mal geändert.

wanne
Moderator
Beiträge: 7623
Registriert: 24.05.2010 12:39:42

Re: .sh script beim Systemstart starten

Beitrag von wanne » 03.09.2015 15:11:23

Für was dauerhaft laufendes wäre nicht oneshot sonder simple der richtige Typ von systemd.
Aber wie schon mehrfach angemerkt, wenn da irgend was mit firefox läuft, klingt das nicht so, als ob du das beim systemstart laufen lassen willst, sondern eher erst wenn du angemeldet bist und unter dem user in der X-Session (Damit der angemeldete User was sieht.)
rot: Moderator wanne spricht, default: User wanne spricht.

Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

Re: .sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 17:19:24

so, ich werde jetzt mal anfangen zu testen.

da ich ja Windoof-User bin, weiß ich von Debian noch zu wenig.

Habe jetzt hier aber rausgelesen, dass es beim Autostart wohl einige Ebenen gibt wo man was reinsetzen kann.
Da es beim User gestartet werden soll, wird/muss wohl der letzte Vorschlag gehen. hmmm...

Welche Ebenen gibt es alle bei Linux für den Autostart ?
mfg
Gelbervogel

wanne
Moderator
Beiträge: 7623
Registriert: 24.05.2010 12:39:42

Re: .sh script beim Systemstart starten

Beitrag von wanne » 03.09.2015 17:53:17

Systemstart wird unter gerade ziemlich revuluzioniert. Siehe dazu http://www.freedesktop.org/software/sys ... rvice.html .
Hat aber wie gesagt nichts mit der Anmeldung zu tun. (Zumindest nicht bei Linux, Mac OSX und Windows NT. Bis Windows 98 war das da noch ein bisschen anders. )
Der klassische windows Autostart wird nach der Anmeldung ausgeführt (Merkst du vor allem daran, dass er für jeden Nutzer anderes ist und eben, dass es erst passiert, wenn du dein passwort eingegeben hast. Und nicht direkt beim Einschalten.).
Am ehesten entspricht wohl die LXDE funktion ~/.config/lxsession/LXDE/autostart dem.
Da kannst du das reinschreiben:

Code: Alles auswählen

/usr/local/bin/meinSkript.sh
Die archler meinen ausdrücklich ohne &
oder wenn du willst, dass das Script automatisch nach dem beenden neu gestartet wird:

Code: Alles auswählen

@/usr/local/bin/meinSkript.sh
Quelle: https://wiki.archlinux.org/index.php/LXDE

Wahrscheinlich gienge das auch eleganter über Systemd. So gut kenne ich mich aber nicht aus.
Alfex hat geschrieben:Was ist der Unterschied wenn ich ein Script da oder in init.d Ordner erstelle?
Bis wheezy wurde SystemV init und damit der init.d genutzt. Seit jessie gibt es per default Systemd. Vorübergehend funktioniert zwar der init.d Ordner weiterhin. Die Systemd Entwickler wollen aber dass das in Zukunft nicht mehr funktioniert. Die Forderung, dass Debian beide Wege aus Prinzip beibehält wurde abgeschlagen. In sofern. SystemV init unter Debian ist auf die Dauer tot.
In sofern, wenn du was neues machst: http://www.freedesktop.org/software/sys ... rvice.html
rot: Moderator wanne spricht, default: User wanne spricht.

Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

Re: .sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 18:47:13

in meinem System existiert dieser Pfad (~/.config/lxsession/LXDE/autostart) nicht
muss ich dies erstellen ?

anbieten könnte ich /home/gelbervogel/.config/lxsession/LXDE
hierin ist dann die Datei desktop.conf

oder aber /root/.config/autostart
hierin gibt es dann .desktop

hier habe ich jetzt mal
/home/gelbervogel/meinscript.sh
eingefügt.

Aber es passiert leider immer noch nichts.
mfg
Gelbervogel

Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

Re: .sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 20:00:23

wanne hat geschrieben:Die elegantere methode ist ein .service datei unter /etc/systemd/system anzulegen

Code: Alles auswählen

[Unit]
Description=meinscript.sh
Requires=lxterminal

[Service]
Type=oneshot
ExecStart=/home/gelbervogel/meinscript.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
so habe ich das jetzt auch mal getestet. Tut sich aber auch nichts.

Mein gedanke war, dass das Script in lxterminal starten muss ?
Keine Ahnung :lol:
mfg
Gelbervogel

TomL

Re: .sh script beim Systemstart starten

Beitrag von TomL » 03.09.2015 20:53:11

Gelbervogel hat geschrieben:so habe ich das jetzt auch mal getestet. Tut sich aber auch nichts.
Wie Wanne schon sagte, "typ=simple".

Du musst die Unit einmalig aktivieren. Damit wird sie beim nächsten Boot des Systems gestartet.

Code: Alles auswählen

systemctl enable deinscript.service
Um es wieder zu deaktivieren:

Code: Alles auswählen

systemctl disable deinscript.service
Wenn Du die "aktivierte" Unit sofort starten willst, wodurch natürlich auch dein Script gestartet wird (werden sollte).

Code: Alles auswählen

systemctl start deinscript.service 
Oder zum stoppen:

Code: Alles auswählen

systemctl stop deinscript.service 
Den Status Deiner Unit kannst du prüfen:

Code: Alles auswählen

systemctl status deinscript.service
Und wann und ob es gestartet wurde, findest du über den plot heraus, den Du dir mit einem Picture-Viewer ansehen kannst

Code: Alles auswählen

systemd-analyze plot >~/bootplot.svg
Und wenn du die aktivierte Unit zur Laufzeit veränderst, dann danach einmal:

Code: Alles auswählen

systemctl daemon-reload
Da gibts noch mehr Möglichkeiten, wie restart, reload, usw. Gib einfach mal im Terminal "systemctl --help" ein.

Das Requires-Statement beschreibt nur Abhängigkeiten, das heisst, Dein Script würde erst gestartet werden, wenn die dort eingetragenen abhängigen Jobs erfolgreich laufen. Entferne diese Zeile einfach mal und trage dafür ein:

Code: Alles auswählen

After=network-online.target
Das bedeutet, dass Dein Script erst dann gestartet wird, wenn das ganze Netzwerk online ist. Das ist eigentlich alles wirklich einfach.

Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

Re: .sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 22:04:36

erstmal DANKE für eure Geduld.

Die untere Zeile habe ich nun eingetragen und diese andere entfernt.
Auch "simple" habe ich eingetragen (ersetzt)

Jetzt habe ich das Problem, dass auf meinem System kein "systemctl" gefunden wird.
Wie muss ich das installieren ? In was für einem Paket ist dies ?
mfg
Gelbervogel

wanne
Moderator
Beiträge: 7623
Registriert: 24.05.2010 12:39:42

Re: .sh script beim Systemstart starten

Beitrag von wanne » 03.09.2015 22:06:09

Bitte verinnerliche dir erst mal den Satz bevor du weiter machst:
Wenn du irgend was als root machst, wirst du davon als gelbervogel nichts sehen können. Wie gesgt, genau wie unter Windows, wenn du zwei Nutzer anlegst.
Wenn also gelbervogel irgend einen Firefox sehen willst, lass die Finger von su sodo oder sonst irgend was, das den Nutzer ändert. (Klar root kann über irgend welche Umwege irgendwie jedem reinfroschen, aber das willst du ganz sicher nicht.)
Gelbervogel hat geschrieben:in meinem System existiert dieser Pfad (~/.config/lxsession/LXDE/autostart) nicht
muss ich dies erstellen ?
Würde ich mal tippen. Kenne LXDE selbst nicht kann nur auf die entsprechenden wikis verweisen. Die sagen das alle. Und würde die Datei wenn's nicht tut mal ausführbar machen.
rot: Moderator wanne spricht, default: User wanne spricht.

wanne
Moderator
Beiträge: 7623
Registriert: 24.05.2010 12:39:42

Re: .sh script beim Systemstart starten

Beitrag von wanne » 03.09.2015 22:16:06

Gelbervogel hat geschrieben:Jetzt habe ich das Problem, dass auf meinem System kein "systemctl" gefunden wird.
Wie muss ich das installieren ? In was für einem Paket ist dies ?
Prinzipiell in Debiansystemd aber du willst das nicht installieren.
Der Umstieg (SystemV-init,pam,mount,cryptsetup,syslog,getty,cron...) -> systemd ist so ziemlich das größte, dass es so in den Letzten Jahren als umstieg gab. Viele distros unterstützen das upgrade gar nicht und es wird eine neuinstallation fällig. Debian macht das zwar aber du willst das nicht wegen einem kleinen Script machen. Vergiss, was ich zu systemd gesagt habe. Wie gesagt ich bin sowieso immer noch überzeugt, dass du das nicht beim Systemstart sondern erst nach der Anmeldung starten willst. Wenn da Firefox läuft, willst du den ja auch sehen, und das kannst du erst nach der Anmeldung.
Falls doch: guck dir an wie man start-stop skripte für SystemV-init schreibt. (Stichwort: /etc/init.d)

Aber zuerstmal: Welche debian Version nutzt du? Und kannst du das script nicht doch mal posten. Ich glaube das hilft ordentlich weiter.
rot: Moderator wanne spricht, default: User wanne spricht.

TomL

Re: .sh script beim Systemstart starten

Beitrag von TomL » 03.09.2015 22:18:05

Gelbervogel hat geschrieben:Jetzt habe ich das Problem, dass auf meinem System kein "systemctl" gefunden wird.
Verblüffend.... :roll:... gib mal im Terminal ...

Code: Alles auswählen

uname -a
... ein und kopiere mal die Ausgabe nach hierhin. Ich habe zwar lxde gelesen, aber irgendwie nix weiteres dazu.

Wenn es nicht das aktuelle Jessie ist, guckstu hier: https://wiki.ubuntuusers.de/SysVinit
Zuletzt geändert von TomL am 03.09.2015 22:23:12, insgesamt 1-mal geändert.

Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

Re: .sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 22:22:49

TomL hat geschrieben:
Gelbervogel hat geschrieben:Jetzt habe ich das Problem, dass auf meinem System kein "systemctl" gefunden wird.
Verblüffend.... :roll:... gib mal im Terminal ...

Code: Alles auswählen

uname -a
... ein und kopiere mal die Ausgabe nach hierhin. Ich habe zwar lxde gelesen, aber irgendwie nix weiteres dazu.

Code: Alles auswählen

Linux VM-PC-debian1 3.2.0-4-686-pae #1 SMP Debian 3.2.68-1+deb7u3 i686 GNU/Linux

und ja, ich möchte es nach der Anmeldung, wenn das System ganz hochgefahren ist, ausführen


mfg
Gelbervogel
mfg
Gelbervogel

TomL

Re: .sh script beim Systemstart starten

Beitrag von TomL » 03.09.2015 22:27:10

Gelbervogel hat geschrieben:Linux VM-PC-debian1 3.2.0-4-686-pae #1 SMP Debian 3.2.68-1+deb7u3 i686 GNU/Linux
Dann kannst Du systemd vergessen. Das ist eine ältere Version, 3.2 klingt laut Wiki nach "Wheezy", und da gabs noch kein systemd. Also guckstu:
https://wiki.ubuntuusers.de/SysVinit

Wenn Du ein aktuelles Jessie haben möchstest, findest Du das hier:
ftp://ftp.nl.debian.org/debian-cd/8.1.0/
Genauer hier:
ftp://ftp.nl.debian.org/debian-cd/8.1.0/i386/iso-cd/
Dieser Iso-Installer
ftp://ftp.nl.debian.org/debian-cd/8.1.0 ... 6-CD-1.iso

Gelbervogel
Beiträge: 25
Registriert: 06.06.2015 16:50:17

Re: .sh script beim Systemstart starten

Beitrag von Gelbervogel » 03.09.2015 22:44:14

ja, es ist Wheezy

Welche dieser 3 Links ist der Beste um eine VM-Ware damit einzurichten.
Dann werde ich das einfach mal machen.

Es kommt mir da nicht auf einen Tag oder ne Woche drauf an. Es soll dann einfach dauerhaft gut laufen und ich möchte was dabei gelernt haben.
mfg
Gelbervogel

TomL

Re: .sh script beim Systemstart starten

Beitrag von TomL » 03.09.2015 22:52:49

Gelbervogel hat geschrieben: Welche dieser 3 Links ist der Beste um eine VM-Ware damit einzurichten.
Der letzte ist der iso-Installer. Aber schau Dir alle 3 Links an.... nicht nur öffnen, lesen.... :wink: ... dann siehst Du, dass die ersten beiden Links nur der Weg zum Iso-Installer sind. Du kannst mit diesem Iso eine VM einrichten oder auch einen PC.... das ist einfach nur der aktuelle Debian-Installer als CD-Version.

Antworten