shell-script ausführen @ startup

Status
Für weitere Antworten geschlossen.

cpam

Benutzer
Mitglied seit
14. Sep 2013
Beiträge
228
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

habe eine shell-script geschrieben, welche ich gerne beim startup ausgeführt hätte.
Habe dazu folgendes gemacht aber es klappt irgendwie nicht.

1. das file liegter unter /etc/init.d
2. etc/rc.d/rc3.d/S20<shellscript name> angelegt

Aber dennoch wird das script nicht ausgeführt. Rechte sind bereits alle auf 777.

Was mache ich hier falsch?

lG
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
mal unter /usr/syno/etc.defaults/rc.d/ probiert? Dort liegen auch die Startscripte der Firmware
Und 0777 ist zuviel, 0755 reicht auch
 

cpam

Benutzer
Mitglied seit
14. Sep 2013
Beiträge
228
Punkte für Reaktionen
0
Punkte
0
das flutscht ;) - perfekt danke
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
aber Achtung: ein Firmware Upgrade wird dieses Script dort wahrscheinlich nicht überleben :)
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
/usr/local/etc/rc.d ist für eigene Sachen gedacht.
 

Tagger

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
140
Punkte für Reaktionen
0
Punkte
22
Hallo,

ich habe ein ähnliches Problem:
Ich möchte zum Systemstart ein Script automatisch starten lassen, dass dann ein Backup per rsnapshot ausführt.

Ich habe dazu diese beiden Startfolder ausprobiert.
/opt/etc/init.d/
/usr/local/etc/rc.d/

Bei beiden Varianten wird das Script zwar gestartet, aber es ist kein User (root) angemeldet und die Pfad-Erweiterung für IPKG aus der /opt/profile (/opt/bin und /opt/sbin) werden nicht übernommen.
Wenn ich das selbe Script über die Bash Shell aufrufe, gibt es keine Probleme. Bedeutet das, dass eigentlich gar kein User bei Ausführung des Scriptes angemeldet ist? Wie kann man das Problem lösen?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.691
Punkte für Reaktionen
2.097
Punkte
829
Probiere eine der folgenden Möglichkeiten aus:

1. Ergänze die Pfade in der Environmentvariable PATH zu Beginn Deines Skripts: PATH=$PATH:/opt/bin:/opt/sbin
2. Qualifiziere alle Pfade, schreibe also bei allen Programmen und Daten den kompletten Pfad in das Skript - also z.B. statt rsync /usr/syno/bin/rsync.
3. Lade zu Beginn des Skripts die /opt/profile per source /opt/profile
 

Tagger

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
140
Punkte für Reaktionen
0
Punkte
22
Die fehlenden Pfade sind vielleicht nicht das wirkliche Problem, das lässt sich ja relative einfach lösen, notfalls durch Festlegen innerhalb des Scriptes.

Das eigentliche Problem ist ja, dass offenbar kein User angemeldet ist, da ja keine Shell geöffnet wird. Was mich jetzt wundert ist, dass z.B. cron auch ohne Shell arbeitet, aber trotzdem der in der crontab festgelegte User zur Ausführung des Scriptes benutzt wird. Ich vermute, dass ich für mein eigenes Script eine vergleichbare Lösung benötige. Wenn sich dieser User festlegen lässt, dann sollte sich auch das Problem mit den Pfaden von selbst lösen, da ja dann die /etc/profile ebenfalls benutzt werden muss.

Trotzdem erstmal vielen Dank für deine Vorschläge.
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.691
Punkte für Reaktionen
2.097
Punkte
829
Cron funktioniert nicht so, wie Du das beschreibst. Probiere einfach einmal einen meiner Vorschläge aus.
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484
Das eigentliche Problem ist ja, dass offenbar kein User angemeldet ist, da ja keine Shell geöffnet wird.

Was soll das bedeuten? Eine Shell öffnen... Meinst du ein Fenster, das aufgeht?
Das script wird von root ausgeführt, da muss niemand angemeldet sein.
 

Tagger

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
140
Punkte für Reaktionen
0
Punkte
22
Kurz vorweg: Jetzt funktioniert es so wie es soll! Danke ihr beiden.

dil88 schrieb:
Probiere einfach einmal einen meiner Vorschläge aus.
Ich bin gestern leider nicht mehr dazu gekommen. Habe es jetzt in etwas abgeänderter Form gemacht und es funktioniert jetzt perfekt. Nebenbei hat sich noch ein weiteres Problem mit "df" in Luft aufgelöst, der aus unerfindlichen Gründen seinen Dienst verweigerte obwohl er verfügbar war (Pfad konnte korrekt aufgelöst werden).

Puppetmaster schrieb:
Was soll das bedeuten? Eine Shell öffnen... Meinst du ein Fenster, das aufgeht?
Ja das meinte ich (Fenster, oder Shell Console). Hat sich jetzt aber erledigt.

Puppetmaster schrieb:
Das script wird von root ausgeführt, da muss niemand angemeldet sein.
OK. Dann bedeutet das also tatsächlich, dass nur das Script mit root Rechten ausgeführt wird aber kein root user angemeldet wird. Richtig? Falls ja, hast du damit einen lange gehegten Irrtum bei mir ausgeräumt. ;)

dil88 schrieb:
Cron funktioniert nicht so, wie Du das beschreibst.
Mhmm, gut zu wissen. Ich bin bisher immer davon ausgegangen, dass der "who" Eintrag genau das leistet, wobei mir schon bewusst ist, dass die normalen user ihre eigene crontab besitzen. Allerdings scheint es dann hier ebenfalls eher um die Ausführungsrechte zu gehen, als tatsächlich einen user anzumelden, wie es Puppetmaster ja schon beschrieben hat. ;)

Vielen Dank euch beiden! :)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat