Dsy Network www | forum | my | didattica | howto | wiki | el goog | stats | blog | dona | rappresentanti
Homepage
 Register   Calendar   Members  Faq   Search  Logout 
.dsy:it. : Powered by vBulletin version 2.3.1 .dsy:it. > Didattica > Corsi N - Z > Sistemi operativi I > Esame di laboratorio (Giugno 2007) - Domande Thread Rating: 3 votes, 5.00 average.
Pages (39): « 1 2 3 [4] 5 6 7 8 » ... Last »   Last Thread   Next Thread
Author
Thread    Post New Thread    Post A Reply
GiKappa
Dubbioso a Progetto

User info:
Registered: Oct 2004
Posts: 1800 (0.25 al dì)
Location: Brescia
Corso: Informatica
Anno: Laureato Triennale
Time Online: 9 Days, 22:39:19 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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!

12-07-2007 10:20
Click Here to See the Profile for GiKappa Click here to Send GiKappa a Private Message Find more posts by GiKappa Add GiKappa to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
n3o
tanto c'è SPASS...

User info:
Registered: Oct 2005
Posts: 134 (0.02 al dì)
Location: Brescia
Corso: Informatica Magistrale
Anno:
Time Online: 1 Day, 19:26:05: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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

12-07-2007 10:49
Click Here to See the Profile for n3o Click here to Send n3o a Private Message Find more posts by n3o Add n3o to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
GiKappa
Dubbioso a Progetto

User info:
Registered: Oct 2004
Posts: 1800 (0.25 al dì)
Location: Brescia
Corso: Informatica
Anno: Laureato Triennale
Time Online: 9 Days, 22:39:19 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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

12-07-2007 11:05
Click Here to See the Profile for GiKappa Click here to Send GiKappa a Private Message Find more posts by GiKappa Add GiKappa to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
n3o
tanto c'è SPASS...

User info:
Registered: Oct 2005
Posts: 134 (0.02 al dì)
Location: Brescia
Corso: Informatica Magistrale
Anno:
Time Online: 1 Day, 19:26:05: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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)

__________________
The answer is blowing in the wind...

12-07-2007 12:08
Click Here to See the Profile for n3o Click here to Send n3o a Private Message Find more posts by n3o Add n3o to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
NoWhereMan
.illuminato.

User info:
Registered: Jul 2003
Posts: 222 (0.03 al dì)
Location: Segrate (MI)
Corso: Dottorato in Informatica
Anno:
Time Online: 1 Day, 21:56:46 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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.


be', tecnicamente la domanda è "trovare il processo che occupa più memoria ram", non "trovare il PID e il nome del processo ecc ecc" :P

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 :D

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


anche qui, se vuoi è pignoleria da parte mia (e probabilmente hai comunque più ragione tu di me :P); molte volte ho fatto notare queste cretinate in altri frangenti, e ovviamente con professori che a domande precise non richiedono risposte puntuali (al contrario, le domande di questi vanno interpretate, come forse in questo caso)

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)

d'altro canto usare anche 'uniq' dovrebbe mostrare di conoscere ulteriormente l'ambiente;

in definitiva la risposta corretta forse potrebbe essere fornire entrambe le alternative, motivandole.

:P

grazie per i consigli!

12-07-2007 13:34
Click Here to See the Profile for NoWhereMan Click here to Send NoWhereMan a Private Message Visit NoWhereMan's homepage! Find more posts by NoWhereMan Add NoWhereMan to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
GiKappa
Dubbioso a Progetto

User info:
Registered: Oct 2004
Posts: 1800 (0.25 al dì)
Location: Brescia
Corso: Informatica
Anno: Laureato Triennale
Time Online: 9 Days, 22:39:19 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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)


grazie! appena sono a casa provo a controllare!

ho come l'impressione che da perfetto coglione invece di cat facevo cut!:asd:

ma ho i permessi per controllare il file /ect/passwd?

12-07-2007 13:55
Click Here to See the Profile for GiKappa Click here to Send GiKappa a Private Message Find more posts by GiKappa Add GiKappa to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
n3o
tanto c'è SPASS...

User info:
Registered: Oct 2005
Posts: 134 (0.02 al dì)
Location: Brescia
Corso: Informatica Magistrale
Anno:
Time Online: 1 Day, 19:26:05: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Originally posted by GiKappa
ma ho i permessi per controllare il file /ect/passwd?
Se ti autentichi come root non hai problemi di permessi :D (probabimente saranno rw-r--r--)
Originally posted by NoWhereMan
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)
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...
In una situazione normale non credo ci sia il problema.
In definitiva in sede di esame la situazione che mi sono trovato era di avere tre utenti diversi con UID 0 e lo script stampava lo stesso risultato per tre volte (ovviamente, il possessore di un file è localizzato tramite UID non username) e non era carino, quindi ho sistemato la situazione nel modo secondo me più efficiente... (ed è andata bene! :D ).

