Хотя обе работы для меня, я думаю, что совет Lev Levitsky является корректным. Используйте -b
аргумент.
Существует хороший шанс, что перенаправление вывода является проблемой и что Вы ничего не получаете через stdout, так попробуйте это вместо этого:
top -b 2>&1 | grep "my_program" > top.log
Действительно обратите внимание, что у Вас могли бы быть проблемы с выводом, буферизующим также. Ваша оболочка не будет постоянно писать в файл, таким образом, это могло требовать времени для top.log
заполниться.
Почему это получило бы его? Вы не работаете верный bash
:
$ echo $SHELL
/bin/sh
В большинстве современных систем sh
символьная ссылка на основную оболочку. На моем Debian, например:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 1 2012 /bin/sh -> dash
В Вашем случае, sh
ссылка на bash
но, как объяснено в man bash
:
Если удар вызывается с именем sh, это пытается подражать поведению запуска исторических версий sh максимально тесно при приспосабливании стандарту POSIX также. [...] При вызове как интерактивная оболочка с именем sh удар ищет переменный ENV, разворачивает его значение, если это определяется и использует расширенное значение в качестве названия файла, чтобы читать и выполниться. Начиная с оболочки, вызванной, поскольку, sh не пытается считать и выполнить команды из любых других файлов запуска, - rcfile опция не имеет никакого эффекта.
и
- norc
Не читайте и выполняйте файл инициализации в масштабе всей системы/etc/bash.bashrc и персональный файл инициализации ~/.bashrc, если оболочка является интерактивной. Эта опция идет по умолчанию, если оболочка вызывается как sh.
Так, так как Ваша оболочка по умолчанию sh
, .bashrc
не читается. Просто установите свою оболочку по умолчанию для избиения использования chsh -s /bin/bash
.
В .bash_profile удостоверяются, что у Вас есть следующее:
# .bash_profile
# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
. ~/.profile
fi
# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
. ~/.bashrc
fi
bash
. Хорошая выгода, я пропустил это.
– Jeight
10.10.2013, 21:47
bash
вместе с другой оболочкой, такой как ksh93
который использует .profile
по умолчанию.
– Kusalananda♦
31.07.2016, 21:05
/bin/sh
указанный/bin/bash
. Я предполагаю эту проблему, остановленную от явного присвоения оболочки к/bin/bash
когда я первоначально создал учетную запись пользователя. – haste 10.10.2013, 21:56dash
для/bin/sh
как часть усилия уменьшить время запуска. Это было весело, когда мои пользователи начали спрашивать, почему их оболочка действовала по-другому. – kurtm 10.10.2013, 23:14