Sie können so etwas tun:
# create some background jobs sleep 10 & sleep 10 & sleep 10 & sleep 10 & jobs | awk -F '[][]' ''
Das wird wiederkommen
%1 %2 %3 %4
Ich nehme an, was Sie suchen.
Der Shell-Befehl jobs
unterstützt eine -p
Option, um nur die Liste der Prozess-IDs abzurufen. Gibt es eine einfache Möglichkeit, nur eine Liste von Job-IDs zu erhalten? (Ich weiß, dass es so ist, aber ich bin (noch) nicht wirklich ein Shell-Typ).
Dies wäre sehr praktisch kill
, da das Töten einer Job-ID anstelle einer Prozess-ID auch alle untergeordneten Prozesse zu töten scheint.
Sie können so etwas tun:
# create some background jobs sleep 10 & sleep 10 & sleep 10 & sleep 10 & jobs | awk -F '[][]' ''
Das wird wiederkommen
%1 %2 %3 %4
Ich nehme an, was Sie suchen.
Dies wäre sehr praktisch für kill, da das Töten einer Job-ID anstelle einer Prozess-ID auch alle untergeordneten Prozesse zu töten scheint.
Sie können dies auf andere Weise tun.
Wenn die PID gedruckt wird, können Sie sie und alle ihre Kinder töten, indem Sie ihre Prozessgruppe töten .
Sie tun dies, indem Sie die PID negieren, z
$ cat & [1] 21273 $ kill -- -21273
Du musst schreiben --
oder -pid
wird als Signal interpretiert (zB like kill -9
).
Beispiel:
$ man ls & [1] 22267 $ ps j | head -1; ps j | grep 22267 PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 18968 22267 22267 18968 pts/2 22327 T 500 0:00 man ls 22267 22281 22267 18968 pts/2 22327 T 500 0:00 /bin/sh /usr/bin/nroff -mandoc -Tutf8 22267 22282 22267 18968 pts/2 22327 T 500 0:00 less 22281 22286 22267 18968 pts/2 22327 T 500 0:00 groff -mtty-char -Tutf8 -mandoc 22286 22287 22267 18968 pts/2 22327 T 500 0:00 troff -mtty-char -mandoc -Tutf8 22286 22288 22267 18968 pts/2 22327 T 500 0:00 grotty $ kill -- -22267 [1]+ Terminated man ls $ ps j | grep 22267 $