uniq утилита удаляет или перечисляет дубликаты. Вход должен быть отсортирован. Так как только часть имени файла релевантна, скажите этим утилитам игнорировать то, что слева от имен файлов.
sort -k 1.54 f.txt | uniq -s 54 -cd
Проверьте свои журналы на что-либо интересное, например. /var/log/messages
или /var/log/mail.log
.
Вы могли также открыть отдельную сессию SSH или консоль и присоединить strace
к процессу дурака, после того как Вы запустили его. Найдите pid с ps aux | grep mutt
на Вашей другой сессии/консоли, и делают
strace -p pid
Необходимо смочь понять то, что дурак зависает/разрушает на, или по крайней мере новый след для следования для поиска и устранения неисправностей. Можно также хотеть, добавляют -f
переключитесь на strace для следования за дочерними процессами, если он разветвляется. Сообщите мне то, что Вы находите...
Добавьте следующую строку под командой rsync
в приведенном ниже сценарии оболочки. Я написал это в комментарии, но я официально добавлю его в свой ответ здесь:
find /auto/std2/nat2/B -name '*.zip' -exec sh -c 'unzip -d `dirname {}` {}' ';'
Это будет обращаться с расстегиванием молнии на всех zip-файлах, которые скопированы через rsync
от папки /auto/std2/nat2/A
к /auto/std2/nat2/B
, Если вы имеете rsync
, установленный, почему не только крон это и имеет , rsync
управляет отражающим файлом?
myrsyncscript.sh
chmod 700 myrsyncscript.sh
#!/bin/sh
LOCKFILE=/tmp/.hiddenrsync.lock
if [ -e $LOCKFILE ]
then
echo "Lockfile exists, process currently running."
echo "If no processes exist, remove $LOCKFILE to clear."
echo "Exiting..."
# mailx -s "Rsync Lock - Lock File found" myemail@domain.com <<+
#Lockfile exists, process currently running.
#If no processes exist, remove $LOCKFILE to clear.
#+
exit
fi
touch $LOCKFILE
timestamp=`date +%Y-%m-%d::%H:%M:%s`
echo "Process started at: $timestamp" >> $LOCKFILE
## Run Rsync if no Lockfile
rsync -a --no-compress /auto/std1/nat1/A /auto/std2/nat2/B
echo "Task Finished, removing lock file now at `date +%Y-%m-%d::%H:%M:%s`"
rm $LOCKFILE
Разбивка опций:
-a is for archive, which preserves ownership, permissions etc.
--no-compress as there's no lack of bandwidth between local devices
Дополнительные опции, которые можно рассмотреть man rsync
:
--negore-existing
пропускают файлы обновления, существующие в приемнике
--update
Это вынуждает rsync пропускать любые файлы, которые существуют в месте назначения и имеют измененное время, более позднее, чем исходный файл. (Если время изменения существующего целевого файла равно времени изменения исходного файла, он будет обновлен, если размеры отличаются.) Обратите внимание, что это не влияет на копирование symlinks или других специальных файлов. Кроме того, разница в формате файла между отправителем и получателем всегда считается достаточно важной для обновления, независимо от того, какая дата находится на объектах. Другими словами, если источник имеет каталог, где адрес назначения имеет файл, передача будет происходить независимо от временных меток.
Этот параметр является правилом передачи, не исключаемым, поэтому он не влияет на данные, которые поступают в списки файлов, и, следовательно, не влияет на удаления. Это просто ограничивает файлы, которые получатель запрашивает для передачи.
Добавьте его в cron как это, и установите частоту на все, что вы чувствуете наиболее комфортно с:
crontab -e
и добавьте ниже: ### Every 5 minutes
*/5 * * * * /path/to/my/script/myrsyncscript.sh > /path/to/my/logfile 2>&1
# * * * * * command to execute
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
# │ │ │ └────────── month (1 - 12)
# │ │ └─────────────── day of month (1 - 31)
# │ └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59)
-121--97782- Проблема на самом деле проблема с bash
синтаксический анализатор. Нет другого решения, кроме редактирования и перекомпиляции bash
, и предел 3333, вероятно, будет одинаковым на всех платформах.
Bash-синтаксический анализатор генерируется с помощью yacc
(или, как правило, с помощью bison
, но в режиме yacc
). синтаксические анализаторы yacc
являются синтаксическими анализаторами снизу вверх, используя алгоритм LALR (1), который строит конечный автомат с толкающим стеком. Нечетко говоря, стек содержит все еще не уменьшенные символы, а также достаточно информации, чтобы решить, какие производственный использовать для уменьшения символов.
Такие синтаксические анализаторы оптимизированы для правил леворекурсивной грамматики. В контексте грамматики выражения леворекурсивное правило применяется к левоассоциативному оператору, такому как a − b в обычной математике. Это слева ассоциативно, потому что выражение a − b − c группы («ассоциативные») слева, делая его равным ( a − b )− c, а не a − ( b − c ). Напротив, возведение в степень является правоассоциативным, так что a b c по соглашению оценивается как a ( b c ) , а не ( a b ) c .
операторы bash
являются операторами процессов, а не арифметическими операторами; к ним относятся булевы с коротким замыканием ( и
и | |
) и трубы ( |
и | и
), а также операторы последовательности ;
и и
. Как и математические операторы, большинство из них связываются слева, но операторы каналов связываются справа, так что cmd1 | cmd2 | cmd3
анализируется так, как будто это cmd1 | {cmd2 | cmd3;}
в отличие от {cmd1 | cmd2;} | cmd3
. (Большую часть времени разница не важна, но она наблюдаема. [См. Примечание 1])
Для синтаксического анализа выражения, представляющего собой последовательность левосторонних ассоциативных операторов, необходим только небольшой стек синтаксического анализатора. При каждом попадании в оператор выражение можно уменьшить (при желании - в скобках) слева от него. В отличие от этого, для синтаксического анализа выражения, которое является последовательностью правильных ассоциативных операторов, необходимо поместить все символы в стек синтаксического анализатора до тех пор, пока не будет достигнут конец выражения, потому что только после этого можно начать сокращение (вставляя круглые скобки). (Это объяснение включает в себя совсем немного ручного размахивания, так как оно должно было быть нетехническим, но основано на работе реального алгоритма.)
Синтаксические анализаторы Yacc изменят размер своего стека синтаксического анализатора во время выполнения, но существует максимальный размер стека во время компиляции, который по умолчанию составляет 10000 слотов. Если стек достигает максимального размера, любая попытка расширить его приведет к ошибке нехватки памяти. Поскольку |
является правильно ассоциативным, выражение формы
statement | statement | ... | statement
в конечном итоге вызовет эту ошибку. Если бы он был проанализирован очевидным образом, это произошло бы после 5000 символов трубы (с 5000 операторов). Но из-за того, как синтаксический анализатор bash
обрабатывает новые строки, фактическая используемая грамматика (примерно):
pipeline: command '|' optional_newlines pipeline
, вследствие чего после каждого |
существует необязательный _ newlines
грамматический символ, поэтому каждый канал занимает три слота для стека. Следовательно, ошибка нехватки памяти генерируется после 3333 символов канала.
Синтаксический анализатор yacc обнаруживает переполнение стека и сигнализирует о нем, вызывая yyerror («память исчерпана»)
. Однако bash
реализация yyerror
отбрасывает предоставленное сообщение об ошибке и подставляет сообщение типа «синтаксическая ошибка, обнаруженная вблизи неожиданного маркера».... В данном случае это немного сбивает с толку.
Разницу в ассоциативности легче всего наблюдать с помощью оператора | &
, который направляет stderr и stdout. (Или, точнее,дублирует stdout в stderr после установки трубы.) В качестве простого примера предположим, что файл foo
не существует в текущем каталоге. Тогда
# В этом примере есть условие гонки. Но это не актуально.
$ ls foo | ls foo | & tr n-za-m a-z
ls: не может получить доступ к foo: нет такого файла или каталога
yf: pnaabg npprff sbb: Nb fhpu svyr be qverpgbel
# Связанные слева:
$ {ls foo | ls foo;} | & tr n-za-m a-z
yf: pnaabg npprff sbb: Nb fhpu svyr be qverpgbel
yf: pnaabg npprff sbb: Nb fhpu svyr be qverpgbel
# Связано справа:
$ ls foo | {ls foo | & tr n-za-m a-z;}
ls: не может получить доступ к foo: нет такого файла или каталога
yf: pnaabg npprff sbb: Nb fhpu svyr be qverpgbel
Возможно, что сеть работает и работает, особенно беспроводная. Mutt использует блокирующий ввод-вывод, который является старой конструкцией и вряд ли будет исправлен в ближайшее время. См. https://bbs.archlinux.org/viewtopic.php?id=105030 .
Вероятно, проблема будет решена с помощью настройки offlineimap + mutt.
Скорее всего, это связано с ошибкой 2540 , из-за которой Mutt вылетает после тайм-аута IMAP.
Есть несколько других аварийных билетов, связанных с IMAP , которые были закрыты для выпуска 1.6. Надеюсь, он будет выпущен в ближайшее время, поскольку я столкнулся с той же проблемой.
messages
журнал заполнен сообщениемCalling CRDA to update world regulatory domain
каждые ~3 минуты, который неожидан, потому что я думал, что отключил беспроводную связь (она, должно быть, снова включила себя после перезагрузки). Я предполагаю, что это могло коснуться тайм-аута IMAP, хотя у меня было одновременное активное соединение Ethernet повсюду. Весьmail.*
журналы пусты. Спасибо за предложениеstrace
, поскольку я не знал об этом инструменте. Я сообщу, существуют ли какие-либо интересные ошибки системного вызова. Еще раз спасибо. – user001 01.08.2012, 09:55mutt
работа моего компьютера и затем позжеssh
в мой компьютер от другого терминала и запуска другой экземплярmutt
для временного использования? – user001 01.08.2012, 10:30