---
title: "Linux-Shell: Prozess starten sobald ein anderer beendet ist"
date: 2019-08-18T16:27:59+02:00
categories:
  - "SysOps"
lang: de
canonical: https://www.marcusjaschen.de/blog/2019/linux-shell-prozess-starten-sobald-ein-anderer-beendet-ist/
---

# Linux-Shell: Prozess starten sobald ein anderer beendet ist



<!-- wp:paragraph -->
<p>Ich hatte zuletzt das Problem zu lösen, dass ich einen neuen Prozess auf der Linux-Shell starten wollte, sobald ein anderer, bereits laufender Prozess beendet wurde.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Hintergrund: beide Prozesse verarbeiten Videos mit <a rel="noreferrer noopener" href="https://ffmpeg.org" target="_blank">ffmpeg</a> und haben eine Laufzeit in der Größenordnung von Tagen. Hier macht es aufgrund des Ressourcenverbrauchs wenig Sinn, beide parallel laufen zu lassen.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Hätte ich vorher gewusst, dass beide nacheinander arbeiten sollen, wäre die Lösung mit</p>
<!-- /wp:paragraph -->

<!-- wp:preformatted -->
<pre class="wp-block-preformatted">% php encode_videos.php directory1 &amp;&amp; \
  php encode_videos.php directory2</pre>
<!-- /wp:preformatted -->

<!-- wp:paragraph -->
<p>sehr einfach gewesen.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Der erste Prozess lief nun aber bereits. Wie startet man also den zweiten Prozess sobald der erste beendet ist?</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>Die Lösung heißt <a rel="noreferrer noopener" href="https://linux.die.net/man/1/tail" target="_blank">tail(1)</a>:</p>
<!-- /wp:paragraph -->

<!-- wp:preformatted -->
<pre class="wp-block-preformatted">% tail -f --pid=$(pidof php) /dev/null &amp;&amp; \
  php encode_videos.php directory2</pre>
<!-- /wp:preformatted -->

<!-- wp:paragraph -->
<p>tail hat eine Option <code>--pid</code>, welche die Angabe einer PID erfordert. Sobald der betreffenden Prozess beendet wird, beendet sich tail ebenfalls (mit Status-Code 0), sodass der zweite Teil des Kommandos ausgeführt wird.</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>(Das tail auf macOS hat diese Option nicht, das Feature ist vermutlich eine GNU-Eigenart :-))</p>
<!-- /wp:paragraph -->
