.dsy:it. Pages (39): « First ... « 7 8 9 10 [11] 12 13 14 15 » ... 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 Simaldeff on 20-07-2007 12:50:

la domanda che mi e' stata fatta era : dare per ogni utente il numero di file che possiede.

ho fatto un piccolo script :

#!/bin/sh
for USER in $(cut -d : -f 1 /etc/passwd ); do
echo" numero file di ${USER}"
find / -user ${USER} -type f | wc -l
done
exit 0


fatto
ho pure insegnato qualcosa al trentini (anche se l'esercizio me lo ha datto monga ... ma me lo ha coretto trentini)
"il find di minix accetta anche il nome in lettere dello user"

fatto 24/30 ... non ho fatto il kernel in quanto avevo un'appuntamento alle 13 a monza ed erano gia le 12:10.

__________________
There is no way to happyness, happyness is the way. -Buddha-


Posted by plafo on 20-07-2007 12:53:

Originally posted by =kimi=
ciao raga
anche io ho fatto l'esame oggi, posso dirvi che l'esercizio dishell fa a fortuna! a me ha chiesto proprio quello di paul03 ( con l'aggiunta che dovevano anche essere file eseguibili ).
per il kernel dovevo modificare il file do_exit.c per farsi che ogni volta un processo usciva, dovevo incrementare un contatore e visualizzare ad ogni uscita il suo valore.

cmq si a fortuna...

in bocca al lupo...





ma la percentuale promossi/bocciati com'è stata?


Posted by =kimi= on 20-07-2007 15:07:

guarda io sono stato uno dei primi a finire, e non erano stati bocciati in molti,
cmq non per farti preoccupare ma dipende molto da che tipo di esercizio ti capita... il mio è stato semplice, ma se me ne capitava un altro che ha fatto un mio compa ( che e stato bocciato ) avrei fatto la sua stessa fine


Posted by plafo on 20-07-2007 15:32:

Originally posted by =kimi=
guarda io sono stato uno dei primi a finire, e non erano stati bocciati in molti,
cmq non per farti preoccupare ma dipende molto da che tipo di esercizio ti capita... il mio è stato semplice, ma se me ne capitava un altro che ha fatto un mio compa ( che e stato bocciato ) avrei fatto la sua stessa fine





ok grazie
ricordi com'era l'esercizio del tuo amico?


Posted by Snorlux on 20-07-2007 17:02:

Ciao a tutti, ho fatto l'esame stamattina, ma non l'ho passato.... Ho avuto dei problemi perché la shell è diversa. In lab c'è la bash mentre quella dell'immagine da scaricare dal sito è sh. Inoltre comandi uguali danno risposte diverse.

Dai prof mi è stato detto che il comando "find / -type f -name l*" cerca solo nella mia directory e non in tutto il file system. Perchè?
E soprattutto perchè a casa mi dà errore e in lab no?


Posted by Peach on 20-07-2007 19:32:

Stesso problema di snorlux sopratutto perchè a qualcuno impazziva il pc (non salvando le partizioni) e a me è impazzato elle!
Con il mio pc uso elle tranquillamente e mi muovo anche con le freccine invece in laboratorio...clicchi le freccine e escono i caratteri tipo A B C D (che a casa mia GIURO che non escono) morale della favola ho dovuto killare 2 volte il processo perchè mi era impazzito alla terza volta non ce l'ho fatta più...quello che scrivevo scrivevo e dopo qualche riga di codice tutto a iniziato a funzionare corettamente (non chiedetemi il perchè però!) ma sono stata bocciata cmq perchè ho sbagliato lo script di shell (colpa mia che non l'avevo studiato!...poco tempo....hehe)


Posted by plafo on 20-07-2007 20:22:

Originally posted by Peach
Stesso problema di snorlux sopratutto perchè a qualcuno impazziva il pc (non salvando le partizioni) e a me è impazzato elle!
Con il mio pc uso elle tranquillamente e mi muovo anche con le freccine invece in laboratorio...clicchi le freccine e escono i caratteri tipo A B C D (che a casa mia GIURO che non escono) morale della favola ho dovuto killare 2 volte il processo perchè mi era impazzito alla terza volta non ce l'ho fatta più...quello che scrivevo scrivevo e dopo qualche riga di codice tutto a iniziato a funzionare corettamente (non chiedetemi il perchè però!) ma sono stata bocciata cmq perchè ho sbagliato lo script di shell (colpa mia che non l'avevo studiato!...poco tempo....hehe)





