it-swarm-eu.dev

Jak získat pid posledního spuštěného příkazu ve skriptu Shell?

Chci mít skript Shell, jako je tento:

my-app &
echo $my-app-pid

Ale nevím, jak získat pid právě vykonaného příkazu.

Vím, že mohu použít jobs -p my-app příkaz grep pid. Ale pokud chci spustit Shell vícekrát, tato metoda nebude fungovat. Protože jobspec je dvojznačný.

274
David S.

PID posledního provedeného příkazu je v $! Proměnná prostředí:

my-app &
echo $!
364
enzotib

Získejte PID:

#!/bin/bash
my-app &
echo $!

Uložit PID do proměnné:

#!/bin/bash
my-app &
export APP_PID=$!

Uložte všechny instance PID do textového souboru:

#!/bin/bash
my-app &
echo $! >>/tmp/my-app.pid

Uložte výstup, chyby a PID do oddělených souborů:

#!/bin/bash
my-app >/tmp/my-app.log 2>/tmp/my-app.error.log &
echo $! >>/tmp/my-app.pid

echo "my-app PID's: $(cat /tmp/my-app.pid)"
71
Eduardo Cuomo

Zkuste něco jako

pidof my_app >> /tmp/my_app.pid
3
Piyush Jain

K tomu můžete také použít pkill Pomocí pkill můžete jednoduše zadat název procesu a vyhnout se získání pid

https://linux.die.net/man/1/pkill

0
yath