| 
 |  
            | 
 | 
           
        
       
  | 
 |   |   
  | 
           Bennyk | 
        
                
                
                |  Esame di laboratorio (Giugno 2007) - Domande  | 
                  19-06-2007 16:05 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	Bennyk  | 
       
     
	.amico. 
	 
     
	
    Registered: Oct 2003 
	Posts: 38 (0.00 al dì) 
	Location: Milano 
	Corso: Informatica 
	Anno: ... 
Time Online: 1 Day, 1:36:08: [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         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. 
        
        
        
         | 
 
        | 
        19-06-2007 16:05 | 
		
         | 
 
 
 |   
 |   |  
   | 
           n3o | 
        
                
                
                |   1) Specificare l'occupazione totale di un utente i ... | 
                  19-06-2007 19:55 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	n3o  | 
       
     
	tanto c'è SPASS... 
	 
     
	
    Registered: Oct 2005 
	Posts: 134 (0.02 al dì) 
	Location: Brescia 
	Corso: Informatica Magistrale 
	Anno: 1° 
Time Online: 1 Day, 19:26:05: [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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
  
  
Molte righe di codice sono controlli che potete saltare all'esame... 
 
2) Per ogni utente del sistema specificare qual è il suo file di dimensioni maggiori 
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
  
  
Anche qui i controlli e le chicche per stampare meglio l'output sono opzionali 
 
3) Stampare "MUOIO!" ogni volta che un processo termina 
Personalmente ho solo aggiunto questa riga: 
 
kprintf ("MUOIO!\n"); 
 
Nei file: 
 
/usr/src/kernel/system/do_exit.c 
/usr/src/kernel/system/do_kill.c 
 
nelle funzioni con il rispettivo nome [do_exit() e do_kill()] 
 
C'era una postilla ovvero di far stampare ance il PID del processo. 
Era un problema perchè all'interno del kernel il proc_nr non è il PID della tabella dei processi di PM ma il numero del processo della tabella del Kernel che non sono lo stesso numero quindi pescare quello giusto era comlicato e l'ora si faceva tarda... 
 quindi il prof mi ha detto che se non lo facevo non era importante e non mi ha penalizzato. (ma questo rimanga tra me e voi...)
        
        __________________ 
The answer is blowing in the wind... 
        
         | 
 
        | 
        19-06-2007 19:55 | 
		
         | 
 
 
 |   
 |   |  
   | 
           darkman13 | 
        
                
                
                |   Grandi ragazzi, grazie 10000000000 ;-) ... | 
                  19-06-2007 20:16 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	darkman13  | 
       
     
	.arcimaestro. 
	
     
	
    Registered: Feb 2004 
	Posts: 272 (0.03 al dì) 
	Location:  
	Corso:  
	Anno:  
Time Online: 3 Days, 14:00:17 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         Grandi ragazzi, grazie 10000000000 ;-) 
        
        
        
         | 
 
        | 
        19-06-2007 20:16 | 
		
         | 
 
 
 |   
 |   |  
   | 
           maxj8 | 
        
                
                
                |   La domanda di Shell di copiare tutti i file da una ... | 
                  20-06-2007 14:13 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	maxj8  | 
       
     
	.primate. 
	
     
	
    Registered: Aug 2004 
	Posts: 76 (0.01 al dì) 
	Location: Pavia 
	Corso: Informatica 
	Anno: ehm... 
Time Online: 13:34:36 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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... 
        
        
        
         | 
 
        | 
        20-06-2007 14:13 | 
		
         | 
 
 
 |   
 |   |  
   | 
           drakess81 | 
        
                
                
                |   Usciti i risultati di laboratorio... che strage!!! ... | 
                  20-06-2007 15:08 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	drakess81  | 
       
     
	.precettore. 
	
     
	
    Registered: Oct 2005 
	Posts: 83 (0.01 al dì) 
	Location: Saronno 
	Corso: Informatica 
	Anno: 2005 
