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