Учитывая, что перезагрузка решила проблему, что Вы пропустили, то, что необходимо было сказать менеджеру по входу в систему (gdm) перезагружать его конфигурацию. Большинство системных служб не перезагружает свою конфигурацию при изменении ее на самом деле немного приложений автоматически перезагружают свои конфигурационные файлы при редактировании файла непосредственно (в противоположность прохождению через конфигурации того приложения UI).
В случае Gdm это не имеет команды для перезагрузки ее конфигурационного файла. Все, что можно сделать, перезапустить его; этого не происходит автоматически, когда Вы выходите из системы (это - все еще тот же экземпляр gdm, пока Вы не останавливаете его).
Обычный способ перезапустить системную службу состоит в том, чтобы выполнить что-то как одна из следующих команд (я забываю который менеджер по сервису Ваша версия использования Red Hat):
restart ssh
service ssh restart
/etc/init.d/ssh restart
Однако перезапуск gdm выходит из системы все пользователи, которые вошли в систему через него, таким образом, это обычно не желательно. Вместо этого выполненный gdm-safe-restart так, чтобы gdm перезапустил, как только последний пользователь выходит из системы. (Это не работает над некоторыми версиями/установками gdm, особенно на Ubuntu 10.04.)
Я настоятельно рекомендую поместить любые нетривиальные задания крона в их собственный файл сценария оболочки по многим причинам:
Существует три частых причины для команд задания крона для поведения по-другому по сравнению с командами, введенными непосредственно в интерактивную оболочку в грубом порядке заурядности:
$PATH
, и другие ожидаемые пропавшие без вести переменных./bin/sh
по умолчанию, тогда как можно использовать некоторую другую оболочку в интерактивном режиме.%
символ особенно (это превращено в новую строку в команде).Необходимо предшествовать всем %
символы с a \
в crontab файле, который говорит крону просто помещать процент в команду. Помните это, когда Вы будете использовать date
команда в задании крона.
55 8 * * 3 /usr/bin/php /home/mark/dev/processes/customClient/events.php > "/home/mark/dev/processes/customClient/events-$(date +\%Y-\%m-\%d --date='last Wednesday')-$(date +\%Y-\%m-\%d).csv"
0 9 * * 3 /usr/bin/echo 'The csv for last week, trying my hand at automatiging this' | /usr/bin/mutt <emailaddress> -s "Events from $(date +\%Y-\%m-\%d --date='last Wednesday')-$(date +\%Y-\%m-\%d)" -a "/home/mark/dev/processes/customClient/events-$(date +\%Y-\%m-\%d --date='last Wednesday')-$(date +\%Y-\%m-\%d).csv"
Я также решил некоторые проблемы заключения в кавычки:
$(…)
вместо этого: его правила парсинга более просты."$somevariable"
, "$(somecommand)"
. Здесь отсутствие кавычек было безопасно потому что date
управляйте никогда не возвращал специального символа для форматов, которые Вы использовали, но необходимо тщательно помнить, какие символы специальны и проверяют этот каждый раз, когда Вы уезжаете, замена закрыла кавычки. Сохраните это простым, всегда используйте двойные кавычки, если Вы не хотите, чтобы полевое разделение и поколение имени файла произошли на результате.Вы, кажется, вложили '
в mutt
команда:
'События от
date +%Y-%m-%d --date='last Wednesday'
-date +%Y-%m-%d
'
Попытайтесь использовать "
вместо внутреннего '
так, чтобы оператор читал
'События от
date +%Y-%m-%d --date="last Wednesday"
-date +%Y-%m-%d
'
%
символы в сценарии предотвратятcron
от превращения их в новые строки, который является Вашей настоящей проблемой. – Ian D. Allen 23.11.2015, 08:37