Newsgroup: it.comp.os.linux.iniziare
Titolo: Passare il risultato di un "cat" a un altro comando

C'è un modo per usare l'outpu di un cat come input di un altro comando?
Per esempio se io voglio uccidere un processo posso usare un "kill -HUP
<pid>"
Se il pid ce l'ho in un file, come dovrebbe diventare il comando?
Dovrebbe essere il contrario di una pipe, più o meno...
Grazie.
Giorgio

 Se il pid ce l'ho in un file, come dovrebbe diventare il comando?
kill -HUP `cat ilfilechevuoi`
Nota le virgolette rovesciate ` invece di '.
Davide



kill -HUP `cat file`
Attenzione, gli apici sono traversi.
Matteo

George wrote:

kill -HUP `cat /var/pid/MIOFILE`
gli apici inversi !
ciao.

dav...@yahoo.com
 wrote:

PRIMO ;-)

 kill -HUP `cat ilfilechevuoi`
]cut[
just a question:
perchè non funziona se faccio "cat nomefile | kill - HUP"?
Grazie mille! :)
-- 
WulfMp3
wul...@email.it
"Poni cio' che sei nel minimo che fai."

 perchè non funziona se faccio "cat nomefile | kill - HUP"?
Semplice:
La pipe, presuppone che il comando a destra sappia già prendere l'input
dallo standard input o da file, ovvero:
# grep testo file
file DEVE essere il nome di un file all'interno del quale grep cercherà
testo.
al contrario:
se "pippo è un file"
# echo pippo
stampa la stringa pippo e non il file pippo, il quale viene stampato da
# cat pippo
infatti
# cat pippo|echo
NON stampa il file pippo, bensì una riga vuota.
così
# kill pippo
da errore perchè la sintassi è
# kill <numero> e non  # kill nomefile.
così # killall pippo, non ti killa il pid scritto dentro pippo ma un
eventuale processo di nome pippo.
gli apici traversi, altro non fanno che eseguire il comando al loro interno.
così kill `cat nomefile` equivale a scrivere "kill <contenuto di nomefile>".
Lo puoi vedere con
echo kill `cat nomefile`
Matteo

 perchè non funziona se faccio "cat nomefile | kill - HUP"?
<azzardo>
Perche` kill non legge il PID su cui operare nulla da stdin,
ma lo vuole come argomento
</azzardo>
-- 
Ikitt

Grazie a tutti.

Però succede che facendo un "kill -HUP `cat /var/run/crond.pid` " il comando
non mi dà alcun output e il demone non viene stoppato.
crond continua a mantenere il vecchio <pid>.
Il cat del file contiene il PID giusto visto che se faccio un kill -s 9
<pid> il demone viene regolarmente ucciso.
Da cosa dipende?

 Da cosa dipende?
SIGHUP (kill -HUP) non dovrebbe causare la morte
del processo cui lo invii. SIGKILL invece si.
Tutto regolare.
-- 
Ikitt

Ma SIGHUP non è una richiesta di chiusura del processo?

 il comando non mi dà alcun output e il demone non viene stoppato.
HUP non uccide il processo, si limita a mandare un segnale che il
processi interpreta come "rileggi il tuo file di configurazione e
riavviati", il PID non cambia in questo caso.
Davide

Perchè allora a me questa cosa genera un nuovo demone?
Voglio dire: perchè lo script di rotazione dei log che fa un kill -HUP
`/bin/cat /var/run/crond.pid` mi avvia sempre un secondo demone allora?

 `/bin/cat /var/run/crond.pid` mi avvia sempre un secondo demone allora?
He? Spiega un po' meglio che non ho capito che intendi...
Davide

 <pid> il demone viene regolarmente ucciso.
perche' gli hai mandato un altro segnale il SIGKILL
invece del SIGHUP di prima.
Per altre info consulta
man 7 signal e
man kill
Ciao.
-- 
The fish doesn't think ,
cause the fish knows everything
	>>>:/OuZ\:<<<
per rispondermi in mail rimuovere TOGLIQUESTO

Vediamo se riesco a spiegarmi.
Quando avvio la mia Linux Box viene eseguito crond che si becca il PID 265.
Questo demone mi fa dei backup giornalieri su nastro.
Ho notato che dopo alcuni giorni il backup non funziona piů (la mail di fine
lavoro mi riporta un messaggio che mi informa che il device /dev/nst0 č
occupato e l'operazione viene abortita).
In queste condizioni, se vado a leggere lo status di crond mi indica che ci
sono due demoni in esecuzione, uno con PID 265 e uno con un altro PID.
Anche se uccido il secondo demone, la device non viene liberata e sono
costretto a far fare un reboot al server.
Visto che la cosa succede dopo qualche giorno e non riesco a capire da dove
cavolo arrivi 'sto secondo demone, ho imputato la cosa allo script di
rotazione dei log che credo sia l'unico posto dove viene "manipolato" il
demone...
Ora ho modificato lo script di rotazione del log per uccidere e riavviare
crond mandando un SIGKILL e facendo un restart.
Tra qualche giorno vedrň se funziona (spero vivamente vada...).
Capito?