rc.local eseguito a metà

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

rc.local eseguito a metà

Messaggio da Dani »

Guardate un pò qui :shock: :

Codice: Seleziona tutto

root[rc.d]# cat rc.local
# Start Dbus

if [ -x /etc/rc.d/rc.messagebus ]; then
  . /etc/rc.d/rc.messagebus start
fi

# Start Hal

if [ -x /etc/rc.d/rc.hal ]; then
  . /etc/rc.d/rc.hal start
fi


root[rc.d]# ./rc.local
Starting system message bus
root[rc.d]# ./rc.hal start
Starting HAL daemon:  /usr/sbin/hald
Come è possibile che rc.hal, nonostante abbia i permessi di esecuzione, non venga eseguito ?

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6644
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

Infatti non è possibile :D
Dopo aver scartato tutte le possibiltà mistiche, quella che resta è l'unica logica ;)

Prova a togliere i punti davanti alle invocazioni. Che senso ha controllare se sono eseguibili se puoi li esegui nella shell corrente?

In pratica prova a modificare le righe:

Codice: Seleziona tutto

. /etc/rc.d/rc.messagebus start
. /etc/rc.d/rc.hal start
con:

Codice: Seleziona tutto

/etc/rc.d/rc.hal start
/etc/rc.d/rc.hal start
nota l'assenza del punto iniziale.

Se funziona fammi sapere che poi ti spiego meglio
Spina

Avatar utente
bruno82
Linux 1.x
Linux 1.x
Messaggi: 148
Iscritto il: lun 16 mag 2005, 0:00
Località: Palemmmo
Contatta:

Messaggio da bruno82 »

Secondo me alla fine di /etc/rc.d/rc.messagebus c'è un bellissimo exit che blocca tutto :roll:

Avatar utente
gohanz
Staff
Staff
Messaggi: 5832
Iscritto il: mar 30 nov 2004, 0:00

Messaggio da gohanz »

Non è che devi cancellare il pid file in /var/run/dbus?


Il mio rc.local

Codice: Seleziona tutto

#!/bin/sh

if [ -x /etc/rc.d/rc.messagebus ]; then
	if [ -w /var/run/dbus/dbus.pid ]; then
		rm /var/run/dbus/dbus.pid
	fi
	sh /etc/rc.d/rc.messagebus start
fi

#hal
# To disable hal, chmod rc.hal to 644
if [ -x /etc/rc.d/rc.hald ]; then
	sh /etc/rc.d/rc.hald start
fi

Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

Messaggio da Dani »

Si, senza il punto funziona.
Ho sempre creduto che ./path/programma fosse la stessa cosa di /path/programma.

Perchè ora funziona ? :?:

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6644
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

Dani ha scritto:Ho sempre creduto che ./path/programma fosse la stessa cosa di /path/programma
Ed infatti è la stessa cosa. Quello che ti è sfuggito è lo spazio che c'era tra il punto e il path.

Codice: Seleziona tutto

./programma
è diverso da

Codice: Seleziona tutto

. /programma
nota lo spazio ;)

Quando esegui

Codice: Seleziona tutto

. /programma
è come fare un

Codice: Seleziona tutto

source /programma
e questo fa si che la shell corrente esegue direttamente il programma senza fare una fork. Non so se hai presente quello che significa. Quando lanci un programma la shell crea un processo figlio che ha il compito di eseguire programma. Quando esegui un

Codice: Seleziona tutto

source programma
è la shell stessa che esegue il programma, nel senso che la shell stessa diventa il tuo programma. Quindi, quando il programma finisce la shell stessa finisce.

Se capisci quello che ti dico ora, non ti capiterà più un errore simile 8) (faccio il guappo ;) ).

Questo vuol dire che la tua shell, che doveva eseguire:

Codice: Seleziona tutto

/etc/rc.d/rc.messagebus start
/etc/rc.d/rc.hald start
quando esegue:

Codice: Seleziona tutto

. /etc/rc.d/rc.messagebus start
diventa lo script rc.messagebus (o meglio diventa la shell che esegue quello script). Ragion per cui succedono due cose:
  • 1) Tutto ciò che segue nel file rc.local dopo ". /etc/rc.d/rc.messagebus start" non viene eseguito.
    2) Quando finisce il processo rc.messagebus finisce anche la tua shell.
Fai questa prova. Scrivi in un file, ad esempio prova.tmp quanto segue:

Codice: Seleziona tutto

#!/bin/sh
echo ciao;
dai i diritti di esecuzione a prova.tmp. Ora apri un xterm ed esegui:

Codice: Seleziona tutto

prova.tmp
Poi invece prova ad eseguire:

Codice: Seleziona tutto

source prova.tmp
.

Spero di essere stato chiaro
Spina

P.S. Tanto lo so che sapevi già tutto e che la tua era una semplice svista ;)

Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

Messaggio da Dani »

Tutto chiaro, grazie.
spina ha scritto: P.S. Tanto lo so che sapevi già tutto e che la tua era una semplice svista ;)
Immagine

Rispondi