Czy ktoś może mi powiedzieć, jak uzyskać PID polecenia wykonanego w trybie bash.
Np. Mam skrypt bash, który uruchamia imapsync.
Gdy skrypt zostanie zabity, proces imapsync nie zawsze zostaje zabity, dlatego chciałbym móc programowo zidentyfikować PID imapsync na podstawie mojego skryptu, aby sam mógł zabić proces imapsync w module obsługi sygnału.
Jak więc programowo uzyskać PID procesu potomnego z nadrzędnego skryptu bash?
Odpowiedzi:
imapsync ma opcję, aby ustawić, gdzie ma być zapisany jego pid:
--pidfile: plik, w którym zapisywany jest imapsync pid.
źródło
IOW, podobnie jak
$$
posiada PID,$!
ma PID ostatnio wykonanego polecenia w tle .źródło
/var/run/whatever.pid
. Być może istnieje opcja wiersza polecenia, aby poprosić ją o zapisanie gdzieś PID; jeśli nie, brzmi to jak funkcja, o którą można zapytać autora lub wprowadzić go w życie.&
),$!
zmienna jest niezdefiniowana./bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
- dysfunkcja 24 listopada 10 o 14:28W przeciwieństwie do
pidof
,pgrep
można podać wiele opcji ograniczających, dla których procesów zwraca PID. Jednym, który może być szczególnie użyteczny, jest wybór na podstawie PPID z wykorzystaniem PID bieżącego procesu.który wyśle PID imapsync tylko wtedy, gdy są potomkami twojego skryptu.
źródło
Co powiesz na chwilowe umieszczenie imapsync w tle, uzyskanie PID, a następnie na pierwszym planie ... Coś takiego:
źródło