В конце файла, который вы используете, есть каналы строк стиля Windows (CR) (то же самое произошло со мной с помощью Cygwin в Windows XP).
Используйте «dos2unix.exe» для исправления ошибки, и вы должны быть в порядке:
$ dos2unix.exe script.sh
dos2unix: converting file script.sh to Unix format...
Затем повторно запустите сценарий, и эти сообщения об ошибках больше не должны появляться.
-121--109287-Вы не сказали, хотите ли вы сохранить эти проблемные имена файлов. Одним из решений может быть «исправление» проблемы раз и навсегда путем переименования (некоторые или все) ваши файлы в имена, которые вы можете ввести, запустив этот сценарий:
#!/bin/sh
for old in *
do
printf "%s ...? " "$old"
if read new && [ "$new" != "" ]
then
mv -i "$old" "$new"
fi
done
Здесь будут перечислены существующие имена файлов, за которыми следуют ...?
.
Просто введите Enter , чтобы оставить файл как есть; или введите новое имя, чтобы переименовать его.
Опция -i
вызовет запрос на подтверждение перезаписи
если указано имя другого существующего файла.
Этот сценарий можно изменить несколькими способами:
*
) на более ограничительный,
например, * .avi * .mov
, поэтому вам не нужно просматривать каждый файл. mv
на cp
,
таким образом, вы сохраняете копию файла с его текущим именем
и создайте (временную?) копию с типизированным именем. Можно создать новое имя файла, основанное на существующем имени файла. Например,
при чтении pfx & & [«$ pfx»! = «»]
тогда
mv -i «$ old» «$ pfx $ old»
fi
, что позволяет получить префикс перед старым именем. Если выбран уникальный префикс, это позволит использовать автозаполнение.
Я почти уверен, что bash
не может этого сделать. Но в zsh
foo() {
local -a compcontext
compcontext=( ${(f)"$(</tmp/names)"} )
vared -c -p 'Enter in user: ' user
}
создает список совпадений из файла с одним именем в каждой строке.
Или, если вы хотите завершить слова для чтения, а не для ввода; в баше
полностью -W «$ (.
Ваша запись в crontab:
00 11 * * fri root usr/bin/mysqlauditgrep mysqlauditgrep --format=GRID /var/lib/mysql/audit.log
Формат таблицы:
# m h dom mon dow user command
Итак, ваша команда выглядит так:
usr/bin/mysqlauditgrep mysqlauditgrep --format=GRID /var/lib/mysql/audit.log
Что недействительно, нет ведущих /
и mysqlauditgrep
повторяется.
Попробуйте следующее:
00 11 * * fri root /usr/bin/mysqlauditgrep --format=GRID /var/lib/mysql/audit.log
Вы можете попробовать установить меньший интервал (например, каждую минуту), чтобы протестировать его, не дожидаясь недели для запуска.
Также проверьте, что mysqlauditgrep
находится в каталоге / usr / bin /
, вы можете найти его с помощью команды: which mysqlauditgrep
.
Если у вас возникнут другие проблемы, попробуйте изучить журнал вашего демона cron, обычно вы можете увидеть все ошибки там.