Mój scenariusz jest następującyDodawanie datownik do pliku dziennika w bash skryptu
if ps ax | grep -v grep | grep ./program > /dev/null
then
exit
else
echo "---------------------------------------------------" >> Debug.log
echo "Starting program at: $(date)" >> Debug.log
./program >> Debug.log 2>&1
fi
exit
Via crontab, ten skrypt jest uruchamiany co minutę. Sprawdza, czy dany program działa, jeśli jest, czy jest wielki, czy nie, uruchamia go.
Teraz chciałbym dodać znaczniki czasu za każdym razem, gdy skrypt uruchomi się w pliku Debug.log, jeśli znalazł ./program do uruchomienia. Więc pod linią then
, dodałem:
echo "Time: $(date)" >> Debug.log
Komenda ta nie robi nic debug.log wyjściowego. Działa jednak bezpośrednio z wiersza poleceń. Dlaczego tak jest i czy mogę zaradzić temu problemowi?
Nie mogę powiedzieć dlaczego, ale 'date +" Czas:% C ">> Debug.log' wydaje się robić to, co chcesz, prawdopodobnie bardziej przejrzysto i zwięźle. – tripleee
Także, 'grep rzecz | grep -v grep' może zwykle być refaktoryzowany do czegoś takiego jak 'grep [t] hing', gdzie pomysł polega na użyciu wyrażenia regularnego, które nie pasuje do siebie. – tripleee
Zauważ, że wyświetlasz komunikat "Debug.log", a powinieneś wskazać pełną ścieżkę tego pliku. – fedorqui