Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Terminal , запись лога в файл , дата и время в начале строки лога  (Прочитано 2311 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SharkyEXE

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Всем здравствуйте.
Пожалуйста, помогите
Система: Ubuntu 32-bit 14.04
В Terminal я ввожу команды - выделено чёрным, жирным
После чего мне выдаются результаты , выполнение команды
Вот лог
(Нажмите, чтобы показать/скрыть)
Пожалуйста, помогите, как мне все эти строки, все то, что показывается в Terminal, весь лог работы вывести в файл, чтобы в начале каждой строки стояла дата и время, так
(Нажмите, чтобы показать/скрыть)

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7813
  • We were here
    • Просмотр профиля
sudo dpkg-reconfigure dash | ts '[%Y-%m-%d %H:%M:%S]' > somefile
если будет ругаться, что ts не найдена - установите moreutils
sudo apt install moreutils
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн SharkyEXE

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
ALiEN175

Здравствуйте.

Скажите, пожалуйста, а как Ваш вариант проверить

У меня на Рабочем столе, слева, на панели "Быстрый запуск" или как она называется, есть значок Terminal

Я на него нажимаю и туда ввожу команды

Вашу команду самой первой писать после запуска Terminal или как?

Если вашу команду самой первой писать после запуска Terminal, потом мои команды - то прилагаю лог и картинку, что вводил
« Последнее редактирование: 28 Апреля 2019, 22:34:41 от SharkyEXE »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
SharkyEXE,
Попробуйте после запуска выполнить:
: > out_log; bash -c "tail -n1 -f out_log | ts '[%Y-%m-%d %H:%M:%S]' > out_log_timeing" &script -f out_logСтроки вывода команд с датой в начале будут сохранятся в файле out_log_timeing.
Для завершения сеанса нужно выполнить команды:
exit и
kill $!

Оффлайн SharkyEXE

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
ReNzRv

Здравствуйте.

Большое Вам спасибо за решение

Скриншот и лог файл по Вашему методу прилагаю, сходится 100%но

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Цитировать
сходится 100%но
а в терминале и не должно было писать время, писать будет только в логе out_log_timeing.

Оффлайн SharkyEXE

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
ReNzRv

Здравствуйте.

А нельзя никак, пожалуйста:
1) соединить, слить две строки по отдельности
: > out_log; bash -c "tail -n1 -f out_log | ts '[%Y-%m-%d %H:%M:%S]' > out_log_timeing" &script -f out_logв одну единую строку, команду, чтобы была строка аля "Старт"
2) соединить, слить две строки по отдельности
exitkill $!в одну единую строку, команду, чтобы была строка аля "Финиш"

Пожалуйста
« Последнее редактирование: 30 Апреля 2019, 04:36:30 от SharkyEXE »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Здрасте. А можно узнать для чего вобще это?

Оффлайн SharkyEXE

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
ReNzRv

Здравствуйте.
Все просто - у меня нет времени сидеть и ждать, 3-4-5-6-7... часов, сколько пройдет с момента старт до момента стоп при сборке, так сказать , дистрибутива линукс для спутникового ресивера
А так я узнал, с момента старт до момента стоп уходит не более 5ти часов
Итого, возвращаясь к вопросу, можно или нет две строки чтобы было?
И еще: а как сделать, чтобы название файла было не out_log_timeing, а с префиксом дата и время, типа 2019-05-05_15-41-56_out_log_timeing
Спасибо.

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
SharkyEXE,
Тогда можно все выполнить одной командой
если положить команды сборки в скрипт и его вывод обрабатывать:
bash скрипт 2>&1 | ts '[%Y-%m-%d %H:%M:%S]' > $(date '+%Y.%m.%d_%H-%M-%S')_out_log_timeing

Оффлайн SharkyEXE

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
ReNzRv

Здравствуйте.

Нет, мне по проще, мне вот запустить логирование с записью даты и время , далее я шлепаю команды, после окончания работы я шлепаю стоп - и усе

Вот мне, повторюсь, в одну строку команду старт - далее я шепаю команды + мне выводится результат выполнения ( с записью дата и время ), когда мне требуется - в одну команду пишу стоп и все

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Попроще это и есть скриптом. Ничего вводить не надо. Можно использовать переменные и аргументы скрипта.
Как сократить вариант для терминала незнаю.

Оффлайн SharkyEXE

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
ReNzRv

Здравствуйте.

Понял, большое Вам спасибо за решение!

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7813
  • We were here
    • Просмотр профиля
SharkyEXE, попробуйте заново сформулировать задачу.

Цитировать
Нет, мне по проще, мне вот запустить логирование с записью даты и время , далее я шлепаю команды, после окончания работы я шлепаю стоп - и усе

Вот мне, повторюсь, в одну строку команду старт - далее я шепаю команды + мне выводится результат выполнения ( с записью дата и время ), когда мне требуется - в одну команду пишу стоп и все

Лично я ничего не понял.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн SharkyEXE

  • Автор темы
  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
ALiEN175

Здравствуйте.

Что может быть проще  ;

1) Запустил терминал
2) Ввел команду
: > out_log; bash -c "tail -n1 -f out_log | ts '[%Y-%m-%d %H:%M:%S]' > out_log_timeing" &3) Ввел команду
script -f out_log4) Ввел команду
sudo su5) Ввел команду - не рабочая, для примера
Test6) Ввел команду
exit7) Ввел команду
kill $!
Итого:
1) если можно, сделать по короче пункт 2) - потому что есть короче код
bash скрипт 2>&1 | ts '[%Y-%m-%d %H:%M:%S]' > $(date '+%Y.%m.%d_%H-%M-%S')_out_log_timeing2) хотелось бы объединить в одну строку пункты 2) и 3)
3) хотелось бы объединить в одну строку пункты 6) и 7)

Прошу прощения, если можно, напишите, что тут может быть непонятно, я Вас очень прошу

 

Страница сгенерирована за 0.021 секунд. Запросов: 19.