.dsy:it. Pages (39): « First ... « 26 27 28 29 [30] 31 32 33 34 » ... 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)


Posted by Spr1gg4N on 09-09-2009 15:47:

Originally posted by xSharKMaNx
•Elencare i tre utenti che hanno il maggior numero di file nel sistema

code:
USERS=$(cut -d : -f 1 < /etc/passwd | uniq); for us in $USERS; do NFILE=$(find / -type f -user $us | wc -l); echo $NFILE:$us done | sort -nr | head -3


scusa ma mandando in pipe l'output di find sull'utente root non ti da errore di Out of Space?


Posted by xSharKMaNx on 09-09-2009 15:52:

Originally posted by Spr1gg4N
scusa ma mandando in pipe l'output di find sull'utente root non ti da errore di Out of Space?


No, non mi ha dato nessun tipo di errore!
Ho utilizzato l'ambiente dato da Martignoni, perchè a te va in Out of Space?

__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)

I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)


Posted by Spr1gg4N on 09-09-2009 15:58:

Originally posted by xSharKMaNx
No, non mi ha dato nessun tipo di errore!
Ho utilizzato l'ambiente dato da Martignoni, perchè a te va in Out of Space?


eh si infatti se vedi nel post dove ho raccolto alcuni script ho sempre utilizzato un file temporaneo proprio per questo fatto: perchè puntualmente mi va in out of space (in effetti tutti i file dell'utente root partendo da / sono molti...strano che non ti dia errore...bha)

EDIT:
-------------
Ora provando a riscriverlo non mi da errore....bho non so che cavolo avevo fatto allora ^_^


Posted by mark on 09-09-2009 18:34:

Originally posted by xSharKMaNx
Dai post precedenti ho trovato queste due possibilità:

code:
#/bin/sh cpdir -p /directoryA /directoryB for file in $(find /directoryB -type f); do rm $file done


oppure

code:
#! /bin/sh cpdir -pr /bin /bin2 rm $(find /bin2 -type f)


Prova un pò



il problema è che directory di destinazione deve esistere altrimenti si ha un errore esempio:

cp -r /usr/adm /tmp ------ tutto ok

cp -r /usr/adm /tmp/usr ---- errore

sia in ambiente DOS di windows che in linux eventuali sotto_directory vengonn create automaticamente

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by mark on 09-09-2009 18:39:

Originally posted by Spr1gg4N
eh si infatti se vedi nel post dove ho raccolto alcuni script ho sempre utilizzato un file temporaneo proprio per questo fatto: perchè puntualmente mi va in out of space (in effetti tutti i file dell'utente root partendo da / sono molti...strano che non ti dia errore...bha)

EDIT:
-------------
Ora provando a riscriverlo non mi da errore....bho non so che cavolo avevo fatto allora ^_^


l'ho provato pure io e funziona però anch'io ho preso l'abitudine del file temporaneo per evitare eventuali errori

con file temporaneo, la modifica è semplice

code:
cut -d : -f 1 < /etc/passwd | uniq > tmp while read us; do NFILE=$(find / -type f -user $us | wc -l); echo $NFILE:$us done < tmp | sort -nr | head -3

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by xSharKMaNx on 09-09-2009 18:57:

Trovare tutti gli script del sistema, minori di 1 k, copiarli su /tmp/script/ Aggiungerli tutti i file su un file.tar !

Sto scimmiando con questo esercizio

Ho pensato una cosa

code:
#!/bin/sh mkdir -p /tmp/script; /find -type f -size +2 | xargs grep -l "#!/bin/sh" | xargs tar cvf /tmp/script/archivio.tar


In questo modo:
- Creo la cartella
- Copio il tar con tutti i file all'interno nella cartella richiesta

Domanda: Come faccio adesso ad estrarli? :)

__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)

I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)


Posted by mark on 09-09-2009 19:09:

Originally posted by xSharKMaNx
Trovare tutti gli script del sistema, minori di 1 k, copiarli su /tmp/script/ Aggiungerli tutti i file su un file.tar !

Sto scimmiando con questo esercizio

Ho pensato una cosa

code:
#!/bin/sh mkdir -p /tmp/script; /find -type f -size +2 | xargs grep -l "#!/bin/sh" | xargs tar cvf /tmp/script/archivio.tar


In questo modo:
- Creo la cartella
- Copio il tar con tutti i file all'interno nella cartella richiesta

Domanda: Come faccio adesso ad estrarli? :)



perchè +2 ?
non è -2 ?

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by xSharKMaNx on 09-09-2009 19:18:

Originally posted by mark
perchè +2 ?
non è -2 ?


Si! Pensavo maggiori di 1K pardom
Controlla i PM

__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)

I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)


Posted by mark on 09-09-2009 19:35:

qui spiega come fare ma a me non funziona

http://unix.ittoolbox.com/groups/te...another-1677099

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by mark on 15-09-2009 18:40:

Originally posted by Simaldeff
confermo una cosa :
prima di tutto ho fatto il test in una cartella in cui ho creato 3 file di cui uno in chmod 755