che esercizio ti era capitato?


Posted by Vid on 20-07-2007 20:49:

Alcuni problemi effettivamente c'erano durante l'esame: anche a me il pc dopo la partizione non lasciava creare il filesystem con mkfs, ho provato a fare un reboot e dopo me lo montava.

Per quanto riguarda il problema di bash vs. sh, credo che se uno script gira correttamente su sh ma non funziona ugualmente bene su bash (anche se credo che eventuali problemi in questo senso si limitino all'utilizzo di variabili o alla command substitution, non certo all'invocazione di comandi), basti salvarlo su file rendendolo eseguibile e selezionando sh come interprete (basta inserire come prima riga la stringa #!/usr/bin/sh ) in modo tale che anche se avete bash come shell predefinita, lo script verrà interpretato da sh.
Io personalmente non ho incontrato problemi in questo senso.


Posted by Snorlux on 20-07-2007 22:43:

Come faccio a mettere la shell bash nella versione di Minix che ho scaricato dal sito di sisop?


Posted by iuz-lab on 21-07-2007 06:15:

30 :-)))))

le domande..
cerca gli utenti di un utente specifico che siano stati modificati da meno di 5 giorni ed archiviali..

soluzione a memoria..
#!/usr/bin/env sh

if [ $# -ne 2 ]; then
echo "usage: $0 username archive_name"
exit
fi;

uid=`cat /etc/passwd | grep ^$1: | cut -d : -f 3`

if [ -z $uid ]; then
echo "username not valid"
exit
fi;

find / -type f -user $uid -mtime -5 | ar r $2

modifica il kernel in modo che venga stampato a video quante volte si e' usata la syscall exit..
e devo dire che qui i docenti mi sono venuti incontro..
ho fatto le modifiche e quando ho ricompilato ho sbagliato make ordinando di ricompilare il mondo.. quasi un'ora di attesa :-(((( e con tutte le ore di sonno che avevo ogni riga che attraversava lo schermo si portava via un pezzetto della mia anima..

alla fine riavvio e funzionava.. ma andava in crash durante il boot.. che ha quanto diceva il trentini era una cosa capitata anche a lezione e non si conoscevano ancora le ragioni..
comunque la mia soluzione era una semplice modifica al file AICR kernel/system/do_exit.c aggiungendo una variabile statica, incrementandola e stampandone il valore tramite kprintf..


Posted by bog86 on 03-08-2007 14:21:

Originally posted by iuz-lab
30 :-)))))

le domande..
cerca gli utenti di un utente specifico che siano stati modificati da meno di 5 giorni ed archiviali..



Tradotto in italiano sarebbe?


Posted by Kurt84 on 07-08-2007 17:17:

Originally posted by matteojacoca
Ciao Raga,
a me hanno chiesto:

1)Calcolare per ogni utente lo spazio occupato sul sitema
2)Come esercizio di Kernel: Visualizzare quante volte viene terminato un processo.

1)Per il primo..ci sono rimasto male...in quanto...io come molti ci eravamo studiati tutti gli esercizi proposti qui e sul wiki...peccato che (non so che cacchio hanno combinato Trentini e Monga) sta di fatto che molti degli esercizi proposti ieri a casa andavano benissimo e chi sà come mai all'esame non funzionavano....

Vi faccio vedere la mia soluzione del Primo:

#!/bin/sh
for i in $(cut /etc/passwd -d : -f 3 | sort -n | uniq); do
SUM=0
for file in $(find / -type f -user $i | xargs du | cut -f 1); do
SUM=$(expr $SUM + $file)
done
echo "L'utente $i occupa $SUM KB sul sistema"
done

A casa perfetta, all'esame restituiva..."Out of Space".....bene....
Allora mi sono dovuto inventare una soluzione assurda....mettendo prima le dimensioni in un file...poi attraverso un while...cercare di sommarle....(che poi ovviamente non mi è venuto)....morale sono riuscito a portami a casa un SUDATISSIMO...21....e non sò ancora come ho fatto...
Conclusione:
State attenti, perchè molte delle soluzioni proposte sia qui che sul wiki, potrebbero NON funzionare...anche se sono PERFETTAMENTE CORRETTE....ho visto un sacco di gente bocciata per questo!!!!

