Upstart: accetta l'input dell'utente per cambiare xorg.conf


0

Sto cercando di ottenere uno script di avvio che richieda l'input dell'utente in esecuzione prima dell'avvio di gdm (lo script dovrebbe permettermi di scegliere da un elenco di xorg.conf quello che mi piacerebbe usare per la sessione corrente).

Ho già provato a creare un pregdm.conf in / etc / init, contenente:

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

e cambiando 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))

Gli echi vengono visualizzati nella console, ma non riesco ad aspettare l'input dell'utente: gdm viene avviato immediatamente.

Qualche puntatore?

molte grazie

Risposte:


1

Upstart non è destinato all'uso interattivo.

È probabile che l'input standard per il tuo script venga reindirizzato lontano da te. Potresti provare a utilizzare un descrittore di file diverso.

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

Ecco uno script demo completo che mostra l'input proveniente da un file e dall'utente:

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

Se stai usando una shell che non ha l' -uopzione per leggere:

read input <&3

Me ne sono quasi dimenticato. Grazie mille per i puntatori (e la demo) sul reindirizzamento input / output, non lo sapevo. Per quanto ho capito, fare casino con upstart non è una buona soluzione per il mio problema: hai idea di come implementare un semplice menu di avvio interattivo?
Utaal,

@Utaal: non lo so. Hai visto fare qualcosa attraverso grub?
Dennis Williamson,

0

Penso che dovresti fare qualcosa del genere:

  [ -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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.