AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 809436
Accepted
Alexander
Alexander
Asked: 2016-10-17 17:47:51 +0800 CST2016-10-17 17:47:51 +0800 CST 2016-10-17 17:47:51 +0800 CST

cron.hourly 作业未运行

  • 772

操作系统:Ubuntu 16.04

我查看了很多不同的文章和线程,但我仍然无法让我的cron.hourly工作自动运行。我正在尝试在我的 PostgreSQL 数据库上运行备份。在/etc/cron.hourly中,我只有一个名为pg_backup. 以下是它的权限:

-rwxr-xr-x   1 root root  1543 Oct 16 19:07 pg_backup

如果我运行run-parts --test /etc/cron.hourly,输出如下:

/etc/cron.hourly//pg_backup

这看起来不错。如果我手动运行脚本run-parts,它会按预期工作并备份我的数据库。这是我正在使用的命令:

run-parts -v --report /etc/cron.hourly

这很好,但无论出于何种原因,它并不是每小时都在运行。我真的不知道有什么问题。我检查了所有日志,但没有找到任何错误消息。

我错过了什么?

更新

我注意到我的/etc/crontab文件具有这样指定的外壳:SHELL=/bin/sh. 我的脚本在 bash 中运行。将shebang放在我的脚本顶部是否足以使用bash?#!/bin/bash

更新 2

正如 Broco 所建议的,我将这项工作放在了我的 crontab 中,但它仍然无法正常工作。这是我所做的:

sudo crontab -e

然后我在文件中添加了以下内容:

* * * * * root /etc/cron.hourly/pg_backup

我让它每分钟运行一次,以便更快地获得关于它是否正在运行的反馈,它似乎正在运行,但实际上并没有执行备份。

这是我的系统日志的一部分。我使用了命令grep CRON /var/log/syslog:

Oct 17 14:02:01 User CRON[63871]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:02:01 User CRON[63870]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:03:01 User CRON[63917]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:03:01 User CRON[63916]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:04:01 User CRON[63966]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:04:01 User CRON[63965]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:05:01 User CRON[64013]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:05:01 User CRON[64012]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:05:01 User CRON[64014]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Oct 17 14:06:01 User CRON[64060]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:06:01 User CRON[64059]: (CRON) info (No MTA installed, discarding output)
Oct 17 14:07:01 User CRON[64106]: (root) CMD (root /etc/cron.hourly/pg_backup)
Oct 17 14:07:01 User CRON[64105]: (CRON) info (No MTA installed, discarding output)
ubuntu cron
  • 2 2 个回答
  • 935 Views

2 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2016-10-18T14:22:30+08:002016-10-18T14:22:30+08:00

    您的 cron 作业正在运行,但该作业有问题。

    您通常应该收到一封包含输出(和错误!)的电子邮件,但您没有收到电子邮件,因为:

    Oct 17 14:02:01 User CRON[63870]: (CRON) info (No MTA installed, discarding output)
    

    您的系统上没有安装任何能够发送邮件的东西。因此,输出被丢弃。

    考虑安装 MTA,以便您可以通过电子邮件将输出发送给您,然后找出实际发生的情况。

    • 0
  2. Alexander
    2016-10-18T19:49:33+08:002016-10-18T19:49:33+08:00

    我想到了!正如迈克尔汉普顿指出的那样,我的工作正在运行,但它有一些错误。我没有安装 MTA,所以我安装postfix了sudo apt-get install postfix. 这样做之后,我可以查看/var/mail/root文件以查看与我的cron工作相关的错误消息。

    我的主要问题最终与缺少环境变量有关。由于cron运行 on root,每当脚本运行时都没有设置我的环境变量。所以,我.bashrc在我的脚本顶部包含了这样的内容:

    source "$HOME/.bashrc"

    在我root的用户中.bashrc,我添加了脚本所需的环境变量。但是,这仍然行不通;脚本运行时仍未设置环境变量。为了解决这个问题,我在脚本中添加了以下行,包括.bashrc:

    export PS1="1"

    从这个线程,这个环境变量防止.bashrc在非交互式会话中加载,所以当它被设置时,.bashrc将加载。

    非常感谢大家的帮助!

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve