标签: cron

如何在 linux 中永久修复我的日期同步问题?

Ubuntu 7.10 服务器 i386 时钟/日期/时间不会保持同步。我可以查看他们的日志文件来判断时钟何时发生变化吗?为了临时修复,我在 /etc/cron.hourly 中创建了一个文件:

#!/bin/sh
ntpdate time.nist.gov
Run Code Online (Sandbox Code Playgroud)

然而,这仍然会留下一个潜在的不受控制的时间。有 cron.minutely 吗?那仍然会留下潜在的一分钟不受控制的时间。我已经阅读了有关 CMOS 电池问题的信息,但是如果这不能解决问题怎么办?我希望能够将此作为完全软件问题进行故障排除。

我的鱿鱼日志显示的日期可以追溯到 2005 年,当时时钟发生了变化,而我的时间敏感访问控制出现偏差,最终允许用户在工作时间浏览被禁止的网站。

linux sync time cron ubuntu-server

6
推荐指数
1
解决办法
2万
查看次数

从什么上下文执行 cron 任务?

我是在彻底摧毁 Linux 机器后问这个问题的。让我给你一些背景,让你知道我来自哪里。

我目前有(嗯……确实有)一个运行 Apache 的 RedHat Linux 机器,并添加了 Phusion 乘客,用于在 Apache 下运行 Ruby 应用程序。该应用程序作为一项服务,定期向辛辛那提地区的信息亭提供缓存文件。Web 应用程序运行良好,剩下的唯一部分是设置一个 cron 任务来检索需要缓存的所有信息,并将其打包到几个不同的更新包中以提供给自助服务终端。为了实现这一点,我编写了一个 Ruby 脚本来处理数据的获取和打包。为了设置 cron 任务,我只使用了内置的 crontab。脚本如下所示:

#!/bin/bash

cd ../lib
ruby pdf_cache.rb
ruby pdf_prepare.rb
ruby rss_cache.rb
ruby nightly-pack.rb 
cd ..
chown -R www.www *
Run Code Online (Sandbox Code Playgroud)

该脚本位于 cron 文件夹中,目录结构如下所示:

.
|-- cron
|-- feeds
|-- lib
|   `-- trash
|-- logs
|-- nightly-packs
|-- pdf
|   `-- tank
|-- public
`-- tmp
Run Code Online (Sandbox Code Playgroud)

crontab -e按照root以下内容运行:

0 3 * * * /usr/local/apache2/ruby_projects/kiosk/cron/schedule_job
Run Code Online (Sandbox Code Playgroud)

应该每天凌晨 3 …

bash cron crontab redhat-enterprise-linux

6
推荐指数
1
解决办法
2995
查看次数

禁用特定用户的 cron 作业

我在的crontab的职位列表user1user2。我想阻止user2运行的作业。

我试着列出user2cron.deny访问他,但这只能使他crontab。在列出的职位user2crontab仍得到执行。

如何为特定用户禁用 cron 作业?

cron crontab

6
推荐指数
2
解决办法
2万
查看次数

sSMTP 有别名文件吗?

我安装sSMTP用于从命令行发送电子邮件。
我想创建一些别名cron jobs

$ sudo vim /etc/aliases
    # append this line at the end
    myname: root

$ newaliases 
newaliases: Aliases are not used in sSMTP
Run Code Online (Sandbox Code Playgroud)

所以我不能再用/etc/aliases了。
我注意到有一个/etc/ssmtp/revaliases配置文件。
有什么用?它是一个aliases文件sSMTP吗?

email alias cron smtp

6
推荐指数
1
解决办法
4614
查看次数

为什么 root cron 作业脚本需要“sudo”才能正常运行?

我正在我的 Raspberry Pi 上运行这个简单的脚本来自动更新,这样我就可以忘记它了。它还保留一个日志,说明更新是否成功。脚本是update.sh:

#!/bin/bash
echo "Update starts on: $(date)" >> /home/pi/update.log
 if apt-get update && apt-get upgrade -y; then
    echo "update successful $(date)"  >> /home/pi/update.log
 else
    echo "Couldn't update $(date)" >> /home/pi/update.log
 fi
Run Code Online (Sandbox Code Playgroud)

我通过使用将此脚本添加到根 crontabsudo crontab -e并将 cronjob 设置为每天早上 6 点运行

0 6 * * * /home/pi/update.sh
Run Code Online (Sandbox Code Playgroud)

我知道它在某种程度上有效,因为sudo ./update.sh在 shell 中运行手动运行命令并在日志中留下“成功”条目。另一方面,当从 crontab 运行时,我总是得到“无法更新”条目。万一重要,“update.sh”脚本是由“pi”用户创建的,我从未更改过权限,除了给它执行权限。

我读了另一个关于同一问题的问题,那个人通过sudo在命令前面放了一个来解决它。他承认这很奇怪,因为它已经被 root 执行了,但说它有效。我尝试添加sudo并验证它现在确实有效。

有谁知道为什么会这样?sudo如果它已经是root,为什么还需要它?

linux bash shell cron raspberry-pi

6
推荐指数
2
解决办法
2万
查看次数

如何在crontab中使用变量中的变量

我正在尝试在 crontab 中的变量中使用变量:

AUTH=user:password
BASE_URL=http://...
COMMAND_OLDB=curl -u $AUTH $BASE_URL/openligadb >> /var/log/cron.openligadb.log
Run Code Online (Sandbox Code Playgroud)

但刚刚收到一封邮件/var/mail/root

X-Cron-Env: <BASE_URL=http://...>
X-Cron-Env: <AUTH=user:password>
X-Cron-Env: <COMMAND_OLDB=curl -u $AUTH $BASE_URL/openligadb >> /var/log/cron.openligadb.log>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <...>
Date: Mon,  9 Feb 2015 20:10:01 +0100 (CET)

Enter host password for user '$AUTH':
curl: (6) Couldn't resolve host '$BASE_URL'
curl: (6) Couldn't resolve host '>>'
curl: (3) <url> malformed
Run Code Online (Sandbox Code Playgroud)

/var/log/cron.openligadb.log本身是空的。 $AUTH以及$BASE_URL不会得到解决$COMMAND_OLDB。为什么以及如何解决?

linux cron

6
推荐指数
1
解决办法
4064
查看次数

从特定时间开始每小时的 cron 表达式

每隔一小时(从“现在”开始),我就可以使用 nodejs cron-job 使用此 cron 表达式(表达式)进行调度。

但是我需要从特定时间开始每隔一小时设置一次 cron。例如,假设它从凌晨 3:30 开始——我们可以这样做吗?这将是什么 cron 表达式?任何想法表示赞赏

cron crontab cronjob

6
推荐指数
2
解决办法
4万
查看次数

如何将 shell 脚本的输出作为 cron 作业邮寄

我创建了一个运行 shell 脚本的 cron 作业。我希望 shell 脚本运行并捕获它的输出,并在完成后通过电子邮件发送。到目前为止,这是我所拥有的,但邮件正文是空的。

我已经尝试了以下所有方法:

/root/myscript.sh | tee output.txt | mail -s "Email subject" me@mymail.com

/root/myscript.sh | tee output.txt | mail -s "Email subject" me@mymail.com &> /dev/null

/root/myscript.sh | tee output.txt && mail -s "Email subject" me@mymail.com < output.txt &> /dev/null

/root/myscript.sh > tee output.txt && mail -s "Email subject" me@mymail.com < output.txt &> /dev/null
Run Code Online (Sandbox Code Playgroud)

所有这些都正常运行,但它们会产生一封空正文的电子邮件。运行脚本确实会在 stdout 上产生输出。

linux email bash cron bash-scripting

6
推荐指数
1
解决办法
3万
查看次数

哪些 bash rc 文件在非交互式/非登录 shell 上运行?

我的理解

  • 没有为非交互式/非登录 shell 调用 rc 文件;例如,那些由cron运行的
    (我不确定这一点,并且会依靠社区的专业知识)

  • 非交互式shell 需要设置BASH_ENV环境变量,这样才能将其设置为特定的 rc 文件(例如,BASH_ENV=$HOME/.bash_profile

希望

我不确定是否有过多的 rc 文件可用,所以很好奇是否有我不熟悉的文件。希望找到一个满足以下条件的rc文件:

  • 无论交互/登录模式如何调用,因此全局 shell 环境变量可以在一个地方设置
  • 表现更像 csh/tcsh

linux bash cron bashrc bash-scripting

6
推荐指数
1
解决办法
3503
查看次数

如何在 cron 作业中处理夏令时

我在亚马逊 ec2 机器(Ubuntu 16.04)上有一个 cron 作业,该作业应该在中部时间凌晨 2:00 运行。

cron 作业是使用 UTC 时间安排的。由于中部时间目前是 UTC-5(我们目前处于夏令时),因此它看起来像这样:

0 7 * * * /home/ubuntu/runetl.sh
Run Code Online (Sandbox Code Playgroud)

因此它在 UTC 上午 7:00 运行,这是正确的。

但当我们回到标准时间时,中部时间将更改为 UTC-6,因此作业将在中部时间凌晨 1:00 开始运行。那不是我想要的。我希望它们始终在凌晨 2:00 运行,无论是白天还是标准时间。

我怎样才能做到这一点?

cron time-zone crontab

6
推荐指数
1
解决办法
1万
查看次数