Ciao



Penso che " l'out of space " sia dovuto all'output abnorme del find (o anche /etc/passwd troppo lungo?). Qualcuno sa darmi qualche suggerimento per una versione di questo script che risolve il problema ?

Grazie

Io avevo provato così:

#!/bin/sh
cut /etc/passwd -d : -f 3 | sort -n | uniq | while read i; do
SUM=0
find / -type f -user $i | xargs du | cut -f 1 | while read file; do
SUM=$(expr ${SUM} + ${file})
done
echo "L'utente ${i} occupa ${SUM} KB sul sistema"
done


Ma non funzionava come avrebbe dovuto..

PS Ho appurato che SUM è corretta(la somma viene fatta correttamente) finchè non esce dal while più interno, uscita da questo while incredibilmente diventa 0 e quindi mi dice che tutti gli utenti occupano 0 kb!



Posted by Kurt84 on 08-08-2007 00:54:

Ho trovato un modo per farlo senza pericolo di "out of space", anche se non è molto ortodosso:

#!/bin/sh
cut /etc/passwd -d : -f 3 | sort -n | uniq | while read i; do
SUM=0
echo "0">somme --------------------------------------> inizializzo il file somme a 0
find / -type f -user $i | xargs du | cut -f 1 | while read file; do
SUM=$(expr ${SUM} + ${file})
echo "${SUM}">somme ----------------------------> SUM copiato in somme
done
echo "L'utente ${i} occupa $(cat somme) KB sul sistema"
done

Praticamente uso il file somme come se fosse una variabile, al posto di SUM, per stampare a video quanto occupa un utente (quando faccio SUM=$(expr ${SUM} + ${file}) le modifiche apportate a SUM non vengono viste fuori da questo while, non so per quale congiunzione astrale, quindi l'occupazione in KB di ogni utente risulta sempre 0).
Memorizzando invece ogni somma nel file somme ( con ">" sovrascrivo il file, quindi l'ultimo dato scritto su "somme" è la somma totale dell'utente) posso stampare a video il dato.


Posted by umibozu on 10-08-2007 14:50:

ragazzi sto sbattendo la testa su un esercizio dato all'esame di luglio e non riesco a trovare una soluzione,la domanda era
questa:
- Calcolare l'occupazione totale dei processi in memoria per ogni utente.

seleziono l'utente attraverso questa istruzione:
for UID in $(ps -axl | sort +4 -n | tr -s ' ' ' ' | cut -d ' ' -f 4);do

e mi blocco qui perchè non riesco a trovare un modo per innestare un ciclo for dove per ogni utente prendo
un processo alla volta e sommo la sua dimensione.
se riuscite a completare la mia soluzione o avete altre soluzione scrivetele perchè mi sta facendo impazzire!!!!!!!

altre domande fatte a luglio:

-Archiviare tutti i file che incominciano per f e di dimensione < 5k in tar.gz

-Calcolare la somma della dimensione di file eseguibili che hanno all'interno la parola copyright non sensitive

-Trovare il processo che occupa più spazio in memoria

-Trova il processo che occupa per ogni utente più memoria(anke questa non riesco a risolvere)

-Archiviare i file modificati negli ultimi 5 giorni più grandi di 5k e più piccoli di 100


Posted by bog86 on 23-08-2007 14:41:

RISOLTO!
è troppo semplice, speriamo che all'esame siano un po' piu difficili altrimenti mi annoio...

codice:
#!/bin/sh
cut /etc/passwd -d : -f 3 | sort -n | uniq | while read UID; do
SUM=0
ps -alx | tr -s ' ' ' ' | cut -d ' ' -f 4,8 | while read file; do
UTENTE=$(echo "$file" | cut -d ' ' -f 1)
SPAZIO=$(echo "$file" | cut -d ' ' -f 2)
if [ $UTENTE = "$UID" ]; then
SUM=$(expr $SUM + $SPAZIO)
fi
echo "$SUM">figa
done
echo "L'utente $UID occupa: $(cat figa) kb"
done
exit 0


All times are GMT. The time now is 23:22. Pages (39): « First ... « 7 8 9 10 [11] 12 13 14 15 » ... Last »
Show all 571 posts from this thread on one page

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