, поскольку root не может удалить файл в / tmp, операция запрещена

Похоже, вы нашли ошибку в ksh93.

Я могу воспроизвести это (ksh93u +) с помощью:

$ x= ksh -c '[[ 0*1 -eq 5 ]]'
ksh: *1: arithmetic syntax error

Но все в порядке с:

ksh -c '[[ " 0*1" -eq 5 ]]'

. И похоже, что это было исправлено в ksh93v- (beta), так как я не могу воспроизвести это там.

В любом случае, я бы использовал:

if ((f_count * sleep_interval % alarm_interval == 0 && f_count > 0)); then

Несколько примечаний:

  • внутри [[...]] , > для сравнения строк (где 10 меньше 2 и в зависимости от языкового стандарта -1 может быть больше 0). Используйте -gt для численного сравнения (хотя лучше использовать ((...)) ).
  • избегайте расширения переменных внутри арифметических выражений, например, используйте x вместо $ x . Например, сравните:

     $ x = -1 ksh -c '((- $ x> 0))' 
    ksh: --1> 0: для присвоения требуется lvalue 
     

    с

     $ x = -1 ksh -c '((-x> 0))' 
     $ 
     

    Или:

     $ x = 1 + 1 ksh - c 'echo "$ (($ x * 2)) $ ((x * 2))"' 
    3 4 
     
2
09.06.2017, 22:03
2 ответа

Первая возможность заключается в том, что установлен неизменяемый флаг. Вы можете изменить это поведение с помощью команды chattr -i filename, чтобы разрешить внесение изменений в файл.

Но, возможно вы используете файловую систему с ошибками; это может сделать вашу файловую систему доступной только для чтения полностью или для определенных файлов. Проблемы с оперативной памятью тоже могут эмулировать эту проблему. Это можно исправить, перезагрузив сервер и запустив fsck, но иногда сервер может не запускаться и данные могут быть потеряны, когда операция перезагрузки пытается синхронизировать информацию в вашей оперативной памяти с диском во время перезапуска. Если dmesg показывает, что вы работаете с ошибками памяти или файловой системы, я бы рекомендовал сделать резервную копию данных перед перезагрузкой, если это возможно. Иногда ядро ​​выдает неверные адреса памяти из-за проблем с оборудованием, и некоторые неверные данные могут попасть на диски при перезагрузке системы. Сумасшедшее ядро ​​хуже, чем ядро ​​в панике, и может вести себя неожиданно, например, записывать в MBR или важные файлы; это редко, но возможно на плохом оборудовании, особенно если вы работаете с плохой оперативной памятью или горячим процессором. В Бразилии у нас есть большое количество неисправного оборудования, которое может привести к этому. Примечание: Если проблема связана с оперативной памятью, не запускайте FSCK — это приведет к безумию.

ОБНОВЛЕНИЕ: Поскольку вы говорите, что у вас проблемы только с tmp, есть вероятность, что tmp монтируется в другой раздел (возможно, с ошибками?) или извне (samba, nfs?), так что в этом случае нам нужна дополнительная информация о ваших смонтированных разделах. Если это так, опубликуйте результат вашей команды mount без каких-либо аргументов.

10
27.01.2020, 21:58

Вероятно, у вас установлен неизменяемый флаг.

https://en.wikipedia.org/wiki/Chattr#In_Linux_systems_.28chattr_and_lsattr.29

0
27.01.2020, 21:58

Теги

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