Sida 1 av 1
[LÖST]Kolla om en process är igång + ett annat problem
Postat: 10 apr 2009, 20:40
av walle
Fråga 1
Jag har ett script som ser ut förljande (den heter förövrigt rdiff_tran.sh)
Kod: Markera allt
#!/bin/bash
TARGETS="/backup"
REMOTEHOST=hemligt_ip_till_server.org
REMOTEPORT=1234
REMOTEUSER=user
REMOTEBASE=""
VERBOSITY="5"
TERMINAL_VERBOSITY="3"
SCHEMA="ssh -p ${REMOTEPORT} -l ${REMOTEUSER} -C %s rdiff-backup --server"
VERBOSE="--verbosity ${VERBOSITY} --terminal-verbosity ${TERMINAL_VERBOSITY}"
OPTS="--print-statistics"
LOGGDIRR=/b_logg/
LOGGFILE=${LOGGDIRR}`/bin/date -I`
for target in $TARGETS
do
echo "rdiff ${target}..."
filtered_target=`echo $target`
rdiff-backup --remote-schema "${SCHEMA}" ${VERBOSE} ${OPTS} ${target} ${REMOTEHOST}::${REMOTEBASE}/${filtered_target} > ${LOGGFILE}
done
find ${LOGGDIRR} -atime +40 -exec rm -f {} \;
Vad scriptet gör är kort och gott överför filer från min server hemma till en annan server som jag har på en annan ort. Det jag skulle vilja veta är hur man tar reda på om detta script körs eller ej på en server som inte har ett grafiskt gränssnitt. Är det möjligt?
Fråga 2
När jag ändå håller på så vill jag ha ett annat problem löst. På serven får jag varje dag "systemmail" som ser ut följande:
Kod: Markera allt
>N 5 root@user Fri Apr 10 06:50 24/933 Cron <root@user> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.da
Vad är det som orsakar detta och hur får jag det att sluta skicka "mail" till systemet?
Re: Kolla om en process är igång + ett annat problem
Postat: 10 apr 2009, 21:28
av Lars
Fråga 1
Det finns (åtminstone) två sätt. Det första är att köra
pgrep skriptnamn för att detektera skriptet. Det andra är att lägga in
touch /var/tmp/blabla i början av skriptet och
rm /var/tmp/blabla i slutet. En eventuell fördel med metod två är att om skriptet avslutas oväntat av någon anledning så körs det inte igen förrens du har städat upp. Det kan ju iofs vara en nackdel också.
Fråga 2
Cron kör skripten under /etc/cron.daily varje dag och skickar sedan det där brevet. Men brevet skickas
endast om skripten genererar utdata, typiskt sett felmeddelanden. Den funktionaliteten vill du inte ta bort. Däremot ska du läsa innehållet och fundera på vad det är som inte fungerar som det ska, det är det som är finessen

