У меня есть подобные cronjobs
* * * * * /usr/bin/psql -U usename dbname -c "select usename, now(), pg_terminate_backend(pid) from pg_stat_activity where state like 'idle%' and (now() - query_start) > interval '2 hour';" &> /home/fedora/terminate_backend.log
* * * * * /usr/bin/psql -U usename dbname -c "vacuum analyze;" &> /home/fedora/vacuum.log
Второй запускается и производит запрошенный, хотя и бесполезный, журнал. Вышеупомянутое не создает журнал, и у меня есть основания полагать, что он не запущен.
Я попытался добавить впереди / usr / bin / echo "DUMB"> /home/fedora/dumb.log;
, но по-прежнему ничего не появляется.
Похоже, что так
* * * * * /usr/bin/echo "DUMB" > /home/fedora/dumb.log; /usr/bin/psql -U usename dbname -c "select usename, now(), pg_terminate_backend(pid) from pg_stat_activity where state like 'idle%' and (now() - query_start) > interval '2 hour';" &> /home/fedora/terminate_backend.log
Любая помощь приветствуется. Может быть, это как-то связано с env vars? Если посмотреть в env
и попытаться добавить хост 127.0.0.1, ничего. Кстати, вакуумный работает, так что ...
Ответ - в Почему мой кронтаб не работает, и как я могу его устранить? , но чтобы перейти к делу, это %
. Из man 5 crontab
:
The entire command portion of the line, up to a newline or a "%"
character, will be executed by /bin/sh or by the shell specified in the
SHELL variable of the cronfile. A "%" character in the command, unless
escaped with a backslash (\), will be changed into newline characters,
and all data after the first % will be sent to the command as standard
input.
Вход crontab, имеющий %
усекается (а остальное становится stdin), поэтому команда не работает и перенаправление теряется.