[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [Debian]: Zwei Newbie Fragen



On Mon, Mar 08, 1999 at 02:38:43AM +0100, Frederick Page wrote:

> Uff, wow! Vielen Dank für die Mühe, das hab ich sofort in mein Profile
> kopiert, aber es scheint noch ein kleiner Wurm drin zu sein: signify
> kommt trotzdem noch "durcheinander" und läuft auf einmal unter anderer
> PID als vorher.
> 

schade :-(

> 
> Es sieht also so aus, als ob durch den neuerlichen Login der alte
> Prozeß gekillt würde und stattdessen ein neuer hochfährt. Ich erhalte
> auch kein Echo, daß signify bereits läuft.
> 

Fragt sich nur, wer hier wen killt?

> Vielleicht könnte man das Ganze vereinfachen (wenn das geht) und
> einfach den Return von "ps | grep usr/bin/signify" dazu verwenden, das
> Tool zu starten? Ich hab nur einen User (mich) auf meinem Rechner.
> 

Klar geht das! 

Leider habe ich mich nur noch nicht an die BSD-Syntax des ps Kommandos
gewöhnt (Solaris kennt nur die von Sys V) und jetzt keine Lust, in der
Manpage die Optionen herauszusuchen, die einem "ps -el" entsprechen.
Ein "ps axuw", welches ich gewöhnlich unter Linux verwende, zeigt
nämlich auch den in der Pipe gestarteten grep Prozeß mit an (weil der
den gesuchten Prozeß in seiner Argumentenliste hat) und liefert also
stets erfolgreich ($?=0) zurück.

Das war auch einer der Gründe, warum ich in meiner Lösung den Weg über das
procfs gegangen bin.

> >Könnte ich eigentlich auch so nehmen (s.u.),
> >allerding nehme ich ein simples shell script, statt perl zu bemühen.
> 
> Naja, Du kannst ja offensichtlich die Shell bedienen :-) ich war froh,
> daß das signify so läuft ... ich habe noch verflixt viel zu lernen.
> 

Es schaded sicher nicht, wenn man sich in Shell- (und/oder Perl-)
Programmierung auskennt. Dadurch kann man auch ein UNIX-System besser
verstehen lernen. Als perl noch nicht so verbreitet war (version <
4.x), waren Shellscripts (unter Einbindung von sed, awk, cat, usw.)
*die* Möglichkeit, schnell zu einer manchmal auch komplexeren Lösung
von Aufgaben zu kommen.

> >Allerdings hatten die Fragen an und für sich nichts mit Debian zu tun,
> >aber was macht man nicht alles für newbies :-)
> 
> Naja, das signify ist immerhin ein Debian-Paket der offiziellen
> Distri, also sind wir fast on-topic. Nochmals schönen Dank für Deine
> große Mühe und das klasse Shell-Script.
> 

Einverstanden. Ich wußte nur noch nicht, daß es ein .deb ist, da ich nicht
auf die Idee gekommen bin, ein 

grep signify /var/lib/dpkg/methods/*/available

zu machen :-)

Wie ich schon in der anderen Antwort schrieb, werde ich es mal
installieren und schauen, was man da machen kann.

-------

Nachdem ich jetzt doch noch in die ps manpage schaute (nicht das noch
jemand denkt, ich sei wirklich *so* faul), habe ich die richtige
Option gefunden:

ps axc | grep -q signify || signify --fifo=...

Hierbei listet zunächst das ps alle Prozesse aller User (a) und solche
ohne control tty (x) aber nur den Kommandonamen (c). Das grep -q
(unterdrückt STDOUT) liefert nur dann einen exit status von 0 (=true
in der Shell), wenn das signify läuft und, wenn das der Fall ist, wird
das signify Programm (nach den *zwei* senkrechten Strichen - auch als
"ODER" lesbar) nicht gestartet.

Wenn man es lesbarer schreiben will (will man das überhaupt :-)), geht
auch sowas:

---8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-
if ps axc | grep -q signify
then
  echo "signify läuft schon"
else
  echo "signify wird gestartet"
  signify --und-die Optionen
fi
---8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-

Letzteres habe ich mal für mein Script:

---8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-
#! /bin/bash

while true
do
  /usr/games/fortune -n 120 -s linuxcookie computers science \
      > ~/.signature.tmp
  cp ~/.signature.tmp ~/.signature
  sleep 1
done
---8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-

namens write_sig (ist aber uninteressant) umgemünzt, und es
funktioniert:

Debian GNU/Linux 2.0 charly tty4

charly login: karl
Password:
Linux charly 2.2.1 #1 Tue Feb 2 18:58:35 CET 1999 i486 unknown
Last login: Tue Mar  9 23:59:57 on tty3.
No mail.
Random signature writer alread running.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

(Hab nur einen anderen Text ausgeben lassen).

Die Freaks fragen sich vielleicht, warum ich da noch ein cp drin habe.
Zum einen könnte man auch so noch einen festen Text (z.B. Name usw.)
mit ausgeben und zum zweiten habe ich gesehen, daß beim blockierenden
Schreiben auf das fifo ein zweiter Bash Prozeß lief. cp verbraucht in
dem Fall einfach weniger Speicher als ein kompletter
Kommandointerpreter.

In diesem Sinne ...

viel Spaß beim Shellscripten.

Karlheinz.

-- 
There can be no twisted thought without a twisted molecule.
		-- R. W. Gerard
------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     651


Reply to: