所以,我被一个非常奇特的垃圾邮件机器人困住了:cron.
每天,我都会收到以下电子邮件:
Run Code Online (Sandbox Code Playgroud)/etc/cron.daily/apt: FATAL -> Failed to fork.
什么会导致这个错误?我/etc/cron.daily/apt的和默认安装的一样,所以它显然是别的东西。
我不关心 cron 给我发送邮件(因为它给了我很多有用的问题/数据)。我只想解决手头的问题。
我正在尝试使用 cron 来自动化我的系统更新。您可以在下面看到我的 crontab、命令和由此产生的错误。
当我以 root 身份运行 upgrades.sh 时,脚本运行良好。当 cron 运行它时,apt-get -y update运行没有问题,但aptitude -y safe-upgrade失败了。我猜这个错误:debconf: (This frontend requires a controlling tty.)是因为有一个内核更新,它反过来更新 grub,这需要我明确说可以覆盖/boot/grub/menu.lst. 但我不明白路径错误。我想要不需要我监督的更新。
我已经通读了这个问题,它是尚未被接受的解决方案unattended-upgrades,我可能最终会使用它,但为什么我不能使用 cron?看起来它应该非常简单,而且更加 linuxy。
root@daedalus:~/bin# crontab -l
# m h dom mon dow command
45 06 * * * ~/bin/upgrades.sh
Run Code Online (Sandbox Code Playgroud)
root@daedalus:~/bin# cat upgrades.sh
#!/bin/bash
/usr/bin/apt-get -y update
/usr/bin/aptitude -y safe-upgrade
Run Code Online (Sandbox Code Playgroud)
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog …Run Code Online (Sandbox Code Playgroud) 我有一个程序可以打印一些输出,我想在工作日每小时在我的终端上弹出一次。
$ crontab -l
0 07-17 * * * /home/dat/scripts/cron.out
Run Code Online (Sandbox Code Playgroud)
系统日志报告以下内容:
(dat) CMD (/home/dat/scripts/cron.exe)
Jun 18 12:02:01 picard CRON[10848]: (CRON) info (No MTA installed, discarding output)
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我已经做了很多谷歌搜索,但一直无法找到解决我的问题的方法。
我是一名老师,我在一些学生电脑上使用 Xubuntu。我把所有东西都锁定得很好,但我不知道如何限制用户更改壁纸而不必在 Kiosk 模式下关闭整个机器。我不在乎他们是否在工作会话期间更改它,但我想创建一个 crontab,在重新启动时重置回原始 .png。
我希望有一个简单的 cron 条目,但如果需要的话,我愿意轻松进入 shell 脚本的世界。
有任何想法吗?
我正在运行 Ubuntu 12.04,我已经使用我的 gmail 帐户配置了“ssmtp”,现在我每小时都会收到一封带有报告的电子邮件,这是一个示例:
From: root <my@gmail.com> Date: 2012/8/13 Subject: Cron <root@one> [
-x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth
-mindepth 1 -maxdepth 1 -type f -cmin
+$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete To: root
Failed loading /usr/lib/php5/20090626/xdebug.so:
/usr/lib/php5/20090626/xdebug.so: cannot open shared object file: No
such file or directory
Run Code Online (Sandbox Code Playgroud)
更多信息:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"
Run Code Online (Sandbox Code Playgroud)
更多的...
$ sudo crontab -l -u root
no crontab for root
Run Code Online (Sandbox Code Playgroud)
更多的... …
最近我每天都收到来自服务器的邮件,
主题
Cron <root@host> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Run Code Online (Sandbox Code Playgroud)
身体
/etc/cron.daily/apt:
DB Update failed, database locked
Run Code Online (Sandbox Code Playgroud)
如果我只是运行该/etc/cron.daily/apt部分,它只是停留在那里而没有输出,我尝试运行tail -f /var/log/apt/*.log /var/log/syslog &然后运行/etc/cron.daily/apt但也没有输出
哪个数据库被锁定,被什么锁定,我能够apt-get update成功。
昨天做了一些更新,不得不重新启动,所以微软修复在这里不起作用(这在更新之前一直在发生,所以不相关)
我还能看什么?
这是一个亚马逊实例,因为它很重要
如果你使用会发生什么:
sudo crontab -e
Run Code Online (Sandbox Code Playgroud)
并添加以下行:
@reboot reboot
Run Code Online (Sandbox Code Playgroud)
会不会进入无限循环重启?!
我想将以下命令链作为 cronjob:
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
Run Code Online (Sandbox Code Playgroud)
它在控制台中工作,但我没有从 cronjob 中得到任何输出。
我遵循了这个建议,将其替换为
* * * * * env > /tmp/env.output
Run Code Online (Sandbox Code Playgroud)
找出 env 是否不同。除了 PATH 不同之外,我找不到任何相关的东西。然后我设置了
PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用。最后我用
PATH=myPath
* * * * * source activate myenv3 && cd ~/foo/bar && python sssb.py
* * * * * env > /tmp/env.output
Run Code Online (Sandbox Code Playgroud)
而这次我什至没有拿到env.output文件。因此,我认为我的语法有问题 - 但它看起来与我在网上找到的多命令建议完全一样。
这里发生了什么?如果不明显,接下来我可以用什么来追踪错误? …
尝试解决 KWORKERS HIGH CPU 的错误,如本答案中所建议。我在我的 crontab 中放入了一行:
@reboot echo "disable" > /sys/firmware/acpi/interrupts/gpe06
Run Code Online (Sandbox Code Playgroud)
重启后,系统不启动。同样在单用户模式下它不会启动。
我使用以下选项重新启动了我的电脑:
init=/bin/bash
Run Code Online (Sandbox Code Playgroud)
我删除了根 crontab 中的行,但系统没有启动。