Re: zsh Goodies

Startseite
Anhänge:
Nachricht
+ (text/plain)
+ signature.asc (application/pgp-signature)
Nachricht löschen
Nachricht beantworten
Autor: Sebastian Harl
Datum:  
To: list
Betreff: Re: zsh Goodies
Hey Martin,

On Mon, Jun 16, 2008 at 10:30:37PM +0200, Martin Steigerwald wrote:
> Am Montag 16 Juni 2008 schrieb Sebastian Harl:
> > Das erfordert jedoch den Aufruf von zwei Kommandos und, schlimmer, die
> > Kenntnis der PID oder der Job-ID des im Hintergrund gestarteten
> > Prozesses, was eine Automatisierung unnoetig erschwert. Aber zum Glueck
> > bietet zsh eine Moeglichkeit, diese beiden Schritte in einem Schritt
> > durchzufuehren:
> >
> > % <prog> &!
> >
> > Mir gefaellt das recht gut und ich hoffe, dass es fuer den einen oder
> > anderen auch hilfreich und neu war ;-)
>
> Na endlich das Aquivalent von Run <NIL: >NIL: unter AmigaOS. Das suche ich
> schon seit Ewigkeiten! Schankedön...


:-)

> Und wie geht das Shell unabhängig?


Shell unabhaengig geht es nur mit nohup(1). Naja, unter Debian koenntest
du wohl noch start-stop-daemon dafuer verwenden, aber das erinnert so
ein wenig an die Spatzen und die Kanonenkugeln ;-)

> ---------------------------------------------------------------------
> shambala> cat /etc/network/if-up.d/chrony
> #!/bin/sh
>
> # Start chrony stuff in at least one minute, lets see whether that works,
> 26.6.2006
>
> at -f /etc/chrony/network-up.sh now
>
> #nohup /etc/chrony/network-up.sh
> #/etc/chrony/network-up.sh </dev/null 2>&1 >/dev/null &
> #disown
> #screen /etc/chrony/network-up.sh
> ---------------------------------------------------------------------


Du koenntest am Anfang von network-up.sh folgendes einfuegen:

exec > /dev/null 2>&1

Damit ist STDOUT/STDERR kein Terminal mehr und nohup sollte (laut
Manpage) keine Datei mehr erzeugen. Ausserdem musst du auch das nohup in
den Hintergrund schicken:

nohup /etc/chrony/network-up.sh &

I.d.F. koenntest du wohl auch disown verwenden, nachdem die Shell ja mit
dem Skript erst neu gestartet wird und du dir daher sicher sein kannst,
dass keine anderen Jobs laufen:

/etc/chrony/network-up.sh > /dev/null 2>&1 &
disown %1

Dann solltest du aber /bin/bash oder /usr/bin/zsh als Interpreter
nehmen...

> Ich könnte natürlich entweder den Hack entfernen oder &! verwenden
> und /usr/bin/zsh oben rein schreiben ;-).


Wenn das auf deinem Laptop laeuft, wird zsh wohl von dir sowieso schon
verwendet und liegt damit schon im Speicher - dann hast du net mal
wirklich irgendeinen Overhead, wenn du in dem Skript zsh hochwuchtest
;-)

Gruss,
Sebastian

-- 
Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/


Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety. -- Benjamin Franklin