Sta ad ognuno risolvere i problemi estemporanei che si troverà all'esame come meglio crede (per non parlare di tutta la gente a cui si è bloccato il terminale :twisted: Salvate spesso e sperate che il demone scarichi sul disco il vostro lavoro!!!)

__________________
The answer is blowing in the wind...

12-07-2007 14:22
Click Here to See the Profile for n3o Click here to Send n3o a Private Message Find more posts by n3o Add n3o to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
NoWhereMan
.illuminato.

User info:
Registered: Jul 2003
Posts: 222 (0.03 al dì)
Location: Segrate (MI)
Corso: Dottorato in Informatica
Anno:
Time Online: 1 Day, 21:56:46 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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


siccome credevo anch'io, per sicurezza ho letto man 5 passwd; UID, GID non devono necessariamente essere univoci.

in effetti ad esempio sui *BSD è presente un secondo account con privilegi di superuser (UID 0), oltre a root, cioè toor: uno dei due viene associato a una shell minimale e si usa in caso di disastri seri nel sistema. L'altro si usa per le normali attività amministrative.

comunque ignorando il trick di -uid $USERNAME stampare "utente $USERNAME" al posto dell'UID sarebbe stato complicato, e la ripetizione dello stesso "Utente N" più volte avrebbe potuto non fare un bell'effetto come dici tu :P

per non parlare di tutta la gente a cui si è bloccato il terminale :twisted:


:wall:


ciao!

12-07-2007 14:52
Click Here to See the Profile for NoWhereMan Click here to Send NoWhereMan a Private Message Visit NoWhereMan's homepage! Find more posts by NoWhereMan Add NoWhereMan to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
antares85
.illuminato.

User info:
Registered: Oct 2005
Posts: 197 (0.03 al dì)
Location: milano
Corso: informatica
Anno: 2
Time Online: 1 Day, 6:16:58 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

@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!

13-07-2007 17:04
Click Here to See the Profile for antares85 Click here to Send antares85 a Private Message Find more posts by antares85 Add antares85 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
antares85
.illuminato.

User info:
Registered: Oct 2005
Posts: 197 (0.03 al dì)
Location: milano
Corso: informatica
Anno: 2
Time Online: 1 Day, 6:16:58 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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

?

13-07-2007 17:25
Click Here to See the Profile for antares85 Click here to Send antares85 a Private Message Find more posts by antares85 Add antares85 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
n3o
tanto c'è SPASS...

User info:
Registered: Oct 2005
Posts: 134 (0.02 al dì)
Location: Brescia
Corso: Informatica Magistrale
Anno:
Time Online: 1 Day, 19:26:05: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

Originally posted by antares85
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

?
Se non passi un parametro in linea di comando genera un errore ed esce...

$# = numero argomenti in linea di comando
-ne 1 = not equal 1

La sintassi è: ./<nome_scipt> <nome_utente>

Ma in ogni caso l'ho messo se vuoi il massimo, altrimenti credo tu possa saltarlo tranquillamente. :D
Originally posted by antares85
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)
Ho già analizzato il problema in un post precedente:
1) Per me un file è eseguibile se lo è per tutti (altrimenti farsi tutti i casi possibili è una macello...)
2) find / -type f -size +5 => tutti i file maggiorni di 5KB
3) xargs ls -l => per ogni file stampa le sue informazioni estese
4) grep "^-..x..x..x" => mantieni solo i file che all'inizio della riga di ls hanno il matching richiesto (. vuol dire qualsiasi carattere e ^ vuol dire inizio riga)
4) tr -s ' ' ' ' => comprimi tutti gli spazi tra le colonne in uno solo (' ' è uno spazio!)
5) cut -d ' ' -f 5,9 => estrai le colonne 5 e 9 (separate da spazio)

In toto:

find / -type f -size +5 | xargs ls -l | grep "^-..x..x..x" | tr -s ' ' ' ' | cut -d ' ' -f 5,9

Anche qui credo tu ti possa fermare al grep, magari aggiungi un more

find / -type f -size +5 | xargs ls -l | grep "^-..x..x..x" | more
Originally posted by antares85
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 :)
sort +7 -n vuol dire "ordina numericamente (non alfabeticamente) considerando la settima colonna"
ps -alx => per far stampare più processi possibile :D (guarda il man)

Anche in questo caso gli ultimi comandi puoi saltarli, alla fine:

ps -alx | sort +7 -n | tail -1 oppure
ps -alx | sort +7 -nr | head -1 [Ho un'avversione personale ed immotivata per tail :D]

Ragazzi per ogni esercizio controllate come funziona passo per passo e poi valutate; se un comando in pipe o più servono solo per formattare meglio l'output considerate se mantenere lo stile o la semplicità!

__________________
The answer is blowing in the wind...

13-07-2007 20:09
Click Here to See the Profile for n3o Click here to Send n3o a Private Message Find more posts by n3o Add n3o to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
antares85
.illuminato.

User info:
Registered: Oct 2005
Posts: 197 (0.03 al dì)
Location: milano
Corso: informatica
Anno: 2
Time Online: 1 Day, 6:16:58 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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?

13-07-2007 20:37
Click Here to See the Profile for antares85 Click here to Send antares85 a Private Message Find more posts by antares85 Add antares85 to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
NoWhereMan
.illuminato.

User info:
Registered: Jul 2003
Posts: 222 (0.03 al dì)
Location: Segrate (MI)
Corso: Dottorato in Informatica
Anno:
Time Online: 1 Day, 21:56:46 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

1) Per me un file è eseguibile se lo è per tutti (altrimenti farsi tutti i casi possibili è una macello...)


ecco una regex:
ls -l | grep '^[rw-]*x'
o anche (tenuto presente che x non compare mai all'inizio)
ls -l | grep '^[rw-]\+x' # non chiedetemi perché bisogna fare escape del + e non di *

trova tutti gli elementi della lista in cui all'inizio c'è una permutazione qualsiasi di (r,w,-) N volte seguita da un x. Il match è ovviamente al primo x trovato

naturalmente, 20 minuti solo per trovare la regex, quindi impossibile durante l'esame :D (e tra l'altro se non avessi detto tu la cosa del ls -l io starei ancora qui a smanettare con find . -perm che non va :D non mi vengono in mente altri sistemi...).

non per altro, è che ogni comando ha la sue particolari necessità di escaping quindi uno devi fare \+ un altro \{ mah...

peccato che nell'esame di LFA non ci sia un bel test di regex pratico :P


@antares85: in teoria le conti, ma occhio, perché nell'output di ps le colonne non sono sempre nello stesso numero (anche se sembra dalla formattazione) in alcuni casi hai (ad es)

code:
10 S 0 1 5 1 16 (wait) pm ? 0:00 init


(intuitiv. 10 colonne, in realtà (wait) pm sono DUE!)

in altri:
code:
10 W 0 26 5 1 16 pm ? 0:00 /usr/sbin/inet


10 colonne

o, peggio

code:
10 W 0 26 5 1 16 fs co 0:00 ps alx


intuitivamente 10 colonne, ma in realtà 11 (ps alx)

insomma una porcheria.

su linux che ho (ma stando a man sembrerebbe un'implementazione moderna comune immagino ad altri unix), ps è un po' meglio perché i campi vuoti sono contrassegnati almeno da un trattino;

nel nostro caso a parte estrarre il field del PID e in generale i primi 7 campi, dall'8 in poi si rischia :/

forse quello di minix è custom (e/o vecchio)

13-07-2007 22:03
Click Here to See the Profile for NoWhereMan Click here to Send NoWhereMan a Private Message Visit NoWhereMan's homepage! Find more posts by NoWhereMan Add NoWhereMan to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
n3o
tanto c'è SPASS...

User info:
Registered: Oct 2005
Posts: 134 (0.02 al dì)
Location: Brescia
Corso: Informatica Magistrale
Anno:
Time Online: 1 Day, 19:26:05: [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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 :evil:

@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! :evil: )

__________________
The answer is blowing in the wind...

13-07-2007 22:44
Click Here to See the Profile for n3o Click here to Send n3o a Private Message Find more posts by n3o Add n3o to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
NoWhereMan
.illuminato.

User info:
Registered: Jul 2003
Posts: 222 (0.03 al dì)
Location: Segrate (MI)
Corso: Dottorato in Informatica
Anno:
Time Online: 1 Day, 21:56:46 [...]
Status: Offline

Post actions:

Edit | Report | IP: Logged

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! :evil: )


mi sa che hai ragione...

14-07-2007 08:15
Click Here to See the Profile for NoWhereMan Click here to Send NoWhereMan a Private Message Visit NoWhereMan's homepage! Find more posts by NoWhereMan Add NoWhereMan to your buddy list Printer Friendly version Email this Article to a friend Reply w/Quote
All times are GMT. The time now is 17:08.    Post New Thread    Post A Reply
Pages (39): « 1 2 3 [4] 5 6 7 8 » ... Last »   Last Thread   Next Thread
Show Printable Version | Email this Page | Subscribe to this Thread | Add to Bookmarks

Forum Jump:
Rate This Thread:

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
 

Powered by: vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento | Licenze | Thanks | Syndacate
Pagina generata in 0.048 seconds (74.95% PHP - 25.05% MySQL) con 20 query.