Re: Kolla om en process är igång + ett annat problem
Postat: 10 apr 2009, 21:45
av walle
Fråga 1
pgrep låter intressant, är det sökvägen till -sh-filen man matar in eller programmet som körs (detta fall rdiff-backup)?
Fråga 2
Problemet är att jag inte använder cron.daly, utan crontab. Sedan har jag kontrollerat många av de system som jag känner till, men de fungerar prima. Om man tar det senaste mailet så ser det ut som följande:
Kod: Markera allt
From root@user Fri Apr 10 06:50:11 2009
Envelope-to: root@user
Delivery-date: Fri, 10 Apr 2009 06:50:11 +0200
From: root@user (Cron Daemon)
To: root@user
Subject: Cron <root@user> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>
Date: Fri, 10 Apr 2009 06:50:10 +0200
/etc/cron.daily/apt:
No value set for `/system/http_proxy/use_http_proxy'
No value set for `/system/http_proxy/host'
No value set for `/system/http_proxy/port'
Vad jag kan se så handlar det om att den har problem med proxy på något sätt. Problemet är att jag överhuvudtaget inte har något behov av en proxy på något sätt, så att jag har ingen aning om vad orsakar detta.
Re: Kolla om en process är igång + ett annat problem
Postat: 10 apr 2009, 23:38
av Lars
Det är namnet och/eller sökvägen till skriptet du ska använda, rent teoretiskt så kan ju ett helt annat skript köra rdiff-backup samtidigt
Skriptet /etc/cron.daily/apt kör typ "apt-get update" dagligen för att kolla om det finns säkerhetsuppdateringar. Kolla gärna i skriptet, det är lärorikt. Det anropar gconftool för att leta efter eventuella proxyinställningar, men det verkar inte fungera av någon anledning. Börja med att kolla vad
getent group admin|cut -d: -f4|cut -d, -f1 ger för svar (det ska vara namnet på den användare vars gconf-inställningar används).
Re: Kolla om en process är igång + ett annat problem
Postat: 10 apr 2009, 23:50
av walle
Okej, tack!
Av kommandot "getent group admin|cut -d: -f4|cut -d, -f1" får jag bara fram mitt användarnamn som jag har för att logga in på systemet.
Jag kollade i apt-filen också och hittade följande:
Kod: Markera allt
# set the proxy based on the admin users gconf settings
admin_user=$(getent group admin|cut -d: -f4|cut -d, -f1)
if [ -n "$admin_user" ] && [ -x /usr/bin/sudo ] && [ -z "$http_proxy" ] && [ -x /usr/bin/gconftool ]; then
use=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/use_http_proxy)
host=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/host)
port=$(sudo -u "$admin_user" gconftool --get /system/http_proxy/port)
if [ "$use" = "true" ] && [ -n "$host" ] && [ -n "$port" ]; then
export http_proxy="http://$host:$port/"
fi
fi
Egentligen skulle man kunna sätta första if-satsen till FALSE så att scriptet aldrig körs överhuvudtaget. Såvida du inte har en bättre lösning.
Re: Kolla om en process är igång + ett annat problem
Postat: 11 apr 2009, 00:04
av Lars
Jo, precis. Sedan kan du kolla vad
gconftool --get /system/http_proxy/use_http_proxy ger för resultat.
Om gconf är trasigt på något sätt kan man köra
rm -rf ~/.gconf, vilket naturligtvis RADERAR ALLA gconf-inställningar. Eventuellt kan det fungera att bara köra
gconftool --install-schema-file=/usr/share/gconf/schemas/system_http_proxy.schemas. Jag är inte helt hundra på vad kommandot egentligen gör, men det verkar inte skriva över befintliga inställningar. Och dessutom borde det bara påverka proxyinställningar som du ändå inte använder

Re: Kolla om en process är igång + ett annat problem
Postat: 11 apr 2009, 00:07
av walle
Jag fick false, är det bra?

Re: Kolla om en process är igång + ett annat problem
Postat: 11 apr 2009, 08:28
av Lars
False borde vara bra, men det är konstigt att skriptet inte får samma resultat utan "No value set for..."
Re: Kolla om en process är igång + ett annat problem
Postat: 11 apr 2009, 10:57
av SakJur
Har du en CD-tray borde du kunna lägga till
|| eject efter varje kritisk rad, då skjuter den ut CD-trayen varje gång nånting går fel...

Re: Kolla om en process är igång + ett annat problem
Postat: 11 apr 2009, 11:15
av walle
SakJur skrev:Har du en CD-tray borde du kunna lägga till
|| eject efter varje kritisk rad, då skjuter den ut CD-trayen varje gång nånting går fel...

Intressant idé, men hur i h******e ska det lösa mitt problem? Jag är inte direkt glömsk och då leder det till bara ett irritationsmoment.
Hur som helst, tar till med min ful-metoden nu eftersom att jag förmodligen inte kommer ha användning av proxy på serven. Då åter står frågan, hur fixar man så att det blir alltid FALSE i ett shell-if-sats?
Re: Kolla om en process är igång + ett annat problem
Postat: 11 apr 2009, 11:34
av Konservburk
walle skrev:hur fixar man så att det blir alltid FALSE i ett shell-if-sats?
Jag skulle kommenterat bort hela if-satsen. Men om du verkligen vill tvinga villkoret att alltid bli falskt så kan du stoppa in
; false precis innan
; then
Re: Kolla om en process är igång + ett annat problem
Postat: 11 apr 2009, 12:10
av walle
Det är sant, men då lär man sig ju inget.

Tack för all hjälp!