Posted: febbraio 8th, 2009 | Author: Francesco Apollonio | Filed under: Programmazione | Tags: bash, debian, linux, utility | No Comments »
avete bisogno che un vostro programma resti sempre attivo ma continua a chiudersi inspiegabilmente e ogni volta dovete riattivarlo a mano?
Questo potrebbe servirvi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #!/bin/bash
PROGRAM="opera"
TIMER="5s"
function activate {
echo -n "Attivo..."
$PROGRAM &
PID=$!
echo $PID
}
while true; do
if [[ -z $PID ]]; then
PID=`ps aux | grep $PROGRAM | head -1 | awk '{print $2}'`
fi
if [[ -z `ps hp $PID` ]]; then
activate
else
echo "Gia attivo: $PID"
fi
sleep $TIMER
done |
una volta configurato impostando le due variabili in alto il resto è presto fatto, basta lanciarlo all’avvio!
Buon lavoro
Posted: febbraio 5th, 2009 | Author: Francesco Apollonio | Filed under: Programmazione | Tags: bash, ivman, linux, pmount, utility, varie | No Comments »
tramite pmount (ed ivman) uso montare il device con etichetta “etichetta” in una directory “/media/etichetta” (ad esempio), il piccolo inconveniente di questo metodo è che se per un qualsiasi motivo il device viene smontato in maniera ‘brutale’ rimane in “/media/etichetta” un file di lock che mi impedisce di rimontarci dentro la mia povera pennina.
bene, questo script è la soluzione 
non fa altro che controllare se effettivamente il device è montato (in /etc/mtab) e assegna a seconda dei casi una directory su cui montare:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| #!/bin/bash
function checkIfAlreadyMounted
{
mountPointUsed=`cat /etc/mtab | grep $2`
dir=$2
if [[ -d $2 ]]; then
if [[ $mountPointUsed != "" ]]; then
dir="$2-`date +%H%m%S`"
fi
fi
echo $dir
}
function checkArguments
{
if [[ $# -ne 2 ]]; then
echo "Numero parametri scorretto!"
exit
fi
if [[ ! -b $1 ]]; then
echo "Errore nei parametri passati!"
exit
fi
test=`echo $2 | egrep '/$'`
if [[ $test -ne '' ]]; then
echo "Errore nei parametri, il secondo paramentro non deve finire per /"
exit
fi
alreadyMountedDevice=`cat /etc/mtab | grep $1`
if [[ $alreadyMountedDevice != "" ]]; then
echo "Device already Mounted!"
exit
fi
}
dest="$2"
#if [[ $dest -eq "/media/" ]]; then
# dest="/media/usbdisk"
#fi
checkArguments $1 $dest
dir=`checkIfAlreadyMounted $1 $2`
echo "mounting $1 in $dir"
pmount $1 $dir
#Avvia il mio files-manager
pcmanfm $dir |
spero vi sia utile con il vostro ivman ed ovviamente pmount.
Posted: febbraio 5th, 2009 | Author: Francesco Apollonio | Filed under: Guide, Programmazione | Tags: bash, debian, Guide, linux, varie, X | 1 Comment »
non so voi ma io nutro una particolare avversione verso tutti quei login manager (gdm, kdm, xdm) che reputo pesanti e poco funzionali, soprattutto perché utilizzando un laptop ritenevo un inutile spreco di risorse (leggasi batteria) avviare tutto l’ambaradan per (ad esempio) modificare qualche piccolo file o effettuare qualche piccola operazione.
E poi voglio far vedere a tutti il mio favoloso issue
da sempre quindi disattivo questo tipo di applicativi preferendo un più semplice login da terminale (tty) e poi (all’occorrenza) avviare x tramite il comando `startx`.
Per vari motivi ho deciso di muovere un ulteriore passo dato che iniziavo a digitare ad ogni avvio quel comando:
perchè non posso avviare X automaticamente dopo aver effettuato il login ad esempio dalla tty1?
Bene, la soluzione è tutto sommato semplice, ho creato uno scriptino che effettua dei controlli (se eventualmente il server X è già attivo e se è tutto ok allora lancio X tramite startx appunto.
Eccolo qui:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #!/bin/bash
function check {
if [[ -f /tmp/login ]]; then
if [[ ! -f /tmp/.X0-lock ]]; then
rm /tmp/login
return 0
else
return 1
fi
else
touch /tmp/login
return 0
fi
}
check
if [[ $? -eq 0 ]]; then
startx 1>/dev/null 2>/dev/null
fi |
Successivamente c’è da modificare .bashrc e metterci un ulteriore controllo e richiamare lo script:
1
2
3
4
| case "$TERM" in
linux) ~/bin/startx.sh & ;;
*) ;;
esac |
ovviamente ~/bin/startx.sh è il path completo allo script precedentemente creato.
Infine non ci resta che editare (da root) il file /etc/X11/Xwrapper.conf settando come allowed_users=anybody
Ecco fatto ora tutto funziona alla perfezione.