LINUX.ORG.RU
решено ФорумAdmin

Не работает «sort -n» при запуске скрипта по крону

 , ,


0

2

Не работает сортировка вывода «sort -n» при запуске скрипта по крону.
Есть простой скрипт. Суть: читаем арп-таблицу, дописываем ее в файл ip_list.txt >> переименовываем ip_list.txt в ip_list.txt.tmp >> читаем ip_list.txt.tmp, отфильтровываем лишние строки, сортируем по числовым значениям строк, убираем дубликаты строк и записываем результат в ip_list.txt

[user@host ~]$ cat create_ip_list.sh 
#!/bin/bash
/sbin/arp -n >> /home/user/ip_list.txt
mv /home/user/ip_list.txt /home/user/ip_list.txt.tmp
current_date=`date`
echo "Last update: $current_date" > /home/user/ip_list.txt
cat /home/user/ip_list.txt.tmp | grep -v "Last update" |awk '{print $1}'| sort -n | uniq >> /home/user/ip_list.txt
rm /home/user/ip_list.txt.tmp
exit 0

Запуск скрипта - по крону

$ crontab -l
* *    * * * cd /home/user && ./create_ip_list.sh

Если запустить скрипт пальцами - строки в файле отсортированы по числам

$ ./create_ip_list.sh
$ head ip_list.txt 
Last update: Птн Дек 20 19:58:50 EET 2013
Address
10.1.1.1
10.1.1.2
10.1.1.3
10.1.1.4
10.1.1.5
10.1.1.6
10.1.1.9

Если запуск происходит по крону - сортировка не работает.

$ head ip_list.txt
Last update: Fri Dec 20 19:55:01 EET 2013
Address
10.1.1.1
10.1.1.10
10.1.1.103
10.1.1.104
10.1.1.105
10.1.1.106
10.1.1.107

В чем может быть причина такого поведения?



Последнее исправление: sain (всего исправлений: 1)

На самом деле она работает одинаково правильно и в первом и во втором примере. Подозреваю, что просто нужно заменить «sort -n» на

sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n

Deleted
()

sort -n | uniq

sort -nu же.

exit 0

Зачем?

anonymous
()

то есть вот эти две строчки совсем не насторожили?

Last update: Птн Дек 20 19:58:50 EET 2013

Last update: Fri Dec 20 19:55:01 EET 2013

anonymous
()

В $PATH не указаны пути. Явно задай в скрипте либо в crontab

router ★★★★★
()
Ответ на: комментарий от anonymous

Вот очень верное замечание.

Hint: разделитель дробной части числа в разных Locale. Наверняка в этом и дело.

Kiborg ★★★
()
Ответ на: комментарий от Kiborg

Поддерживаю.

Поможет export LC_ALL=C в начале файла

selivan ★★★
()
Ответ на: комментарий от Deleted

Спасибо!)

Спасибо за помощь. Работает

sain
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.