Можно сделать это, например, с жемчугом и некоторой простой математикой:
cat /proc/uptime | perl -ne '/(\d*)/ ; printf "%02d:%02d:%02d:%02d\n",int($1/86400),int(($1%86400)/3600),int(($1%3600)/60),$1%60'
Если Вам не требуются секунды, можно просто работать uptime
команда. Его вывод может затем быть просто преобразован к DD:HH:MM.
Например, использование (прокладывает себе путь только если время работы> 1 ч
uptime | perl -ne '/(\d*) day[^\d]*(\d*):(\d*)/ ; printf "%02d:%02d:%02d\n", $1, $2, $3'
Вот быстрое и грязное решение только сохранить последнюю строку вывода в файле журнала:
ping localhost |
while IFS= read -r line; do
printf '%s\n' "$line" > log.txt;
done
Остерегайтесь этого, у Вас теперь, вероятно, есть все виды условий состязания при попытке получить доступ к файлу для чтения. "Блокировка" файла от взаимного доступа могла бы помочь. Для получения дополнительной информации о соединении этого вопроса stackoverflow мог бы быть хорошим началом: Как делают я синхронизируюсь (блокируют/разблокируют) доступ к файлу в ударе из нескольких сценариев?
Попробуйте этот сценарий, он работает на меня:
% nohup ping 127.0.0.1 > log.txt >&1&
Проверьте, работает ли процесс путем ввода:
% ps ax | grep ping
Если процесс работает:
% tail -f log.txt
Если это продолжает проверять с помощью ping-запросов, Ваш сценарий работает правильно.