.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Sistemi operativi I (http://www.dsy.it/forum/forumdisplay.php?forumid=269)
-- aiuto su alcuni es di lab (http://www.dsy.it/forum/showthread.php?threadid=37660)


Posted by elex1984 on 08-02-2009 18:21:

aiuto su alcuni es di lab

Ciao a tutti,
c'è qualuno che mi può dire come si fanno questi esercizi???
1) Trovare tutti i file che contegono la parola login e copiarli in una nuova direcotory.
Ah sapete dirmi se c'è un comando che mi fa vedere tutte le directory?
2)Trovare i 10 file che sono stati modificati più di recente (mi hanno detto che si fa con stat ma come??)
3) trovare tutti i file e mostrarli tutti tranne il primo (ok con il tail ma come??)
SCUSATE SO CHE SONO ESERCIZI BANALI MA NON SO RISOLVERLI...
Spero che qualuno mi dica qualcosa... ciao ciao


Posted by elex1984 on 09-02-2009 18:35:

Re: aiuto su alcuni es di lab

Nessuno mi da una mano??? :-(


Posted by nsajuve on 11-02-2009 17:20:

Re: aiuto su alcuni es di lab

Originally posted by elex1984
Ciao a tutti,
c'è qualuno che mi può dire come si fanno questi esercizi???
1) Trovare tutti i file che contegono la parola login e copiarli in una nuova direcotory.

Questo l'ho fatto cosi :

#salvo i nomi dei files che contengono login in un file di testo

find / -type f | xargs grap -l "login" >>listafiles.txt

# creo il nuovo dir

mkdir dir2/

#leggo riga per riga il file di testo e copio i files che corrispondo a quel path

for file in $(cat files.txt) ; do

cp $file ... dir2/ ;

done

exit

#mi da un errore ma quando vado a controllare il dir2 , contiene tutti i files .
la lista dei files , la puoi vedere faccendo " cat listafiles.txt | more "




Ah sapete dirmi se c'è un comando che mi fa vedere tutte le directory?
questo , tranne ls non so altro

2)Trovare i 10 file che sono stati modificati più di recente (mi hanno detto che si fa con stat ma come??)
questo nel man di stat, c'è una opzione che si chiama mstat ( modfication status presumo ! )

e poi c'è un esempio di come usarla :

stat -mtime * | sort +1
che dovrebbe elencare i file, con il tempo della modifica, ma ho provato e non funziona....
3) trovare tutti i file e mostrarli tutti tranne il primo (ok con il tail ma come??)


questo lo risolvi cosi :

ls -a | sort -n | tail +2 # qua usi il 2 , perché deve cominciare a stampare la lista , partendo dal secondo elemento


spero di essere stato utile, se hai qualche domanda chiedi, anch'io devo fare quest'esame il 19. in bocca al lupo!
SCUSATE SO CHE SONO ESERCIZI BANALI MA NON SO RISOLVERLI...
Spero che qualuno mi dica qualcosa... ciao ciao


Posted by elex1984 on 11-02-2009 20:33:

ciao grazie mille... troppo gentile... e si mi tocca fare ancora il lab e pure scritto e orale... speriamo in bene...


Posted by elex1984 on 11-02-2009 20:42:

dimenticavo crepi il lupo :-)


Posted by nsajuve on 11-02-2009 22:41:

ciao, credo di aver trovato qualcosa ; anche se non è completo

ti posto la mia soluzione...

allora con ls | stat -mtime | sort -n non mi da tutti i file

allora ho pensato di farlo con find :


find / -type f | xargs stat -Mtime

ma ripeto NON FA IL SORT CON LE DATE DELLA MODIFICA

e non so come farlo , se c'è qualcuno che ha una idea, postate perfavore.


ciao


Posted by elex1984 on 13-02-2009 18:07:

scusa ma nell'es 1
quando mi scrivi cp $file ... dir2/

ma i ... cosa centrano??? cosa dovrei scrivere o è proprio così???


Posted by mapenzi81 on 13-02-2009 21:33:

l'unica è fare uno scriptino

