Команда uptime показывает время прошедшее с момента старта сервера. Когда мне для разбора логов потребовалось узнать время старта сервера я не нашёл способа получить время старта сервера например в формате YYYY-MM-DD HH:MM.
Вот результат работы uptime
$ uptime 18:01:18 up 473 days, 6:56, 1 user, load average: 0.08, 0.03, 0.00
Распарсим его и сформируем строку для команды date
$ uptime | sed -e 's/,//g' | awk '{split($5,time,":"); printf("-%s days -%s hours -%s minutes\n", $3, time[1], time[2])}' -473 days -7 hours -02 minutes
И получим следующий однострочный скрипт
$ DAYSAGO=`uptime | sed -e 's/,//g' | awk '{split($5,time,":"); printf("-%s days -%s hours -%s minutes\n", $3, time[1], time[2])}'`; date --date="${DAYSAGO}" +"%Y-%m-%d %H:%M" 2014-01-10 11:05Примечание От запуска к запуску скрипта время будет плавать на ± одну минуту. Это связано с тем, что uptime возвращает время без секунд.