PDA

View Full Version : Ennesimo aiuto su script bash please


IspiCiosa
24-05-2006, 13:16
salve ragazzi devo fare un proceso gestore in bash praticamente lo fatto cosi:

#!/bin/bash

SERVER_COMMAND="server"
DIRSERVER="$HOME/bin" #directory dove si trova il server
SERVER_ID_FILE="/tmp/.server.tmp" #directory temporanea


if [ $# != 1 ] ; then
echo "Gestore: Usage VD: {start|stop}" #se n° di argomenti diversi da 1 msg errore e esce...
exit 1
fi

case "$1" in
start)
$DIRSERVER/$SERVER_COMMAND & #esegue il server
echo "$!" > $SERVER_ID_FILE;; #salva il pid

stop)
PID=$(cat $SERVER_ID_FILE) #prende il pid del server
kill -SIGINT $PID #killa il pid
rm $SERVER_ID_FILE;;
*)
echo "Gestore: Usage VD: {start|stop}"
exit 1;;
esac

exit 0;



Quello che mi servirebbe è attivarlo in qualsiasi punto sia nel fyle system...e sensa dargli il comando bash all'inizio...
tipo vd: start e esegue lo script....

chi mi aiuta??

andbin
24-05-2006, 13:36
Quello che mi servirebbe è attivarlo in qualsiasi punto sia nel fyle system...e sensa dargli il comando bash all'inizio...
tipo vd: start e esegue lo script....Scusa ... spiegati meglio che non mi è ben chiaro. :muro:

IspiCiosa
24-05-2006, 14:30
volevo fare tipo che sio faccio da console vd start mi eseguo lo script anche se magari il file vd è in un altra directory...

si può??

tipo:

$ ls
vd
$cd ..
$ ls
dir file1 file2
$ bash vd start #mi esegue lo script a nche se non ce nella directory...

inoltre volevo poterlo eseguire senza dargli il comando bash...

sto sparando c@z@te???

andbin
24-05-2006, 14:52
volevo fare tipo che sio faccio da console vd start mi eseguo lo script anche se magari il file vd è in un altra directory...Basta che la directory dove è presente lo script sia in PATH.

inoltre volevo poterlo eseguire senza dargli il comando bash...Certo, puoi sicuramente avviare la shell bash passandogli lo script da eseguire ma in genere non si fa così ... è scomodo!
Basta che lo script abbia i permessi di esecuzione e poi lo lanci tranquillamente con "vd start", come se fosse un qualunque altro eseguibile.

akyra
25-05-2006, 09:20
salve ragazzi devo fare un proceso gestore in bash praticamente lo fatto cosi:

#!/bin/bash

SERVER_COMMAND="server"
DIRSERVER="$HOME/bin" #directory dove si trova il server
SERVER_ID_FILE="/tmp/.server.tmp" #directory temporanea


if [ $# != 1 ] ; then
echo "Gestore: Usage VD: {start|stop}" #se n° di argomenti diversi da 1 msg errore e esce...
exit 1
fi

case "$1" in
start)
$DIRSERVER/$SERVER_COMMAND & #esegue il server
echo "$!" > $SERVER_ID_FILE;; #salva il pid

stop)
PID=$(cat $SERVER_ID_FILE) #prende il pid del server
kill -SIGINT $PID #killa il pid
rm $SERVER_ID_FILE;;
*)
echo "Gestore: Usage VD: {start|stop}"
exit 1;;
esac

exit 0;



Quello che mi servirebbe è attivarlo in qualsiasi punto sia nel fyle system...e sensa dargli il comando bash all'inizio...
tipo vd: start e esegue lo script....

chi mi aiuta??

mmm...mi sembra molto "progetto di laboratorio di Sistemi Operativi" del dsi di Ca foscari...

se vuoi un consiglio usa degli alias inseriti nel file .bashrc della directory utente. In questo modo ogni volta che lanci un comando bash, tale comando viene prima ricercato tra gli alias e quindi puoi eseguire quello che vuoi.Così puoi intercettare sia i comandi per far partire/spegnere il disco virtuale (vd) sia i comandi per la gestione del disco stesso (ad esempio se crei un alias che si chiama "ls" che che stampa a video la scritta "pippo", ogni volta che dalla shell chiamerai il comando "ls" invece di listarti il contenuto della directory ti stamperà a video "pippo").
spero di averti un po' illuminato...ah...e buon LSO!

IspiCiosa
25-05-2006, 09:43
ciao per gli alias faccio

alias vd:='bash vd:'
e funziona ma se chiudo la shell e la rimetto devo rifare l'alias io voglio che resti in modo permanente...

vorrei una cosa del tipo che in qualsiasi pc la metto basta dare solo vd: start ...

si puo?

ps(per akira): sei del secondo anno?

andbin
25-05-2006, 10:10
ciao per gli alias faccio

alias vd:='bash vd:'
e funziona ma se chiudo la shell e la rimetto devo rifare l'alias io voglio che resti in modo permanente...Quando la bash parte, legge ed esegue una serie di file, se presenti.
In sequenza: /etc/profile (globale), e poi uno dei seguenti (il primo che trova, se non mi sbaglio): ~/.bash_profile, ~/.bash_login, e ~/.profile.
Basta che imposti l'alias in uno di questi file.

vorrei una cosa del tipo che in qualsiasi pc la metto basta dare solo vd: start ...

si puo?Sì, ovviamente, ma qualcosa devi comunque modificare nel sistema: aggiungere la directory in PATH oppure mettere un alias! Oppure mettere lo script in una delle directory che sono sicuramente già in path, es. /bin e simili.

akyra
25-05-2006, 13:12
Quando la bash parte, legge ed esegue una serie di file, se presenti.
In sequenza: /etc/profile (globale), e poi uno dei seguenti (il primo che trova, se non mi sbaglio): ~/.bash_profile, ~/.bash_login, e ~/.profile.
Basta che imposti l'alias in uno di questi file.

Sì, ovviamente, ma qualcosa devi comunque modificare nel sistema: aggiungere la directory in PATH oppure mettere un alias! Oppure mettere lo script in una delle directory che sono sicuramente già in path, es. /bin e simili.
quoto a pieno quanto detto dal competente andbin

p.s.: comunque sono al 3 anno (fuori corso :) ) ...anche se mi mancano alcuni esami del 2°...prova ad indovinare quali? fisica ( :eek: ) probabilità e stat ( :eek: ) e APA (doppio :eek: :eek: )