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)
Re: utenti
Originally posted by marcolino78
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.
Originally posted by n3o
pensate che in linux quel diavolo di programma per trovare i file eseguibili maggiori di 5k si risolve solo così:
find / -type f -size +5 -perm /111 o
find / -type f -size +5 -perm +111 (per versioni vecchie di find)
FINE!!! Ma il find del minix è uno scandalo
@NoWhereMan: buona la regexp, ma effettivamente non è da parte dei prof molto corretto farcele usare perchè non sono state spiegate!!!
Io sono convinto che l'esercizio incriminato loro sono convinti si possa fare con il find (ma in Minix non è vero! )
Originally posted by n3o
@imperator
Quando passwd richiede la password tu scrivila! è NORMALE che non si veda a video
Ottimo, ho modifica anche il mio post per sicurezza.
L'interpretazione dell'esercizio rimane libera, consiglio vivamente di chiedere spiegazioni più particolari al prof all'esame.
Per quanto riguarda tutti i casi di permesso, auguroni!
Ho trovato l'opzione -F di ls che stampa un asterisco dopo il nome di un file se esso è eseguibile !!!!!
Trovare tutti i files eseguibili > 5k e evidenziando i 5 più grandi SOLUZIONI DEFINITIVA TESTATA!
find / -type f -size +10 | xargs ls -lF | grep "\*$" | tr -s ' ' ' ' | cut -d ' ' -f 5,9 | sort -n | tail -5
Spiegazione:
1) find / -type f -size +10 => trova tutti i file di dimensione > 5KB (-size si riferisce a blocchi da 512 byte)
2) xargs ls -lF => per ogni file (riga del find) stampa le sue info estese mettendo un asterisco in fondo alla riga se esso è eseguibile
3) grep "\*$" => cerca quelle righe che hanno un asterisco (\*) prima della fine della riga ($)
4) tr -s ' ' ' ' => comprimi tutti gli spazi contigui in uno solo
5) cut -d ' ' -f 5,9 => estrai la 5^ e 9^ colonna separate da spazio (dimensione e nome file)
6) sort -n => ordina le righe numericamente (secondo la 1^ colonna per default, in questo caso la dimensione del file)
Ii passaggi 4 e 5 sono fondamentali, se no il sort non funziona bene!
7) tail -5 => estrai solo le ultime 5 righe (i file maggiori nel nostro caso)
Provate ogni singolo paso in successione per capire bene i passaggi e controllate con il man dei vari comandi il significato delle opzioni che ho usato.
Tranquilli, se capite questo capirete ogni altro esercizio!!!
Originally posted by n3o
Ehm, sono riuscito a farlo ma è decisamente complicato...
code:
#!/bin/sh SUM=0 for UID in $(cat /etc/passwd | cut -d : -f 3); do for PROCSIZE in $(ps alx | tr -s ' ' ' ' | cut -d ' ' -f 4,8 | grep "^$UID" | cut -d ' ' -f 2); do SUM=$(expr $SUM + $PROCSIZE) done echo "Utente $UID : $SUM KB di processi in memoria" SUM=0 done
ragazzi ma per passare sto benedetto esame oltra a saper partizionare, bisogna sapere usare bene i comandio find, grep, xargs,exec, tail, cut...o mi sbaglio???
Originally posted by Gehur
ragazzi ma per passare sto benedetto esame oltra a saper partizionare, bisogna sapere usare bene i comandio find, grep, xargs,exec, tail, cut...o mi sbaglio???
__________________
Heal The World
Just Because You Read It In A Magazine Or You See It On A Tv Scren Don't Make It Factual
mi metterò sotto allora, visto che parto da zero..
mi son letto tutto il thred...e posso dire che gli script mi fanno davvero paura...
il comando shell alla fine dovrebbe essere un insieme di 3, 4 funzioni max messe in pipe, ma lo script, cavoli mi sembra un gran casino,ad esempio come faccio a farlo ripete ogni vernerdi??
poi non ho capito bene la storia della bash, il find funziona in maniera diversa rispetto a casa??
un ultima cosa, come faccio a vedere le directory,se uso il comando ls non mi visualizza bin,usr ecc....
per prima domanda:vai sul file crontab e lo modifichi.
Fai man 5 crontab e ti dice come deve essere editato.
Comunque se vai sulla preparazione degli esami di Trentini c'è un esempio.
Il find funziona in maniera diversa non perche viene usata la bash ma perche tronca le stringhte(troppo lunghe perchè l'immagine usata per l'esame è piu grossa).
La soluzione è di ridirigere tutto su un file.
Ad esempio:
find / -name pippo -type f>prova.txt
cerca tutti i file che si chiamano pippo e salva su prova .txt
se poi ad esempio devi archiviarli fai:
xargs tar xvf $(cat prova.txt) prova.tar.
Così sei sicuro che i path non vengono troncati.
Se intendi sapere directory corrente il comando è pwd
be grazie per le risposte... + tardi vedo di provare
comunque non trovo che sia il massimo fare l'esame mischiati, alla fine il monga di script non ne parla nemmeno, ci ha fatto fare un paio di esercizi su schell e via..
il trentini invece basa il corso sugli script in pratica(almeno così mi sembra)
a me Monga ha chiesto sia gli script che esercizi da linea di comando..
a ok, resta il fatto che in laboratorio di script io non ne ho visti
me li vedrò a casa ovviamente
Ne fanno pochi nelle prime lezione di laboratorio,comunque sono riuscita a passare laboratorio esercitandomi con gli esercizi proposti qui.
Stai tranquillo che non è così difficile come dicono.
Ciao
ragazzi come si fa la somma dei file contenuti da 2 utenti oppure di 2 cartelle
e se ho un file con dentro una lista di numeri, come li posso sommare???
Non ho capito la domanda
allora volevo sapere come fare operazioni matematiche con i risultati ottenuti da comandi di shell
esempio:
dire quanto occupano i file dell'utente A e dell utente B, cioè trovo tutti i file dell'utente A e quelli dell'utente B, li conto ma come faccio a sommare i 2 risultati??
per la seconda,ad esempio, faccio la ricerca di tutti i file di A con le rispettive dimensioni e redirigo l'output dentro a file
adesso ho un file di testo con la lista delle dimensioni dei file
come posso sommare i numeri presenti all'interno del file??
grazie
metti la somma dell'utente1 in un file,la stessa cosa per l'utente2.
Dopodiche fai una cosa del tipo
SUM=$(expr $(cat utente1) + $(cat utente2))
echo "$SUM"
Per la seconda:
find / -type f -user pippo|xargs ls -l|awk {'print $5'}>prova
con questo comando selezioni solo le dimensioni di tutti i file di pippo e direzioni la lista su prova.
dopo di che con questo script dovresti trovarti la somma dei file
#!/bin/sh
SUM=0
for COUNT in $( cat prova|cut -f 1);do
SUM=$(expr $SUM + $COUNT)
done
echo "la somma e' $SUM"
Prova a vedere
Se ho capito bene dici di avere due file del tipo:
file1
2
4
6
8
file2
1
3
5
7
Ma secondo me ti conviene tenere tutto in un unico file; basta che fai l'append mettendo >> invece che >.
Quindi abiamo una cosa del tipo:
file
2
4
6
8
1
3
5
7
A questo punto fai:
code:
sum=0 #valore iniziale #Leggo una riga alla volta finchè non arrivo alla fine; e metto il contenuto della riga in tmp. cat file | while read tmp do sum=$(expr $sum + $tmp) #aggiungo a sum il contenuto di tmp. done echo $sum
__________________
by Ð@rk§h@ÐØw
Originally posted by darkshadow
Se ho capito bene dici di avere due file del tipo:
file1
2
4
6
8
file2
1
3
5
7
Ma secondo me ti conviene tenere tutto in un unico file; basta che fai l'append mettendo >> invece che >.
Quindi abiamo una cosa del tipo:
file
2
4
6
8
1
3
5
7
A questo punto fai:
code:
sum=0 #valore iniziale #Leggo una riga alla volta finchè non arrivo alla fine; e metto il contenuto della riga in tmp. cat file | while read tmp do sum=$(expr $sum + $tmp) #aggiungo a sum il contenuto di tmp. done echo $sum
grazie ragazzi proverò al + presto
ma durante la prova cos'è che devi dare a monga le istruzioni che fai o i risultati che ottieni con le operazioni che ti richiede?
Entrambi
comunque qui ci sono alcuni esercizi che non sono proprio giusti:
- archiviare i files più grandi di 5k e più piccoli di 100k:
find / -type f -size +10 -a -size -200 | xargs tar cvf archivio.tar
la size si setta in blocchi da 512 byte non diretamente in kb...
cercare tutte i file che contengono la parola login:
find / -type f | xargs grep -l "login" | xargs tar -cvf archivio.tar
questo da "grep: line too long - truncated" anche se il comando è corretto
Originally posted by Larios
comunque qui ci sono alcuni esercizi che non sono proprio giusti:
- archiviare i files più grandi di 5k e più piccoli di 100k:
find / -type f -size +10 -a -size -200 | xargs tar cvf archivio.tar
la size si setta in blocchi da 512 byte non diretamente in kb...
Originally posted by darkshadow
A questo punto fai:
code:
sum=0 #valore iniziale #Leggo una riga alla volta finchè non arrivo alla fine; e metto il contenuto della riga in tmp. cat file | while read tmp do sum=$(expr $sum + $tmp) #aggiungo a sum il contenuto di tmp. done echo $sum
sort su campi diveri
In una lezione di laboratorio di Monga era sorto il problema di ordinare con sort su più campi diversi (numerici, alfanumerici). Penso potrebbe servire per l'esame; l'ho fatto per la shell di Linux quindi è da adattare perchè funzioni in Minix
ps aux |head -n 1 >> finale;
ps aux |sort -dr -k 1|tail -n +2|sort -r > psef;
a=$(cat psef |head -n 1|tr ' ' ' '|cut -d ' ' -f 1);
cat psef > tmp
cat tmp|while read i;
do
cat psef|head -n 1 > riga
t=$(cat riga|tr ' ' ' '|cut -d ' ' -f 1);
if test $t = $a
then
cat riga >> appoggio;
else
cat appoggio|sort -n -k 5 >> finale;
cat riga > appoggio;
fi;
cat psef|tail -n +2 > psef
a=$t;
done
rm appoggio;
cat finale;
rm finale;
rm riga;
rm tmp;
exit 0;
qualcuno d voi sa come si archiviano i file cn ar? nell'ultima prova d'esame ha chiesto ke invece che archiviare cn tar, archiviare cn ar....
visto che questo thread mi è stato utile, scrivo anche io le domande che mi sono state fatte:
- shell: trovare i file eseguibili binari (non script shell) presenti sul sistema
- kernel: stampare il pid ogni volta che un processo muore
per quanto riguarda la prima domanda, non sono riuscito all'esame a trovare il modo di capire quali file sono binari e quali no, quindi ho fatto solo il resto e mi ha tolto 2 punti (alla fine ho preso 28 :razz
da quanto ho capito molti altri hanno avuto lo stesso problema, e la risposta di trentini è stata "cercate sui manuali, sono fatti apposta!"... ma se uno non sa cosa cercare difficilmente trova qualcosa.
Cmq a casa, avendo internet, in 5 minuti ho trovato il comando giusto che è file.
Il comando file restituisce una cosa del tipo:
nome_file: tipo_file
dove "tipo_file" è una stringa che rappresenta il tipo del file, ad esempio per gli eseguibili restituisce "MINIX 32 bit executable, sep I&D stripped" e per gli script di shell "shell script".
Quindi il comando completo è:
code:
find / -type f -perm -1 | xargs file | grep ' executable' | cut -f 1 -d :
code:
kprintf("%d", rc->p_nr);
ma per la parte kernel hai dovuto ricompilare??
poi non ho ben capito, la parte di shell sei riuscito a farla???
nella parte di shell la richiesta era "trovare i file eseguibili binari (non script shell) più grandi di 8k, presenti sul sistema" (la parte "più grandi di 8k" me l'ero scordata ieri, cmq ovviamente basta aggiungere un -size +16 al find). Quello che sono riuscito a fare io è trovare i file eseguibili più grandi di 8k presenti sul sistema, senza distinzione tra binari e script di shell... perché non conoscevo il comando file.
Trentini mi ha detto "va beh dai, se vuoi ti dò ancora un po' di tempo per cercare" e io gli ho risposto "è 20 minuti che cerco, non ho trovato niente, non penso di trovare qualcosa in 10 minuti"
Quindi mi fa "va beh dai, ti dò un OK-- in questa parte, che sarebbe 22", poi mi ha fatto fare la parte del kernel.
La parte kernel è andata bene e ovviamente ho dovuto ricompilare, quindi alla fine mi ha tolto 2 punti per la parte shell e mi ha messo 28
a ok ok, senti ne approfitto per chiederti una cosa, quando si fa la parte kernel bisogna sempre ricompilare immagino, ma si ricompila sempre allo stesso modo oppure varia in base alla richiesta??
se mi puoi anche scrivere i comandi mi faresti un piacere(in questo momento non ho voglia di cercare nel thread )
Ho trovato sul wiki del corso di laboratorio questo esercizio:
- quante dir hanno meno di 5 sottodir?
Voi come lo fareste?
allora ho visto che per scoprire se un file è una directory basta usare ls -p, in questo modo le directory vengono indicate con lo "/"
sicuramente bisogna fare un script, solo che adesso non saprei come controllare tutte le directory presenti
allora un metodo ci può essere
con un find si trovano tutte le directory, poi per ogni stringa che ti stampa a video si contano i numero di "/" presenti..se è minore di 5 incrementa contatore..
solo che adesso bisogna trovare un modo per contare gli "/"
allora ho scritto questo comando:
find / -type d | xargs tr '[a-z][A-Z]01234567890.-_' ''
in pratica cercami tutti i file directory e per ogni file trovato trasforma i vari caratteri scritti sopra in ''(cioè li cancello), in questo modo mi stampa a video una lista di /, adesso bisogna solo contare, se sai il modo e me lo dici
Io in parallelo stavo provando un'altra strada: visto che con il comando "ls -l" il secondo campo che viene restituito è il numero delle sottodirectory di una directory (compreso . e .. ) stavo cercando di stampare il numero ed il nome della directory.
Al momento sono riuscito ad impostarlo ma c'è ancora qualcosa da affinare...
Il find che eseguo è il seguente:
find / -type d -exec ls -ld {} \; | cut -f 2,12 -d " " | sort -n
Il risultato è ancora un po' confuso... ma spero di metterlo a posto
a cavoli non ci avevo fatto caso, la tua soluzione è meglio, non bisogna contare ma solo confrontare
ma perchè il cut fatto cosi cut -f 12 non funziona..
poi si potrebbe usare in qualche modo un grep[1234] per scegliere solo le righe che contengono meno di 5 directory, in ultimo basterebbe contare le righe e via, solo che non riesco a dusare sto grep
Ci siamo quasi... Mi manca "solo" da restringere la scelta alle dir con meno di 5 subdir
find / -type d | xargs ls -ld | tr -s ' ' ' ' | cut -f 2,9 -d ' '
[Edit 17.38]
Bingo! Ecco la "formula magica":
find / -type d | xargs ls -ld | tr -s ' ' ' ' | cut -f 2,9 -d ' ' | grep "^[2-6] " | wc -l
Nota: scelgo solo quelle che risultano avere da 2 a 6 sottodir perchè il valore che viene mostrato da "ls -l" comprende sempre . e .. quindi tutte le dir hanno almeno 2 sottodir e siccome la richiesta è di trovare quelle che hanno meno di 5 sottodir considero quelle che ne hanno da 2 a 6
cavoli perfetto
senti e riguardo al cut non mi sai dire nulla, come se scrivo semplicemente cut -f 12 funziona male, mi stampa le prime colonne con i permessi e basta..
ma il cut che hai scritto adesso cosa fa?? io ho eseguito questo comando find / -type d | xargs ls -ld | tr -s ' ' ' ' | cut -f 2,9 -d ' '
ma non noto differenze..cosa taglia??
ultima cosa, quanto ci mette ad eseguire il comando..a me è svenuto..
Il cut mi ha fatto dannare un bel po'...
Allora la cosa più importante è il delimitatore che gli specifichi (-d) perchè in base a quello lui seleziona i campi che gli chiedi (-f). Il tr che viene eseguito prima è fondamentale perchè ti sostituisce tutti gli spazi consecutivi (-s) con un solo spazio e siccome uso lo spazio come delimitatore del cut bisogna che ce ne sia soltanto uno tra un campo e l'altro altrimenti l'output non risulta corretto.
Prova per esempio a lanciare un ls -l e dopo prova ls -l | tr -s ' ' ' ' (solo per chiarire il comando è tr -s '(spazio)' (spazio) '(spazio)')
A questo punto prova a selezionare i campi usando prima il tr vedrai che il cut lavora correttamente...
Spero di essermi spiegato chiaramente
si dovrei aver capito, proverò grazie tante
una cosa ragazzi, io sulla parte kernel non so nulla, vorrei sapere una volta che sono riuscito a modificare il/i file, quali sono i procedimenti per ricomplilare in maniera corretta..
raga non ho capito una piccola cosa:
il processo che occupa più memoria:
ps -ef | sort -n + 7 | tail -1
non capisco il +7 che cazzzzz*** centra ahahaha
ps -ef lista tutti i processi, sort -n li ordina in modo crescente e tail -1 mi da l'ultimo elemento... ma il 7 da dove esce??
__________________
Live Fast, Die Fun
il 7 se non mi sbaglio è la colonna size..vengono ordinati in base alla size
per la mia domanda mi rispondo da solo; ho visto che a pagina 3 è spiegato tutto..
anzi mi servirebbe una precisazione, quando capisco di aver modificato una libreria e quindi fare make libraries??
Una mia soluzione per trovare tutte le dir che abbiano meno di 5 sottodirs:
file dirs.sh
code:
#!/bin/sh echo "Script per stampare le dir che hanno meno di 5 sottodir"; for dir in $(find / -type d); do ls -F -1 $dir | grep '/' | wc -w > a.tmp if [ $(cat a.tmp) -lt 6 ]; then echo $dir; cat a.tmp; else echo ''; fi; rm a.tmp; done;
__________________
Carlo Boni
Rappresentante Studenti
Sinistra Universitaria
Tastiera italiana nella prova lab
Scusate la domanda forse scontata.
Vorrei sapere se durante la prova di laboratorio i PC hanno
già impostata la tastiera italiana o dobbiamo impostarcela noi.
Grazie
Scusate la domanda forse scontata.
Vorrei sapere se durante la prova di laboratorio i PC hanno
già impostata la tastiera italiana o dobbiamo impostarcela noi.
Grazie
#!/bin/sh
if [ $# -ne 1 ]; then
echo "syntax: user_size <user_name>"
exit 1
fi
ID="$(grep "^$1" /etc/passwd | cut -f 3 -d "
if [ "$ID" = "" ]; then
echo "User \"${1}\" not found"
exit 1
fi
echo "calculating..."
SUM=0
for ITEM in $(find / -user "$ID" -type f | xargs du | cut -f 1); do
SUM=$(expr ${SUM} + ${ITEM})
done
echo "User \"${1}\" takes ${SUM} KB into the system"
exit 0
__________________
In Blues We Trust
soluzioni
allora in attesa che qualcuno mi dica se sono condannato o no cerco le soluzioni ai quesiti che ho postato sopra:
1)
trovare il file più grosso in un certo ramo
copiare files da un ramo ad un altro mantenendo intatta la struttura delle directory
Calcolare lo spazio occupato dai file di proprieta di un certo utente
Scrivere un comando che conta quanti file ci sono in un
determinato ramo del filesystem
Aggiungere 10 utenti prendendo la lista da un file di testo
Creare un archivio tar.gz contenente tutti i file la cui
dimensione è minore di 50KB
__________________
In Blues We Trust
ma io non capisco a cosa serve mettere
!/bin/sh per gli script
se lo scrivo io mi da errore "no such file or directory"
----
no niente scusate... ho scritto una cazzata..ho capito da solo ahahah
__________________
Live Fast, Die Fun
ti da errore perchè manca un cancelletto
la riga giusta è #!/bin/sh
serve per fare uno script nell'editor e poi farlo girare direttamente....
o ma ragazzi perchè se scrivo
find / -type f -size -20| xargs tar cvf archivio.tar
mi dice cannot open archivio.tar..
e poi come cavolo funziona il comando ar non riesco propio a farlo andare..
PS
ho risolto in questa maniera
find / -type f -size -20 -exec tar cvf archivio.tar {} \;
se metto ar però non mi va..
find / -type f -size -20 -exec ar c archivio.a {} \;
 
credo perchè devi passare a tar ulteriori parametri perchè non penso ti crei di default un archivio tar magari se solo li passi il nome dell'archivio cerca di aprirlo. guarda il man di tar cmq ti consiglio di vedere anche ar perchè negli ultimi esami di lab chiedeva di archiviarli con ar
__________________
by Ð@rk§h@ÐØw
Aggiungere 10 utenti prendendo la lista da un file di testo
__________________
In Blues We Trust
raga...mi avete abbuffato a rispondere su sto ca**o di post....ne potete aprire uno nuovo??? che mi continuano ad arrivare le mail
ciau
spunta la check babbo!!!!!!!!!!!!!!!! fai informatica o agraria??
haha risposta corretta, modo forse un po violento
Originally posted by jeremy.1983
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
__________________
Live Fast, Die Fun
- calcolare lo spazio occupato da un utente (dai suoi files)
ho modificato lo script per calcolare lo spazio occupato da OGNI utente sul sistema.. sembra funzionare per un pò, dopo comincia a dire "out of space".. sapete dirmi perchè?
il codice è questo:
#!/bin/sh
sum=0
for id in $(cut /etc/passwd -d : -f 3); do
for item in $(find / -type f -user $id | xargs du | cut -f 1); do
sum=$(expr $sum + $item)
done
echo "dim. tot. dei files di utente $id: $sum Kb"
dome
__________________
Live Fast, Die Fun
anche a me a volte escono sti errori e per quanto mi riguarda non mi interesso per il semplice fatto che lo script è scritto in maniera corretta quindi do la colpa al fatto si usare la macchina virtuale con ste immagini prese dal wiki..
spero di non pentirmene domani
scusa ma....
Scrivere un comando che conta quanti file ci sono in un
determinato ramo del filesystem
find dir -type f | xargs du | wc -l
code:
find dir -type f | wc -w
__________________
Carlo Boni
Rappresentante Studenti
Sinistra Universitaria
Originally posted by jaguaro
questa soluzione funziona ma è uno spreco di risorse..
il du non serve, devi solo calcolare quanti file sono..
per cui io farei
code:
find dir -type f | wc -w
Originally posted by ste182
- calcolare lo spazio occupato da un utente (dai suoi files)
ho modificato lo script per calcolare lo spazio occupato da OGNI utente sul sistema.. sembra funzionare per un pò, dopo comincia a dire "out of space".. sapete dirmi perchè?
il codice è questo:
#!/bin/sh
sum=0
for id in $(cut /etc/passwd -d : -f 3); do
for item in $(find / -type f -user $id | xargs du | cut -f 1); do
sum=$(expr $sum + $item)
done
echo "dim. tot. dei files di utente $id: $sum Kb"
dome
code:
sort -n -f : +1|tail -n 3
Trovare i 3 utenti che, sommando la dimensione dei loro
file, occupano piu` spazio nel sistema.
__________________
In Blues We Trust
passato ragazzi, 22 che bello.
se vi serve ecco la mia domanda.
metti in un file ar i file di testo che sono stati modificati più di 2 giorni fa e che hanno meno di 500 righe
code:
for FILE in $(find -type f -a -name "*.txt" -a -mtime +2) do if [$(wc -l $file) -lt 500]; then ar rc archivio.ar $file; fi; done;
__________________
In Blues We Trust
Originally posted by Joliet Jake
passato ragazzi, 22 che bello.
se vi serve ecco la mia domanda.
soluzione mia corretta dall'errore che ho fatto e che Monga mi ha fatto capire di aver fatto:
code:
for FILE in $(find -type f -a -name "*.txt" -a -mtime +2) do if [$(wc -l $file) -lt 500]; then ar rc archivio.ar $file; fi; done;
__________________
Live Fast, Die Fun
altre domande:
trovare i 10 file piu' vecchi (per alcuni eran i 10 modificati piu' recentemente)
la soluzione giusta non la so ma ho preso 23
parte kernel: modificare il metodo di allocamento memoria in modo che utilizzi worst fit
shell
per ogni utente trovare i 3 file più vecchi del sistema..
#!\bin\sh
for U in $(cut -d : -f 3 /ect/passwd); do
find(type / -type f -user $U| xargs ls -T| tail -3)
done
ls -T ordina i file in base alla data di creazione, cavoli inzialmente mi stavo scervellando per capire come ordinarli in base alla data,(cosa da pazzi) poi mi sono ricordato del -T..
parte kernel: modificare il metodo di allocamento memoria in modo che utilizzi worst fit (ma come cavolo si fa??, ci sarò stato più di un ora a cercare ma nulla )
totale 23 perchè il trentini che mi ha guardato la partizione successivamente mi ha iniziato a fare domande sulla partizione, tipo se era montata e se la dimensione era quella data..
ed io non ero preparato ma me la sono cavata, però mi ha messo 2 meno
in pratica dovevo usare df.. in bocca al lupo ragazzi
andata...26 ma SOLO GRAZIE A VOI! non sapevo quasi nulla dei comandi di minix ne tantomeno delle partizione!
domanda shell: trovare e archiviare con ar i file che occupano meno di 10K e che contengano al loro interno la parola "memory".
l'esercizio sul kernel non l'ho fatto perchè non avevo tempo..
GRAZIE ANCORA
__________________
Saluti - Davide
Originally posted by davene
andata...26 ma SOLO GRAZIE A VOI! non sapevo quasi nulla dei comandi di minix ne tantomeno delle partizione!
domanda shell: trovare e archiviare con ar i file che occupano meno di 10K e che contengano al loro interno la parola "memory".
l'esercizio sul kernel non l'ho fatto perchè non avevo tempo..
GRAZIE ANCORA
__________________
Live Fast, Die Fun
be avrà preso 28 nello scritto
l'esercizio è corretto
Originally posted by Gehur
shell
per ogni utente trovare i 3 file più vecchi del sistema..
#!\bin\sh
for U in $(cut -d : -f 3 /ect/passwd); do
find(type / -type f -user $U| xargs ls -T| tail -3)
done
ls -T ordina i file in base alla data di creazione, cavoli inzialmente mi stavo scervellando per capire come ordinarli in base alla data,(cosa da pazzi) poi mi sono ricordato del -T..
Originally posted by KIMMY
se sei in una cartella ben definita basta fare ls -lt ed hai i file in ordine di data, ma farlo su tutto il sistema mi sa che e' un po' piu' complesso perchè ls -T te li ordina in base alla data ma per ogni cartella, non in generale su tutto il sistema... e così monga mi ha detto che una possibile soluzione potrebbe essere quella di usare il comando "stat" per avere la data dei file e poi ordinarli ... proverò e vedrò cosa ne viene fuori però se altri hanno qualche suggerimento non mi offendo mica
Domande fatte all' esame
Ciao ragazzi,
se vi può servire, vi scrivo le domande che mi sono state fatte ieri all' esame:
Script:
creare uno script che cambi l'estensione di un gruppo di file da .mp3 a .ogg
Kernel:
mandare una stampa a video ogni volta che viene rimosso un file;
inoltre stampare il suo I-node number
Ciao e buone vacanze a tutti!
Anche questo esame è andato, ecco le mie domande:
Script:
trovare il file più grande di tipo testo che abbia un numero di righe pari
Soluzione:
code:
#!/bin/sh sizef=0 for file in $(find / -type f -name '*.txt'); do nrrighe=$(wc -l $file | tr -d ' ' | cut -f 1 -d /) size=$(du $file | cut -f 1) if $(expr $(expr $nrrighe % 2) -eq 0 ); then if $(expr $size -gt $sizef); then sizef=$size filef=$file fi fi done echo "Il file di testo più grande con numero di righe pari è: echo $filef
Originally posted by Gehur
be questo io no lo sapevo,se mi mi dici che è cosi ci credo, la schell me l'ha corretta il prof monga e non mi ha detto nulla a riguardo..
no no..ho usato -T ma forse nemmeno se ne accorto..ho usato T perchè con t non capivo che faceva..cioè in toeria dovrebbe ordinare per data, ma in pratica non so.. invece con -T la stampa mi sembrava ordinata per data..
era alloc.c allora, e vabbe pazienza..
@ste182
si si..senza kernel..avevo 27 tra scritto e orale e 24 di laboratorio...fatto la media arrotondata all'intero successivo e quindi 26!
Si si..l'esercizio è corretto l'ho fatto anch'io cosi
GRAZIE DI NUOVO A TUTTI
__________________
Saluti - Davide
c'e' qualche volenteroso che raccoglie tutte le soluzioni e le mette sul wiki?
grazie, buone vacanze
Originally posted by ste182
O.O ??
e così funzionava??
a me scritto così non funziona.. a parte che manca il test nell'IF.
cmq io ho dovuto scriverlo così per farlo andare:
#!/bin/sh
for $FILE in (find / -type f -name "*.txt" -mtime +2); do
if test $(wc -l $FILE | tr -s ' ' ' ' | cut -d ' ' -f 2) -lt 500
then ar rc archivio.ar $FILE
fi
done
exit 0
__________________
In Blues We Trust
passato, 25 nella parte del laboratorio!
grazie a questo 3d ovviamente (e a DarkShadow! )
domande:
partizione come al solito
shell:
calcolare per ogni utente il numero di file modificati nell'ultimo mese
for user in $(cut /etc/passwd -d : -f 3 | sort -n | uniq); do
item=$(find / -type f -user $user -mtime -31 | wc -l | tr -d ' ' | cut -f 1)
echo "L'utente $user ha modificato $item file nell'ultimo mese"
done
kernel:
ogni volta che viene cancellato un file che inizi per 'x' stampare un messaggio
la soluzione non la so, il file da modificare dovrebbe essere do_unlink.c contenuto nella parte del FileSystem.
Monga mi ha dato 1 punto in più su questa parte perche' bene o male gli ho spiegato qual era il procedimento da adottare e avevo trovato il file da modificare
saluti
mi ha segato comunque
Copiare, conservando gerarchia e permessi, tutti i file sotto /usr/src che iniziano con la lettera m in /tmp
particolare attenzione alla find che trova i file anche nelle sottocartelle...
spero in un vostro aiuto...
appena letto ho pensato "è na cagata" invece è + strano di quanto sembra...ho detto strano non difficile
__________________
io Sofort e te che sei? un pupazzo?
Se può servire a qualcuno: per ogni utente del sistema stampare i gruppi a cui appartiene, senza utilizzare i comandi id e groups.
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
ciao.. scusa ma nella parentesi più interna, grep -s non da output.. ed è giusto perché nel man vienne specificato che non da output
e quindi nn vapiu niente... :S ?
PER I CILINDRI.. qualcuno si ricorda se sulla partition table ..
-devono iniziare da 0 o da 1
-devono essere strettamente del tipo
0-5
6-10
11-16
o anche
0-5
5-9
9-14
??
grazie a tutti
Ciao dove posso trovare minix da usare su ubunut?
grazie a tutti
ragazzi io ho un quesito sulla partizione nella fattispecie
se l'esercizio è :
partizionare secondo disco seguendo lo schema
part tipo dim
1 minix 10
2 fat32 10
3 swap 20
4 minix 10
5 minix 30
il comando per iniziare è giusto part /dev/c0d2 ???
per quanto riguarda la 5° partizione
va all'interno della 4° giusto
anche il caso ci fossero state tipo una 6°- 7° ????
Con MINIX hai un max di 5 partizioni "standard", dopodichè dovrai creare le sottopartizioni,
E' corretto /dev/c0d2
Qualora nell'esercizio ci sia chiesto partizionare anche la 6 e la 7 nella 5 partizione dovrai inserire la dimensione totale rimanente inserendo il n.ro di clindro, settore, tracce che trovi nella seconda riga in alto (se non erro).
Una volta inserito tali dati sempre sulla 5 partizione premi il pulsante di > per crearti le ultime due sottopartizioni.
Successivamente dovrai generare il File System con il comando mkfs
Ciao
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
grazie per la delucidazione solo che io come partizioni standard ne ho 4 allego il prntscr
Originally posted by Dazan
grazie per la delucidazione solo che io come partizioni standard ne ho 4 allego il prntscr
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
ottimo!
qualcuno ha una minima idea di come si possa risolvere questi esercizi??
(sono tra quelli che il monga ha messo sulla wiki...)
-Trovare tutti i link simbolici nel filesystem
-Calcolare il rapporto tra il numero di file nel filesystem (o in una directory specificata) e lo spazio occupato ESCLUDENDO gli hardlink
-Calcolare il numero di righe totali che ha scritto sul filesystem un certo utente nell'ultimo mese
Originally posted by francybiga
qualcuno ha una minima idea di come si possa risolvere questi esercizi??
(sono tra quelli che il monga ha messo sulla wiki...)
-Trovare tutti i link simbolici nel filesystem
-Calcolare il numero di righe totali che ha scritto sul filesystem un certo utente nell'ultimo mese
Avevo letto un qualche post che spiegava i range di valori corretti per i Cyl, però non c'ho capito niente.
Il problema è quando vado a modificare le partizioni, cosa che potrebbe avvenire tranquillamente all'esame immagino.
__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com
Originally posted by xSharKMaNx
Con MINIX hai un max di 5 partizioni "standard", dopodichè dovrai creare le sottopartizioni,
Esercizio all'esame di oggi:
# Trovare tutti i script del sistema, minori di 1 k, copiarli su /tmp/script/ Aggiungerli tutti i file su un file.tar !
__________________
Web Developer / SEO
Il mio era tipo:
calcolare la somma delle dimensioni dei file *.s.
__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com
il mio:
-script: archiviare in un ar tutti i file minori di 2 kb e che inizano con m
kernel: fare un alias ad una syscall e creare un file che la fa partire
Originally posted by Ertyl
Esercizio all'esame di oggi:
# Trovare tutti i script del sistema, minori di 1 k, copiarli su /tmp/script/ Aggiungerli tutti i file su un file.tar !
a me ha chiesto:
script: trovare tutti i file che hanno il numero di blocchi pari
kernel: scrivere un messaggio sullo schermo quando viene avviato un programma setuid root
Originally posted by number15
Il mio era tipo:
calcolare la somma delle dimensioni dei file *.s.
code:
for file in $(find / -type f -name *.s); do sum=$(stat -size $file) tot=$(expr $sum + $tot) echo $tot done
Originally posted by Dazan
come hai risolto?
__________________
Web Developer / SEO
Ciao a tutti,
grazie a tutti quelli che hanno partecipato a questo forum perchè mi è stato veramente utile per passare l'esame...
Vi dò una dritta se qualcuno ancora non lo sapesse(a me la dritta l'ha data l'assistente di lab).
Per copiare i file da una cartella a un altra mantenendo la gerarchia delle cartelle basta metterli in un archivio e poi scompattarli nella cartella in oggetto.Molto semplice ma se uno non lo sà cerca di fare di quei casini...............
Non sono sicuro però dovrebbe mantenere anche i permessi perchè non è solo una copia di un file ma dovrebbe essere un archivio del file stesso.
Ancora grazie a tutti
Ciao a tutti,
sono di ritorno dall'esame di sistemi operrativi (laboratorio).
Mi ha chiesto (Martignoni):
partizione
shell -> mostrare, per ogni utente, il numero di file presenti sul sistema.
kernerl -> stampare, quando viene lanciato un processo che necessita privilegi superiori, un messaggio a video con pi, uid, nome processo.
La parte di kernel non l'ho fatta bene e alla fine mi ha dato 26.
Ciao e grazie a questo topic!!!!!
__________________
Universitario io? ma siam sicuri?
Shell: memorizzare in un archivio .ar tutti i file creati negli ultimi 2 giorni di dimensione minore di 5k.
È una riga (find / -type f -size -10 -ctime -2 | xargs ar rc archivio.ar), l'unica cosa bisogna sapere che -ctime non è tecnicamente la data di creazione ma la data di ultima modifica degli attributi del file, che molto spesso coincide con la data di creazione. L'opzione ctime di find non è documentata, ma funziona.
Kernel: era una banale syscall con argomento numerico.
Appello 03/07/2009:
Script: Elencare tutte le directory create in un numero di secondi dispari
find / -type dir | while read x; do i=$(stat -ctime $x); RESTO=$(expr $i % 2); if [ $RESTO -ne 0 ]; then echo $x $i; fi; done
In un file di script con i dovuti spazi, si capisce meglio.
Ce n'era un altro simile in cui i soggetti erano dei file minori (o maggiori non ricordo) di 5k, e anzichè stamparli a video dovevano essere archiviati con tar:
semplicemente va' modificato nel find "-type f" e va' aggiunto "-size -10" (o +10 in base alla richiesta), e dopo echo nel corpo dell' if va' aggiunto un " | xargs tar cvf archivio.tar". (leviamo pure $i come argomento di echo).
Spero di non aver fatto errori (comunque a me funzionano, quindi i concetti son quelli).
Appello 17/07/2009:
Script: Trovare l'occupazione totale di tutti i file che iniziano con "c" e la cui data di modifica risale a più di 30 giorni fa.
SUM=0;
for DIM in $(find / -type f -name c* -mtime +30 | xargs du | cut -f 1); do
SUM=$(expr $SUM + $DIM);
done;
echo $SUM
Da quello che ho visto e sentito, gli script sono molto simili tra loro.
[edit - aggiunta]
Esercizio Kernel: Impedire la cancellazione dei file che iniziano con '+'.
Dovete aprire il file /usr/src/servers/fs/link.c
All'interno viene descritta una procedura chiamata do_unlink().
Ci sono vari test....qui aggiungete il vostro. Il nome del file è contenuto in 'user_path', quindi
if (*user_path == '+')
printf("Il nome del file inizia con '+' e il Monga ha detto che non può essere cancellato!\n");
Si, i docenti mi han detto che basta una printf per fargli capire che hai capito dove andare a metter le mani. (comunque credo che serva semplicemente mettere uno di quegli errori che vengono restituiti dopo i check all'interno della stessa procedura).
Comunque credo che si possa anche farlo nella procedura unlink_file() come mi è stato suggerito da alcuni. Provate se volete
Shell : Trovare il numero di file che hanno blocchi dispari
Kernel : Impedire la cancellazione di tutti i file che iniziano con + (vedi sopra)
Consiglio: va in ordine di iscrizione quindi iscrivetevi non appena vedete l'avviso sul sito perchè potreste rischiare di rimanere tutta la mattinata ad aspettare visto che ne fa entrare 5 alla volta..
chiedo una cortesia a tutti coloro che hanno già sostenuto e passato con successo l'esame di laboratorio: il materiale(domande, esercizi proposti) che avete trovato in questa discussione è stato sufficiente per superare l'esame di laboratorio con tranquillità ?
ciao misterx,
non vorrei sbagliare ma credo che il materiale trovato su questa discussione più eventuale materiale dato dai link proposti sia più che sufficiente
ciao
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Ho rifatto un esercizio proposto in passato su questo 3D:
- Trovate la dimensione di tutti i file dell'utente root:
code:
#!/bin/sh somma=0; dim=0; for dim in $(find -type f -user root -exec ls -s {} \; | cut -d " " -f 1); do somma=$(expr $somma + $dim); done; echo "Dimensione Files root: $somma";
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Una domanda ai più esperti:
code:
for dim in $(find -type f -user root -exec ls -s {} \; | cut -d " " -f 1);
code:
for dim in $(find -type f -user root | xargs du | cut -f 1);
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
Ho rifatto un esercizio proposto in passato su questo 3D:
- Trovate la dimensione di tutti i file dell'utente root:
code:
#!/bin/sh somma=0; dim=0; for dim in $(find -type f -user root -exec ls -s {} \; | cut -d " " -f 1); do somma=$(expr $somma + $dim); done; echo "Dimensione Files root: $somma";
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Esercizio:
Trovare l'utente con il minor numero di file nel sistema
Ho generato questo script
code:
#!/bin/sh USERS=$(cut -d : -f 1 < /etc/passwd | sort -f | uniq); for u in $USERS; do N=$(find / -user $u -type f | wc -l); echo $u:$N; done
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Scusate, risottopongo una domanda che è stata già fatta in questo 3d, ma che mi sembra non abbia avuto risposta:
con lo script per archiviare tutti i file contenenti la parola "login"
code:
find / -type f | xargs grep login
__________________
Eidolon64|Blog
Originally posted by Shaper
Scusate, risottopongo una domanda che è stata già fatta in questo 3d, ma che mi sembra non abbia avuto risposta:
con lo script per archiviare tutti i file contenenti la parola "login"
code:
find / -type f | xargs grep login
code:
find / -type f | xargs grep -l login 2>/dev/null
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by Shaper
Scusate, risottopongo una domanda che è stata già fatta in questo 3d, ma che mi sembra non abbia avuto risposta:
con lo script per archiviare tutti i file contenenti la parola "login"
code:
find / -type f | xargs grep login
code:
find / -type f | xargs grep -l login
code:
find / -type f | xargs grep -l login 2>/dev/null >> list.txt
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
Nella tua istruzione ti sei dimenticato -l
code:
find / -type f | xargs grep -l login
code:
find / -type f | xargs grep -l login 2>/dev/null >> list.txt
__________________
Eidolon64|Blog
Originally posted by Shaper
ah sì il -l me lo sono dimenticato quando ho scritto il post.
Ma quindi il "line too long" non influenza la correttezza del risultato? Ho provato e in effetti va tutto liscio. Sapete a cosa è dovuto? Così, per evitare l'eventuale panico durante l'esame!
Grazie comunque!!
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Qualcuno mi aiuta a risolvere questi ex:
•Trovare tutti i file modificati di venerdi' (sia un venerdi' particolare che di venerdi' in generale)
•Trovare tutti i link simbolici nel filesystem
•Trovare tutti i file di testo che non siano script
•Contare quanti file di manuale ci sono nel filesystem
Grazie
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
Qualcuno mi aiuta a risolvere questi ex:
•Trovare tutti i file modificati di venerdi' (sia un venerdi' particolare che di venerdi' in generale)
•Trovare tutti i link simbolici nel filesystem
•Trovare tutti i file di testo che non siano script
•Contare quanti file di manuale ci sono nel filesystem
Grazie
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Ti ringrazio mark!
Una domanda: ho un file tar.Z, come faccio ad identificare al suo interno file ".xyz" ?
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by mark
•Trovare tutti i file di testo che non siano script
find / -type f -exec file {} \; | grep -v script | grep text
(non molto elegante ma funziona)
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
Questo non credo sia del tutto corretto, credo sia del tipo:
find / -type f -name "*.txt" | grep -v "#!/bin/sh"
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by mark
dipende!
Ci sono script che non possiedono l'header come da te proposto ma sono script.
A mio avviso dipende da cosa vuole il docente, ci sono script di tipo diverso, il comando file li stana tutti.
Di solito poi gli script ash hanno l'estensione sh e non txt, prova a fare una ricerca in minix ne trovi a volontà.
code:
#!/bin/sh USERS=$(cut -d : -f 1 < /etc/passwd | sort -f | uniq); for us in $USERS; do echo "L'utente $us ha modificato" find / -type f -mtime -1 | sort -nr | head -1 done
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
•Trovare l'utente col file piu' recente nel sistema
code:
find / -type f -user root -mtime -1 | xargs ls -T | tr -s ' ' ' '
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
[B]Ho inserito -name *.txt perchè lo richiedeva l'esercizio "Trovate tutti i file di testo" ... quindi ho dedotto che per file di testo intendesse ".txt"
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
nell'immagine che si usa all'esame ci sono Vim o mined?
grazie
ciao
__________________
Originally posted by xSharKMaNx
•Trovare l'utente col file piu' recente nel sistema
code:
#!/bin/sh USERS=$(cut -d : -f 1 < /etc/passwd | sort -f | uniq); for us in $USERS; do echo "L'utente $us ha modificato" find / -type f -mtime -1 | sort -nr | head -1 done
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by mark
p.s.
non ti manca un $us ne find del ciclo for ?
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
code:
#!/bin/sh USERS=$(cut -d : -f 1 < /etc/passwd | sort -f | uniq); for us in $USERS; do echo "L'utente $us ha modificato" find / -type f -mtime -1 -user $us | sort -nr | head -1 done
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
un altro sistema potrebbe essere questo basato sul timestamp
code:
for l in $(find / -type f -mtime -1) do t=$(stat -mtime $l) u=$(stat -uid $l) echo $t $u $l done | sort +0 -n
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by mark
code:
#!/bin/sh USERS=$(cut -d : -f 1 < /etc/passwd | sort -f | uniq); for us in $USERS; do echo "L'utente $us ha modificato" find / -type f -mtime -1 -user $us | sort -nr | head -1 done
code:
FILE=$(find / -type f -user $us -mtime -1 | sort -nr | head -1) if [ "$FILE" != "" ]; then File Trovato else File non trovato
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Trovare il numero di file che hanno blocchi dispari
ipotizzando che i blocchi siano da 512 byte
code:
DIM_BLOCCO=512 find / -type f > tmp while read l do nbl=$(expr $(expr $(stat -size $l) / $DIM_BLOCCO) % 2) if [ $nbl -eq 0 ] then echo nome file: $l fi done < tmp rm tmp
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
•Trovare l'utente col file piu' recente nel sistema
code:
#!/bin/sh USERS=$(cut -d -f 1 < /etc/passwd); for us in $USERS; do FILE=$(find / -type f -user $us -mtime -1 | xargs ls -T | tr -s ' ' ' ' | cut -d ' ' -f 8, 10 | sort -n | tail - ); if [ "$FILE" != '' ]; then echo $FILE:$us fi done | sort - n | tail -1
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Trovare tutti gli script del sistema, minori di 1 k, copiarli su /tmp/script/ Aggiungerli tutti i file su un file.tar !
non trovo nulla di semplice per copiare file da una directory ad
un'altra mantenendo inalterato il path, solo script incasinati
cp -pR o simile funziona sse la directory di destinazione esiste già
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by mark
Trovare tutti gli script del sistema, minori di 1 k, copiarli su /tmp/script/ Aggiungerli tutti i file su un file.tar !
non trovo nulla di semplice per copiare file da una directory ad
un'altra mantenendo inalterato il path, solo script incasinati
cp -pR o simile funziona sse la directory di destinazione esiste già
code:
#/bin/sh cpdir -p /directoryA /directoryB for file in $(find /directoryB -type f); do rm $file done
code:
#! /bin/sh cpdir -pr /bin /bin2 rm $(find /bin2 -type f)
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
•Elencare i tre utenti che hanno il maggior numero di file nel sistema
code:
USERS=$(cut -d : -f 1 < /etc/passwd | uniq); for us in $USERS; do NFILE=$(find / -type f -user $us | wc -l); echo $NFILE:$us done | sort -nr | head -3
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
•Elencare i tre utenti che hanno il maggior numero di file nel sistema
code:
USERS=$(cut -d : -f 1 < /etc/passwd | uniq); for us in $USERS; do NFILE=$(find / -type f -user $us | wc -l); echo $NFILE:$us done | sort -nr | head -3
Originally posted by Spr1gg4N
scusa ma mandando in pipe l'output di find sull'utente root non ti da errore di Out of Space?
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
No, non mi ha dato nessun tipo di errore!
Ho utilizzato l'ambiente dato da Martignoni, perchè a te va in Out of Space?
Originally posted by xSharKMaNx
Dai post precedenti ho trovato queste due possibilità:
code:
#/bin/sh cpdir -p /directoryA /directoryB for file in $(find /directoryB -type f); do rm $file done
code:
#! /bin/sh cpdir -pr /bin /bin2 rm $(find /bin2 -type f)
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by Spr1gg4N
eh si infatti se vedi nel post dove ho raccolto alcuni script ho sempre utilizzato un file temporaneo proprio per questo fatto: perchè puntualmente mi va in out of space (in effetti tutti i file dell'utente root partendo da / sono molti...strano che non ti dia errore...bha)
EDIT:
-------------
Ora provando a riscriverlo non mi da errore....bho non so che cavolo avevo fatto allora ^_^
code:
cut -d : -f 1 < /etc/passwd | uniq > tmp while read us; do NFILE=$(find / -type f -user $us | wc -l); echo $NFILE:$us done < tmp | sort -nr | head -3
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Trovare tutti gli script del sistema, minori di 1 k, copiarli su /tmp/script/ Aggiungerli tutti i file su un file.tar !
Sto scimmiando con questo esercizio
Ho pensato una cosa
code:
#!/bin/sh mkdir -p /tmp/script; /find -type f -size +2 | xargs grep -l "#!/bin/sh" | xargs tar cvf /tmp/script/archivio.tar
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
Trovare tutti gli script del sistema, minori di 1 k, copiarli su /tmp/script/ Aggiungerli tutti i file su un file.tar !
Sto scimmiando con questo esercizio
Ho pensato una cosa
code:
#!/bin/sh mkdir -p /tmp/script; /find -type f -size +2 | xargs grep -l "#!/bin/sh" | xargs tar cvf /tmp/script/archivio.tar
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by mark
perchè +2 ?
non è -2 ?
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
qui spiega come fare ma a me non funziona
http://unix.ittoolbox.com/groups/te...another-1677099
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by Simaldeff
confermo una cosa :
prima di tutto ho fatto il test in una cartella in cui ho creato 3 file di cui uno in chmod 755
chmod 755 try.sh
gli altri in 644 (default se si creano con elvis)
con un
find /mnt/[lamiacartella] -type f -perm -1
mi ha trovato il file eseguibile. Poi con la seguente situazione :
chmod 777 try.sh
chmod 676 try2.sh
e usando lo stesso find mi ha trovato sollo quello in 777
conclusione -perm -1 guarda solo il primo numero.
confermo che i +1 +111 /1 /111 sono inutile ... non danno erore ma non danno nessun risultato di ricerca
la domanda e' dunque : Basta che sia eseguibile dall' user o deve essere eseguibile da tutti?
se basta il user allora basta la linea di comando ... seno bisogna fare un script shell che faccia tutti i casi di permesso ... *sigh*
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
•Trovare la dimensione di tutti i file "*.c"
code:
find / -type f -name "*.c" | xargs ls -s | awk '{SUM += $1} END {print SUM}'
code:
find / -type f -name "*.c" [ ricerco tutti i file con estensione ".c"] xargs ls -s [visualizzo nella prima colonna la dimensione in kb ] awk '{SUM += $1} END {print SUM}' [ somma la prima colonna e stampa il risultato ]
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
•Trovare la dimensione di tutti i file "*.c"
code:
find / -type f -name "*.c" | xargs ls -s | awk '{SUM += $1} END {print SUM}'
code:
find / -type f -name "*.c" [ ricerco tutti i file con estensione ".c"] xargs ls -s [visualizzo nella prima colonna la dimensione in kb ] awk '{SUM += $1} END {print SUM}' [ somma la prima colonna e stampa il risultato ]
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
Originally posted by Spr1gg4N
eh si infatti se vedi nel post dove ho raccolto alcuni script ho sempre utilizzato un file temporaneo proprio per questo fatto: perchè puntualmente mi va in out of space (in effetti tutti i file dell'utente root partendo da / sono molti...strano che non ti dia errore...bha)
EDIT:
-------------
Ora provando a riscriverlo non mi da errore....bho non so che cavolo avevo fatto allora ^_^
Originally posted by mark
molto potente awk, però se devi stampare ad esempio i 5 file .c di dimensioni maggiori diventa problematico
code:
find / -type -name "*.c" | xargs du | sort -nr | head -5
__________________
Perché, mentre il manganello può sostituire il dialogo, le parole non perderanno mai il loro potere; perché esse sono il mezzo per giungere al significato, e per coloro che vorranno ascoltare, all'affermazione della verità. E la verità è che c'è qualcosa di terribilmente marcio in questo paese. (V)
I popoli non dovrebbero aver paura dei propri governi, sono i governi che dovrebbero aver paura dei popoli. (T.J)
Originally posted by xSharKMaNx
E' un pò diverso, se devi selezionare i 5 file ".c" di dimensioni maggiori fai semplicemente:
code:
find / -type -name "*.c" | xargs du | sort -nr | head -5
code:
ps -axl | tr -s " " : | for i in $(cut -d : -f 5-9); do pid$=(echo $i | cut -d -f 1); sz$=(echo $i | cut -d -f 4); if [ $pid % 2 -eq 1 -a $sz > 0 ]; then echo $pid $sz; fi; done; | sort +1 -n | tail -1
code:
ps -axl | awk '{if($4 % 2 && $7 > 0) print $4, $7}' | sort +1 -n
__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....
All times are GMT. The time now is 00:51. | 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.