Почему TMOUT только для чтения в bashrc приводит к появлению нескольких сообщений при входе в систему о том, что TMOUT доступен только для чтения?

Вы должны посмотреть справочную страницу iotop, которая содержит несколько опций.

iotop shows writers that were active in the last (few?) second and
I need a list of top writer since the tool was started.

Используйте опцию -a, чтобы запросить iotopнакопление данных.

It doesn't sort writers by most K written.

Используйте клавиши со стрелками, чтобы изменить столбец сортировки. По умолчанию столбец процента ввода-вывода отсортирован.

I need an average write speed of each writer over the last minute.
It shows only average speed for last (few?) second.

Используйте параметр -d, чтобы указать интервал обновления.

0
21.07.2021, 06:13
3 ответа

Я предполагаю, что /etc/bashrcиспользуется более одного раза --отладьте его, добавив

echo "TMOUT=<$TMOUT>: ${BASH_SOURCE[*]}"
Строка

перед вашим заданием.

AFAIR /etc/bashrcполучен не по умолчанию, а явно из ~/.bashrcи только на RHEL -, как и в дистрибутивах.

Но экспорт и чтение переменной только -не работает так, как вы, по-видимому, ожидаете:

(readonly FOO=33; export FOO; bash -c 'FOO=47')
  # no error

Переменные среды не знают об атрибуте оболочки «только для чтения» :, который будет иметь значение только в рамках текущего сеанса/скрипта.

Это означает, что пользователь может обойти ваш TMOUT, просто запустив другую оболочку с env -u TMOUT bash --norc. Заставить его читать только -— это только неприятность.

2
20.08.2021, 10:50

Где-то вы пытаетесь присвоить значение переменной, но теперь оно доступно только для чтения.

Вы можете проверить, доступна ли переменная только для чтения, используя declareи присвоить ей значение только в том случае, если она не предназначена только для чтения:

declare -p TMOUT 2>/dev/null | grep -- '-r' >/dev/null || TMOUT=600

Перенаправления скрывают вывод declareи сообщение об ошибке, когда переменная еще не объявлена.

1
20.08.2021, 10:50

OK -Ответ дяди Билли подтолкнул меня к решению этой проблемы. Похоже, что и /etc/profile, и файлы.bashrc каждого пользователя были источником /etc/bashrc, где переменная TMOUT устанавливалась, экспортировалась и была доступна только для чтения. Устранив дополнительные вызовы для поиска /etc/bashrc, я нашел решение.

Спасибо за помощь чороба и дяде Билли

0
20.08.2021, 10:50

Теги

Похожие вопросы