Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
12.06.2021, 22:48:18

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
  • Mitglieder insgesamt: 25679
  • Letzte: nikdams
Statistiken
  • Beiträge insgesamt: 740647
  • Themen insgesamt: 59574
  • Heute online: 504
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema: [gelöst]  Hilfe... brauche Unterstützung für einen Script zwischen Grub und crontab  (Gelesen 773 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

[gelöst] Re: Hilfe... brauche Unterstützung für einen Script zwischen Grub und crontab
« Antwort #15 am: 06.06.2021, 15:49:33 »
Habe deine .sh erstellt und wolte mal über Terminal testen...
- mit dem Dateimanager klickst du dich zu der Datei
- ich hatte etwas vergessen ?! - rechte Maustaste auf die Datei - dann "Eigenschaften" und dort "Zugriffsrechte" anklicken
- jetzt bei "Ausführen" das Häkchen setzen und unten rechts mit "Schließen" bestätigen
Jetzt hast du das Script " Als Programm ausführbar" gemacht
Um es mit dem Terminal zu testen
- an einer leeren Stelle (im Ordner in dem die Datei liegt) - rechte Maustaste und "Im Terminal öffnen" klicken - im Terminal dann   
./einfach.shoder
bash einfach.sheingeben und mit "Enter" bestätigen - (Voraussetzung die Datei heißt "einfach.sh")
Jetzt sollte das Script ausgeführt werden.

wo muss ich jetzt das Script  eintragen  einfach.sh ?
Name: frei wählbar
Beschreibung: frei wählbar
Befehl: hier muß das Script eingetragen werden - wie am Ende von Antwort #1 beschrieben
(Voraussetzung: das Script liegt in "/home/default/Scripte" - sonst muß der Pfad zum Script angepasst werden)

« Letzte Änderung: 06.06.2021, 16:01:47 von billyfox05 »

Hi billyfox05 , ja hat funktioniert.
Mit deinem Tip ist es jetzt wesentlich stabiler,
Will sagen, alles funktioniert jetzt.....so weit ich das sehen kann.
Hab das Script nun, beim  Logout, Shutdown, Rebbot etc...

Aber auch an Wolfgangs Tips will ich mich mal dranmachen.

Linux  Mint, gefällt mir immer mehr, dank euch und der Hilfe.... Dankeschööön :)

Hallo, ich würde deinen Tip gerne noch mit einbinden, doppelt gemoppelt hällt besser.
wie und wo, also an welcher Stelle, Verzeichniss,  muss ich das machen, wenn der User , hier mein Vater "einfach" heißt ?
doppelt gemoppelt - ob das sein muß ?
Beide Befehle lassen sich, zum testen, so wie sie da stehen im Terminal ausführen.
Der Erste wird ja nur einmal zur Sicherung benötigt.
Wenn der Zweite in einem Script eingebaut werden soll muss vermutlich der Pfad zur Datei komplett angegeben werden also etwa so
dconf load /org/ < /home/einfach/dconf.txt
Wenn das Thema damit für dich gelöst ist dann setze es bitte auf "gelöst" - Wie ? - siehe oben - Hilfe
« Letzte Änderung: 06.06.2021, 16:13:48 von billyfox05 »

Danke dir... eine Frage noch.
ich habe im einfach.sh  das folgende weggelassen:
#!/bin/bashzufall das es geht oder brauche ich das ?
für was ist das ?
ich habe nur die commands
rm -rf /home/einfach/
cp -a /home/default/einfach /home
chown einfach:einfach -R /home/einfach
xinput set-button-map 10 1 2 0
in der .sh drinnen.

Gruss Rainer

Sehr gute Frage - die ich nicht beantworten kann  :-X - oder nicht besser erklären könnte wie z.B. die beiden Links -
ich kenne und nutze es nur mit der Zeile die "Shebang" genannt wird.
Siehe hier
https://wiki.ubuntuusers.de/Shebang_f%C3%BCr_Shellskripte/
oder hier
https://bash.cyberciti.biz/guide/Shebang
« Letzte Änderung: 06.06.2021, 17:45:16 von billyfox05 »

 :D
Danke dir.....
Danke Euch ! ;D

Ich schließe nun den Eintrag, da insbesondere billyfox05 und Wolfgang58 meiner Suche nach Hilfe entsprochen haben.
« Letzte Änderung: 09.06.2021, 16:18:22 von RainerKol »

lieber pinky, kannst du mir das bisschen präzisieren, wo ich das , an welcher Stelle eintragen muss.
 Ich würde gerne damit experimentieren.

lieber pinky, kannst du mir das bisschen präzisieren, wo ich das , an welcher Stelle eintragen muss.
@RainerKol ich will es versuchen.

Deine Eingangslösung sieht vor, beim Systemstart ein sauberes default Home Verzeichnis an die Stelle des eigentlichen Home Verzeichnisses zu kopieren. Das wolltest du auch beibehalten - finde ich auch OK. Für das Auslösen des Kopiervorgangs suchtest du eine Lösung ungleich cron, weil cron nicht zuverlässig funktionierte oder vielleicht zu spät einsetzt. Ich habe dein Problem mit cron nicht hinterfragt, weil ich der Meinung bin, eine systemd Service Unit kann stattdessen benutzt werden. Für eine systemd Service Unit hatte ich einen Vorschlag geliefert. Die systemd Service Unit mit dem Kopiervorgang sollte m.E. irgendwo im Systemstart nach Laufwerke / Filesystem ist verfügbar und vor der ersten möglichen Anmeldung ausgeführt werden.

