Strona 1 z 1

Jak wydobć output z procesu dla którego mam PID

: 11 lut 2014, 13:14
autor: detmold
Sytuacja wygląda tak:
1. Uruchamiam skrypt ze startem Ubuntu, który dynamicznie zaczytuje parametr z pliku [OK]
2. Skrypt ten zapisuje swój PID do pliku [OK]
3. Skrypt ten wywołuje plik bin, który wykonuje się cały czas, kiedy system działa [OK]
4. Przy zamykaniu systemu potrzebuje zakończyć skrypt, odczytać jego output i zapisać do pliku [PROBLEM]

W ogóle to zrobiłem 2 skrypty - ale może da się to zrobić inaczej i nie potrzebnie kombinuje:
1. script.sh - startuje podczas uruchamiania systemu

Kod: Zaznacz cały

#!/bin/bash
   re='^[0-9]+$'
   cd /home/piotr/hashcat-0.47/
	echo $$ > /home/piotr/hashcat-0.47/pid.txt # zapisujemy id TEGO procesu do pliku
	param=$(cat /home/piotr/hashcat-0.47/file.txt) # pobieramy dynamiczny parametr z pliku, jeśli pusty lub nie jest liczbą to dajemy domyślną wartość
	if [[ -z "$param" || ! "$param" =~ $re ]]; then
		param=400000
		echo $param > /home/piotr/hashcat-0.47/file.txt
	fi
        # to poniżej wykonuje się cały czas ale przy zamykaniu systemu muszę jak gdyby przechwycić akcję na tym procesie i wykonać operację zapisu outputu do pliku files.
   ./hashcat-cli32.bin -m 400 -a 3 --pw-min=12 --pw-max=12 -o rockyou.txt --remove hashfile.all -s $param ?l?u?d?l?u?d?l?u?d?l?u?d?l?u?d?l?u?d?l?u?d?l?u?d?l?u?d?l?u?d?l?u?d?l?u?d 
2. finish.sh - skrypt odpalający się przy zamykaniu systemu

Kod: Zaznacz cały

#!/bin/bash
# odczytuje pid procesu
param=$(cat /home/piotr/hashcat-0.47/pid.txt)
re='^[0-9]+$'

cd /home/piotr/hashcat-0.47/

# jesli pid byl pusty lub nie byl liczba to exit
if [[ -z "$param" || ! "$param" =~ $re ]]; then
	exit
fi

# i co teraz zrobić aby wypisać output z procesu dla którego mam PID i zapisać go do pliku ?

Re: Jak wydobć output z procesu dla którego mam PID

: 21 lut 2014, 23:41
autor: norvoles
Dlaczego po prostu nie przekierujesz tego co wypluwa skrypt od razu do pliku?

Kod: Zaznacz cały

script.sh > plik.txt