Czy możliwe jest dołączenie terminala do już działającego procesu przy użyciu jego PID w podobny sposób, jak przy użyciu fg
polecenia dla zadań?
command-line
process
Tommy
źródło
źródło
Odpowiedzi:
Możesz uzyskać standardowe deskryptory plików tego procesu, np .
stdout
:źródło
# ls -la /proc/24510/fd/1 lrwx------ 1 root root 64 Oct 31 08:34 /proc/24510/fd/1 -> socket:[444026]
Tutaj jest kilka opcji. Jednym z nich jest przekierowanie wyniku polecenia do pliku, a następnie użycie go
tail
do przeglądania nowych wierszy dodawanych do tego pliku w czasie rzeczywistym.Inną opcją jest uruchomienie programu wewnątrz
screen
, który jest rodzajem tekstowej aplikacji terminalowej. Sesje ekranowe można dołączać i odłączać, ale nominalnie mają one być używane tylko przez tego samego użytkownika, więc jeśli chcesz je udostępnić między użytkownikami.Jeśli chcesz, możesz śledzić proces i zobaczyć, co on robi z
strace
:-p PID
: Dołącz do procesu za pomocą identyfikatora PID procesu i rozpocznij śledzenie.-s SIZE
: Określ maksymalny rozmiar ciągu do wydrukowania (domyślnie jest to 32).-o filename
: Zapisz dane wyjściowe śledzenia w nazwie pliku, a nie w pliku screen (stderr).źródło
sudo
strace, aby dołączyć do procesu, i użyj,-o ~/output.txt
aby plik pozostał w folderze domowym.Możesz użyć poniższych poleceń, aby dołączyć działający proces do innego terminala:
retty
(Strona podręcznika : retty )reptyr
screen
Przykład:
źródło
sudo apt-get install retty
ale istnieje kilka ograniczeń dotyczących retty. Sprawdź stronę podręcznika wymienioną w odpowiedzi.