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)
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-
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...
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
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
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?
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)
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)
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.
Come faccio a mettere la shell bash nella versione di Minix che ho scaricato dal sito di sisop?
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..
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..
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
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.
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
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.