Upstart: Akzeptieren Sie die Benutzereingabe, um die xorg.conf umzustellen

1052
Utaal

Ich versuche, ein Startskript aufzurufen, das Benutzereingaben erfordert, bevor gdm gestartet wird (das Skript sollte mir erlauben, aus einer Liste von xorg.conf diejenige auszuwählen, die ich für die aktuelle Sitzung verwenden möchte).

Es wurde bereits versucht, eine pregdm.conf in / etc / init zu erstellen, die Folgendes enthält:

start on filesystem stop on runlevels [06] # ... console output  script # script that uses read to gather user input and replaces xorg.conf with the selected one end script 

und Ändern start onin /etc/init/gdm.conf in:

start on (filesystem and started dbus and started pregdm and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udevtrigger)) 

Echos werden in der Konsole angezeigt, aber ich kann nicht auf Benutzereingaben warten: gdm wird sofort gestartet.

Irgendwelche Hinweise?

Danke vielmals

0

2 Antworten auf die Frage

1
Dennis Williamson

Upstart ist nicht für die interaktive Verwendung gedacht.

Es ist wahrscheinlich, dass die Standardeingabe für Ihr Skript von Ihnen weggeleitet wird. Sie können versuchen, einen anderen Dateideskriptor zu verwenden.

#!/bin/bash exec 3<&0 read -u 3 -p "Choose one: " input exec 3<&- 

Hier ist ein komplettes Demo-Skript, das Eingaben zeigt, die von einer Datei und vom Benutzer stammen:

#!/bin/bash exec 3<&0 while read -r line do read -r -p "$line " -u 3 input echo "$line/$input" done < inputfile 

Wenn Sie eine Shell verwenden, die keine -uOption zum Lesen hat:

read input <&3 
Ich habe das fast vergessen. Vielen Dank für die Hinweise (und die Demo) zur Eingabe / Ausgabe-Umleitung, wußte nichts davon. Soweit ich verstanden habe, ist das Durcheinander mit Upstart keine gute Lösung für mein Problem: Haben Sie eine Idee, wie Sie ein einfaches interaktives Startmenü implementieren können? Utaal vor 13 Jahren 0
@Utaal: Ich weiß es nicht. Hast du schon mal was durch grub gemacht? Dennis Williamson vor 13 Jahren 0
0
zhigang

Ich denke, du solltest so etwas tun:

 [ -x /usr/bin/plymouth ] && /usr/bin/plymouth --hide-splash while : ; do echo -n $"XXX $1 (Y)es/(N)o? [Y] " read answer if strstr $"yY" "$answer" || [ "$answer" = "" ] ; then ... [ -x /usr/bin/plymouth ] && /usr/bin/plymouth --show-splash