chmod 755 try.sh
gli altri in 644 (default se si creano con elvis)

con un
find /mnt/[lamiacartella] -type f -perm -1

mi ha trovato il file eseguibile. Poi con la seguente situazione :
chmod 777 try.sh
chmod 676 try2.sh

e usando lo stesso find mi ha trovato sollo quello in 777
conclusione -perm -1 guarda solo il primo numero.

confermo che i +1 +111 /1 /111 sono inutile ... non danno erore ma non danno nessun risultato di ricerca

la domanda e' dunque : Basta che sia eseguibile dall' user o deve essere eseguibile da tutti?

se basta il user allora basta la linea di comando ... seno bisogna fare un script shell che faccia tutti i casi di permesso ... *sigh*



ne approfitto per dire la mia anche se in ritardo di due anni :D

find / -type f -perm +111
trova tutti e solo i file che hanno il bit di esecuzione settato

find / -type f -perm -111
trova tutti i file che hanno il bit di esecuzione settato indifferentemente dagli altri bit rw

in definitiva col segno + vengono ricercati --x--x--x mentre col -qualsiasi configurazione va bene, basta che siano settati i parametri x

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by xSharKMaNx on 15-09-2009 20:39:

•Trovare la dimensione di tutti i file "*.c"

code:
find / -type f -name "*.c" | xargs ls -s | awk '{SUM += $1} END {print SUM}'


code:
find / -type f -name "*.c" [ ricerco tutti i file con estensione ".c"] xargs ls -s [visualizzo nella prima colonna la dimensione in kb ] awk '{SUM += $1} END {print SUM}' [ somma la prima colonna e stampa il risultato ]


Questo esercizio può essere svolto in moltissimi modi, io ho provato questa soluzione!

__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)

I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)


Posted by mark on 15-09-2009 21:55:

Originally posted by xSharKMaNx
•Trovare la dimensione di tutti i file "*.c"

code:
find / -type f -name "*.c" | xargs ls -s | awk '{SUM += $1} END {print SUM}'


code:
find / -type f -name "*.c" [ ricerco tutti i file con estensione ".c"] xargs ls -s [visualizzo nella prima colonna la dimensione in kb ] awk '{SUM += $1} END {print SUM}' [ somma la prima colonna e stampa il risultato ]


Questo esercizio può essere svolto in moltissimi modi, io ho provato questa soluzione!



molto potente awk, però se devi stampare ad esempio i 5 file .c di dimensioni maggiori diventa problematico

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by fain182 on 15-09-2009 23:11:

Originally posted by Spr1gg4N
eh si infatti se vedi nel post dove ho raccolto alcuni script ho sempre utilizzato un file temporaneo proprio per questo fatto: perchè puntualmente mi va in out of space (in effetti tutti i file dell'utente root partendo da / sono molti...strano che non ti dia errore...bha)

EDIT:
-------------
Ora provando a riscriverlo non mi da errore....bho non so che cavolo avevo fatto allora ^_^


il problema dell'out of space generalmente lo da quando metti tanti dati come argomento ad un for, perchè in questo caso (suppongo) deve immagazzinare tutti i dati e poi prenderli uno ad uno..
nelle pipe invece l'errore dell'out of space non viene mai dato, perchè i dati vengono passati alla seconda applicazione poco a poco, quindi la shell non ha bisogno di tenerli tutti insieme in memoria.

sono solo supposizioni, ma dai tentativi che avevo fatto mi pare una ipotesi realistica..


Posted by xSharKMaNx on 16-09-2009 09:34:

Originally posted by mark
molto potente awk, però se devi stampare ad esempio i 5 file .c di dimensioni maggiori diventa problematico


E' un pò diverso, se devi selezionare i 5 file ".c" di dimensioni maggiori fai semplicemente:

code:
find / -type -name "*.c" | xargs du | sort -nr | head -5


L'awk utilizzato nell'esercizio precedente ti evita di effettuare un loop per effettuare la sommatoria.

__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)

I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)


Posted by mark on 16-09-2009 10:14:

Originally posted by xSharKMaNx
E' un pò diverso, se devi selezionare i 5 file ".c" di dimensioni maggiori fai semplicemente:

code:
find / -type -name "*.c" | xargs du | sort -nr | head -5


L'awk utilizzato nell'esercizio precedente ti evita di effettuare un loop per effettuare la sommatoria.


uhm...sai che stavo pensando che invece sia possibile anche con awk ?

Trovare il processo con pid dispari che occupa più spazio in memoria

prima versione
code:
ps -axl | tr -s " " : | for i in $(cut -d : -f 5-9); do pid$=(echo $i | cut -d -f 1); sz$=(echo $i | cut -d -f 4); if [ $pid % 2 -eq 1 -a $sz > 0 ]; then echo $pid $sz; fi; done; | sort +1 -n | tail -1


seconda versione con awk
code:
ps -axl | awk '{if($4 % 2 && $7 > 0) print $4, $7}' | sort +1 -n

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


All times are GMT. The time now is 13:43. Pages (39): « First ... « 26 27 28 29 [30] 31 32 33 34 » ... Last »
Show all 571 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.