Linux Comm дает разные результаты при запуске из crontab - PullRequest
1 голос
/ 14 ноября 2011

Я запускаю следующую команду из сценария bash:

comm -23 file1 file2 > file3

(file1 & file2 сначала удаляются и сортируются)

Это создает file3, который содержит строки, уникальные только для file1 (что я хочу).

Когда скрипт запускается из командной строки, проблем нет. Однако, когда он запускается из crontab, он выдает гораздо больший (неправильный) file3. Пользователь crontab такой же, как вошедший в систему пользователь при запуске вручную.

Есть какие-нибудь подсказки относительно того, что может вызвать такое расхождение?

Заранее спасибо

1 Ответ

2 голосов
/ 14 ноября 2011

Почти все различия между программами, запущенными из вашей оболочки и из cron, имеют отношение к среде.

Первое, что нужно сделать, это запустить что-то вроде env в обоих местах и ​​захватить вывод. Это может быть что-то столь же простое, как запуск другого исполняемого файла, потому что пути разные.

Другая возможность заключается в том, что настройка LC_COLLATE отличается в двух средах. Со страницы info:

Прежде чем можно будет использовать comm, входные файлы должны быть отсортированы с использованием последовательности сортировки, указанной в локали LC_COLLATE.

Опция --check-order может быть способом проверить это, вызывая фатальную ошибку при несортированном вводе (включая несортированный на основе сопоставления, отличного от того, который, по вашему мнению, используется).

...