Pages (39): « 1 2 3 [4] 5 6 7 8 » ... Last » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Sistemi operativi I (http://www.dsy.it/forum/forumdisplay.php?forumid=269)
-- Esame di laboratorio (Giugno 2007) - Domande (http://www.dsy.it/forum/showthread.php?threadid=31182)
ho una domanda:
ho letto il manuale di xargs, ma non riesco a capire quando va usato e quando no! ho visto che viene usato dopo una pipeline per comandi come tar o ls, ma perchè non si usa con comandi come sort o tail?
qualcuno mi può spiegare (anche in due righe) a cosa serve esattamente?
grazie!
xargs è un comando utile per evitare l'errore Out of space che a volte compare se si utilizza il find.
La shell ha un limitato spazio per gestire un comando (credo 256 caratteri...) quindi se un input di un comando (rediretto anche con un pipe) supera tale limite sorge l'errore di cui sopra.
Per evitarlo si utilizza xargs che non fa altro che spezzare l'output del comando precedente in righe, e passare ogni riga al comando successivo, una alla volta.
Più importante, xargs cambia profondamente il comportamento dei comandi:
find / -type f | grep login
Questo comando cerca tra la lista dei file del sistema, un file il cui nome contenga la parola login
find / -type f | xargs grep login
In questo esempio xargs spezza la listona dei file del sistema e passa una riga per volta (quindi un nome di file per volta) a grep
(grep viene eseguito più volte, una volta per ogni riga).
Notate che il comportamento cambia moltissimo!!!
In questo caso il comando stampa tutti i file di sistema che contengono al loro interno la parola login
Nella maggior parte degli esempi sort e tail vengono usati sulle liste di file che genera find o in passi successivi, per questo non viene utilizzato xargs.
__________________
The answer is blowing in the wind...
ok, grazie!
ho ancora un paio di dubbi:
ho provato a modificare un esercizio (quello di trovare tutti i file con all'interno la parola "login"), facendo in modo che invece che mettermeli in un archivio, me li scriva su un file .txt
allora ho provato a sostituire il comando del tar con > login.txt ma non mi ha inserito niente se non la riga "<stdio.h>"
dove ho sbagliato?
un'altra cosa: se ho un file .txt, che comando posso usare per farmelo vedere a video senza usare elvis?
grazie ancora
Prova con:
find / -type f | xargs grep -l "login" >> list.txt
Il simbolo >> concatena ogni riga al termine del file, mentre > sovrascrive il file prima di aggiungere del contenuto
Per vedere un file senza elvis puoi:
__________________
The answer is blowing in the wind...
Originally posted by n3o
[B]@NoWhereMan: Si si basta anche la semplificazione che hai fatto.
Io ho solo estratto gli unici due campi di interesse, ma è una formattazione in più che in sede di esame serve forse ad avere il massimo dei punti.
Ho poi controllato ciò che hai detto e in effetti contrariamente a ciò che dice il manuale sembra funzionare anche il nome dell'utente come parametro dell'opzione user del find
Ovvio che se ti chiede di scorrere tutti gli utenti devi comunque lavorare sul file /etc/passwd
Il comando uniq è fondamentale visto che in sede di esame c'erano più utenti con l'UID 0 (e si potrebbe creare anche più utenti con lo stesso nome mettendo mano a quel file, quindi è utile in ogni caso...)
Originally posted by n3o
Prova con:
find / -type f | xargs grep -l "login" >> list.txt
Il simbolo >> concatena ogni riga al termine del file, mentre > sovrascrive il file prima di aggiungere del contenuto
Per vedere un file senza elvis puoi:
- cat file.txt
- more file.txt (output paginato)
Originally posted by GiKappaSe ti autentichi come root non hai problemi di permessi (probabimente saranno rw-r--r--)
ma ho i permessi per controllare il file /ect/passwd?
Originally posted by NoWhereManIn un sistema non possono coesistere due utenti con UID uguale, credo sia stato un mageggio sul file /etc/passwd dei prof per gestire il sistema dei tempi dell'esame...
Il punto è che se mi si chiede di trovare $informazione per ogni utente, allora anche se due utenti hanno lo stesso UID, sono comunque distinti (potrebbero comunque avere home e probabilmente username diversi)
__________________
The answer is blowing in the wind...
Originally posted by n3o
In un sistema non possono coesistere due utenti con UID uguale, credo sia stato un mageggio sul file /etc/passwd dei prof per gestire il sistema dei tempi dell'esame...
per non parlare di tutta la gente a cui si è bloccato il terminale
@n3o(o chi mi sa risp): riguardo ai comandi messi in prima pagina di questo thread, non riesco a capire bene:
-esercizio trovare i file eseguibili >5k ecc... sono indispensabili i comandi xargs ls -l ; tr -s ' ' ' ' ?(questo nn ho capito bn cosa vuol dire...) ; e in cut si potrebbe eliminare -d ' '? (anche qst nn mi è chiaro)
-esercizio trovare processo che occupa + mem, non capisco perchè +7 in sort, se sia indispensabile il ps -axl (e se si perchè) all'inizio e ancora l'intero comando tr e cut che credo siano un lontano dialetto arabo/cinese per me
GRAZIE ANCORA!
visto che ci siamo, nel primo dei 2 listati lunghi, mi si può spiegare il significato di
if [ $# -ne 1 ]; then
echo "syntax: user_size <user_name>"
exit 1
fi
?
Originally posted by antares85Se non passi un parametro in linea di comando genera un errore ed esce...
visto che ci siamo, nel primo dei 2 listati lunghi, mi si può spiegare il significato di
if [ $# -ne 1 ]; then
echo "syntax: user_size <user_name>"
exit 1
fi
?
Originally posted by antares85Ho già analizzato il problema in un post precedente:
esercizio trovare i file eseguibili >5k ecc... sono indispensabili i comandi xargs ls -l ; tr -s ' ' ' ' ?(questo nn ho capito bn cosa vuol dire...) ; e in cut si potrebbe eliminare -d ' '? (anche qst nn mi è chiaro)
Originally posted by antares85sort +7 -n vuol dire "ordina numericamente (non alfabeticamente) considerando la settima colonna"
esercizio trovare processo che occupa + mem, non capisco perchè +7 in sort, se sia indispensabile il ps -axl (e se si perchè) all'inizio e ancora l'intero comando tr e cut che credo siano un lontano dialetto arabo/cinese per me
__________________
The answer is blowing in the wind...
ecco non capisco come si fa a sapere da quali colonne prendere le info desiderate (sort +7 e -f 5,9, perchè proprio quelle?). c'è un qualche standard sempre uguale sul quale basarsi dove si vede ad ogni colonna quali info corrispondono?
1) Per me un file è eseguibile se lo è per tutti (altrimenti farsi tutti i casi possibili è una macello...)
code:
10 S 0 1 5 1 16 (wait) pm ? 0:00 init
code:
10 W 0 26 5 1 16 pm ? 0:00 /usr/sbin/inet
code:
10 W 0 26 5 1 16 fs co 0:00 ps alx
pensate che in linux quel diavolo di programma per trovare i file eseguibili maggiori di 5k si risolve solo così:
find / -type f -size +5 -perm /111 o
find / -type f -size +5 -perm +111 (per versioni vecchie di find)
FINE!!! Ma il find del minix è uno scandalo
@NoWhereMan: buona la regexp, ma effettivamente non è da parte dei prof molto corretto farcele usare perchè non sono state spiegate!!!
Io sono convinto che l'esercizio incriminato loro sono convinti si possa fare con il find (ma in Minix non è vero! )
__________________
The answer is blowing in the wind...
Originally posted by n3o
Io sono convinto che l'esercizio incriminato loro sono convinti si possa fare con il find (ma in Minix non è vero! )
All times are GMT. The time now is 05:08. | Pages (39): « 1 2 3 [4] 5 6 7 8 » ... Last » Show all 571 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.