Вам следует взглянуть на почтенные команды diction (1)
и style (1)
. Они ловят самые разные бу-бу. Есть новые версии (GPLv3 здесь, на Fedora 23).
Например, в дистрибутивах на основе Debian установите пакет diction
, который включает стиль
:
$ sudo apt-get install diction
По крайней мере, в Fedora это:
$ dnf install diction
Красный Hat Enterprise (и клонам), вероятно, потребуются:
$ yum install diction
В любом случае, это происходит из пакета исходной разработки GNU под названием diction
, поэтому его следует называть одинаковым почти везде.
$ diction jefferson_typo.txt
jefferson_typo.txt:1: He has [has] refused his Assent to Laws, the [most] wholesome and necessary for the public good.
jefferson_typo.txt:3: He has forbidden his Governors to pass Laws of immediate and [and] pressing importance, unless suspended in their operation till his Assent should be [be] obtained; and when [so] suspended, he has utterly neglected to attend to them.
2 phrases in 2 sentences found.
Pros
Cons
[]
маркировку для элементов, не связанных с повторяющимися словами. Например, [so]
, вероятно, отмечен, потому что он может считаться посторонним согласно The Elements of Style от Strunk . См. man diction
[be]
- это исходная строка ввода с номером 5, но здесь он показывает 3
только потому, что [be]
является частью предложения, начинающегося в строке 3
. Это немного отличается от того, что вы хотели Записи в procfs управляются специальным кодом. Код, который устанавливает разрешения и права собственности на файлы в / proc / sys
( proc_sys_setattr
), отклоняет изменение разрешений и прав собственности с помощью EPERM. Таким образом, невозможно изменить права доступа или владельца этих файлов, точка. Такие изменения не реализованы, поэтому наличие root не помогает.
Когда вы пытаетесь писать как пользователь без полномочий root, вы получаете ошибку разрешения. Даже с sudo echo "/home/user/foo/core.%e.%p"> / proc / sys / kernel / core_pattern
вы пытаетесь написать как пользователь без полномочий root: sudo
запускает echo
от имени пользователя root, но перенаправление происходит в оболочке, из которой выполняется sudo
, и эта оболочка не имеет повышенных привилегий. С помощью sudo bash -c '…>…'
перенаправление выполняется в экземпляре bash, который запускается sudo
и выполняется от имени пользователя root, поэтому запись завершается успешно.
Причина, по которой только root может быть разрешено устанавливать sysctl kernel.core_pattern
, заключается в том, что он позволяет указывать команду, и, поскольку это глобальный параметр, эту команду может выполнить любой пользователь. Фактически, это в той или иной степени относится ко всем настройкам sysctl: все они глобальные настройки, поэтому только root может их изменить. kernel.core_pattern
- как раз особенно опасный случай.
En Ubuntu 16.04 LTS,
sudo bash -c 'echo /home/user/foo/core.%e.%p > /proc/sys/kernel/core_pattern'
falla con
No such file or directory
tengo que correr
sudo sysctl -w kernel.core_pattern=/home/user/foo/core.%e.%p
В Ubuntu 18.04 я могу обновить шаблон с помощью:
sudo bash -c 'echo "/data/app_crash/%t.%e.core.%p" > /proc/sys/kernel/core_pattern'
Я также могу обновить /etc/sysctl.conf
и добавить строку:
kernel.core_pattern = /data/app_crash/%t.%e.core.%p
Однако, несмотря на то, что в /etc/sysctl.conf
или /etc/sysctl.d/*
нет других настроек строк kernel.core_pattern
, после перезагрузки шаблон снова устанавливается на значение по умолчанию:
$ sudo sysctl -a | grep kernel.core_pattern
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P
Оказалось, что apport
закончилась -запись любых изменений, которые я внес. Я удалил apport
с помощью sudo apt-get remove apport
, после чего мои изменения были использованы.