Отправка SIGUSR1 для порождения

В порядке уменьшающейся скорости (в системе GNU в локали UTF-8 и на входе ASCII) согласно моим тестам:

grep '.\{80\}' file

perl -nle 'print if length$_>79' file

awk 'length>79' file

sed -n '/.\{80\}/p' file

За исключением perl¹ один (или для awk/grep/sed реализации (как mawk или busybox), которые не поддерживают многобайтовые символы), который считает длину с точки зрения количества символов (согласно LC_CTYPE установка локали) вместо байтов.

Если будут байты во входе, которые не являются частью допустимых символов (который происходит иногда, когда набор символов локали является UTF-8, и вход находится в другом кодировании), то в зависимости от решения и реализации инструмента, те байты или рассчитают как 1 символ, или 0 или не соответствие ..

Например, строка, которая состоит из 30 as 0x80 байтов, 30 bs, 0x81 байт и 30 UTF-8 és (закодированный как 0xc3 0xa9), в локали UTF-8 не соответствовал бы .\{80\} с GNU grep/sed (поскольку те автономные 0x80 байтов не соответствуют .), имел бы длину 30+1+30+1+2*30=122 с perl или mawk, 3*30=90 с gawk.

Если Вы хотите рассчитать с точки зрения байтов, прикрепите локаль к C с LC_ALL=C grep/awk/sed....

Это имело бы все 4 решения, полагают, что строка выше содержит 122 символа. Кроме perl и инструменты GNU, у Вас все еще были бы потенциальные проблемы для строк, которые содержат символы NUL (0x0 байтов).


¹ perl поведение может быть затронуто PERL_UNICODE переменная среды, хотя

0
19.02.2013, 05:02
2 ответа

Мой родительский процесс умер по некоторым причинам. Это вызвало проблему. Я заботился об этом, и проблема была решена.

2
28.01.2020, 02:28

У Вас нет полномочий отправить этот сигнал. Если Вы имеете sudo права, сделать sudo kill -SIGUSR1 $PPID

1
28.01.2020, 02:28
  • 1
    я не думаю, что это имеет место. Я могу отправить SIGUSR1 от подоболочки, и расположение по умолчанию взято. –  vpillai 19.02.2013, 05:32
  • 2
    , если Вы делаете ps aux | grep $PPID необходимо видеть как, какой пользователь, которого выполняет процесс. Если Вы не будете корнем, и этот proc работает как другой пользователь, чем себя, то у Вас, скорее всего, не будет полномочий отправить сигналы в него. –  replay 19.02.2013, 05:41
  • 3
    мог Вы отправлять вывод whoami и ps aux | grep $PPID? курсив ссылки –  replay 19.02.2013, 05:42
  • 4
    vysakhp 18563 0.0 0.0 90820 1772 ? S 08:50 0:00 sshd: vysakhp@pts/1 -bash-3.2$ whoami vysakhp –  vpillai 19.02.2013, 06:15

Теги

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