我正在运行 Ubuntu 18.04,我正在使用 apt 附带的 Postgres。
我编写了一个简单的 bash 脚本来停止数据库。
#!/bin/bash -x
/etc/init.d/postgresql stop
当在 root 拥有的 cronjob 中运行此脚本时,它不会停止数据库。
当我在命令行上手动执行脚本时,它按预期工作。selinux 未启用。
然后我将 STDOUT 传送到文件
59 11 * * * /etc/init.d/x.sh >> /var/log/pgsql_tmp.log 2>&1
唯一的输出就是这个。
+ /etc/init.d/postgresql stop
答案1
我把脚本改成了使用
service postgresql stop
我能够获得更多 STDOUT
+ /usr/sbin/service postgresql stop
/usr/sbin/service: 169: /usr/sbin/service: systemctl: not found
/usr/sbin/service: 182: /usr/sbin/service: sed: not found
/usr/sbin/service: 187: exec: systemctl: not found
例如,为了修复,
/usr/sbin/service: 169: /usr/sbin/service: systemctl: not found
我使用 vim 打开了 /usr/sbin/service 的第 169 行
169 if ! systemctl --quiet is-active multi-user.target
并插入整个路径
169 if ! /bin/systemctl --quiet is-active multi-user.target
我也为其他人做了同样的事情,现在 cron 可以工作了。