ubuntuusers.de

Shellskript bei Systemstart ausführen

Status: Gelöst | Ubuntu-Version: Ubuntu Budgie 17.04 (Zesty Zapus)
Antworten |

Galeorhinus

Anmeldungsdatum:
1. Dezember 2016

Beiträge: 21

Hallo,

es mag sich banal anhören, aber: Ich gehe von einem Rechner per HDMI durch einen AV-Receiver an einen exotischen Monitor. Dieser hat eine Auflösung von 1360x768_60.00 (laut zugehöriger Funai-Dokumentation 1366x768_50.00; 😠 ). Nun kann der Rechner offenbar durch den AV-Receiver hindurch nicht erkennen, was er für eine Auflösung ausgeben soll. Um dieses Problem zu erschlagen habe ich ein kleines shellscript gebastelt (xrandr https://wiki.ubuntuusers.de/RandR/) und ausführbar gemacht. Wenn ich es mit

1
bash /Pfad/bildschirmaufloesung.sh

aufrufe, wird sogleich die gewünschte Auflösung eingestellt. Das Skript funktioniert also! Jetzt habe ich versucht mit dem Ubuntu-Budgie-Starter das Skript bei Systemstart aufzurufen und auszuführen. Das funktioniert nur beim ersten Reboot!? Wo sollte ich das Script "bildschirmaufloesung.sh" ablegen und was wo eintragen, damit es sicher bei Systemstart funktioniert?

Vielen Dank!

FlorianSchott

Anmeldungsdatum:
8. Juli 2016

Beiträge: 78

Wahrscheinlich nicht die sauberste Lösung: Als zusätzliche Zeile in /etc/crontab

1
@reboot     root   bash /Pfad/bildschirmaufloesung.sh

Wo das Skript liegt, spielt eigentlich keine Rolle.

mfG Flo

Galeorhinus

(Themenstarter)

Anmeldungsdatum:
1. Dezember 2016

Beiträge: 21

Hallo Flo,

vielen Dank! Nach der Doku sollte ich das Script über die rc.local ausführen können. Da hatte ich das Problem, dass die Datei 1. leer war, 2. nicht ausführbar war (?) und 3. ein Aufruf mit

1
/Pfad/bildschirmaufloesung.sh

leider nicht funktionierte. Ich werde es nochmals probieren und das Ergebnis dann rückmelden.

Viele Grüße!

FlorianSchott

Anmeldungsdatum:
8. Juli 2016

Beiträge: 78

Der von dir angegebene Befehl funktioniert nur, wenn Dein Skript ausführbar ist. Zusätzlich sollte in Deinem Skript in der ersten Zeile die verwendete Shell angegeben sein:

1
2
#!/bin/bash
...

Oder Du ergänzt den Aufruf Deines Skripts um die verwendete Shell, so wie ich es in meinem Beispiel mit crontab gemacht habe.

mfG Flo

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

Die crontab und die rc.local sind IMHO beide nicht der optimale Ort für ein Skript, das von einem laufenden X-Server abhängt, denn dadurch fehlt die Abhängigkeit von der User-Session (und damit die Umgebungsvariablen wie DISPLAY) und der Befehl kann irgendwann nach dem Start ausgeführt werden, aber nicht zwingend erst dann, wenn die Desktop-Sitzung gestartet wurde.

Ich würde versuchen das in den Autostart zu packen, wobei man sich da ansehen muss, was die Desktop-Umgebung selbst an xrandr-Befehlen abarbeitet (ich habe mir Ubuntu Budgie noch nicht genauer angesehen, daher weiß ich nicht, was das alles beim Start macht), nicht dass sich da mehrere xrandr-Aufrufe in die Quere kommen. Ansonsten könnte man es auch in eine Systemd-Unit für die User Session packen.

Galeorhinus

(Themenstarter)

Anmeldungsdatum:
1. Dezember 2016

Beiträge: 21

Hallo!

Bin mal wieder zum basteln gekommen: Meine erste Lösung bestand darin, dass ich das Skript

1
/Pfad/bildschirmaufloesung.sh

zu Systemstart mit dem Budgie-Starter (Menü: Einstellungen/Startprogramme) aufgerufen habe. Das funktionierte leider auch nicht immer. Dann habe ich den Artikel zu RandR nochmal genau durchgelesen. 😳

Schließlich habe ich die gewünschten Einstellungen in

/etc/X11/Xsession.d/45x11-custom_xrandr-settings

eingetragen. Das war die Lösung! Nun wurde die gewünschte Auflösung unter Menü: Einstellungen/Einstellungen/Bildschirme im Auswahlmenü zur Auflösung angezeigt und ausgewählt. Seitdem ist dieses Problem erledigt.

Danke!

Antworten |