.dsy:it. Pages (39): « First ... « 3 4 5 6 [7] 8 9 10 11 » ... Last »
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)


Posted by n3o on 16-07-2007 23:59:

Originally posted by ^Belzebu^
e come sarebbe per copiare anche tutto il path dei file?
grazie!

ByezAll
^Belzebu^
Sappi che (ovviamente) in Linux la cosa è mooooooolto semplice cp -p --parents * dir
In Minix non ho trovato qualcosa del genere...mi sono inventato uno script:
code:
0) #!/bin/sh 1) NEWPATH="/dir2" 2) for SUBDIR in $(pwd | tr '/' ' '); do 3) mkdir ${NEWPATH}/${SUBDIR} 4) NEWPATH=${NEWPATH}/${SUBDIR} 5) done 6) for FILE in $(ls); do 7) cp -p ${FILE} ${NEWPATH}/${FILE} 8) done
Spiegazione, riga per riga:
0) interprete script
1) NEWPATH contiene la directory di destinazione (anche composta...)
2) pwd restituisce il percorso corrente e passato a tr '/' ' ', gli slash vengono sostituiti con degli spazi, in modo che il for riesca a scorrere ogni singola sotto directory che crea il percorso corrente
3) creo a "pezzetti" il sottoalbero anche nella directory destinazione, aggiungendo via via le sottodirectory più profonde della directory attuale
4) Aggiorno la directory di destinazione con l'ultimo ramo aggiunto
5) fine for
6) scorro ogni file nella directory
7) copio salvaguardando i permessi ogni file dalla sorgente alla destinazione
8) fine for

Ricordate di creare prima la directory di destinazione e consiglio di modificare le istruzioni (3) e (7) durante la prima volta per vedere cosa fa lo script:

3) echo mkdir ${NEWPATH}/${SUBDIR}
7) echo cp -p ${FILE} ${NEWPATH}/${FILE}

Esempio:
Destinazione = /dir2
Directory corrente = /root/dir1 (sarà il risultato di pwd)
Output del programma con gli echo:

mkdir /dir2/root
mkdir /dir2/root/dir1
cp -p prova /dir2/root/dir1/prova
cp -p script.sh /dir2/root/dir1/script.sh

__________________
The answer is blowing in the wind...


Posted by Simaldeff on 17-07-2007 09:29:

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-


Posted by n3o on 17-07-2007 10:20:

Se riesci a cavarci qualcosa facci sapere!
La soluzione più semplice è quasi sempre la migliore! :D

__________________
The answer is blowing in the wind...


Posted by Vid on 18-07-2007 15:18:

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.


Posted by GiKappa on 18-07-2007 15:44:

ciao,

sapete quale altro comando serve per compattare i file oltre a tar?


Posted by n3o on 18-07-2007 16:24:

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...


Posted by antares85 on 18-07-2007 16:38:

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!


Posted by Paul03 on 18-07-2007 16:39:

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?


Posted by Simaldeff on 18-07-2007 16:40:

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-


Posted by Laüra on 18-07-2007 16:43:

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!


Posted by antares85 on 18-07-2007 17:04:

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 )


Posted by Vid on 18-07-2007 17:14:

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...


Posted by NoWhereMan on 18-07-2007 17:15:

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)


Posted by vittorio on 18-07-2007 17:16:

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?


Posted by vittorio on 18-07-2007 17:27:

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?


All times are GMT. The time now is 17:34. Pages (39): « First ... « 3 4 5 6 [7] 8 9 10 11 » ... Last »
Show all 571 posts from this thread on one page

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