Abgelehnte Jobs werden beim Beenden weiterhin gestoppt

Abgelehnte Jobs werden beim Beenden weiterhin gestoppt

Ich verbinde mich mit einem Remote-Server und führe etwa Folgendes aus:

cat /dev/zero > /dev/null & disown %-

Dann mache ich das logoutund verbinde mich erneut. psEs wird angezeigt, dass kein catProzess läuft. Warum?

Antwort1

Dieser Befehl funktioniert bei mir. Er scheint jedoch viele Ressourcen zu verbrauchen. Vielleicht möchten Sie Folgendes versuchen:

sleep 999 & disown %-

und führen Sie ps aux | grep sleepstattdessen ein erneutes Anmelden durch.

Wenn Sie jedoch wissen, dass Sie den Prozess ablehnen möchten, bevor Sie ihn starten, können Sie einfach nohup verwenden:

nohup sleep 999

Antwort2

Verwenden Sie %%oder %+für den „aktuellen“ (zuletzt im Hintergrund stehenden) Job. %-ist für denvorherigeJob, also der vorletzte gestoppte oder in den Hintergrund geschaltete Job. Sie bedeuten dasselbe, wenn es nur einen Job gibt. Wenn Sie jedoch in einem früheren Teil Ihrer Shell-Sitzung oder Ihres Skripts einige Hintergrundjobs laufen gelassen haben, zielt die von Ihnen verwendete Methode %-wahrscheinlich nicht auf den Job ab, den Sie vermuten.

verwandte Informationen