Веб-приложение не должно работать от /home
... и как этому нужно noexec
работать правильно? Если это ничего не должно выполнять туда, это не должно пытаться сделать так, и флаг не имеет никакого значения вообще в этом случае.
Вы могли осуществить ограничения, которые Вы хотите использовать, например, маркировки SELinux, но это не легко. Или Вы могли использовать ACLs и полномочия на файлах (см. acl(7)
, setfacl(1)
) управлять, кто может выполнить файлы. Если доступ "другими" в какие-либо файлы там не требуется вообще, можно играть с полномочиями каталога.
Это проблема локали. watch
использует strtod(3)
, который зависит от локали, для преобразования аргумента -n
в double
.
Чтобы решить эту проблему, нужно либо указать аргумент -n
с другим разделителем:
watch -n 0,1 w
Либо изменить локаль на такую, где для десятичной точки используется символ точки:
export LC_NUMERIC=en_US.UTF-8
watch -n 0.1 w
Пара ссылок:
strtod
:Десятичное число состоит из непустой последовательности десятичных цифр, возможно, содержащей символ радикса (десятичная точка, зависит от локали, обычно '. ')
Вы можете просмотреть текущие настройки, выполнив locale
в терминале:
locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
...
Исходный код, о котором идет речь, можно просмотреть на gitlab:
https://gitlab.com/procps-ng/procps/blob/85fff468fa263cdd2ff1c0144579527c32333695/watch.c#L625
https://gitlab.com/procps-ng/procps/blob/85fff468fa263cdd2ff1c0144579527c32333695/lib/strutils.c#L49
(правка 2017-09-07): обновленные ссылки gitlab
его же с http: // febru. Soluvas.com/2015/03/sved-failed-to-attath-bridge-virbr0.html
-121--59574- Команды смотреть
и w
не имеют ничего общего друг с другом, кроме первой буквы, равными. Вы не можете предположить, что параметр для W
одинаково действителен для часов
. Команда Watch
принимает неотъемлемое количество секунд в качестве значения для -N
.
Кстати, я также посмотрел на страницу человека для w
, и я не вижу какую-либо ссылку на период времени. Мне любопытно знать, откуда вы получили эту информацию, чтобы я мог (надеюсь) объяснить дальше.
Обновление
Похоже, что вы на самом деле имеете в виду таймеру
, а не для W
. Я буду обновлять ваш вопрос, чтобы соответствовать этому новому раскрытию. Наконец-то обнаружил это, я не вижу ничего плохого с Watch -n 0,1 W
.
Просто дополнение к прекрасному ответу Заксе .
Есть две проблемы:
LC_NUMERIC=en_US.UTF-8 watch -n 0.1 w
как обход того факта, что watch
ожидают числа, отформатированные в соответствии с соглашением пользователя, в то время как вы ожидаете, что они будут в английском формате.
Это не работает, если установлен LC_ALL
. LC_ALL
переопределяет все остальные настройки локали, включая LC_NUMERIC
.Чтобы обойти эту проблему, можно использовать:
LC_ALL = en_US.UTF-8 watch -n 0.1 w
, но тогда второй пункт ниже будет еще хуже
команда, запущенная часы
(в данном случае w
) наследуют LC_NUMERIC
. Таким образом, вместо вывода чисел в формате, ожидаемом пользователем, он будет выводить их в формате английского языка (США).
В идеале мы бы хотели, чтобы часы запускали w
каждую десятую долю секунды (независимо от локали пользователя), не влияя на поведение команды w
(которая всегда должен давать вывод, понятный пользователю в его собственной локали).
С оболочкой yash
вы можете сделать это с помощью:
watch -n "$((0.1))" w
yash
- одна из 3-х оболочек Борна, поддерживающих арифметику с плавающей запятой (другие - zsh
и кш93
). Однако это единственный, который правильно выполняет интернационализацию. zsh
всегда использует .
как десятичный знак, а ksh93
учитывает значение из события локали во внутреннем синтаксисе.
Для яс
, .
- это десятичный знак для его арифметического синтаксиса, но он учитывает локаль при вводе / выводе.
Еще один прием, который вы можете использовать здесь, - это полностью отказаться от ввода десятичной метки, используя научную нотацию:
watch -n 1e-1 w
Или вы можете запросить десятичную метку из локали:
m=$(locale decimal_point)
watch -n "0${m}1" w