A) Estrarre tutti gli indirizzi IP contenuti nei soli file regolari presenti nel ramo /etc del filesystem find /etc -type f -exec grep '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} \; B) Calcolare il numero di tutti i file di intestazione presenti nel ramo del filesystem /usr/include il cui nome inizi con s, il cui numero di righe sia pari ed il cui Inode sia dispari. ls -1 /usr/include/s*.h | xargs wc -l | sed 's/\s\+/ /g' | grep -v 'total' | awk '! ($0 % 2)' | cut -d' ' -f3 | xargs -r ls -li | cut -d ' ' -f1 | awk '($0 % 2)' | wc -l C) Utilizzare strace (linux syscall tracer) per listare tutte le chiamate di sistema che hanno a che fare con la memoria durante l'esecuzione del comando df -h ,ordinarle per frequenza di chiamata ed estrarre la chiamata di sistema effettuata piu' frequentemente. Stampare in output 'n syscallname' dove n e' il numero di occorrenze della chiamata a syscallname. Risolvete l'esercizio utilizzando una pipeline. *Non* utilizzate i seguenti parametri per strace: -c , -C strace -e trace=memory df -h 2>&1 | grep '(' | cut -d '(' -f1 | sort | uniq -c | sort -nr | head -n 1 | sed 's/^ *//g' output: 7 mmap D) Posizionatevi nella vostra home. Utilizzare strace (linux syscall tracer) per listare tutte le chiamate di sistema che hanno tra i loro argomenti il nome di un file durante l'esecuzione del comando du -ah ./solab-jos/ ,ordinarle per frequenza di chiamata ed estrarre la chiamata di sistema effettuata piu' frequentemente. Stampare in output 'n syscallname' dove n e' il numero di occorrenze della chiamata a syscallname. Risolvete l'esercizio utilizzando una pipeline. *Non* utilizzate i seguenti parametri per strace: -c , -C strace -e trace=file du -ah ./solab-jos/ 2>&1 | grep '(' | cut -d '(' -f1 | sort | uniq -c | sort -nr | head -n 1 | sed 's/^ *//g' output: 121 newfstatat useful readings: https://lwn.net/Articles/164887/ https://thevivekpandey.github.io/posts/2017-09-25-linux-system-calls.html https://jvns.ca/blog/2014/09/18/you-can-be-a-kernel-hacker/ E) Trovare i 3 utenti che, sommando la dimensione dei loro file, occupano piĆ¹ spazio nel sistema. for target in $(awk -F':' '{print $1}' /etc/passwd); do res=$(find / -user $target -type f -printf '%p|%s\n' 2> /dev/null | sort -t \| +1 -2 | awk -F\| '{s += $2} END {if(s!=0){print "Sum: ",s}else{print "Sum:0"}}'); [[ $res != "" ]] && echo "$target $res"; done | sort -k3 -n -r | head -n 3