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)
Esame di laboratorio (Giugno 2007) - Domande
Ciao a tutti,
elenco alcune domande raccolte oggi durante la prova.
Shell:
- trovare il file più "grosso" sul sistema
- archiviare i files più grandi di 5k e più piccoli di 100k
- copiare files da una cartella all'altra mantenendo inalterati permessi
- trovare tutti i files eseguibili > 5k e evidenziando i 5 più grandi
- archiviare i files modificati nell'ultima settimana
- spostare tutti i files che iniziano per m da una directory (e sottodirectory) ad un'altra
- trovare i tre files più grossi per ogni utente
- trovare il processo che occcupa più memoria ram
- archiviare tutti i files che contengono la parola "login"
- calcolare lo spazio occupato da un utente (dai suoi files)
- trovare il file più "grosso" per ogni utente
Kernel:
- modificare il kernel in modo che alla pressione di F8 appaia una scritta sulla shell
- stampare un messaggio ogni volta che si esce da un processo, in qualsiasi modo (eg: kill, term, ...)
Sul kernel sono un pò pochine perchè pochi ci sono arrivati, chiunque abbia altre informazioni o dritte aggiunga...
Non sarebbe male anche avere qualche soluzione fatta con MINIX 3.
1) Specificare l'occupazione totale di un utente in un sistema (somma delle dimensioni dei suoi file...)
code:
#!/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
code:
#!/bin/sh # Per ogni utente trovare il suo file di dimensione maggiore for UID in $(cut /etc/passwd -d : -f 3 | sort -n | uniq); do FILE=$(find / -type f -user $UID | xargs du | sort -nr | head -1) if [ "$FILE" != "" ]; then DIM=$(echo "$FILE" | cut -f 1) NOME=$(echo "$FILE" | cut -f 2) echo "UID: $UID => File: $NOME ($DIM KB)" else echo "UID: $UID => Nessun file trovato" fi done
__________________
The answer is blowing in the wind...
Grandi ragazzi, grazie 10000000000 ;-)
La domanda di Shell di 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 (banale) e di copiare anche tutto il path dei file nella nuova cartella (meno banale).
Per il Kernel io avevo da far comparire 'chiuso' ogni volta che un file viene chiuso. Ho preso da stdio il riferimento alla funzione fclose.c e l'ho modificata.
A dire la verità non ha funzionato alla fine ma perchè la macchina anche dopo la ricompilazione continuava a partire col vecchio kernel. Cmq alla fine al docente andava bene lo stesso perchè la cosa importante è far vedere di sapere dove mettere mano e ragionarci sopra, anche se poi il risultato non è esatto non fa nulla.
E ora...speriamo che all'orale non succedano follie...
Usciti i risultati di laboratorio... che strage!!! Ora restano solo l'appello di luglio e settembre... poi chi non passa ripete tutto??? Mi sembr assurdo... Ho fatto i due compitini prendendo B e 2 punti, magari faccio un buon orale e se sbaglio l'appello LAB di settembre perdo tutto? Mi sembra assurdo... Sono ignorante sui comandi scell di Minix, non ho potuto seguire il LAB e sulle slide c'è poco... videolezioni niente... non è giusto...datemi un buon libro che me lo studio!!!
a chi lo dici
Originally posted by drakess81
Sono ignorante sui comandi scell di Minix, non ho potuto seguire il LAB e sulle slide c'è poco... videolezioni niente... non è giusto...datemi un buon libro che me lo studio!!!
__________________
The answer is blowing in the wind...
Esempio la prima: - trovare il file più "grosso" sul sistema
Potrebbe andare bene così?
find / -name "*.*" | xargs du -s | sort -n | tail -n 1
Io userei:
find / -type f | xargs du | sort -n | tail -1
__________________
The answer is blowing in the wind...
Modifica al kernel richiesta:
impedire che vengano creati file il cui nome cominci con la lettera m.
Intervento individuato: nei sorgenti del pm, nel file open.c c'è una funzione do_creat() (sì senza la e ).
Uno dei parametri sembra essere il nome. Basterebbe quindi inserire un if alla inizio della funzione che controlla il nome e se quest'ultimo comincia con m, terminare con errore. In realtà il Prof. Monga ha detto che quello non è proprio il nome del file ma una stringa che lo rappresenta (una specie di codifica interna di Minix). Ma la risposta andava bene ugualmente.
Ciao a tutti
A.
Ricordo che la tua domanda è stata fatta a lezione...
Il nome di un file lo si trovava passando per:
/usr/src/servers/fs/open.c -> do_creat() -> common_open() -> new_node()
In questa funzione nella variabile string c'è il nome del file e basta aggiungere dopo la riga:
*ldirp = parse_path(path, string, opaque ? LAST_DIR : LAST_DIR_EATSYM);
Il seguente pezzo di codice:
code:
if (*string == 'M' || *string == 'm') { printf ("Niente nomi che iniziano con emme!!!\n"); return (NIL_INODE); }
__________________
The answer is blowing in the wind...
Ciao,
in effetti avevo scritto male... ovviamente il server in questione era il fs e non il pm.
Tieni conto però della nota di Monga... io non ho provato ma mi fido
Ciao
A.
Altra domanda: - archiviare i files più grandi di 5k e più piccoli di 100k?
con "find / -type f -size -100 | xargs tar cvf archivio.tar" archivio solo i file piu piccoli di 100k, ma come faccio a fare entrambi contemporaneamente?
Prova con
find / -type f -size +5 -a -size -100 | xargs tar cvf archivio.tar
__________________
The answer is blowing in the wind...
Grazie n30...
poi ho provato a far girare il tuo script x trovare il file maggiore di ogni utente ma mi stampa sempre nessun file trovato fino a UID 9999.
Altra cosa x risp alla domanda -spostare(ho copiato...) tutti i files che iniziano per m da una directory (e sottodirectory) ad un'altra. ho usato "cp -r $(find / -name "m*.*") cartella"
mmm...
A me funziona...prova a vedere su shell cosa fanno i singoli comandi dello script e poi vedi dove sta la differenza anche se mi sembra strano...
Allego una bella immagine...
__________________
The answer is blowing in the wind...
__________________
The answer is blowing in the wind...
Raga mi spiegato cosa servono e come funzionano argx, argv? Ciao e grazie
Se intendi i parametri del main() del C:
int main (int argc, char **argv)
Nel primo c'è il numero degli argomenti passati in linea di comando + il nome del file stesso, argc = (#{argomenti} + 1) , argv è un array di stringhe che contiene gli argomenti veri e propri.
argv[0] è il nome del file
argv[1] è il 1° argomento, e cos' via...
argx non so cosa sia...
__________________
The answer is blowing in the wind...
# 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...
n30 riusciresti a darmi una mano x far funzionare il tuo script (il primo) xchè sto diventando matto...
è la riga "ID="$(grep "^$1" /etc/passwd | cut -f 3 -d "" che sembra nn andare; è come se nn potessi accedere alla cartella passwd.
e cosa è "^$1"?
thx.....
Originally posted by bog86
#
e cosa è "^$1"?
__________________
When once you have tasted flight, you will walk the earth, forever more, with your eyes turned skyward. For there you have been, and there you long to return.
“Dovere, tempo, destino, tutto tende a separarci e, di fatto, ci separa. Ma il sentimento non conosce frontiere e mi unisce a te come se avessi sempre la mia mano sulla tua"
Originally posted by bog86
ID="$(grep "^$1" /etc/passwd | cut -f 3 -d :)" che sembra nn andare; è come se nn potessi accedere alla cartella passwd.
__________________
The answer is blowing in the wind...
Scusate, ma sono in alto mare, non con gli esercizi, ma con l'installazione di Qemu/Minix!!!
Ho scaricato l'immagine dal wiki del prof, apro il file zip e mi trovo qemu.debian...con cosa lo apro? o lo devo mettere da qualche parte? non c'è il file qemu.bat e gli altri come scritto qui e come c'era in laboratorio...aiuto sigh sigh :'(
(un'anima pia mi può spiegare passo passo come a un bambino analfabeta come fare per installare il tutto..?)
GRAZIE!!! ps lavoro in Win
Allora, vediamo di fare le cose passo per passo
__________________
The answer is blowing in the wind...
n3o, grazie di tutto cuore, probabilmente sbagliavo a scaricare le varie cose :p
GRAAAZIEEE
Ciao, avevo letto in qualche thread di un manuale consigliato per le eserictazioni su shell Unix. Qualcuno mi sa dire qualcosa approposito???
Advanced Bash Scripting (su google lo trovi subito), molto completo (trovi tutto ciò che ti serve) ma estremamente ridondante riguardo alle poche cose che devi sapere per passare l'esame. (in più è per bash e non per ash, quindi controlla sempre l'effettivo funzionamento degli script, anche se quelli base dovrebbero girare tranquillamente).
Io ti consiglio di leggerti i 3 o 4 thread sull'esame in questo forum che sono bei pieni di esempi fatti sia su partizionamento, sia su shell che su kernel.
Poi guardati il sito del prof in cui ci sono vari script di esempio e descrizioni di comandi nonchè lo scarno materiale delle lezioni...
Se ti rimangono dei dubbi posta a volontà...
__________________
The answer is blowing in the wind...
Grazie mille n3o
Altri due esercizi d'esame che mi ha passato un amico
Ricordate il chmod +x <script_name> per renderlo eseguibile!code:
#!/bin/sh for UID in $(cut /etc/passwd -d : -f 3 | sort -n | uniq); do echo "Utente $UID:" find / -type f -user $UID | xargs du | sort -nr | head -3 done
__________________
The answer is blowing in the wind...
ho problemi nel modificare il kernel
ho semplicemente aggiunto kprintf("muoio"); in do_exit e do_Kill.
Ricompilato , ma non funziona.
Sapete indicarmi qual'è l'esatta procedura di ricompilazione del kernel, peche trentini ne ha indicato una che è diversa da quella di monga.
Grazie
Hai un errore nella ricompilazione del kernel o semplicemente no hai nessun output quando un processo termina?
la ricompilazione va a buon fine perche mi crea il nuovo file in /boot/image/
ma non vedo nulla quando termina un programma
per ricompilare usa la procedura monga
cd /usr/src/tools
make clean
make image
make hdboot
reboot
Dove sbagli?
grazie
In /usr/src/tools/
make clean (per sicurezza ripartiamo da zero)
make image
make hdboot (credo sostituisca anche make image, provate...)
Ci sono poi due casi particolari
__________________
The answer is blowing in the wind...
risolto con shutdown
grazie mille delle spiegazioni
Ma tu hai gia fatto la prova di laboratorio?
Com'è andata
ciao
Meglio non poteva andare...
Comunque non preoccupatevi troppo del limite di tempo perchè sono abbastanza umani e disponibili e a me personalmente nell'esercizio di scripting mi hanno fatto riloggare...
Se seguite i vari thread di preparazione:
__________________
The answer is blowing in the wind...
scusate ma per l'esercizio di shell bisogna creare un file con vi dove si inserisce il comando o basta inserirlo direttamente nella linea di comando di qemu/minix?
e riguardo la documentazione consultabile on line, si intende proprio internet quindi anche dsy o altro o solo le slide del prof o gli es del wiki?
n3o i tempi come sono 10-30+30 per le tre prove?
Cosa intendi per partizione giusta?
Per lo script ho visto che in alcune soluzioni bisognava fare una shell script, quindi tanto semplice non è
ciao
Originally posted by antares85
scusate ma per l'esercizio di shell bisogna creare un file con vi dove si inserisce il comando o basta inserirlo direttamente nella linea di comando di qemu/minix?
e riguardo la documentazione consultabile on line, si intende proprio internet quindi anche dsy o altro o solo le slide del prof o gli es del wiki?
Originally posted by poi_1969Lo script più complicato che può capitarti sono 3-4 linee di codice (di solito un ciclo con un comando find come istruzione).
Per lo script ho visto che in alcune soluzioni bisognava fare una shell script, quindi tanto semplice non è
code:
# for UID in $(cut /etc/passwd -d : -f 3 | sort -n | uniq); do <invio> > echo "Utente $UID:" <invio> > find / -type f -user $UID | xargs du | sort -nr | head -3; done <invio>
Originally posted by antares85Intendevo solo che, a meno che tu sappia a memoria il numero che identifica un tipo di partizione (Minix, Linux, Fat...), devi scorrere l'elenco per trovarlo, tutto qui!
Cosa intendi per partizione giusta?
__________________
The answer is blowing in the wind...
MITICO!
SEI MITICO!
ciao
per quello che riguarda il materiale consultabile online che mi dite?
Il materiale a disposizione é:
__________________
The answer is blowing in the wind...
BELLA!
Scusate, per chi ha fatto la prima prova di laboratorio, per l'esercizio di shell il prof ti dice che comando usare come faceva a lezione? tipo: trovare il file più grosso utilizzando tail (o bisogna saperlo che si deve usare quel comando particolare?)
Grazie a tutti
ciao,
due cose:
n3o, per trovare il processo che occupa più memoria hai usato
code:
ps -axl | sort +7 -nr | head -1 | tr -s ' ' ' ' | cut -d ' ' -f 8,12
code:
ps -axl | sort +7 -n | tail -1
@NoWhereMan: Si si basta anche la semplificazione che hai fatto.
Io ho solo estratto gli unici due campi di interesse, ma è una formattazione in più che in sede di esame serve forse ad avere il massimo dei punti.
Ho poi controllato ciò che hai detto e in effetti contrariamente a ciò che dice il manuale sembra funzionare anche il nome dell'utente come parametro dell'opzione user del find
Ovvio che se ti chiede di scorrere tutti gli utenti devi comunque lavorare sul file /etc/passwd
Il comando uniq è fondamentale visto che in sede di esame c'erano più utenti con l'UID 0 (e si potrebbe creare anche più utenti con lo stesso nome mettendo mano a quel file, quindi è utile in ogni caso...)
@antares85: Non ti viene dato alcun suggerimento riguardo ai comandi da utilizzare, studiati la lista di quelli base (la trovi seguendo i link poco più sopra...)
__________________
The answer is blowing in the wind...
ho una domanda:
ho letto il manuale di xargs, ma non riesco a capire quando va usato e quando no! ho visto che viene usato dopo una pipeline per comandi come tar o ls, ma perchè non si usa con comandi come sort o tail?
qualcuno mi può spiegare (anche in due righe) a cosa serve esattamente?
grazie!
xargs è un comando utile per evitare l'errore Out of space che a volte compare se si utilizza il find.
La shell ha un limitato spazio per gestire un comando (credo 256 caratteri...) quindi se un input di un comando (rediretto anche con un pipe) supera tale limite sorge l'errore di cui sopra.
Per evitarlo si utilizza xargs che non fa altro che spezzare l'output del comando precedente in righe, e passare ogni riga al comando successivo, una alla volta.
Più importante, xargs cambia profondamente il comportamento dei comandi:
find / -type f | grep login
Questo comando cerca tra la lista dei file del sistema, un file il cui nome contenga la parola login
find / -type f | xargs grep login
In questo esempio xargs spezza la listona dei file del sistema e passa una riga per volta (quindi un nome di file per volta) a grep
(grep viene eseguito più volte, una volta per ogni riga).
Notate che il comportamento cambia moltissimo!!!
In questo caso il comando stampa tutti i file di sistema che contengono al loro interno la parola login
Nella maggior parte degli esempi sort e tail vengono usati sulle liste di file che genera find o in passi successivi, per questo non viene utilizzato xargs.
__________________
The answer is blowing in the wind...
ok, grazie!
ho ancora un paio di dubbi:
ho provato a modificare un esercizio (quello di trovare tutti i file con all'interno la parola "login"), facendo in modo che invece che mettermeli in un archivio, me li scriva su un file .txt
allora ho provato a sostituire il comando del tar con > login.txt ma non mi ha inserito niente se non la riga "<stdio.h>"
dove ho sbagliato?
un'altra cosa: se ho un file .txt, che comando posso usare per farmelo vedere a video senza usare elvis?
grazie ancora
Prova con:
find / -type f | xargs grep -l "login" >> list.txt
Il simbolo >> concatena ogni riga al termine del file, mentre > sovrascrive il file prima di aggiungere del contenuto
Per vedere un file senza elvis puoi:
__________________
The answer is blowing in the wind...
Originally posted by n3o
[B]@NoWhereMan: Si si basta anche la semplificazione che hai fatto.
Io ho solo estratto gli unici due campi di interesse, ma è una formattazione in più che in sede di esame serve forse ad avere il massimo dei punti.
Ho poi controllato ciò che hai detto e in effetti contrariamente a ciò che dice il manuale sembra funzionare anche il nome dell'utente come parametro dell'opzione user del find
Ovvio che se ti chiede di scorrere tutti gli utenti devi comunque lavorare sul file /etc/passwd
Il comando uniq è fondamentale visto che in sede di esame c'erano più utenti con l'UID 0 (e si potrebbe creare anche più utenti con lo stesso nome mettendo mano a quel file, quindi è utile in ogni caso...)
Originally posted by n3o
Prova con:
find / -type f | xargs grep -l "login" >> list.txt
Il simbolo >> concatena ogni riga al termine del file, mentre > sovrascrive il file prima di aggiungere del contenuto
Per vedere un file senza elvis puoi:
- cat file.txt
- more file.txt (output paginato)
Originally posted by GiKappaSe ti autentichi come root non hai problemi di permessi (probabimente saranno rw-r--r--)
ma ho i permessi per controllare il file /ect/passwd?
Originally posted by NoWhereManIn un sistema non possono coesistere due utenti con UID uguale, credo sia stato un mageggio sul file /etc/passwd dei prof per gestire il sistema dei tempi dell'esame...
Il punto è che se mi si chiede di trovare $informazione per ogni utente, allora anche se due utenti hanno lo stesso UID, sono comunque distinti (potrebbero comunque avere home e probabilmente username diversi)
__________________
The answer is blowing in the wind...
Originally posted by n3o
In un sistema non possono coesistere due utenti con UID uguale, credo sia stato un mageggio sul file /etc/passwd dei prof per gestire il sistema dei tempi dell'esame...
per non parlare di tutta la gente a cui si è bloccato il terminale
@n3o(o chi mi sa risp): riguardo ai comandi messi in prima pagina di questo thread, non riesco a capire bene:
-esercizio trovare i file eseguibili >5k ecc... sono indispensabili i comandi xargs ls -l ; tr -s ' ' ' ' ?(questo nn ho capito bn cosa vuol dire...) ; e in cut si potrebbe eliminare -d ' '? (anche qst nn mi è chiaro)
-esercizio trovare processo che occupa + mem, non capisco perchè +7 in sort, se sia indispensabile il ps -axl (e se si perchè) all'inizio e ancora l'intero comando tr e cut che credo siano un lontano dialetto arabo/cinese per me
GRAZIE ANCORA!
visto che ci siamo, nel primo dei 2 listati lunghi, mi si può spiegare il significato di
if [ $# -ne 1 ]; then
echo "syntax: user_size <user_name>"
exit 1
fi
?
Originally posted by antares85Se non passi un parametro in linea di comando genera un errore ed esce...
visto che ci siamo, nel primo dei 2 listati lunghi, mi si può spiegare il significato di
if [ $# -ne 1 ]; then
echo "syntax: user_size <user_name>"
exit 1
fi
?
Originally posted by antares85Ho già analizzato il problema in un post precedente:
esercizio trovare i file eseguibili >5k ecc... sono indispensabili i comandi xargs ls -l ; tr -s ' ' ' ' ?(questo nn ho capito bn cosa vuol dire...) ; e in cut si potrebbe eliminare -d ' '? (anche qst nn mi è chiaro)
Originally posted by antares85sort +7 -n vuol dire "ordina numericamente (non alfabeticamente) considerando la settima colonna"
esercizio trovare processo che occupa + mem, non capisco perchè +7 in sort, se sia indispensabile il ps -axl (e se si perchè) all'inizio e ancora l'intero comando tr e cut che credo siano un lontano dialetto arabo/cinese per me
__________________
The answer is blowing in the wind...
ecco non capisco come si fa a sapere da quali colonne prendere le info desiderate (sort +7 e -f 5,9, perchè proprio quelle?). c'è un qualche standard sempre uguale sul quale basarsi dove si vede ad ogni colonna quali info corrispondono?
1) Per me un file è eseguibile se lo è per tutti (altrimenti farsi tutti i casi possibili è una macello...)
code:
10 S 0 1 5 1 16 (wait) pm ? 0:00 init
code:
10 W 0 26 5 1 16 pm ? 0:00 /usr/sbin/inet
code:
10 W 0 26 5 1 16 fs co 0:00 ps alx
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! )
__________________
The answer is blowing in the wind...
Originally posted by n3o
Io sono convinto che l'esercizio incriminato loro sono convinti si possa fare con il find (ma in Minix non è vero! )
ciao ragazzi,
scusate qualcuno mi puo spiegare il comando xargs per favore??? non lo capisco molto... neanche il suo utilizzo
http://www.dsy.it/forum/showthread....mber=4#p439883c
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
[...]
funziona anche
find / -type f -size +10 -perm -1
+1 o /1 non funzionano. -1 significa comunque x a tutti
Non riesco a capire bene come funziona sto -perm, qualkuno potrebbe gentilmente spiegarmelo?
find / -perm 666code:
| owner (u) | group (g) | others (o)| +-----------+-----------+-----------+ | r w x | r w x | r w x | | 4 2 1 | 4 2 1 | 4 2 1 |
__________________
The answer is blowing in the wind...
Ciao ragazzi forse questo può essere d'aiuto, ho provato a cercare un modo per trovare tutti i file nascosti nel sistema:
find / -type f -name ".*"
la particolarità è l'uso delle virgolette...che non conoscevo. So che per la maggior parte di voi è una cosa banale ma magari qualcuno non lo sapeva. :-)
ciao n30 ho provato a creare lo script dell'esercizio che indicava di trovare lo spazio occupato da 1 utente(dai suoi files) ma mi continua a dare errore....sicuri che la sintassi sia corretta????
l'errore che m da è:
user ....(vuoto cioè nn m stampa niente) takes 0 kb into the system.
WHY??
HELP ME!!
grazie mille
se lo copi ESATTAMENTE SPAZI INCLUSI funziona, controlla bene, sarai la ventesima persona che me lo chiede, poi scopro che quasi tutti hanno messo degli spazi in più dove non dovevano esserci!
__________________
The answer is blowing in the wind...
Grazie mille n3o
Il proprietario di un processo in esecuzione `e normalmente
diverso dal proprietario del file contente un programma (e
diverso ad ogni esecuzione)
effective UID bit: il processo assume come proprietario il
proprietario del file del programma
SUID root
chmod 4555 file
chmod u+s file
ragazzi qst parte lo trovata sulle slide di monga... qualcuno potrebbe kiarirmi le idee??? soprattutto sul suid root
Un file con SUID bit attivato viene eseguito con i privilegi dell'utente che possiede il file. (non importa chi lo lancia)
Esempio passwd ha come proprietario root ma visto che un qualsiasi utente ha diritto a modificarsi la propria password, il primo ha il SUID attivato in modo da poter essere eseguito da un utente normale con privilegi di root.
__________________
The answer is blowing in the wind...
ah ok... grazie... quindi nell'esercizio che mi chiede di cercare tutti i file SUID root, cm mi devo muovere???
ciao a tutti... ho un problema con l'aggiunta di un utente...
in particolare con il comando passwd:
quando lancio il comando e mi chiede di inserire la password la tastiera è come se fosse bloccata, non scrive, l'unico tasto che funziona è l'invio...
qualcuno sa darmi qualche dritta? grazie
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*
__________________
There is no way to happyness, happyness is the way. -Buddha-
ho risolto con un piccolo script del genere :
#!/bin/sh
ID="(grep "^$1" /etc/passwd | cut -f 3 -d "
find / -user "$ID" - type f | ls -l | grep "^[rw-]*x"
exit 0
cosi facendo me li ha trovati tutti ... anche quelli piu insoliti (tipeo 657 421 523 etc ... basta che ci sia un x nella stringa permessi di ls -l)
per chiamare il script basta fare
./script.sh <username>
naturalmente.
__________________
There is no way to happyness, happyness is the way. -Buddha-
@imperator
Quando passwd richiede la password tu scrivila! è NORMALE che non si veda a video
Originally posted by SimaldeffOttimo, ho modifica anche il mio post per sicurezza.
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*
__________________
The answer is blowing in the wind...
Originally posted by n3o
@imperator
Quando passwd richiede la password tu scrivila! è NORMALE che non si veda a video
[/Color]
@Simaldeff
Ottima anche la tua soluzione, devi solo aggiungere le restrizioni successive che chiede il problema, praticamente ordinare ed estrarre i 5 maggiori (se uno trova un metodo più semplice anche per questo...)
@=kimi=
Cercare tutti i file con SUID attivato
find / -type f -perm -004000 (testato)
__________________
The answer is blowing in the wind...
ma i tuoi passagi 4 e 5 sono solo utili se si vuole un certo formato all'output della cosa ...
si possono saltare metendo in
sort +5 -n
no?
__________________
There is no way to happyness, happyness is the way. -Buddha-
Io ho provato ad omettere quei passaggi e non funziona...credo di averlo scritto anche nel post...almeno provatelo!!!
__________________
The answer is blowing in the wind...
trovo la tua soluzione della ls -lF motlo piu furba. Ma li e' da verificare se fa anche i casi anomali ... tipo i permessi 523 o 421 ... cioe se guarda tutti i bit di permesso o solo quelli riguardante il user (ovvero la prima ciffra).
__________________
There is no way to happyness, happyness is the way. -Buddha-
solo un suggerimento : sarebbe meglio scrivere il nostro codice in font courier nelle nostre risposte sul forum ... cosi capiamo meglio gli spazi ... no?
esempio
find / -type f -size +5 | xargs ls -lF | grep "\*$" | tr -s ' ' ' ' | cut -d ' ' -f 5,9 | sort -n | tail -5
invece di
find / -type f -size +5 | xargs ls -lF | grep "\*$" | tr -s ' ' ' ' | cut -d ' ' -f 5,9 | sort -n | tail -5
__________________
There is no way to happyness, happyness is the way. -Buddha-
ragazzi qualcuno mi sa indicare o dire qual'è la legenda per leggere le varie colonne dei file? tipo dove sta scritto che la colonna 5 è la dimensione del file e la 9 il nome? (magari qst si capiscono ma le altre?)
n3o, non bisogna metere xargs -l 1 per predere una riga alla volta, altrimenti prende un blocco e ne fa ls?
Originally posted by antares85Non c'è alcuna legenda, guardi l'output di un programma e ti comporti di conseguenza (per ls e ps ho fatto così!!!)
ragazzi qualcuno mi sa indicare o dire qual'è la legenda per leggere le varie colonne dei file? tipo dove sta scritto che la colonna 5 è la dimensione del file e la 9 il nome? (magari qst si capiscono ma le altre?)
Originally posted by poi_1969L'opzione -l su Minix non esiste! Provate i comandi su Minix e fate riferimento ai manuali al suo interno!!! Moooolto pericoloso pensare che le proprio conoscenze di Linux bastino! (provato sulle mie spalle!)
n3o, non bisogna metere xargs -l 1 per predere una riga alla volta, altrimenti prende un blocco e ne fa ls?
__________________
The answer is blowing in the wind...
mmh...ci proverò, grazie
1) find / -type f -size +5 => trova tutti i file di dimensione > 5KB
Originally posted by maxj8
La domanda di Shell di 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 (banale) e di copiare anche tutto il path dei file nella nuova cartella (meno banale).
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
Originally posted by VidHai ragione , pensa che non ci avevo mai fatto caso, aggiorno il post per sicurezza...
ma la dimensione del size non si riferisce ai blocchi da 512 bytes?
Io credo sia corretto mettere -size +10.
__________________
The answer is blowing in the wind...
Originally posted by ^Belzebu^Sappi che (ovviamente) in Linux la cosa è mooooooolto semplice cp -p --parents * dir
e come sarebbe per copiare anche tutto il path dei file?
grazie!
ByezAll
^Belzebu^
Spiegazione, riga per riga: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
__________________
The answer is blowing in the wind...
io lego in
man cpdir
in opzioni
-m Merge trees. The first synopsis for is assumed, and the files from one tree are merged into the other. There is not "If it's a directory then put it into that directory." trickery here.
Non si potrebbe usare questa?
__________________
There is no way to happyness, happyness is the way. -Buddha-
Se riesci a cavarci qualcosa facci sapere!
La soluzione più semplice è quasi sempre la migliore!
__________________
The answer is blowing in the wind...
Anch'io stavo sbattendo la testa su cpdir ma non riesc oa farlo funzionare come voglio.
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 "$j" "$2/$j"
done
----------
La soluzione però non mi piace per più motivi, fra tutti il fatto che ricreo la struttura del ramo scelto partendo comunque da / e che creo anche directory vuote. Se qualcuno riuscisse a usare cpdir...
Poi, tornando al problema dei files eseguibili, credo che la soluzione che prevede ls -F abbia un problema: provate a fare un touch "prova*", il file non sarà eseguibile ma verrà comunque incluso dallo script.
ciao,
sapete quale altro comando serve per compattare i file oltre a tar?
In minix ci sono tar, ar, vol e compress controlla i relativi manuali!
(anche se credo che solo compress comprima oltre che collezionare...)
@Vid: L'esercizio era: copiare tutti i file di una directory mantendo la gerarchia dei parenti.
Che copi l'albero da root va bene; il find va in profondità, cosa non richiesta dal problema (ma rimane buono nel caso richieda qualcosa di più complesso).
Per quanto riguarda l'algoritmo di ricerca dei file eseguibili, ce ne sono in giro 3 versioni, ognuna con il suo side-effect, ma credo che tutte e tre ai prof andranno benissimo!!!
__________________
The answer is blowing in the wind...
DOMANDA DELL?ULTIMO MINUTO!
come si fa a sapere ad un certo utente che numero UID corrisponde?
ES: file appartenenti all'utente 'ast':
find / -user 8 -type f | wc
TKS!
Ciao ragazzi a me all'esame aveva chiesto di trovare i tre file piu grossi per ogni singolo utente. Io avevo in mente di utilizzare la find con l'opzione -user e poi concatenarla con il du però non sono riuscito ancora a mettere giu niente. Mi sapreste aiutare?
ho fatto una scoperta :
malgrado tutti sembrino usare una cosa del tipo (inquesto thread almeno)
ID=$(grep "^$!" /etc/passwd | cut -d : -f 3)
per estrare l'id dello user dallo file password.
sapiate che i comandi minix come find accetano il nome dello user in lettere
find / -user root
find / -user 0
hanno lo stesso risultato.
forse sto puntando qualcosa che tutti hanno gia scoperto ... ma mi sembrava importante dirlo tutto visto che nessuno ne parlava.
__________________
There is no way to happyness, happyness is the way. -Buddha-
Esercizio:
Aggiungere 10 uteneti prendendo la lista da un file di testo.
Scusate se per caso è già stato risolto.....
Ho creato un file di nome utenti di questo tipo:
u0 other /usr/u0
.....ecc fino a u9
cat utenti | while read i; do adduser $i; done
Come vi sembra?
Grazie!
Grazie Simaldeff , per me non era per niente scontato! (anche se mi sembra che ci sia scritto già da qlk parte in qst thread ma ormai è enorme e ci si perde :p )
Scusate ma mi è sorto un dubbio su du:
man non dice come sono espressi i risultati numerici, se blocchi, bytes, kbytes o caramelle, però confrontando i risultati di du e di ls ottengo dei dati incoerenti.
Per esempio ho un file archivioroot.tar che occupa 7874 secondo du e 8062976 secondo ls (rapporto di 1:1024).
ho poi un file test1k (da 1024 bytes guardacaso... ) che occupa 2 secondo du e 1024 secondo ls (rapporto di 1:512).
Ora, credo che si possa dare l'esame anche rimanendo con questo dubbio... ma qualcuno sa spiegarmi perchè?
EDIT: forse ho capito... du credo indichi i blocchi usati, anche parzialmente, e avendo scelto in fase di installazione blocchi da 1024, un file da 1024bytes occupa 2 blocchi. Infatti creando un file da 1536 bytes (3x512) du mi ritorna comunque 2.
Non so se sia giusto ma me la tengo buona, meglio dedicare il tempo alle modifiche del kernel...
per quanto riguarda stampare il messaggio quando un processo termina in qualsiasi modo è sufficiente che la printf sia all'interno della procedura pm_exit() (ovviamente nei sorgenti del PM) che viene chiamata in qualsiasi caso: syscall exit() oppure SIGKILL o SIGTERM
NOTA: ho notato con un amico che qemu tende a crashare se il messaggio della exit non termina con un newline, quindi vi conviene che il messaggio sia sempre qualcosa del tipo
printf("\nMESSAGGIO\n");
che per inciso produce anche un output più leggibile (per quanto possa interessare leggere "MESSAGGIO" mille volte)
ragazzi, on ho mai toccato minix...come cavolo si fa a spostarsi da una cartella a un'altra? quali sono i comandi di minix basilari?
ragazzi, on ho mai toccato minix...come cavolo si fa a spostarsi da una cartella a un'altra? quali sono i comandi di minix basilari?
trovi tutto su questo thread, scartabellatelo dall'inizio alla fine e guarda i link
Laura io direi che è perfetto il tuo...invece per quanto riguarda il seguente comando:
find / -type f -size +10 | xargs ls -lF | grep "\*$" | tr -s ' ' ' ' | cut -d ' ' -f 5,9 | sort -n | tail -5
a me funziona anche così:
find / -type f -size +10 | xargs ls -lF | grep "\*$" | sort -n | tail -5
come è stato anche detto qualche thread più su.
Volevo poi chiedere anche se potete segnare i file esatti per far apparire il messaggio quando viene killato un processo. Grazie mille!!
/usr/src/servers/pm/forkexit.c
era facile
e poi c'era sempre
cd /usr/src/servers/pm
grep pm_exit *
ciao
@vittorio
comincia con
cd /
e poi aggiungi il tuo path ...
ls e' come il commando dir del dos
@gli altri
qualcuno sa se e' possibile fare una cosa del tipo
"isolare i file/processi con una taglia tra 100 byte e 1KB"
cioe prendere solo una parte delle cose che non siano la testa o la coda di una lista o testo.
__________________
There is no way to happyness, happyness is the way. -Buddha-
Originally posted by NoWhereMan
/usr/src/servers/pm/forkexit.c
era facile
e poi c'era sempre
cd /usr/src/servers/pm
grep pm_exit *
ciao
scriptino compatto per la copia con struttura directory
(modificando opportunamente) DEST e il filtro (il filtro non sono riuscito a renderlo
parametrizzabile perché '*' viene sempre espanso dalla riga di comando, invece find vuole il carattere!)
code:
DEST=miadestinazione # potrebbe essere anche $1 #in questo esempio copiamo tutti i file nascosti della dir corrente dentro a $DEST DEST=miadestinazione/ find `pwd` -name .\* | while read F do mkdir -p $DEST/`dirname $F` cp -pr $F $DEST/$F done
Originally posted by liver82
Io ho usato find / -type f | xargs grep -l pm_exit
va bene lo stesso?
Cmq mi aveva tirato fuori anche altri file e la mia conoscenza non è bastata.
Grazie mille!!
Qualcosa che spero possa essere utile, schemi riassuntivi:
Come partizionare
Comandi principali
Alcuni esercizi
e infine altri comandi e spiegazioni utili...
Originally posted by NoWhereMan
va bene lo stesso ma in quel caso è ridondante perché i file sono pochi e il livello e non ci sono sottodirectory, quindi basta grep $COSE *
ciao
mettilo all'inizio
Per killare un processo basta che faccio:
kill nro PID
vero?
Originally posted by NoWhereMan
mettilo all'inizio
Ok, basta così... tocca e ritocca il kernel il mio minix è diventato una bolgia infernale
Piange in continuazione che i suoi processi terminano e mi minaccia se glieli uccido, ricordandomi la vendetta ora di questo, ora di quel numero di processo; si schifa a creare files che iniziano con la m (involontariamente comico il suo commento cannot touch merda ...), ogni volta che premo F8 mi esclama "Forza Inter!" e ad ogni avvio mi scrive una frase a caso dal database fortune.dat. Mi ricorda quante volte l'ho ricompilato e fortunatamente non mi chiede perchè mai sono ossessionato dal sapere in continuazione quanti files ha l'utente pippo, quali sono i suoi files più grandi, quali sono i più piccini, quali sono quelli così e cosà, perchè insisto nel volere archiviarglieli e perchè continuo a cancellare files che ho appena creato.
Se sopporta tutto questo, in fondo, minix è buono.
Io di mio sono un po' stufo di maltrattarlo per cui ora lo spengo e domani andrà come andrà...
In bocca al lupo a tutti voi, e grazie per le dritte, questo thread è stato molto più utile di slide e lezioni varie.
non so come funziona ash.. ma a me manca molto il doppio tab in bash che mi indica quali comandi iniziano per non so cosa..
per questo suggerisco queste due righe di codice..
echo "#!/usr/bin/env sh
find \`echo \$PATH | tr ':' ' '\` -type f -name \"\$1*\"" > /bin/fc
chmod +x /bin/fc
in questo modo fc (find command) rispondera' con la lista dei comandi possibili che iniziano con il primo parametro passato..
tipo..
# fc bzip
/usr/local/bin/bzip2
/usr/local/bin/bzip2recover
...
non e' assolutamente perfetto come script.. ma almeno e' veloce da scrivere..
e perdendo un'po' di flessibilita' si puo' fare anche..
echo "#!/usr/bin/env sh
find `echo $PATH | tr ':' ' '` -name \"\$1*\"" > /bin/fc
chmod +x /bin/fc
(occhio ad i backtick! che non sono semplici apostrofi)
ciao a tutti e buona fortuna
a proposito..
find / -name "*.c" | xargs tar c archivio.tar
non archivia correttamente se i file sono tanti (nemmeno troppi)!!
quindi occhio!
spero di non aver detto cavolate.. e ciao di nuovo..
Originally posted by n3o
1) Per me un file è eseguibile se lo è per tutti (altrimenti farsi tutti i casi possibili è una macello...)
si era già trattato di questo ... la soluzione più comoda e' IMHO
ls -lF -> che mette un asterisco * alla fine della linea di un file eseguibile anche per solo user o solo group o solo altri ... etc ... basta che sia eseguibile per qualcuno.
poi per filtrarle basta un bel
grep "\*$" .... che tiene tutti quelle linee che hanno un * prima della fine della linea.
__________________
There is no way to happyness, happyness is the way. -Buddha-
FATTO!!! posso dire che il partizionamento è quello pari pari che c'è sul thread omonimo, cn la piccola differenza che 2M nn sono 2000K ma 2048...ma nn credo siano pignoli su questo.
L'es di shell va a culo, c'è a chi capita la riga di codice e basta e chi deve fare lo script articolatissimo...non deve essere per forza funzionante, infatti il mio non lo era ma vedeva che l'idea e l'impostazione d base c'era e mi ha messo 23 (Trentini, mentre il MONGAloide era più severo e inoltre sembrava non credere a chi dicesse che gli si impallava tutto o si "slogava" prima del tempo automaticamente, ma la realtà è che le macchine fanno SCHIFO e lui è un pxxxa!!!)
Il terzo manco c'ho provato ovviamente , mi andava + ke bn il 23.
Ultima cosa: non è assolutamente permesso guardare materiale on line come detto anche dal prof precedentemente (wiki o altro), quindi...TUTTO A MEMORIA!
Colgo l'occasione per ringraziare tutti coloro che hanno contribuito all'arricchimento di questo thread, e specialmente a n3o (anche se l'es di archiviare i file modificati da meno di 1 sett non va fatto con tar ma con ar... )
CIAO!
In verità 2 MB sono proprio 2 * 10^6 byte
Invece 2 MiB sono 2 * 2^20 byte
(io ho usato le potenze decimali e non ho avuto problemi...)
Riguardo a tar in sede di esame a molti non funzionava, quindi hanno optato per ar, leggetevi man ar per delucidazioni (molto simile a tar comunque...)
Complimenti per la buona uscita e in bocca al lupo a tutti gli altri!
__________________
The answer is blowing in the wind...
potresti inserire un esempio veloce per archiviare con ar?
ho cercato un po' in internet, ma non ho trovato molto di utile!
Beh come ho scritto bastava guardarsi man ar
ar rc <archivio> <file>
Esempio
Archiviare i files più piccoli di 100KB ma più grandi di 5KB:
find / -type f -size +10 -a -size -200 | xargs ar rc archive.a
Opzioni:
r => sostituisci o aggiungi (nel caso un file non sia già presente)
c => crea l'archivio (sopprime il noioso messaggio di notifica, non fa nulla se l'archivio esiste già)
t => visualizza il contenuto (ar t archive.a)
__________________
The answer is blowing in the wind...
Ho una domanda......anche se sembra un po' stupida....
Negli esercizi in cui si dice di trovare file con determinate caratterisitche.....per file si intende sempre regular file, quindi bisogna mettere l'opzione -type f nel comando find che si utilizza oppure dipende dai casi?
Per esempio se mi chiedono il file più grande non ho dubbi.....uso find -type f...
ma se invece mi chiedono quanti file ha un certo utente?
Sì, per file è sottinteso regular file
Se fosse fondato il tuo dubbio allora si dovrebbe considerare oltre alle directory anche i link, i device a caratteri e a blocchi che possono essere proprietà di un certo utente.
__________________
The answer is blowing in the wind...
Trovare tutti i processi per ogni utente e fornirne l'occupazione in memoria???
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
__________________
The answer is blowing in the wind...
Ho un problema con i comandi mv e cp
come scritto qui io faccio
cp /usr/p* /usr/prova
ma mi da come errore
/usr/p* no such file or directory qualcuno sa aiutarmi?
Originally posted by GiKappa
potresti inserire un esempio veloce per archiviare con ar?
ho cercato un po' in internet, ma non ho trovato molto di utile!
__________________
Meglio essere Padroni all'Inferno che schiavi in paradiso!
mmmmhhh io il gzip non c'e' l'ho sul mio minix ... quello dell'imagine che c'e' sul wiki.
__________________
There is no way to happyness, happyness is the way. -Buddha-
Scusate ma come si fa a rendere eseguibile uno script?
Originally posted by Simaldeff
mmmmhhh io il gzip non c'e' l'ho sul mio minix ... quello dell'imagine che c'e' sul wiki.
Originally posted by Peach
Scusate ma come si fa a rendere eseguibile uno script?
Ok grazie mille
Approfitto per l'ennesima volta del gentilezza di n3o... Trovare il processo con pid dispari che occupa più spazio in memoria?
Ma dove li trovi questi orrori ???
code:
#!/bin/sh MAXSIZE=0 MAXPID=0 for PROC in $(ps alx | tr -s ' ' : | cut -d : -f 5,8); do PID=$(echo $PROC | cut -d : -f 1) SIZE=$(echo $PROC | cut -d : -f 2) if [ $PID % 2 -eq 1 -a $SIZE -gt $MAXSIZE ]; then MAXPID=$PID MAXSIZE=$SIZE fi done echo "Processo con PID dispari più esoso: $MAXPID con $MAXSIZE KB"
__________________
The answer is blowing in the wind...
sono stai chiesti a ragazzi nel esame... non capisco il dislivello allucinante tra gli esercizi
E con questo, signori, auguro buona fortuna a tutti (in bocca al lupo per quelli superstiziosi) specialmente a quelli del turno di domani.
Vado a godermi (meritate) vacanze! (e buone vacanze anche a voi!)
See you soon on DSY
PS: dimenticavo, oggi è l'anniversario dell'attentato a Paolo Borsellino...
Persone come lui, il cielo solo raramente ce le manda.
Grazie.
__________________
The answer is blowing in the wind...
Originally posted by darkman13
sono stai chiesti a ragazzi nel esame... non capisco il dislivello allucinante tra gli esercizi
no solo questo!
a me aveva chiesto di scrivere uno script per trovare per ogni utente l'occupazione in memoria (mi sembra che sia stato già scritto)
E anche sistemi operativi l'abbiamo archiviato
Vi posto gli esercizi che mi hanno assegnato:
# SHELL SCRIPT #
Creare uno script che produca in uscita una lista ordinata del numero totale dei files presenti nel filesystem per ogni utente.
# KERNEL #
Creare una syscall che, opportunamente richiamata tramite un programma, stampi il numero di volte che è stata chiamata a partire dal boot.
Un altro esercizio di script che ho sentito assegnare riguardava il produrre un elenco dei file al cui interno fosse contenuta la parola "copyright" case-insensitive.
In bocca al lupo a chi ancora deve darlo e buone ferie e vacanze a chi lo ha dato.
Ragazzi vi posto l'esercizio che è stato chiesto a me che contiene l'AR... La consegna era:
Creare un archivio gzip (tar.gz) che contenga tutti i file che inziano per "c" e la cui dimensione sia inferiore di 10 kb:
find / -type f -name c\* -size -20 | ar ** nomearchivio
Spiegazione:
-type f: cerca tutti i file
-name c\*: tutti i file che iniziano per c (attenzione ad utilizzare \* e non solo * in quanto usando solo * se la prima lettera del primo file dopo la c fosse a cercherebbe tutti i file che iniziano per ca)
-size -20:tutti i file <10kb (20 sono i blocchi)
ar **: dove ** sono gli attributi che giuro non ricordo comunque ci sono sul man
Ciauzzz
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
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...
All times are GMT. The time now is 22:56. | 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.