@Wolfgang58 hat im Prinzip auch genau das vorgeschlagen. Die Lösung von @Wolfgang58 ist eine Abwandlung deiner angestrebten Lösung - nur besser. @Wolfgang58 nutzt rsnyc. Das ist besser als rm und cp. Und schließlich nutzt @Wolfgang58 auch eine systemd Service Unit - wie ich auch gedacht hatte. Bei @Wolfgang58 liegt das saubere default Home Verzeichnis in /etc/kiosk/einfach statt /home/default/einfach und entprechend sind bei ihm die Pfade angepasst. Bei @Wolfgang58 heißt die systemd Service Unit restore.kiosk.service und er beschreibt auch, wie man die aktiviert. Die systemd Service Unit von @Wolfgang58 ist viel einfacher aufgebaut als meine, die ich einfach.service ǵenannt hatte.

Du kannst dich an die Anleitung von @Wolfgang58 halten.
Bei rsync musst du unbedingt auf die abschließenden Slashes achten. rsync verhält sich anders, wenn ein Verzeichnis mit oder ohne abschließenden Slash angegeben wird.

Einmalig sauberes Home-Verzeichnis von einfach in /etc/kiosk/einfach/ sichern.
mkdir -p /etc/kiosk/
rsync -a --delete /home/einfach/ /etc/kiosk/einfach/

Außerdem ein /etc/kiosk/restore.kiosk.sh Skript für jeden Neustart anlegen (hier um zusätzliche Ausgabe ergänzt, damit du den Aufruf nachverfolgen kannst).
#!/usr/bin/bash
echo "RUNNING KIOSK RESTORE ..."
rsync -a --delete /etc/kiosk/einfach/ /home/einfach/
echo "... DONE"

Schließlich den /etc/systemd/system/restore.kiosk.service anlegen und aktivieren wie von @Wolfgang58 beschrieben. Ich habe hier jetzt die systemd Service Unit noch einmal angepasst. Das musst du bitte mal ausprobieren. Ggf. ist die simplere Version von @Wolfgang58 zu einfach? Oder meine zu kompliziert oder auch fehlerhaft? Vielleicht sagt @Wolfgang58 noch etwas dazu.
[Unit]
Description=Restore Kiosk
Before=getty@tty1.service
After=sysinit.target
Wants=sysinit.target
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/etc/kiosk/restore.kiosk.sh
RemainAfterExit=yes
TimeoutSec=0

[Install]
WantedBy=multi-user.target

Falls es schließlich noch etwas anzupassen gibt, ggf. ein Benutzer Autostart Programm anlegen. Das hat @Wolfgang58 auch beschrieben.

Noch ein Hinweis: Ich habe das in Summe nicht getestet, weil mir dafür die Zeit fehlt. Aber deswegen ist das Vorgehen nicht falsch.

Ich habe jetzt einmal exemplarisch folgendes gemacht (die Service Unit heißt diesmal run-before-login.service):
cd /etc/systemd/system/
sudo touch run-before-login.service
sudo nano run-before-login.service
Folgenden Inhalt hineinkopiert und gespeichert:
[Unit]
Description=Restore Kiosk
Before=getty@tty1.service
After=sysinit.target
Wants=sysinit.target
DefaultDependencies=no

[Service]
Type=oneshot
ExecStart=/usr/bin/echo "CALL RSYNC SCRIPT"
RemainAfterExit=yes
TimeoutSec=0

[Install]
WantedBy=multi-user.target
Die Service Unit aktiviert und neu gestartet und die Ausgabe kontrolliert.
sudo systemctl enable run-before-login.service
sudo shutdown -r now
systemctl status run-before-login.service
journalctl -b
Ja, die Service Unit wird ausgeführt und könnte default Home in Home rsynchen, indem sie ein entsprechendes Skript ausführt.

Die Service Unit deaktiviert und kontrolliert.
sudo systemctl disable run-before-login.service
sudo shutdown -r now
systemctl status run-before-login.service
journalctl -b
Ja, wird nicht mehr ausgeführt.

Hoffe das hilft alles weiter. Gerne weiter Fragen stellen.

Guten Morgen,
ich denke @Pinky hat schon alles wesentliche gesagt. Die >restore.kiosk.service< habe ich bewusst so einfach wie möglich gehalten und sie tut so ihren Dienst. Wenn du sie verbessern und anpassen möchtest musst du dich mit >Systemd< und den >Units< beschäftigen, dass ist ein mächtiges Werkzeug und ich empfehle dir für den Einstieg die folgenden Artikel:
https://wiki.ubuntuusers.de/systemd/
https://wiki.ubuntuusers.de/systemd/Units/
Viel Spaß
Gruß
Wolfgang

Lieber pinky und Wofgang58,
ich bedanke mich ganz herzlich für die so umfangreiche und wertvolle Unterstützung und vor allem eure private Zeit die Ihr aufgewendet habt.

Ein Forum und die Bereitstellung von Wissen lebt von solchen Nutzern wie euch.

Also merci vielmals  , für die vielen Pfade und Hinweise zur Lösung meiner "Problemchen"

Fühlt euch von mir auf die Schulter geklopft ….. :)