Pages (4): « 1 [2] 3 4 » 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
modesto .. vero
ho fatto un po' di confusione...
ma queste domande di laboratorio fanno riferimento al turno di Bruschi, a quello di Trentini, oppure sono uguali per entrambi ?
tutto uguale
La prova di laboratorio è unica Trentini e Monga.
Originally posted by umibozu
-Calcolare la somma della dimensione di file eseguibili che hanno all'interno la parola copyright non sensitive
Originally posted by umibozu
-Trova il processo che occupa per ogni utente più memoria(anke questa non riesco a risolvere)
grazie!! ora ho un quesito da chiedervi... quando si usa il du per conoscere quanto spazio occupa un file in memoria,viene restituito
un valore con quale unità di misura??? byte,kilobyte, numero di blocchi, patate, pomodori!!!!!!!!!!!! il man non specifica
quale unità di misura si usa e facendo un test un file di 256 byte il du restituisce 4!!!
Originally posted by n3o
[list]
[*]Spostare tutti i files che iniziano per m da una directory (e sottodirectory) ad un'altra
[B]mv /directory/albero1/m* /directory/albero2
Originally posted by umibozu
grazie!! ora ho un quesito da chiedervi... quando si usa il du per conoscere quanto spazio occupa un file in memoria,viene restituito
un valore con quale unità di misura??? byte,kilobyte, numero di blocchi, patate, pomodori!!!!!!!!!!!! il man non specifica
quale unità di misura si usa e facendo un test un file di 256 byte il du restituisce 4!!!
Grazie Kurt! la parte del man dove dice ke il du potrebbe sovrastimare l'occupazione dei file l'ho letta ankio xò se un blocco è di 512 byte e il risultato del du per un file da 256 byte è 4 blocchi... penso ke sia un pò esagerata come misura!!!
Avete altri esercizi dati durante l'esame di laboratorio??
domandina
Ciao gente,
piccola domandina???
Durante un esame di lab è stato chiesto di:
copiare una directory mantenendo la struttura delle sottodirectory e i permessi, evitando però di copiare il contenuto delle cartelle(i file che all'interno che non sono directory)
Aiutoooo?!?!?!?!
Idee???
per esercitarmi a casa come si fa?
ciao a tutti!
Marco io ho risolto l'esercizio usando uno script perchè non ho trovato ne in cp ne in cpdir un comando utile per ottenere solo
le directory.
#/bin/sh
cpdir -p /directoryA /directoryB
for file in $(find /root/paper -type f); do
rm $file
done
credo che possa andar bene anche così,
perchè rimuovi i file all'interno di /root/paper????
Mille grazie.
gli esercizi che ci sno si fanno dal dos di windows?
Ciao a tutti,
aggiungo un'altra domanda fatta all'esame:
- Quali e quante estensioni ci sono nel sistema?
(per estensioni si intende qualsiasi cosa ci sia dopo il carattere “.”, es: archivio.gz)
La soluzione è questa:
find / | rev | cut -f 1 -d '.' | grep -v / | rev | sort | uniq -c | sort -n
Spiegazione:
find / trova tutto (files e directories) a partire dalla root dir
rev inverte ogni riga dell'output
cut -f 1 -d '.' estrae il primo campo di ogni riga usando il . come separatore
grep -v / eliminazione delle sole directories
rev inverte di nuovo ogni riga dell'output
sort ordina l'output
uniq -c elimina righe duplicate contandole, ora l'output è del tipo 123 gz
sort -n (non necessario) ordina i risultati numericamente
Nota:
Si può evitare il grep -v / usando cut -f 1 -d '.' -s.
Originally posted by darkman13
[...] Trovare il processo con pid dispari che occupa più spazio in memoria?
code:
ps -axl|tr -s ' ' :|cut -d : -f 8,5|tr -d \)|tr -d \(|tr : ' '|grep -v "[0|2|4|6|8]$"|sort -nr| head -1
Informazione pratica...
Scusate l'ignoranza, ma...come si svolge fisicamente la prova di laboratorio??? Ok, partizioni, script e kernel, ma quando ci si siede ti fanno creare un utente? e poi? alla fine devi salvare in qualche modo? so che la domanda è banale ma non ho capito come si svolge la prova dal punto di vista pratico....grazie e scusate ancora per la banalità!!!
L'esame consta di tre prove a tempo davanti al PC:
1 partizionamento (10 min)
2 scripting (30 min)
3 modica kernel (30 min)
La prova si svolge seduti al computer, già pronto con MINIX che gira su qemu, il prof scrive sul foglio l'esercizio indicando con quale utente e password loggarsi. Scaduto il tempo MINIX esce dalla shell, il prof dà la valutazione e si passa alla prova successiva.
Attenzione che le prove vengono effettuate nell'ordine sopra riportato ed è necessario passare la prima per accedere alla seconda e la seconda per accedere alla terza.
Per voti fino dal 18 al 24 bisogna passare le prime due, per voti fino al 30 anche la terza.
!!!!!
grande!!!!!! GRAZIE MILLE!!!!!
ciao nn riesco ad eseguire l'erercizio che chiedeva di creare un archivio gzip che contenga tutti i file che iniziano per c e la cui dimensione sia inferiore di 10 kb...nn riesco a capire come si usa ar
ho provato cosi ma nn va:
find / -type f -name c\* -size -20 | ar r archivio.ar
mi da errore con il comando ar!!
suggerimenti
thanks
hai dimenticato xargs
Re: domandina
Originally posted by marcolino78
Durante un esame di lab è stato chiesto di:
copiare una directory mantenendo la struttura delle sottodirectory e i permessi, evitando però di copiare il contenuto delle cartelle(i file che all'interno che non sono directory)
PER COLLO
non mi ricordo bene, ma all'esame mi ha fatto una domanda simile alla tua... con ar prova a mettere ar rc ....
in pratica dovresti aver dimenticato la c....
guarda sul man di ar e vedi... dovresti usare l'opzione che t crea larchivio e laltra che aggiunge i file nell'archivio
scusa marco!! il paper non centra niente è una cartella ke ho usato per provare la mia soluzione quindi al posto di
$(find /root/paper -type f) ci va $(find /directoryB -type f)
mille grazie...speriamo bene
era una domanda dell'appello di luglio, in minix qualcuno sa cosa significa fare la statistica dei file < 10k 100k 1000k ??????????
Originally posted by =kimi=
era una domanda dell'appello di luglio, in minix qualcuno sa cosa significa fare la statistica dei file < 10k 100k 1000k ??????????
code:
#! /bin/sh TOT=$(find / -type f | wc -l | tr -s ' ' : | cut -f 2 -d :) DIECIK=$(find / -type f -size -20 | wc -l | tr -s ' ' : | cut -f 2 -d :) CENTOK=$(find / -type f -size -200 | wc -l | tr -s ' ' : | cut -f 2 -d :) MILLEK=$(find / -type f -size -2000 | wc -l | tr -s ' ' : | cut -f 2 -d :) CENTO=100 STAT=$(expr $DIECIK \* $CENTO) STAT1=$(expr $STAT / $TOT) STAT=$(expr $CENTOK \* $CENTO) STAT2=$(expr $STAT / $TOT) STAT=$(expr $MILLEK \* $CENTO) STAT3=$(expr $STAT / $TOT) echo "I file inferiori a 10k sono il ${STAT1}%" echo "I file inferiori a 100k sono il ${STAT2}%" echo "I file inferiori a 1000k sono il ${STAT3}%"
ah sei riuscito a risolverlo????
cavoli io non ci avevo capito niente....
Ciao,
ma quando mi dà l'errore Out of space, che vuol dire che sto sbarellando di memoria o di hard disk???
Stavo provando a modificare questo esercizio:
-Determinare l'occupazione totale di un utente(somma dei suoi file)
in
-Determinare l'occupazione totale per ogni utente
Ho fatto lo script, lo lancio.... Out of space
altro esercizietto
ciao a tutti, vi sottopongo un'altro esercizietto che ho sentito:
creare 10 nuovi utenti prendendoli da un file di testo???
idee???
come si a passare i valori presi da un file di testo???
Questa domanda era già stata risolta sul sito del corso ma lì è un un po' un casino, ti consiglio piuttosto di guardare QUI .
Le estensioni hanno poco significato in minix: quindi se tu crei user.list o user.txt non cambia nulla.
Se usi lo script devi lanciarlo così:
<nomescript> <nomefilelistautenti>
Ciao
Re: Re: domandina
Originally posted by Bennyk
Sei sicuro di questa domanda? Su Linux non sarebbe un problema ma i comandi di MINIX sono molto limitati, io non ne sono ancora venuto a capo.
Qualcuno ha idee?
code:
#! /bin/sh cpdir -pr /bin /bin2 rm $(find /bin2 -type f)
Dimensione totale dei file per utente
Ciao, secondo voi può andar bene una cosa del genere per trovare l'occupazione totale per un utente?
#!/bin/sh
for NUM in $( find / -type f -user UTENTE | xargs du -s | cut -f 1); do
COUNT=$( expr $COUNT + $NUM)
done
echo "Totale: $COUNT"
a me sembra funzionare....
l'unica cosa, come faccio ad inserire l'utente come parametro quando lancio lo script? E' una cosa fattibile?
Grazie.
Re: Re: Re: domandina
Originally posted by jeremy.1983
Ho fatto uno script, pensando di replicare la directory "/bin"[...]
code:
#!bin/sh if [ $# -lt 2 ]; then echo “syntax: $0 path1 path2 exit 1 fi echo “Copying folders...” find $1 -type d | sort | while read $DIR; do mkdir -p $2/$DIR chmod $(stat -mode $DIR | cut -d ',' -f 1) $2/$DIR done echo “Finished copying.” exit 0
Re: Dimensione totale dei file per utente
Originally posted by banjoo
Ciao, secondo voi può andar bene una cosa del genere per trovare l'occupazione totale per un utente?
[...]
a me sembra funzionare....
l'unica cosa, come faccio ad inserire l'utente come parametro quando lancio lo script? E' una cosa fattibile?
code:
#!bin/sh if [ $# -lt 1 ]; then echo “syntax: $0 userID exit 1 fi find / -type f -user $1 | xargs du -s | cut -f 1 | while read $NUM; do ...
X jeremy.1983
sono andato a vedere la pagina che mi hai indicato e in effetti lo script non è complicato
1) #!/bin/bash
2) NUM=$(cat $1 | wc -l)
3) COUNT=0
4) while [ $NUM -ne $COUNT ]; do
5) COUNT=$(expr $COUNT + 1)
6) adduser $(cat $1 | awk "NR == $COUNT")
7) done
l'unica cosa che non ho capito è il $1, mi spiego meglio:
se per esempio chiamo il mio script NuovoUtente e il file FileUtenti.txt, come faccio a lanciarlo per far si che il cat $1 prenda come parametro il mio file???
forse cosi:
./NuovoUtente FileUtenti.txt
oppure manca qualcosa?
Grazie.
Io faccio ./ nome script ma dice no such file or directory,ma se faccio find - type f lo trovo....come mai?????
Prova così, facendo attenzione agli spazi:
./NOMESCRIPT NOMEFILE
io personalmente non ho provato a dare estensione .txt al file di testo, ma questo non dovrebbe influire.
Attenzione anche alla directory in cui ti trovi al momento dell'esecuzione.
allora
io creo il mio file con elvis (ad esempio nfile)
poi faccio chmod +x nfile
e se faccio ./ nfile mi dice no such file or directory
ma se faccio . /root/nfile funziona....
Come faccio a sapere la directory in cui sto eseguendo?
basta lanciare il comando pwd
ok e se non sto eseguendo su root cosa faccio?
Originally posted by Bennyk
Ciao a tutti,
aggiungo un'altra domanda fatta all'esame:
- Quali e quante estensioni ci sono nel sistema?
(per estensioni si intende qualsiasi cosa ci sia dopo il carattere “.”, es: archivio.gz)
La soluzione è questa:
find / | rev | cut -f 1 -d '.' | grep -v / | rev | sort | uniq -c | sort -n
Spiegazione:
find / trova tutto (files e directories) a partire dalla root dir
rev inverte ogni riga dell'output
cut -f 1 -d '.' estrae il primo campo di ogni riga usando il . come separatore
grep -v / eliminazione delle sole directories
rev inverte di nuovo ogni riga dell'output
sort ordina l'output
uniq -c elimina righe duplicate contandole, ora l'output è del tipo 123 gz
sort -n (non necessario) ordina i risultati numericamente
Nota:
Si può evitare il grep -v / usando cut -f 1 -d '.' -s.
Originally posted by Peach
allora
io creo il mio file con elvis (ad esempio nfile)
poi faccio chmod +x nfile
e se faccio ./ nfile mi dice no such file or directory
ma se faccio . /root/nfile funziona....
Come faccio a sapere la directory in cui sto eseguendo?
Originally posted by Assochespasso
Okkio che così trovi anche tutte le cartelle e file nascosti ( del tipo .cartella o .file).
Ho fatto uno script simile al tuo, escludendo cartelle e file nascosti:
find / -type f -name *.* | tr -s '/' ' ' | rev | cut -d ' ' -f 1 | rev | grep -v "^\." | rev | cut -d '.' -f 1 -s | rev | sort | uniq -c
...
code:
find / | while read i; do basename $i; done | grep -v “^\.” |rev| cut -f 1 -d '.' -s |rev|sort|uniq -c|sort -nr
Re: domandina
Originally posted by marcolino78
Ciao gente,
piccola domandina???
Durante un esame di lab è stato chiesto di:
copiare una directory mantenendo la struttura delle sottodirectory e i permessi, evitando però di copiare il contenuto delle cartelle(i file che all'interno che non sono directory)
Aiutoooo?!?!?!?!
Idee???
Originally posted by bog86
Non mi funziona in nessuno modo! con . /root/nfile si impalla, con ./nfile nomi.txt dice no such file or directory...
come si fa allora?? help!!!!!
Scusate l'ignoranza ma non ho seguito lezione di laboratorio,quindi non so dove si trova "aula Palestra di Sistemi Operativi"!
Grazie
Re: X jeremy.1983
Originally posted by marcolino78
sono andato a vedere la pagina che mi hai indicato e in effetti lo script non è complicato
1) #!/bin/bash
2) NUM=$(cat $1 | wc -l)
3) COUNT=0
4) while [ $NUM -ne $COUNT ]; do
5) COUNT=$(expr $COUNT + 1)
6) adduser $(cat $1 | awk "NR == $COUNT")
7) done
l'unica cosa che non ho capito è il $1, mi spiego meglio:
se per esempio chiamo il mio script NuovoUtente e il file FileUtenti.txt, come faccio a lanciarlo per far si che il cat $1 prenda come parametro il mio file???
forse cosi:
./NuovoUtente FileUtenti.txt
oppure manca qualcosa?
Grazie.
X Alien
è un'aula di via Comelico...[B]
che aula è?????
dunque l'ingresso sono quelle scale davanti le scale per entrare in silab, insomma quelle per salire nelle stanze dei prof....
proprio ma proprio appena entri ce una porta che può sembrare quella di uno sgabuzzino.... appena apri c sono delle scale che t portano giu... sei arrivato :-)
Grazie
Re: Re: Dimensione totale dei file per utente
Originally posted by Bennyk
Inoltre consiglio vivamente di usare il while, invece del for, per evitare errori di "Out of space" nella command substitution, specialmente in casi tipo: $(find / ...).
Re: Re: Re: Dimensione totale dei file per utente
Originally posted by jeremy.1983
Scusa, cosa dovrebbe cambiare tra usare un for e un while?? In teoria fanno la stessa cosa.
Poi ho notato grosse differenze tra le varie immagini minix di qemu che si trovano sul sito del corso: per esempio minix3.qcow di 27MB ha un comportamento diverso rispetto a perEsame.qcow. Qual è quello giusto e soprattutto quale si usa all'esame. (che fra l'altro è domani e colgo l'occasione per un bocca al lupo e culo alla balena generale )
ma perEsame.qcow è quello che si usa fisicamente all'esame, giusto?
Per me è meglio, io ho praticamente sempre usato solo quello. Però è vero ho notato parecchi errori col for. Adesso provo a riscrivere i miei script col while
Dengh'iu
Sapreste fare questo script:
per ogni utente calcolare il numero dei processi attivi, e dire quello ke ne ha di +, tra tutti gli utenti... e' stato chiesto all'esame mezzoretta fa...
E' più o meno quello che han chiesto a me:
Classificare gli utenti in base alla somma delle dimensioni dei loro processi.
Ovviamente mi ha stampato, dire che è un puttanaio è un complimento.
Se poi penso allo script di merda che gli ha chiesto al tipo fianco a me mi sale un nervoso...
Però è una vergogna, elle e vim impazzano c'è la bash al posto della shell... VERGOGNOSO
Già per i non frequentati ci sono solo praticamente questi tre o quattro thread, che sono già dispersivi, in più ci fanno confondere così...
Non vi dico le bestemmie che son partite dal mio terminale... ma anche del tipo a fianco.
Adesso provo un po' a farlo quell'esercizio. Sto giro si sono imputati parecchio con xargs e grep, se mi viene vi posto la soluzione.
A gennaio... e l'incubo continua
Io non so, ma questo esame deve andare veramente di fortuna... Trenttini ti chiede delle cosse allucinanti. mentre Monga meno male ti chiede cosa molto fattibile al max in 2 righe di comandi...
Basta trenttini, sono già 2 volte che mi stampa lui..... grrrrrrrrrrrr
dark la prox volta chiedi l'esercizio a monga
dai scherzo,però davvero io lo passato a luglio ma solo xkè monga mi ha dato l'esercizio....
Originally posted by darkman13
Io non so, ma questo esame deve andare veramente di fortuna... Trenttini ti chiede delle cosse allucinanti. mentre Monga meno male ti chiede cosa molto fattibile al max in 2 righe di comandi...
Basta trenttini, sono già 2 volte che mi stampa lui..... grrrrrrrrrrrr
Presente! Stampato anche io...
Avevo studiato pochissimo (1 giorno lol) perche mi sto preparando piu per lo scritto (superato) e per l'orale, cmq ho voluto provare anche il lab per vedere come e'.
Allora partizionamento veramente semplice, fatto con facilita'.
Monga mi da l'esercizio shell: somma delle dimensione di tutti i file di solo testo (non eseguibili) che contengono al loro interno la parola copyright
Qualcuno sa risolverlo?
Per cercare i file bisogna usare il find per tipo oppure filtrare i file in base ai permessi?
Cmq da notare che elle non funzione bene, si e' impallato e non risponde ai comandi normalmente, ad esempio se si usano le frecce scrive lettere ecc, non cancella con del e cosi via. Ho perso 10 minuti solo a far venire il prof, intanto il tempo pero scorre...
Re: Re: X jeremy.1983
Originally posted by bog86
Mi riferisco al funzionamento di questo particolare script; le ho provate tutte (anche a sostituire $1 col nome del file) ma in ogni caso ritorna "no such file or directory" Ma scusate, NESSUNO è riuscito a farlo andare???
Originally posted by nuvoli
Presente! Stampato anche io...
Avevo studiato pochissimo (1 giorno lol) perche mi sto preparando piu per lo scritto (superato) e per l'orale, cmq ho voluto provare anche il lab per vedere come e'.
Allora partizionamento veramente semplice, fatto con facilita'.
Monga mi da l'esercizio shell: somma delle dimensione di tutti i file di solo testo (non eseguibili) che contengono al loro interno la parola copyright
Qualcuno sa risolverlo?
Per cercare i file bisogna usare il find per tipo oppure filtrare i file in base ai permessi?
Cmq da notare che elle non funzione bene, si e' impallato e non risponde ai comandi normalmente, ad esempio se si usano le frecce scrive lettere ecc, non cancella con del e cosi via. Ho perso 10 minuti solo a far venire il prof, intanto il tempo pero scorre...
A me il Trentini ha kiesto: "per ogni utente trovare la dimensione totale di tutti i processi attivi"
Qualcuno lo sa fare?
ma sopratutto per "attivi" cosa intende? è inutile chiedere al lui perke tanto non ti risponde.. anzi quando gli ho kiesto cosa avevo sbagliato dell'esercizio mi ha detto di guardarlo a casa.. -.-
Originally posted by Fenix
A me il Trentini ha kiesto: "per ogni utente trovare la dimensione totale di tutti i processi attivi"
Scusate avrei 2 domande?
1) Bisogna avere un account valido per accedere alle macchiene di laboratorio?
2) Durante l'esame è possbile utilizzare il manuanali (comando man)?
Grz mille.
__________________
Poca osservazione e molto ragionamento portano all’errore,
molta osservazione e poco ragionamento conducono alla verità
Originally posted by bill76
Scusate avrei 2 domande?
1) Bisogna avere un account valido per accedere alle macchiene di laboratorio?
2) Durante l'esame è possbile utilizzare il manuanali (comando man)?
Grz mille.
problema!
Non riesco a fare eseguibile un file!
è giusto chmod +x <nome_script>
Syntax Error: Newline unexpected
Ho controilato e ricontrolato il codice dello script ma niente da fare!
Mi succede su tutti i script che scrivo!
Aiutooooo....
Risolto grazie!!!!
Originally posted by nuvoli
Monga mi da l'esercizio shell: somma delle dimensione di tutti i file di solo testo (non eseguibili) che contengono al loro interno la parola copyright
Qualcuno sa risolverlo?
Per cercare i file bisogna usare il find per tipo oppure filtrare i file in base ai permessi?
__________________
Tommy: signor o'neill...
Micky: cazzo parli? kama micky
Tommy:come va?
Micky: beh dazza ci pai ma cavalli, sai...[...] porcocul! cicco zisiloi! sei grosso! hey babbuzzi:pazo grosso!
Originally posted by n3o
[*]Trovare tutti i files eseguibili > 5k e evidenziando i 5 più grandi
Questo mi ha fatto davvero dannare l'anima...per me un file è eseguibile se lo è per tutti gli utenti (altrimenti le combinazioni possibili sono troppe!)
find / -type f | xargs ls -l | grep "^...x..x..x" | tr -s ' ' ' ' | cut -d ' ' -f 5,9 | sort -nr | head -5
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
ma se devo cercare i file + grandi di 5k +piccoli di 100k non devo fare
find / -type f -size +10 -a -size -200
invece di :
find / -type f -size +5 -a -size -100
??
sul wiki alla domanda c'è scritto :
quanti file sono piu' grandi di 100k in /home ?
find /home -type f -size +200 | wc
Originally posted by bullet
ma se devo cercare i file + grandi di 5k +piccoli di 100k non devo fare
find / -type f -size +10 -a -size -200
invece di :
find / -type f -size +5 -a -size -100
??
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by mjfan80
io l'ho risolto così, penso sia corretto
find / -type f -size +10 | xargs ls -l | grep "^...x..x..x" | sort +4 -n | tail -5
che ne dite?
la parte dei permessi l'avevo scritta prima di leggere gli altri interventi
anche se, se non ho capito male, bisogna scrivere -perm -111
con il meno
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
-Copiare i file da una directory all'altra senza cambiare i permessi:
cp /directory/albero1/* /directory/albero2
bisogna aggiungere anche -p altrimenti i permessi cambiano...
mi potete spiegare bene cosa sono directory e albero cioè directory lo so es: /root oppure /bin ma per albero cosa intendete??
mi fate un esempio pratico...
grazie
ciao ciao
Somma delle dimensione di tutti i file di solo testo (non eseguibili) che contengono al loro interno la parola copyright
Ecco lo script:
code:
#!/bin/sh SOMMA=0 for VAR in $(find / -type f | xargs grep -l "copyright" | grep "\.txt$" | xargs du | cut -f 1); do SOMMA=$(expr $VAR + $SOMMA) done echo $SOMMA
io l'ho risolto così, penso sia corretto
find / -type f -size +10 | xargs ls -l | grep "^...x..x..x" | sort +4 -n | tail -5
che ne dite?
code:
find / -type f -size +10 | xargs ls -lF | grep "\*$" | tr -s ' ' ' ' | cut -d ' ' -f 5,9 | sort -n | tail -5
__________________
Tommy: signor o'neill...
Micky: cazzo parli? kama micky
Tommy:come va?
Micky: beh dazza ci pai ma cavalli, sai...[...] porcocul! cicco zisiloi! sei grosso! hey babbuzzi:pazo grosso!
stavo provando a migliorare uno degli spript proposti, per esercizio
ma non riesco a fare una cosuccia
come faccio ad estrarre da un risultato ls -l (in un ciclo for, quindi con un sola "riga" per volta" la 5 e la 9 colonna? (dimensione e nome file)?
con un cut -f 5,9 non funziona
il delimitatore non dovrebbe essere di default la tabulazione? se non è, come faccio a settarlo
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by Assochespasso
Okkio che così trovi anche tutte le cartelle e file nascosti ( del tipo .cartella o .file).
Ho fatto uno script simile al tuo, escludendo cartelle e file nascosti:
find / -type f -name *.* | tr -s '/' ' ' | rev | cut -d ' ' -f 1 | rev | grep -v "^\." | rev | cut -d '.' -f 1 -s | rev | sort | uniq -c
find / -type f -name *.* cerco tutti i file che contengono un punto nel nome del file (i file trovati sono completi di path ad es. /root/prova/file)
tr -s '/' ' ' spazi al posto di /
rev stampo il nome del file al contrario
cut -d ' ' -f 1 estraggo il primo campo (è il nome del file al contrario). In questo modo ho il nome del file senza path
rev ristampo il nome del file "dritto"
grep -v "^\." escludo tutti i file che INIZIANO con un punto (sono quelli nascosti)
rev non lo ripeto più
cut -d '.' -f 1 -s estraggo il primo campo. Così ho l'estensione del file
rev
sort ordino le estensioni in ordine alfabetico, così posso eliminare le ripetizioni con uniq
uniq -c per ogni estensione ho il numero di ripetizioni
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by mjfan80
stavo provando a migliorare uno degli spript proposti, per esercizio
ma non riesco a fare una cosuccia
come faccio ad estrarre da un risultato ls -l (in un ciclo for, quindi con un sola "riga" per volta" la 5 e la 9 colonna? (dimensione e nome file)?
con un cut -f 5,9 non funziona
il delimitatore non dovrebbe essere di default la tabulazione? se non è, come faccio a settarlo
__________________
Tommy: signor o'neill...
Micky: cazzo parli? kama micky
Tommy:come va?
Micky: beh dazza ci pai ma cavalli, sai...[...] porcocul! cicco zisiloi! sei grosso! hey babbuzzi:pazo grosso!
Originally posted by Babbuzzo
Il comando rev esiste in Minix :p [/B]
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
oddio
sono in panico
stamane provo a fare alcuni esercizi già fatti in passato....
ho minix con l'immagini "perEsame.cqow"
faccio questo esercizio
Archiviare tutti i file che contengono la parola "login"
find / -type f | xargs grep -l "login" | xargs tar -cvf archivio.tar
ma mi da errore (che prima non mi dava)
grep: line too long - truncated
Che significa?
provo ad eliminare la parte di archiviazione, qundi
find / -type f | xargs grep -l "login"
trova e stampa a schermo 5 righe e poi riparte con l'errore
perchè prima non mi dava questo errore?
cosa dovrei fare?
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by mjfan80
oddio
sono in panico
stamane provo a fare alcuni esercizi già fatti in passato....
ho minix con l'immagini "perEsame.cqow"
faccio questo esercizio
Archiviare tutti i file che contengono la parola "login"
find / -type f | xargs grep -l "login" | xargs tar -cvf archivio.tar
ma mi da errore (che prima non mi dava)
grep: line too long - truncated
Che significa?
provo ad eliminare la parte di archiviazione, qundi
find / -type f | xargs grep -l "login"
trova e stampa a schermo 5 righe e poi riparte con l'errore
perchè prima non mi dava questo errore?
cosa dovrei fare?
__________________
Poca osservazione e molto ragionamento portano all’errore,
molta osservazione e poco ragionamento conducono alla verità
Copiare tutti i file da una cartella ad una nuova mantenendo inalterati gli attributi prevede anche di prendere file che iniziano per una lettera specifica e di copiare anche tutto il path dei file nella nuova cartella
Originally posted by n3o
Sappi che (ovviamente) in Linux la cosa è mooooooolto semplice [B]cp -p --parents * dir
In Minix non ho trovato qualcosa del genere...mi sono inventato uno script:
code:
0) #!/bin/sh 1) NEWPATH="/dir2" 2) for SUBDIR in $(pwd | tr '/' ' '); do 3) mkdir ${NEWPATH}/${SUBDIR} 4) NEWPATH=${NEWPATH}/${SUBDIR} 5) done 6) for FILE in $(ls); do 7) cp -p ${FILE} ${NEWPATH}/${FILE} 8) done
code:
#!/bin/sh #uso <nomesctipt> directory_destinazione lettera DESTINAZIONE=$1 LETTERA=$2 for SUBDIR in $(pwd | tr '/' ' '); do mkdir $DESTINAZIONE/$SUBDIR echo "mkdir $DESTINAZIONE/$SUBDIR" DESTINAZIONE=$DESTINAZIONE/$SUBDIR echo "DESTINAZIONE=$DESTINAZIONE" done for FILE in $(ls | grep "^$LETTERA"); do cp $FILE $DESTINAZIONE echo "cp $FILE $DESTINAZIONE" done
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by bill76
Io l'ho fatto senza problemi.
1) Prova bene a ricontrollare bene il comando e gli spazi
2) Prova a ricreare il disco virtuale etc etc
3) Don' t Panic
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
In realtà neanche perEsame.qcow è la versione che ci sarà all'esame.
Non so quale usino, non l'hanno messa sul sito, non corrisponde a nessuna.
Vi consiglio di imparare ad usare bene elvis, perchè vim ed elle hanno comportamenti diversi, praticamente sono inutilizzabili e i prof di certo non ti aiutano.
io di solito uso mined, non dovrebbe essere il "predefinito" di minex3?
cmq imparerò anche elvis, che palle
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by mjfan80
allora
fino a due giorni fa mi andava il comando... perchè sino a ieri usavo l'immagini minix3.qcow
da ieri ho iniziato ad usare perEsame.qcow, perchè mi pareva di aver letto qui che all'esame ci si trova esattamente quella
rifatto ora
con minix3.qcow non ho problemi
con perEsame.qcow invece crea quel problema
perchè? ci sono magari nome file troppo lunghi in perEsame.qcow?
e indipendetnemente dal perchè, se è davvero cio che ci troviamo all'esame, come facciamo ad usare il grep?
non crea sempre problemi, con alcuni funziona (tipo il mio script di prima, che cerca solo in determinate directory e poi fa il grep)
ma se dobbiamo fare un grep su tutti i file che si fa???
dopo provo a fare quell'esercizio e ti dico
cmq con il grep senza l'opzione -i dovrebbe essere CASE SENSITIVE
quindi se tu fai grep -i "copyright" dovresti fare la ricerca in maniera non case sensitive come richiesto
ma all'esame potremo usare mined?
io fino ad ora ho usato quello
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by mjfan80
dopo provo a fare quell'esercizio e ti dico
cmq con il grep senza l'opzione -i dovrebbe essere CASE SENSITIVE
quindi se tu fai grep -i "copyright" dovresti fare la ricerca in maniera non case sensitive come richiesto
ma all'esame potremo usare mined?
io fino ad ora ho usato quello
Originally posted by plafo
non so quale sia quella che si usa all'esame ma il tuo stesso problema l'ho avuto durante l'esame!!!!
avevo un esercizio simile al tuo dove dovevo cercare la parola copyright all'interno dei file e mi ha dato lo stesso errore che hai segnalato mentre a casa funzionava. Ora provo anch'io a scaricare perEsame.qcow e vediamo che viene fuori.
Domanda:
-calcolare la somma della dimensione dei file eseguibili che hanno all'interno la parola copyright non sensitive.
Come faccio ad effettuare una ricerca in modo non sensitive oppure al contrario sensitive?
Grazie
__________________
Poca osservazione e molto ragionamento portano all’errore,
molta osservazione e poco ragionamento conducono alla verità
per ecercare un eseguibile (però è stato detto più volte) fai così
code:
find / -type f | xargs ls -lF | tr -s ' ' ' ' | cut -d ' ' -f 5,9 | grep "\*$"
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by mjfan80
con man rev non succede nulla
e nemmeno cercando sul sito di minix tra le man
http://www.minix3.org/manpages/
rev non esiste
__________________
Tommy: signor o'neill...
Micky: cazzo parli? kama micky
Tommy:come va?
Micky: beh dazza ci pai ma cavalli, sai...[...] porcocul! cicco zisiloi! sei grosso! hey babbuzzi:pazo grosso!
Originally posted by plafo
Domanda:
-calcolare la somma della dimensione dei file eseguibili che hanno all'interno la parola copyright non sensitive.
Grazie
code:
1 #!/bin/sh 2 for ESEG in $(find / -type f | xargs ls -lF | tr -s ' ' : | cut -d : -f 5,9 | grep "\*$"); do 3 PROG=$(echo $ESEG | cut -d : -f 2) 4 SIZE=$(echo $ESEG | cut -d : -f 1) 5 if grep -is copyright $PROC: then 6 SUM=$(exec $SUM + SIZE) 7 fi 8 done 9 echo "somma degli eseguibili con l'occorrenza di parola copyright = $SUM KB"
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
for vs while
leggendo nelle pagine precedenti di problemi con l'utilizzo di for (in caso di ciclo su tanti file può andare in out of space) ho provato a "convertire" i vari script fatti introducendo while ma non mi è molto chiaro il funzionamento:
ad esempio....
for FILE in $(find / -type f -size +10 | xargs du -s); do
echo $FILE
done
come potrebbe essere tradotto utilizzando il while????
grazie
Originally posted by Assochespasso
Okkio che così trovi anche tutte le cartelle e file nascosti ( del tipo .cartella o .file).
Ho fatto uno script simile al tuo, escludendo cartelle e file nascosti:
find / -type f -name *.* | tr -s '/' ' ' | rev | cut -d ' ' -f 1 | rev | grep -v "^\." | rev | cut -d '.' -f 1 -s | rev | sort | uniq -c
find / -type f -name *.* cerco tutti i file che contengono un punto nel nome del file (i file trovati sono completi di path ad es. /root/prova/file)
tr -s '/' ' ' spazi al posto di /
rev stampo il nome del file al contrario
cut -d ' ' -f 1 estraggo il primo campo (è il nome del file al contrario). In questo modo ho il nome del file senza path
rev ristampo il nome del file "dritto"
grep -v "^\." escludo tutti i file che INIZIANO con un punto (sono quelli nascosti)
rev non lo ripeto più
cut -d '.' -f 1 -s estraggo il primo campo. Così ho l'estensione del file
rev
sort ordino le estensioni in ordine alfabetico, così posso eliminare le ripetizioni con uniq
uniq -c per ogni estensione ho il numero di ripetizioni
code:
#!/bin/sh find / -type f | rev | cut -d / -f 1 | rev | grep -v "^\." | grep "\." | rev | cut -d '.' -f 1 | sort | uniq –c >> temp.txt echo "queste sono le estensioni del sistema e il numero di file ad esse associate:" cat temp.txt echo "nel sistema ci sono $(wc -l temp.txt | tr - s ' ' : | grep -d : -f 2) estensioni" rm temp.txt
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
scusate la mia ignoranza..
perchè mai un ciclo for semplicissimo tipo:
for ((I=0; I<10; I++));do
echo "ciao"
done
da il seguente errore:
Syntax error: Bad for loop variable
forse perchè uso sh e non bash?
minix all'esame cosa ha?sh o bash?
grazie
perchè il for non si fa così, che io sappia
ma for i in lista
do
done
ho detto una cazzata, scusate
con (( )) si può usare anche una sintassi così proposta
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Ciao A Tutti...
C'è qualche bravissima simpaticissima intelligentissima persona che mi puo spigare bene come si fa ad aggiungere 10 utenti da file.
il file che viene passato contiene solo nomi oppure è della forma di etc/passwd ??
i dati passati oltre a modificare etc/passwd , dove mettono la password ? in etc/shadow?
perchè se apro etc/shadow con elle oppure elvis non c'è dentro nulla?
vi sarei immensamente grato se mi rispondete....
GRazie mille a tutti cmq per questo thread..
ciao ciao
lo script è ben proposto qualche post indietro
il file contiene questo
nomeutente gruppo directory home
esattamente quello che va passato a "adduser", che fa tutto lui, cioè aggiorna lui sia /etc/passwd sia /etc/shadow
(posto ovviamente che l gruppo esista)
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Grazieee mille mi metto al lavoro per provare hiihh
Qualcuno può postare le domende di laboratorio fatte a Settembre?
Grazie mille
__________________
Poca osservazione e molto ragionamento portano all’errore,
molta osservazione e poco ragionamento conducono alla verità
ho provato a fgare l'esercizio di
"per ogni utente trova l'occupazione in memoria" usando il while al posto del for, per il find
ma non mi va, o meglio, va, ma l'output no
code:
#!/bin/sh for UID in $(cut /etc/passwd -d : -f 3); do echo "sto calcolando lo spazio per l'utente $UID" SUM=0 find / -type f -user $UID | while read FILE; do echo "file = $FILE" SIZE=$(ls -l $FILE | tr -s ' ' ' ' | cut -d ' ' -f 5) echo "SIZE=$SIZE" SUM=$(expr $SUM + $SIZE) echo "sum = $SUM" done echo "l'utente $UID occupa in totale $SUM Kb" echo "size = $SIZE sum= $SUM" done
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
scusate..
sto cercando di risolvere il problema "out of space" dei cicli FOR
usando while,il problema è che il sistema sembra dimenticare il contenuto delle variabili che vengono usate appena si esce da ciclo
nel seguente script (calcola lo spazio occupato dall'utente root) il valore della variabile TEMP alla fine è sempre 0.
TEMP=0
find ./ -type f -user root|xargs du|cut -f 1|while read FILE
do
TEMP='expr $TEMP \+ $FILE'
done
echo "occupazione utente root : $TEMP"
qualcuno sa aiutarmi?
ho paura che domani mi prendo una denuncia per aggressione..
mi sono appena accorto che non sono il solo ad avere questo problema
infatti, stesso problema, ho provato a sostiruire i cicli for con i while
loro funzionano... quelli che non devono "restituire" parametri vanno (come quello per aggiungere utenti)
e all'interno del ciclo i calcli funzionano (se vedi io prima con degli echo di controllo li faccio stampare a schermo, se li provi, vedi che alla fine dei cicli while, i valori sarebbero corretti
ma fuori dal ciclo... bhum, scompaiono
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
anch'io ho lo stesso problema e sto cercando una soluzione!
mi aggrego al vostro problema...
Non è che bisogna usare in qualche modo particolare expr ??
ovvero : io expr l'ho visto usare :
SUM=$(expr $i+$c)
oppure
SUM='expr $i+$c'
oppure
SUM=[expr ${i}+${c}]
.
.
.
sono modi diversi per fare la stessa cosa oppure hanno un significato preciso??
grazie e ciaooo
no bullet
expr va, se fai girare il mio script te ne accorgi, la somma funziona, e stampa ogni volta una somma incrementale, quindi funziona... soloc eh fuori dal while torna a valere zero
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Come a me...Stessa cosa ... è come se le inizializza a zero quando finisce il ciclo...ke nervossoooooo....
ho scoperto una cosa :
sto facendo lo script per trovare per ogni utente l'ocupazione in kb
#!/bin/sh
SUM=0
(cat /etc/passwd | cut -d : -f 3 |sort -n |uniq) |wile read id ;do
(find / -type f -user $id | xargs du | cut -f 1) | while read Sz ; do
SUM=$(expr $SUM + $ Sz)
done
echo " user $id spazio :$Sz"
done
ho scoperto questo: se cambio il valore a cui inizializzo SUM cambia pure il valore di uscita dal while ovvere mette il valore ke uso per inizializzare.
ho scritto a monga peravere dei chiarimenti sul while...
se scoprite qualcosa scriveteeeeee...
nell'echo non $Sz ma $SUM
Originally posted by Liumberg
scusate..
sto cercando di risolvere il problema "out of space" dei cicli FOR
usando while,il problema è che il sistema sembra dimenticare il contenuto delle variabili che vengono usate appena si esce da ciclo
nel seguente script (calcola lo spazio occupato dall'utente root) il valore della variabile TEMP alla fine è sempre 0.
TEMP=0
find ./ -type f -user root|xargs du|cut -f 1|while read FILE
do
TEMP='expr $TEMP \+ $FILE'
done
echo "occupazione utente root : $TEMP"
qualcuno sa aiutarmi?
ho paura che domani mi prendo una denuncia per aggressione..
Anche a me funziona tutto se uso il for
ma alle volte il for ti può dare problemi di out of space che il while nn da.... misteri di minix
il problema è la localizzazione delle variabili.
la variabile TEMP esterna al ciclo di while non è la stessa TEMP all'interno del ciclo.
Infatti se metti una echo nel ciclo il TEMP viene valorizzato correttamente.
Si può, non molto elegantemente, risolver usando il filesystem così:
#!/bin/sh
somma=0
find / -type f -user 0 -exec ls -s {} \; | cut -f 1 -d " "|while read FILE
do
somma=$(expr $somma + $FILE)
echo $somma > ./tmp
done;
somma=$(cat ./tmp)
rm ./tmp
echo La somma dei file di root è: $somma
quindi quando uso il while e modifico una variabile dichiarata all'esterno di esso il valore modificato vale solo all'interno del while
giusto??
Grazie
ciaoo ciao
esatto.
ma come mai il while si comporta quasi come se fosse una funzione (quindi con le proprie variabili interne?
se non arrivavi tu a dircelo, di questo comportamento (avremmo potutto capirlo e quindi usar comunque il file, ma insomma) dovre avremmo dovuto impararlo?
è così con linux normalmente o solo minix?
mi sa che prima proverò con i for e se creano problemi faro questi while + file
(un po' la soluzione che avevo usato in uno script un po' indietro)
domanda forse stupida, perchè il file è ./temp e non semplicemente temp?
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Originally posted by zonker
[...]
#!/bin/sh
somma=0
find / -type f -user 0 -exec ls -s {} \; | cut -f 1 -d " "|while read FILE
do
somma=$(expr $somma + $FILE)
echo $somma > ./tmp
done;
somma=$(cat ./tmp)
rm ./tmp
echo La somma dei file di root è: $somma
Non so dirti se sia un comportamento solo di Minix o anche di Linux ne se sia mai stato trattato l'argomento a lezione (ho smesso di seguire Trentini dopo la seconda lezione), ci sono arrivato per deduzione. Credo che più che per un discorso di localizzazione del ciclo di while il problema sia più strettamente legato al fatto che il while viene eseguito tramite un pipe e quindi il processo è parallelo a quello in cui viene eseguito lo script.
uso ./tmp anzichè solo tmp perchè lo trovo più corretto ma funziona ugualmente.
Quanto invece al "No such file or directory" per gli utenti che non hanno files lo si risolve molto facilmente inserendo una riga:
echo 0 > ./tmp
tra la riga somma=0 e la riga find ....
Grazie a tutti per gli uttilissimi consigli e esercizi di questo thread!
passato, 24
media con il 28 delal parte teoria
un bel 26 e ho finito gli esami
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
Ottimo, passato anche io...30 media con il 28 della teoria direi 29 a meno che Bruschi non volgia regalarmi un punticino. Non ero iscritto al SIFA e non ho potuto verbalizzare.
Come è andato agli altri? Putroppo non vi conosco per nome e non so associare il vostro nick al viso delle persone conosciute questa mattina. Io sono il ragazzo con la giacca da moto in pelle e il casco nero.
io l'ho fatto tra i primi quando era appena arrivato trentini, è andata bene ho preso 24 ma non ho fatto l'ultima parte. verbalizzato e via!
grazie a tutti quelli che hanno contribuito a questo fondamentale thread
5 ore di attesa..esercizio dato e corretto da Trentini..24.
grazie a tutti voi..senza questo forum non l'avrei mai passato.
p.s. tutte le cose brutte che si dicono su Trentini..sono vere.
p.p.s. complimenti ai docenti per le capacità organizzative non comuni,
a volte mi chiedo se siano stati studenti anche loro.
nuove domande raccolte oggi:
trovare i 10 file più vecchi del sistema e indicare di chi sono
trovare i 3 utenti con meno file
trovare i 3 utenti con i file più pesanti
trovare la media della grandezza dei file dei 3 utenti coi file più pesanti
Trentini oggi si è sbizzarrito: praticamente ogni esercizio era poi da "far ripetere ogni venerdì alle 17"...è solo da modificare il file /etc/crontab, per vedere la sintassi inutile fare man crontab, voci di corridoio dicono man 5 crontab (che non visualizza il man vero e proprio ma la descrizione del file)
passato con 23
Monga (e sottolineo MONGA...leggasi NON TRENTINI) non è troppo fiscale sugli script, l'importante è che si dimostri di aver capito le cose e di sapersela cavare coi vari comandi...anche se poi il programma è sbagliato non si viene mandati a casa...
Trentini è tutta un'altra storia ovviamente...
Confermo che Monga è stato molto disponibile(avevo dei problemi con il partiozionamento e mi ha fatto rialogare 3 volte)!
atrent
Concordo perfettamente!
A me Trentini ha chiesto di fare la media della dimensione dei file per ogni f**tuto utente, mentre, al mio amico che ha sabotato l'elenco degli iscritti, ha chiesto di trovare per ogni f*t*uto utente il processo (NON IL FILE!!!!) più grande a lui appartenente sempre da eseguire tutti i venerdì alle 17.
P.S.: Ragazzi, parliamone...
andate su questo sito e leggete gli hobbies di Trentini....
www.atrent.it/wiki/doku.php
P.p.s.: pessima organizzazione....
Non ne posssoooo piùùùùùùùùùùùùùùùùùùùùùùù.... Basta! Rischio di rifare tutto a giungo un'altra volta
Beh la media dei file può essere più difficile come esercizio, ma il processo più grosso in esecuzione per ogni utente non è così complicato:
fai un ciclo di for su passwd per estrarre la lista degli utenti all'interno del ciclo fai un ps in pipe con grep per trovare i processi dell'utente il tutto in pipe con cut per estrarre la dimensione del processo il tutto in pipe con sort -n per metterli in ordine di dimensione il tutto in pipe con tail -n 1 per estrarre solo il più grande.
Ragazzi passato anke io finalmente!!! con 21 ma va bene lo stesso! il mio esercizio era: Trovare i 3 utenti con la dimensione dei file piu grande e farlo eseguire ogni domenica alle 18.. ovviamente dato da Trentini.. tralasciando l'ultima parte me la sono cavicchiata nella prima anke se alla fine lo script non era completamente giusto MONGA mi ha detto ke andava bene! e mi ha dato il 21! tremo ancora se penso ke stava venendo trentini a corregermelo!!! Viva Monga
Stavolta mi è andata di gran lusso, dovevo solo trovare il processo per ogni utente che occupava più spazio in memoria.... Ovviamente Monga.
Quelli che dava Trentini erano clamorosi... (visto il blog, ma chi è questo? e soprattutto lo pagano per scrivere queste bestialità?)
Anche se cmq Trentini con me è stato bravo mi ha fatto rilogare 2 volte perchè lo script non funzionava bene anche se concettualmente era giusto.
Da segnalare che è andato in panico quando Monga è andato a farsi un giro e la chicca: "ma come si partiziona in windows?".
"Ma come NON LO SAI??"
Un grazie anche da parte mia con chi ha collaborato e contribuito ad accrescere questo 3d, praticamente l'unica fonte di studio per i non frequentanti
A qualcuno che deve dare ancora il lab interessa, formare un mini gruppo per incontrarci 2/3 volte prima dell'esame per fare un pò di esercizi?
utenti
ciao gente, potete fare lo scriptino per trovare per ogni utente il processo in esecuzione che occupa maggior spazio in memoria???
Ho visto che c'è per la dimensione dei file ma non sono riuscito per i processi.
help.
Grazie.
Soprattutto, qualcuno ha qualche sito o manuale da consigliarmi per esercizi minix?
Grazie ancora.
All times are GMT. The time now is 00:53. | Pages (4): « 1 [2] 3 4 » Show all 571 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.