Wie starte ich einen Job im angehaltenen Zustand?

748
nibot

In bash, wie kann ich einen Job im angehaltenen Zustand initiieren, als ob ich ihn normal gestartet und dann sofort Strg-Z gedrückt habe?

Oder als hätte ich SIGSTOP sofort an den Prozess gesendet, ohne dass der Prozess die Möglichkeit hatte, ihn auszuführen, bevor er den SIGSTOP erhält.

2
Duplikat von http://serverfault.com/questions/293632/how-do-i-start-a-process-in-suspended-state-under-linux? Foon vor 11 Jahren 0
Ja, es ist ein exaktes Duplikat. Leider wurde auch die andere Frage nicht zu meiner Zufriedenheit beantwortet. nibot vor 11 Jahren 0

2 Antworten auf die Frage

5
choroba

You can start a new subshell, immediatelly stop it, and then (i.e. after makint it run again) run your command. I used the $BASHPID variable to get the PID of the subshell, as $$ still returns the PID of the parent:

( kill -SIGSTOP $BASHPID; exec my_command ) 

Using exec here will cause the my_command process to use the same PID as the subshell.

Ändere es in `(kill -SIGSTOP $ BASHPID; exec my_command)` und ich denke, wir haben einen Gewinner! nibot vor 11 Jahren 1
4
Zardus

Ich weiß, dass diese Frage ziemlich alt ist, aber für den Fall, dass jemand nach dieser Funktionalität sucht, wie ich:

Ich habe dies kürzlich zu meiner LD_PRELOAD-Modulsammlung ( https://github.com/zardus/preeny ) hinzugefügt . Wenn Sie preeny verwenden, können Sie einen Prozess beim Start unterbrechen:

# https://github.com/zardus/preeny # cd preeny # make # LD_PRELOAD=x86_64-linux-gnu/startstop.so /bin/echo TEST [1]+ Stopped LD_PRELOAD=x86_64-linux-gnu/startstop.so /bin/echo TEST # fg TEST 

Preeny unterbricht den Prozess beim Starten der Bibliothek, bevor dieser main()aufgerufen wird.

Hallo Zardus, und herzlich willkommen bei Super User. Keine Sorge, eine alte Frage zu beantworten. Dies ist ein interessanter Ansatz! a CVn vor 8 Jahren 1
Dieser Ansatz ist schön, weil er tatsächlich die Binärdatei lädt. Ich denke jedoch, dass andere Konstruktorfunktionen vor der Ausführung ausgeführt werden können. user877329 vor 6 Jahren 0
Ja ... Ich habe leider keine Möglichkeit gefunden, die Ausführungsreihenfolge von Konstruktoren zu steuern. Zardus vor 6 Jahren 0