Взгляните на "Всестороннее Серверное руководство" - https://wiki.archlinux.org/index.php/Comprehensive_Server_Guide
Вот альтернатива, которую я использую. Это громоздко, но он решает проблему, о которой упоминается @ axel _ c, где иногда вы можете захотеть иметь отдельный экземпляр истории в каждом терминале (один для make, один для monitoring, один для vim и т.д.).
Я храню отдельный файл истории, который постоянно обновляю. У меня есть следующее сопоставление с горячей клавишей:
history | grep -v history >> ~/master_history.txt
Это добавляет всю историю с текущего терминала к файлу с именем master_history.txt в вашем домашнем каталоге.
У меня также есть отдельная горячая клавиша для поиска в главном файле истории:
cat /home/toby/master_history.txt | grep -i
Я использую cat | grep, потому что он оставляет курсор в конце для входа в мой regex. Менее уродливым способом сделать это было бы добавить пару сценариев к вашему пути для выполнения этих задач, но горячие клавиши работают в моих целях. Я также периодически буду извлекать историю из других хостов, над которыми я работал, и добавлять эту историю в свой master_history.txt файл.
Всегда приятно уметь быстро искать и находить тот хитрый регекс, который вы использовали, или тот странный один лайнер, который вы придумали 7 месяцев назад.
-121--1084- Если grep
не устраняет вывод, он, скорее всего, будет напечатан при стандартной ошибке. Самый простой способ избавиться от этого - просто сбросить его:
tail -f messages.log 2>/dev/null
-121--40364- Это сообщение выводится на stderr , как и все предупреждения и сообщения об ошибках.
Можно либо удалить все выходные данные об ошибках:
tail -f file 2> /dev/null
, либо отфильтровать только те сообщения об ошибках, которые содержат усечение
:
{ tail -f file 2>&1 >&3 3>&- | grep -v truncated >&2 3>&-;} 3>&1
Это означает, однако, что статус выхода tail
потерян. Несколько оболочек имеют опцию pipefail
(активирована с помощью set -o pipefail
) для этого трубопровода, чтобы сообщить о состоянии выхода tail
в случае сбоя. zsh
и bash
могут также сообщать о состоянии отдельных компонентов трубопровода в их массиве $ pipestatus
/ $ PIPESTATUS
.
С помощью zsh
или bash
можно использовать:
tail -f file 2> >(grep -v truncated >&2)
Однако следует помнить, что команда grep
не будет ожидаться, поэтому сообщения об ошибках, если таковые имеются, могут отображаться после завершения tail
, и оболочка уже начала выполнение следующей команды в сценарии.
В zsh
это можно решить, написав:
{ tail -f file; } 2> >(grep -v truncated >&2)
Это обсуждается в документации zsh
по адресу info zsh 'Process Substitution'
:
Существует дополнительная проблема с
> (PROCESS)
; когда это прикреплено к внешняя команда, родительская оболочка не ожидает, пока PROCESS завершение и, следовательно, сразу следующая команда не может полагаться на результаты завершаются. Проблема и решение те же, что и описано в разделе MULTIOS в примечание Перенаправление:: . Следовательно, в упрощенная версия приведенного выше примера:paste < (cut -f1 FILE1) < (cut -f3 FILE2) > (PROCESS)
(обратите внимание, что MULTIOS не задействованы),ПРОЦЕСС будет выполняться асинхронно что касается родительской оболочки. Обходной путь:
{paste < (cut -f1 FILE1) < (cut -f3 FILE2)} > (PROCESS)
Дополнительные процессы здесь порождаются из родительской оболочки, которая будет дождаться их завершения.
Если GREP
не избавляется от вывода, он, скорее всего, напечатан на стандартной ошибке. Самый простой способ избавиться от этого, чтобы просто сбросить его:
tail -f messages.log 2>/dev/null
При использовании rightsubnets
необходимо также использовать leftsubnets
, а не leftsubnet
. Даже если на этой стороне только одна подсеть.
Справочная страница ipsec.conf не очень хорошо объясняет это, но она там.
У меня были похожие проблемы в течение нескольких месяцев и я просто нашел ответ здесь: https://serverfault.com/questions/571352/openswan-multiple-subnets-routing-issue
-121--31177- Вы не можете полагаться на такое поведение на разных платформах, даже для dd
. POSIX не указывает ответ на SIGUSR1, и действительно ваш процесс dd
погибнет, если вы примените его на OSX или BSD , или даже иногда на embedded Linux (Busybox) . Использование SIGUSR1
на dd
в этом пути является внутренним номером GNU. На практике, на большинстве настольных систем Linux вы сможете это сделать.
Аналогично, если вы используете GNU awk
, вы можете отправить ему SIGUSR1
для получения некоторой информации о внутреннем состоянии GNU. В этом случае он печатается не в stdout, а в файл. Версии Awk, поддерживающие это, - GNU awk
4,1,0 и более поздние , если выполняются с флагом -p
( -профиль
), или 3,1 и более поздние при компиляции и запуске как pgawk
.
Для получения подробной информации о том, что делают сигналы, см. справочную страницу gawk
( версия 3,1 или версия 4,1 ) и найдите «Signals».
Обратите внимание, что меньше уверенности в том, что ваш настольный Linux работает под управлением GNU awk, чем GNU dd
; mawk
- это еще одно недоумение, которое я видел под управлением настольной Linux.
Возможно, поможет исправить происхождение этой ошибки. Это произошло из-за записи в файл с перезаписью «>» не с добавлением «> >».