Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Sistemi operativi I (http://www.dsy.it/forum/forumdisplay.php?forumid=269)
-- [LAB] Esercizi Shell Svolti (http://www.dsy.it/forum/showthread.php?threadid=38923)
[LAB] Esercizi Shell Svolti
Ciao a tutti volevo proporre di creare un thread (questo ) con su lo svolgimento degli esercizi di scripting proposti sul wiki (e perchè no, magari anche di altri) così da dare una mano a chi deve preparare il laboratorio.
Elenco degli esercizi proposti sul wiki:
*Trovare l'utente col minor numero di file nel sistema
* Trovare l'utente col file piu' recente nel sistema
* Elencare i tre utenti che hanno il maggior numero di file nel sistema
* Trovare tutti i file col numero dispari di righe (quindi sono i file di testo)
* Trovare tutti i file modificati di venerdi' (sia un venerdi' particolare che di venerdi' in generale)
* Trovare tutti i link simbolici nel filesystem
* Trovare tutti i file di testo che non siano script
* Contare quanti file di manuale ci sono nel filesystem
* A quante “pagine” (una pagina equivale a circa 1500 caratteri) corrispondono tutti i file di testo del filesystem?
* Quali file ha modificato l'utente XY in una specifica data?
* Quali file di testo ha modificato l'utente XY nell'ultimo anno?
* Qual'e' l'utente che ha modificato piu' file nell'ultimo anno?
* Calcolare il numero di righe totali che ha scritto sul filesystem un certo utente nell'ultimo mese
* Calcolare il rapporto tra il numero di file nel filesystem (o in una directory specificata) e lo spazio occupato
* Calcolare il rapporto tra il numero di file nel filesystem (o in una directory specificata) e lo spazio occupato ESCLUDENDO gli hardlink
* Quanta memoria occupa il processo piu' grande?
Spero che qualcuno mi corregga se ho fatto qualche cavolata
* Trovare tutti i file col numero dispari di righe (quindi sono i file di testo)
code:
#!/bin/sh TEMP=temp echo "Calculating..." & (find / -type f | xargs wc -l 2>/dev/null | sed s/^\ *// > $TEMP) echo -e "LINES\t\tFILE" echo "--------------------------------------------" while read line; do LC=$(echo $line | cut -f 1 -d " ") NAME=$(echo $line | cut -f 2 -d " ") PAIR=$(expr $LC % 2) if [ $PAIR -ne 0 ]; then echo - e "$LC\t\t$NAME" fi done < $TEMP rm $TEMP
code:
#!/bin/sh TEMP="$(pwd)/temp" echo "Calculating..." & (find / -type f | grep -v '^'"$TEMP"'$' > $TEMP) while read line do FILE=$(echo $line) if [ "$(head -1 $FILE)" != "#!/bin/sh" ]; then echo $FILE fi done < $TEMP rm $TEMP
code:
#!/bin/sh for LINK in $(find / -type l); do echo $LINK done
code:
#!/bin/sh echo -e "USER\t\tUID\t\t#FiLES" echo "-----------------------------------------------" MINUSER=$(head -1 /etc/passwd | cut -f 1 -d : ) MINUID=$(head -1 /etc/passwd | cut -f 3 -d : ) MINFILES=$(find / -user $MINUID | wc -l) while read line; do USER=$(echo $line | cut -f 1 -d : ) UID=$(echo $line | cut -f 3 -d : ) if [ "$UID" -eq "$MINUID" ]; then echo -e "$MINUSER\t\t$MINUID\t\t$MINFILES" continue fi FILES=$(find / -user $UID | ec -l) fi [ "$MINFILES" -ge "$FILES" ]; then MINFILES=$FILES MINUSER=$USER MINUID=$UID fi echo -e "$USER\t\t$UID\t\t$FILES" done < /etc/passwd echo "\nMINORE:\n-----------------------------------------------" echo -e "$MINUSER\t\t$MINUID\t\t$MINFILES"
code:
#!/bin/sh TEMP="$(pwd)/temp" while read line; do USER=$(echo $line | cut -f 1 -d : ) UID=$(echo $line | cut -f 3 -d : ) FILES=$(find / -user $UID | wc -l) echo -e "$FILES $USER" >> $TEMP done < /etc/passwd sort -nr $TEMP | head -3 rm $TEMP
* Trovare l'utente col file piu' recente nel sistema
non ho trovato di meglio per ora
code:
#!/bin/sh find / -type f -exec stat -atime {} \; > atime.tmp find / -type f -exec stat -uid {} \; > uid.tmp paste -d ' ' atime.tmp uid.tmp | sort +0 -n rm *.tmp
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
All times are GMT. The time now is 23:30. | Show all 3 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.