Time Online: 1 Day, 12:05:51 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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!!! 
        
        
        
         | 
 
        | 
        20-06-2007 15:08 | 
		
         | 
 
 
 |   
 |   |  
   | 
           darkman13 | 
        
                
                
                |   a chi lo dici ... | 
                  20-06-2007 15:09 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	darkman13  | 
       
     
	.arcimaestro. 
	
     
	
    Registered: Feb 2004 
	Posts: 272 (0.03 al dì) 
	Location:  
	Corso:  
	Anno:  
Time Online: 3 Days, 14:00:17 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         a chi lo dici 
        
        
        
         | 
 
        | 
        20-06-2007 15:09 | 
		
         | 
 
 
 |   
 |   |  
   | 
           n3o | 
        
                
                
                |   [QUOTE][i]Originally posted by drakess81 [/i]
 ... | 
                  20-06-2007 15:23 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	n3o  | 
       
     
	tanto c'è SPASS... 
	 
     
	
    Registered: Oct 2005 
	Posts: 134 (0.02 al dì) 
	Location: Brescia 
	Corso: Informatica Magistrale 
	Anno: 1° 
Time Online: 1 Day, 19:26:05: [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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!!!   
Per l'esercizio del partizionamento trovi un thread apposta. 
Esercizi sulla shell ne trovi sulla wiki di sis lab con anche delle spiegazioni sui comandi base. 
Per la parte kernel c'è una spiegazione di un esercizio sempre nelle pagine della wiki di sis lab. 
C'è poi questo thread che spero sia ampliato... 
 
Non è molto ma per chi non ha seguito il corso credo non ci sia altro. 
 
PS: puoi leggerti "advanced bash scripting" che lo trovi su google controllando però quello che fai su Minix perchè la guida è fatta per bash+linux non sh+minix 
 
PS2: per conoscere meglio i comandi in Minix batti: 
man <comando> e ti dice tutte le varie opzioni che non sei tenuto a sapere 
La lista dei comandi dispinibili la trovi facendo 
ls /usr/bin 
        
        __________________ 
The answer is blowing in the wind... 
        Last edited by n3o on 20-06-2007 at 15:29 
         | 
 
        | 
        20-06-2007 15:23 | 
		
         | 
 
 
 |   
 |   |  
   | 
           bog86 | 
        
                
                
                |   Esempio la prima: - trovare il file più "grosso"  ... | 
                  20-06-2007 16:59 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	bog86  | 
       
     
	.consigliere. 
	
     
	
    Registered: Jan 2006 
	Posts: 117 (0.02 al dì) 
	Location:  
	Corso: Informatica 
	Anno: 3 
Time Online: 1 Day, 23:03:56 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         Esempio la prima: - trovare il file più "grosso" sul sistema 
Potrebbe andare bene così? 
find / -name "*.*" | xargs du -s | sort -n | tail -n 1 
        
        
        
         | 
 
        | 
        20-06-2007 16:59 | 
		
         | 
 
 
 |   
 |   |  
   | 
           n3o | 
        
                
                
                |   Io userei:
 ... | 
                  20-06-2007 18:59 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	n3o  | 
       
     
	tanto c'è SPASS... 
	 
     
	
    Registered: Oct 2005 
	Posts: 134 (0.02 al dì) 
	Location: Brescia 
	Corso: Informatica Magistrale 
	Anno: 1° 
Time Online: 1 Day, 19:26:05: [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         Io userei: 
find / -type f | xargs du | sort -n | tail -1 
        
        __________________ 
The answer is blowing in the wind... 
        
         | 
 
        | 
        20-06-2007 18:59 | 
		
         | 
 
 
 |   
 |   |  
   | 
           amari | 
        
                
                
                |   Modifica al kernel richiesta:
 ... | 
                  20-06-2007 21:41 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	amari  | 
       
     
	.consigliere. 
	 
     
	
    Registered: Aug 2006 
	Posts: 136 (0.02 al dì) 
	Location: Milano 
	Corso: Informatica 
	Anno: 3 
Time Online: 21:56:15 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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. 
        
        
        
         | 
 
        | 
        20-06-2007 21:41 | 
		
         | 
 
 
 |   
 |   |  
   | 
           n3o | 
        
                
                
                |   Ricordo che la tua domanda è stata fatta a lezion ... | 
                  21-06-2007 00:45 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	n3o  | 
       
     
	tanto c'è SPASS... 
	 
     
	
    Registered: Oct 2005 
	Posts: 134 (0.02 al dì) 
	Location: Brescia 
	Corso: Informatica Magistrale 
	Anno: 1° 
Time Online: 1 Day, 19:26:05: [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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);
}
  
  
Il side-effect è che il sistema non è ovviamente più in grado di aprire file che inizino con emme!!! 
 
Ottimo che il thread si allarga!!! 
è possibile chiedere di evidenziare il post mettendolo in sticky?
        
        __________________ 
The answer is blowing in the wind... 
        Last edited by n3o on 19-07-2007 at 16:56 
         | 
 
        | 
        21-06-2007 00:45 | 
		
         | 
 
 
 |   
 |   |  
   | 
           amari | 
        
                
                
                |   Ciao,
 ... | 
                  21-06-2007 09:18 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	amari  | 
       
     
	.consigliere. 
	 
     
	
    Registered: Aug 2006 
	Posts: 136 (0.02 al dì) 
	Location: Milano 
	Corso: Informatica 
	Anno: 3 
Time Online: 21:56:15 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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. 
        
        
        
         | 
 
        | 
        21-06-2007 09:18 | 
		
         | 
 
 
 |   
 |   |  
   | 
           bog86 | 
        
                
                
                |   Altra domanda: - archiviare i files più grandi di ... | 
                  21-06-2007 14:31 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	bog86  | 
       
     
	.consigliere. 
	
     
	
    Registered: Jan 2006 
	Posts: 117 (0.02 al dì) 
	Location:  
	Corso: Informatica 
	Anno: 3 
Time Online: 1 Day, 23:03:56 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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? 
        
        
        
         | 
 
        | 
        21-06-2007 14:31 | 
		
         | 
 
 
 |   
 |   |  
   | 
           n3o | 
        
                
                
                |   Prova con
 ... | 
                  21-06-2007 15:15 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	n3o  | 
       
     
	tanto c'è SPASS... 
	 
     
	
    Registered: Oct 2005 
	Posts: 134 (0.02 al dì) 
	Location: Brescia 
	Corso: Informatica Magistrale 
	Anno: 1° 
Time Online: 1 Day, 19:26:05: [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         Prova con 
find / -type f -size +5 -a -size -100 | xargs tar cvf archivio.tar 
        
        __________________ 
The answer is blowing in the wind... 
        
         | 
 
        | 
        21-06-2007 15:15 | 
		
         | 
 
 
 |   
 |   |  
   | 
           bog86 | 
        
                
                
                |   Grazie n30...
 ... | 
                  21-06-2007 16:14 | 
                 
                 
 |  
 
        
        
        
      
   |  
        
	bog86  | 
       
     
	.consigliere. 
	
     
	
    Registered: Jan 2006 
	Posts: 117 (0.02 al dì) 
	Location:  
	Corso: Informatica 
	Anno: 3 
Time Online: 1 Day, 23:03:56 [...] 
Status: Offline
     
    	Edit | Report | IP: Logged | 
        
         
         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" 
        
        
        
         | 
 
        | 
        21-06-2007 16:14 | 
		
         | 
 
 
 |   
 |   |   
  | 
	
	
	
	
		| All times are GMT. The time now is 02:44. | 
                
 | 
                   | 
		  | 
		   | 
		  | 
	 
	 
	
	 | 
 
 
 |   
 |   |   
    
	
 
 
	Forum Rules:
	
		You may not post new threads 
		You may not post replies 
		You may not post attachments 
		You may not edit your posts
	 | 
	
		HTML code is OFF 
		vB code is ON 
		Smilies are ON 
		[IMG] code is ON
	 | 
 
 
 |  
  | 
	
	 
	 | 
 
 
 
 | 
 
 
   |