Изменено из ответа Дмитрия Васильянова.
В сценарии bash вы можете перенаправлять и заключать вывод с меткой времени построчно на лету.
Когда использовать:
tailf
для лог-файла, как сказал Дмитрий Васильян. Пример с именем foo.sh
:
#!/bin/bash
exec &> >(while read line; do echo "$(date +'%h %d %H:%M:%S') $line" >> foo.log; done;)
echo "foo"
sleep 1
echo "bar" >&2
sleep 1
echo "foobar"
И результат:
$ bash foo.sh
$ cat foo.log
May 12 20:04:11 foo
May 12 20:04:12 bar
May 12 20:04:13 foobar
Как это работает
exec &>
Перенаправить stdout и stderr в то же место > ( ...)
конвейер выводит на асинхронную внутреннюю команду Например:
отметка времени конвейера и запись в файл
#! / Bin / bash
exec &>> (при чтении строки; do echo "$ (date + '% h% d % H:% M:% S ') $ line ">> foo.log; done;)
echo" некоторые команды сценария "
/ path-to / some- сторонние программы
Или напечатайте метку времени и войдите в стандартный вывод
#! / bin / bash
exec &>> (во время чтения строки; выполните echo "$ (date + '% h% d% H:% M:% S') $ line "; done;)
echo" некоторые команды сценария "
/ path-to / some- сторонние программы
, затем сохраните их в / etc / crontab
параметр
* * * * * root /path-to-script/foo.sh >> / path-to-log-file / foo.log
Что ж, это может быть полезно, когда вы хотите смешать «ручные» поддерживаемые файлы паролей с автоматическим развертыванием «неизменяемых» локальных пользователей с такими инструментами, как, например, chef/puppet/ansible (есть и другой способ, да ).
Пакет Debian libnss -extrausers упрощает объединение пользователей и групп из двух источников:
Я регулярно использую свой личный домашний ПК и ноутбук для удаленного монтирования файловых систем с файлового сервера sec=krb5 NFS моего университетского факультета. Чтобы видеть и использовать в таких командах, как ls -l
, groups
, chgrp
, cd ~user/
и т. д., идентификаторы пользователей и групп, связанные с файлами, они должны быть перечислены в локальной базе данных getent/nsswitch. У меня есть моя частная семья -пользователей-членов в /etc/passwd
. Я не хочу использовать LDAP на частном домашнем ПК или ноутбуке, так как это может привести к неудобным задержкам, когда сервер LDAP недоступен (, когда VPN для университетского факультета не работает ). Поэтому я просто использую сценарий, который регулярно копирует всех пользователей и группы с LDAP-сервера отдела в /var/lib/extrausers/{group,password}
на мои личные машины.
Механизм /var/lib/extrausers/
делает это чрезвычайно удобным, :мой скрипт может просто перезаписать все файлы там, без необходимости модифицировать /etc/{group,passwd}
и отслеживать, откуда какая запись туда пришла. Я мог бы даже поддерживать там этих дополнительных пользователей и группы с помощью автоматически обновляемого пакета deb.
Сейчас я ищу похожее решение для macOS и хотел бы, чтобы оно тоже было /var/lib/extrausers
. Какие-либо предложения?