Вы захотите использовать $ вместо $* и заключить его в кавычки:
trickle -u 80 ~/bin/s3cmd.py "$@"
См. также Special Parameters
раздел в странице справочника удара.
То, что вы видите, является эффектом стандартного буфера Stdout в GREP
, предоставленном Glibc. Лучшим решением является отключение его с помощью - с линейной буферизацией
(GNU GREP, я не уверен, какие другие реализации могут поддерживать его или что-то подобное).
Что касается Почему Это происходит только в некоторых случаях:
ssh server "tail -f /var/log/server.log | grep test"
запускает всю команду в цитатах на сервере - таким образом GREP
ждет, чтобы заполнить свой буфер.
ssh server tail -f /var/log/server.log | grep test
работает GREP
на вашем локальном машине на выходе хвоста
, отправляемый через канал SSH.
Ключевая часть вот, что GREP
регулирует свое поведение в зависимости от того, является ли его stdin
клемма или нет. При запуске SSH -T
, удаленная команда работает с управляющим терминалом и, таким образом, удаленный GREP
ведет себя как ваш местный.
проверьте это: multitail
MultiTail позволяет отслеживать логи и вывод команд в нескольких окнах терминала, раскрашивать, фильтровать и объединять.
Для хвоста логов на нескольких серверах используйте:
multitail -l 'ssh user@host1 "tail -f /path/to/log/file"' -l 'ssh user@host2 "tail -f /path/to/log/file"'