=== Toddy69 is now known as Guest131 === sem2peie- is now known as sem2peie === sem2peie- is now known as sem2peie === sem2peie- is now known as sem2peie [17:46] Würde gerne eine tmux session, beim reboot starten wollen. Habe es versucht mit crontab -e → @reboot $HOME/profile; /usr/bin/sleep 20; /usr/bin/bash /home/pi/start-tmux-Apps.sh [17:47] Leider passiert da gar nichts. [17:48] während das script selbst in der Konsole funktioniert [17:54] hab nur noch >2 log gemacht. das log ist "open terminal failed: not a terminal" [18:06] <_moep_> dreamon: ich glaube das problem ist bei dem bash befehl. du musst da noch sagen "spawn mir einen neuen prozess/ein neues terminal" [18:15] Einer hat geschrieben das könnte man mit systemd machen.. Ohje neue Baustelle [19:00] dreamon: Du kannst `/usr/bin/tmux new-session -d -s NAME` nutzen und darauf später mit `tmux attach` zugreifen. Und ja, nicht mit crontab, sondern einer systemd-user-unit. [19:01] koffeinfriedhof, hallo. https://wiki.ubuntuusers.de/Howto/systemd_Service_Unit_Beispiel/ Hab mich an dieses Beispiel gehalten. Er verwendet /etc/systemd/system .. Ist das falsch? [19:01] Title: systemd Service Unit Beispiel › Howto › Wiki › ubuntuusers.de (at wiki.ubuntuusers.de) [19:12] dreamon: Kommt darauf an, was du vorhast. Sind ja unterschiedliche Dinge, ob ich was systemweit verwende oder gekoppelt an einen Benutzer. Da du das versuchst aus dem Homeverzeichnis zu starten, wäre eine https://wiki.ubuntuusers.de/systemd/User_Units/ sinnvoller. Die wird dann beim Anmelden automatisch gestartet. [19:12] Title: User Units › systemd › Wiki › ubuntuusers.de (at wiki.ubuntuusers.de) [19:31] koffeinfriedhof, mytmuxsession.service: Succeeded. Ich sehe er es aufruft.. hab ein paar echo "Start" > tmux.log eingebaut..sehe keine Fehlermeldung. Aber der tmux läuft nicht. [19:33] dreamon: `systemctl --user status UNIT` oder `journalctl -xep warning`. Da müssten Anhaltspunkte drinstehen. [19:36] koffeinfriedhof, Sep 11 21:35:09 sicherheit systemd[1]: Configuration file /etc/systemd/system/mytmuxsession.service is marked executable. Please remove executable permission bits. Proceeding anyway. [19:36] Sep 11 21:35:09 sicherheit systemd[1]: Configuration file /etc/systemd/system/mytmuxsession.service is marked world-writable. Please remove world writability permission bits. Proceeding anyway. [19:36] Process: 2812 ExecStart=/bin/bash /home/pi/start-tmux-Apps.sh (code=exited, status=0/SUCCESS) [19:37] hmm.. keine Fehlermeldung. [19:37] Das script läuft aber sauber durch. die -d ist drin. Ich sehe es ja das es starten von der Bash aus. logge micht dann mit tmux attach ein.. [19:38] nur vom systemd aus startet es nicht. [19:43] dreamon: Schreib doch mal nur '#!/usr/bin/bash\n/usr/bin/tmux new-session -d -s ASDF` in dein Script. Oder pack unter der Shebang die Zeile `exec 2> /tmp/error` um die Fehler inneralb des Scriptes zu loggen mit rein. [19:53] Das log wird angelegt, ist aber leer. und tmux läuft nicht (ps aux | grep tmux) [19:54] auch tmux ls zeigt KEIN ASDF an. koffeinfriedhof [19:55] ExecStart=/usr/bin/bash /home/pi/start-tmux-Apps.sh --> sollte ich vielleicht das /usr/bin/bash weg lassen? [20:00] dreamon: Wie sieht denn deine Servicedatei aus? [20:07] koegs, [20:07] ups [20:07] koffeinfriedhof, https://pastebin.com/Bjp98ppN [20:07] Title: dreamon - Pastebin.com (at pastebin.com) [20:09] ist noch in den System_Units. Ich hab User=pi dort noch eingetragen. [20:11] dreamon: Du musst auf jeden Fall RemainAfterExit=yes setzen, sonst beendet er ja Eltern- und Kindprozesse. Und ich würde oneshot als service type nehmen und Restart=no noch setzen. [20:11] koffeinfriedhof, gehört das alles unter [Service] rein? [20:12] dreamon: Da du ja detached startest, beendet sich ja der Aufruf und gibt 0 zurück. Ja, alles unter [Service]. [20:15] koffeinfriedhof, Wenn ich dich richig verstehe, ruft er es zwar auf, läuft das script aber durch und beendet anschliessen alle prozesse sofort wieder. [20:17] dreamon: Genau. Du hast eine bash als Elternprozess und startest von dieser aus die ganzen Subprozesse. Wenn diese bash dann beendet wird, bekommen die Subprozesse auch das Signal sich zu beenden. Kannst du ganz einfach testen. Starte ein Terminal, darin dann bspw. firefox & und beende die Shell mit ctrl-d. Dann geht auch der firefox mit aus. [20:17] (zumindest wenn da nicht etwas Magie mitläuft wie in manchen Terminalemulatoren) [20:18] koffeinfriedhof, jetzt läuft dein ASDF nach systemctl restart mytmuxsession.service [20:19] dreamon: Prima. Dann kannst du auf dieser Basis jetzt ja dein Script anpassen. [20:22] koffeinfriedhof, Das funktioniert jetzt auch. **VIELEN VIELEN DANK** Darauf wäre ich in 100Jahren nicht gekommen [20:22] dreamon: Ach, sicher. In 100 Jahren gibt es auch kein systemd mehr^^ [20:24] Kannst du mir erklären was der große unterschied zwischen system_units und user_units ist. Ich hab ja user gesetzt. [20:25] dreamon: Systemunits laufen unabhängig von den (angemeldeten) Benutzern. User Units nur, wenn die Nutzer angemeldet sind. [20:26] Das heißt wenn der Nutzer sich nicht anmeldet, dann wird auch mein Script nicht gestartet? [20:26] richtig. [20:26] Dann hab ich es genau richtig gemacht. ich will das mein Script immer gestartet wird, wenn die Kiste neu hochfährt [20:26] Ja, dachte ich mir, da du das in .profile versucht hast. [20:28] Ach so. Nee. [20:28] nein in crontab [20:28] Wenn es IMMER gestartet werden soll, brauchst du einen system service und kannst (solltest/musst) da dann noch Nutzer/Gruppe und Homeprotection einstellen [20:28] Wobei crontab schon was feines ist, und es mich doch sehr wundert das ich mein script nicht als user crontab ausführen konnte [20:30] crontab hilft dir ja auf systemd nix. Das wandelt die Dinger auch einfach nur in systemd-units um. Du hast nur ne Fehlerquelle mehr im System. Das ist für andere init-systeme. [20:31] Dein Script braucht Zugriff auf alle Ressourcen und alle benötigten Umgebungsvariablen. Da musst du bei cron dafür sorgen, das diese gesetzt sind. Bei systemd gibst du einfach den Nutzer mit an und spezielle Umgebungsvariablen, dann läufts. [20:31] Achso das wußte ich auch nicht. Aber jetzt ergibt das langsam Sinn. [20:33] Mein script wurde als user gestartet. Passt doch. Was meinst du mit Homeprotection? [20:33] Jaein. Sollte an sich funktionieren. Allerdings werden cronjobs wohl als timer units und nicht services umgewandelt, ist dann auch wieder was (leicht) anderes. Ich gehe einfach mal davon aus, das dein cron-Nutzer keinen Zugriff auf die Daten des pi-Nutzers hatte. Ist aber nur geraten. [20:34] Die Jungs von #tmux schrieben → I do not start tmux via crontab because I want it to inherit the DISPLAY variable from xinit [20:34] dreamon: https://www.freedesktop.org/software/systemd/man/systemd.exec.html → Suche nach ProtectHome. Ist auch eine Option. [20:34] Title: systemd.exec (at www.freedesktop.org) [20:35] dreamon: DISPLAY brauchst du für grafische Anwendungen. Ganz andere Baustelle. Dafür muss dann der Nutzer auch grafisch eingeloggt sein und einen XServer/Wayland-Compositor gestartet haben. [20:37] koffeinfriedhof, Auf jedenfall, nochmals danke. Ich werd mir das jetzt alles notieren, weil da sind schon einge Fallstricke drin, wo es dann eng wird. [20:38] Sehr positiv formuliert :D Und bitte. [20:38] schönen Abend