#!/bin/sh
echo "elenco file modificati" > modify
for FILE in $(find / -type f);do
MOD=$(stat -atime $FILE)
echo "$MOD;$FILE" >> modify
done
sort -r -t';' modify | head -10

__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.

Dave Edison


Posted by miguel on 14-02-2009 11:18:

find /* -type file | xargs ls -l -t | head -10

fate un po di test... ma sembra funzionare per gli ultimi 10 file modificati


Posted by nsajuve on 14-02-2009 20:07:

era cosi semplice, e io come mi aveva indicato elex , pensavo che va risolto con stat! grazie miguel ...

:)) non ci posso creder , ho cercato per 2 giorni di farlo con stat


Posted by elex1984 on 14-02-2009 20:17:

Ciao, io avevo scritto stat xkè mi avevano detto si rislve con stat (ma non sapevo :-)) senti nasajuve come mai nel primo esercizio hai scritto cp $file ... dir2/
non riesco a capire i puntini cosa significano.. me lo puoi dire?? o devi scrivere qualcosa al posto dei ...?? grazie.


Posted by nsajuve on 15-02-2009 11:00:

ciao, elex.
... l'ho trovato nel manuale di cp, c'è scritto :


cp file ... dir

quindi per copiare deil file in un dir , bisogna mettere ... .


ciaoe ;)


Posted by elex1984 on 15-02-2009 11:58:

Ah ok.. grazie mille molto gentile :-) ciao ciao


Posted by miguel on 15-02-2009 14:00:

il primo es :

# creo dir ... mentre in root : mkdir miguel

# for i in $(find / -type f -exec -l grep "login" {} \; ) ; do cp "$i" /root/miguel; done;

a me funziona, pero il
find -type f -exec -l grep "login" {} \;
da un messaggio:
grep line too long : truncated

e nn dovrebbe in quanto grep prende uno a uno i file da find..

qualcuno ha qualce idea?
avete questo problema anche voi?

(pure find / -type f | xargs grap -l "login" mi da lo stesso mssg)


Posted by miguel on 15-02-2009 14:01:

# for i in $(find / -type f -exec -l grep "login" {} \; ) ; do cp "$i" /root/miguel; done;


Posted by mapenzi81 on 15-02-2009 17:16:

Originally posted by miguel
find /* -type file | xargs ls -l -t | head -10

fate un po di test... ma sembra funzionare per gli ultimi 10 file modificati


il problema è che facendo cosi i file nn vengono ordinati
come fai ad essere certo che i 10 file stampati siano i piu vecchi?

__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.

Dave Edison


Posted by miguel on 15-02-2009 20:13:

vedi in man ... ls -t

sort by time(modified time default), latest first.
cioè.. ordina mettendo in testa il piu recentemente modificato


io ho un altro dubbio.. non so se xargs va bene per l'ordinamento in quanto sappiamo che contiene l'output di find, una lista.. e se l'output è grosso.. xargs lo divide in piu sublists.. e spero ls -t sappia gestire le varie sublist.
dai test sembra funzionare..


Posted by mapenzi81 on 15-02-2009 21:19:

ok conosco il comando....

ma dal risultato della find, riga per riga (usi xargs) va in pasto a ls -l...che ti stampa il file e lo ordina solo cn se stesso...non con tutti i file

__________________
Sto cercando disperatamente di capire perché i piloti kamikaze si mettessero i caschi in testa.

Dave Edison


Posted by miguel on 16-02-2009 07:25:

capisco..

comunque l'output mi da i file recentemente modificati nell'ordine giusta. A sto punto ls sembra prendere i blocchi xargs e visualizzarli ordinatamente con -t.


Posted by elex1984 on 16-02-2009 10:37:

Scusate sempre nel primo esercizio...
faccio tutto quello che devo fare ma poi come faccio a verifiacare se nella nuova directory ci sono i file??? esempio creo elena come faccio a enrare???

Altro esercizio copiare i file che inizinano per f e metterli in un'altra directory senza cambiare i permessi???


Posted by nsajuve on 16-02-2009 10:48:

for i in $(find / -type f -name "f*" ) ; do cp -p "$i" /root/dir2; done


Posted by nsajuve on 16-02-2009 10:49:

per verificare se ci sono i file :

o fai : ls /dir2 | more

o ti sposti sul dir 2 : cd dir2

e poi fai ls | more


Posted by elex1984 on 16-02-2009 12:38:

grazie mille :-)


Posted by elex1984 on 16-02-2009 13:36:

Ciao un altro es che ho trovato è: per ogni utente del sistema stampare i gruppi a cui appartiene, senza utilizzare i comandi id e groups

qualcuno l'ha risolto così:
for x in $(cat /etc/passwd |cut -d ':' -f 1); do echo "$x: ""$(for y in $(cat /etc/group|grep -s $(cat /etc/passwd|grep -s "$x"|cut -d ':' -f 3)|cut -d ':' -f 1);do echo -n "$y ";done)";done

me lo potete spiegare? se c'è modo più semplice me lo dite??


Posted by elex1984 on 16-02-2009 15:18:

Altro quesito:
so che se devo archiviare con ar uso
ar cr archivio.ar
Invece se devo usare tar
tar -cvf archivio.tar

SE DEVO ARCHVIARE file .gz? cosa si usa?


Posted by nsajuve on 16-02-2009 20:21:

credo che sia : ---> compress


Posted by miguel on 17-02-2009 11:29:

scusate.. avrei bisogno di un aiutino. Per il partizionamento.. i cilindri possono essere del tipo:

inizio - fine
0 124
124 248
248 ....

o cosi?
0 124
125 248
249 ....


grazie mille


Posted by miguel on 17-02-2009 11:30:

poi se qualcuno sa come rendo bootable una partizione...
grazie ancora


Posted by elex1984 on 17-02-2009 11:47:

x miguel
ma per il partizionamento è più semplice segliere la partizione (minix, fat ecc) poi andare su base e premere m poi andare sulla dimensione e mettere il numero di kb che ti da il prof...


Posted by elex1984 on 17-02-2009 11:50:

NON SAPETER RISP A QUESTO???
per ogni utente del sistema stampare i gruppi a cui appartiene, senza utilizzare i comandi id e groups

qualcuno l'ha risolto così:
for x in $(cat /etc/passwd |cut -d ':' -f 1); do echo "$x: ""$(for y in $(cat /etc/group|grep -s $(cat /etc/passwd|grep -s "$x"|cut -d ':' -f 3)|cut -d ':' -f 1);do echo -n "$y ";done)";done

me lo potete spiegare? se c'è modo più semplice me lo dite??


Posted by miguel on 17-02-2009 12:38:

x i cilindri... incollo sotto una risposta:

Ragazzi io ho appena passato quest'esame...che fatica...era la quarta volta che lo davo.però un bel 30 l'ho preso.

vi voglio dare un consiglio se non è già stato detto.
Molti ragazzi sono stati bocciati alla partizione per un motivo stupido e spero di aiutarvi.
Ultimamente il monga guarda nella tabella delle partizioni anche se i cilindri sono giusti!
Il problema sorge quando andate a modificare una partizione già fatta da un studente precedente sullo stesso computer.
Se cambiate dimensione e tipo di partizione e poi schiacciate tasto m su base ciò potrebbe portare a cilindri sfasati(non segnalati come errori da minix) e a un'immediata bocciatura senza possibilità di repplica!

la soluzione è:

dopo aver cambiato dimensione e tipo della partizioni quando schiacciate m su base controllate i cilindri che siano allineati; se non lo sono schiacciate ancora m su base più volte finchè non si allineano!

per chi ne avesse bisogno i cilindri sono allineati quando per esempio i campi cyl sono
da 1 a 29 la prima partizione
da 30 a 55 la seconda
da 56 a 78 la terza e così via...

le persone bocciate invece avevano cilindri del tipo:
da 1 a 35 la prima partizione
da 30 a 55 la seconda
da 70 a 78 la terza e così via...

Spero di essere stato d'aiuto...e in bocca al lupo a tutti


############## facendo con "m" a me è uscito cosi:

inizio - fine
0 124
124 248
248 ....

pero nn so se è giusto.. nn mi ricordo le spiegazioni in classe.. ma mi sembra che dev'essere strettamente crescente...124-125


Posted by miguel on 17-02-2009 13:19:

x elex

for x in $(cat /etc/passwd |cut -d ':' -f 1); do echo "$x: ""$(for y in $(cat /etc/group|grep -s $(cat /etc/passwd|grep -s "$x"|cut -d ':' -f 3)|cut -d ':' -f 1);do echo -n "$y ";done)";done

prima cosa.. nella parentesi più interna, grep -s non da output.. ed è giusto perché nel man vienne specificato che non da output

a voi?


Posted by miguel on 17-02-2009 14:32:

poi.. la parentesi più interna da in output (..in teoria) una lista.. e grep non sa gestire questa lista.
(infatti da un errore .. a me dice che non puo aprire il secondo elemento della lista)

in piu.. se fai grep "0" lui lo trova anche nel gruppo driver cha ha il numero 10 ma nn centra niente con il gruppo operator (0)


nn sono esperto di 'ste cose dunque confermatemi pure voi..
a mio parere non funziona. almeno a me..
help me se sbaglio


Posted by miguel on 17-02-2009 15:32:

ho fatto una versione semplificata che utilizza solo gli uid e gid

for i in $(cat /etc/passwd | cut -d ':' -f 3); do echo "$i : $(cat /etc/passwd | cut -d ':' -f 3-4 | grep "^$i:" | cut -d ':' -f 2)";done;



sul mio pc tutti gli id che ho appartengono ad un solo gruppo..
non ho chiare le idee su questa cosa.. un id puo aggiungersi a piu gruppi? come?


Posted by vittorio on 18-02-2009 11:58:

scusate ragazzi a me lo scorso appello di lab è capitato il seguente esercizio: trovare tutti i file root che hanno dimensione tra 5 k e 100 k e che occupino un numero dispari di blocchi su disco e archiviarli in un arichivio ar. come cavolo si fa?!


Posted by miguel on 18-02-2009 13:01:

qual'è il rapporto blocco/kilo?


Posted by vittorio on 18-02-2009 13:23:

non lo so...


Posted by garfa84 on 18-02-2009 13:36:

Qualcuno sa come fare questo:

Copiare tutti i file sotto /usr che iniziano con la lettera c in /tmp conservando gerarchia e permessi.


Posted by vittorio on 18-02-2009 13:45:

credo su faccia così:

cp -p /directory/albero1/m* /directory/albero2


Posted by vittorio on 18-02-2009 13:47:

ops..

cp -p /directory/albero1/c* /directory/albero2

scusa l'errore :p


Posted by garfa84 on 18-02-2009 13:54:

ma così non so se ti copia i file anche di tutte le sottodir
a me trentini ha detto che si faceva
o facendo un archivio e scompattandolo dall'altra parte
o con un for
ma non ne sono venuto a capo di niente
:?


Posted by vittorio on 18-02-2009 13:58:

ummm, boh..io sapevo questo. ma nessuno sa come si risolve l'esercizio che ho postato io prima?


Posted by garfa84 on 18-02-2009 14:01:

quello dei blocchi dispari dovrebbe essere una cosa tipo:

#!/bin/sh
for FILE in $( find / -type f -size +10 -a -size -200 | xargs ls -l | tr -s " " : | cut -d : -f 5,8); do
BLOCCHI=$(echo $FILE | cut -d : -f 1)
DISPARI=$(echo $FILE | cut -d : -f 2)
if [ $BLOCCHI % 2 -eq 1 ]; then
ar rc archivio.ar $DISPARI
fi
done


ma non perchè ma mi dice
No space on root device :evil:


Posted by elex1984 on 18-02-2009 14:08:

scusa nell'es che hai appena fatto nel cut -d : -f 5,8

5 non è la colonna del PID??? o sbaglio???


Posted by garfa84 on 18-02-2009 14:20:

la colonna 5 è se elenchi con ps -axl

ma qui io ho fatto l'elenco dei file e mi guardandi mi sembra che la colonna 5 è quella della dimensione dei file


Posted by vittorio on 18-02-2009 14:21:

mmm mi ricordo che alla fine il prof mi disse che si doveva usare il comando "du" però tu non l'hai usato...che casino..


Posted by garfa84 on 18-02-2009 14:34:

Mi sa che hai ragione tu
forse:

#!/bin/sh
for FILE in $( find / -type f -size +10 -a -size -200 | xargs du ); do
BLOCCHI=$(echo $FILE | cut -d " " -f 1)
if [ $BLOCCHI % 2 -eq 1 ]; then
ar rc archivio.ar $FILE
fi
done


così non mi da problemi
come faccio a verificare contenuto ar?


Posted by vittorio on 18-02-2009 15:07:

non me lo ricordo...sto cercando qui il comando..


Posted by vittorio on 18-02-2009 15:16:

ecco!! allora per leggere un archivio tar il comando è Tar t archivio.tar quindi credo che per un archvio ar sia la stessa cosa più o meno


Posted by vittorio on 18-02-2009 15:20:

però non riesco a capire perchè il tuo script mi da errore di out of space. che du palleeeee


Posted by miguel on 18-02-2009 15:21:

a me nn trova blocchi dispari.

se i file hanno una dimensione in kb... e blocchi = file * 2, nn esistono blocchi di dim dispari


Posted by garfa84 on 18-02-2009 15:25:

nell'altro thread avevo letto che il for dava problemi di out of space ed era meglio il while.....però che palle non si capisce che bisogna usare!!!

infatti ma la dimensione dei blocchi che trova mi sembrano tutti pari perchè non crea l'archivio...quindi non entra mai nell'if!!!

Provaci tu perchè mo mi ripasso un po di teoria visto che c'è pure l'orale....
BASTAAAAAAAAAAAAAAAAAAA


Posted by garfa84 on 18-02-2009 15:28:

qualcuno sa come copiare tutti i file da /usr e sottodir in /tmp mentenendo gerarchia e permessi?

il prof mi ha detto che non si può fare con cp!!!


Posted by vittorio on 18-02-2009 15:45:

se non si può fare con cp allora non lo so


Posted by miguel on 18-02-2009 20:07:

Ho trovato questo... funziona bene.
copia struttura DIR e poi FILES.. cp -p mantiene permessi

Personalmente ho risolto anch'io tramite il seguente script (tipo di esercizio: copiare file che inziano con un certo pattern da un ramo del FS ad un altro, mantenendo la struttura delle dir):

--------

#!/usr/bin/sh
# uso: <nomescript> origine destinazione pattern

for i in $(find $1 -type d) # dir del ramo passato come arg 1
do
mkdir -p "$2/$i" # ricrea la struttura nel path passato come arg 2
done
for j in $(find $1 -type f -name "$3*") #i files da copiare
do
cp -p "$j" "$2/$j"
done


Posted by nsajuve on 19-02-2009 10:48:

elex1984 alla fine , sei riuscita a rispondere alla domanda sul xargs?

spero di avertelo detto giusto ;)

miguel tu invece cosa hai fatto!?


Posted by vittorio on 19-02-2009 13:01:

ho passato il lab con un bel 23 :D ora mi godo il relax di qualche giorno!!! Grazie ai tread e a quelli che mi hanno risposto e che mi sono stati vicini vicini :P


Posted by elex1984 on 19-02-2009 20:43:

x nsajuve
ciao, allora tu sei il mio vicino di oggi :-) si si era giusto quello che mi hai detto.. ancora grazie... mi ha dato 20... poi ho fatto l'orale 26.. tot 23... sono contentissima...

X tutti
grazie a tutti quelli che hanno risp a questo thred e anche grazie e voi che sono riuscita a passare l'esame :-)
a presto... :-)


All times are GMT. The time now is 03:33.
Show all 58 posts from this thread on one page

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