Bash

Cronjob 不執行。類似的 cronjob 確實執行。環境變數的問題???Fedora 參與其中。psql 涉及

  • March 9, 2016

我有這樣的 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並嘗試添加主機 127.0.0.1,則沒有。順便說一句,真空的工作原理,所以…

答案為什麼我的crontab 不起作用,我該如何解決?,但切入正題,就是%. 來自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.

具有 a 的 crontab 條目%被截斷(其餘變為標準輸入),因此命令失敗並且重定向失去。

引用自:https://serverfault.com/questions/762472