Crontab添加不起作用

吉普赛宇航员

关于如何通过一个衬板通过终端添加crontab的问题,我经历了很多答案,并且到处都只遇到一个选项。

{crontab -l; echo "1 * * * * /usr/bin/firefox" } | crontab -

我收到的跑步是

>

而已。提示我键入一些内容。

第二个选择是

(crontab -l; echo "1 * * * * /usr/bin/firefox" ) | crontab -

这似乎增加了cron,/var/spool/cron/crontabs/root但并没有firefox每分钟打开一次,实际上它根本没有打开。

对于大多数答案,我读得最多,您不应该直接编辑/var/spool/cron/crontabs/root/etc/crontab文件。

我的系统不支持此功能吗?

的输出uname -a给出了我的系统的以下描述

Linux earth 4.9.0-kali4-amd64 #1 SMP Debian 4.9.30-2kali1 (2017-06-22) x86_64 GNU/Linux

编辑:以下消息日志经常在我的/var/spool/mail/mail日志中重复

From [email protected] Sun Jul 09 16:01:12 2017 
Return-path: < [email protected] > 
Envelope-to: [email protected] 
Delivery-date: Sun, 09 Jul 2017 16:01:12 +0530 
Received: from root by earth with local (Exim 4.89)   
    (envelope-from <[email protected]>)  
    id 1dU9UY-0001Ry-3A   
    for [email protected]; Sun, 09 Jul 2017 16:01:06 +0530 
From: [email protected] (Cron Daemon) 
To: [email protected] 
Subject: Cron <root@earth> /usr/bin/firefox 
MIME-Version: 1.0 
Content-Type: text/plain; charset=UTF-8 
Content-Transfer-Encoding: 8bit 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: < E1dU9UY-0001Ry-3A@earth > 
Date: Sun, 09 Jul 2017 16:01:06 +0530

Error: GDK_BACKEND does not match available displays
约翰尼斯

您的第二次尝试很可能是正确的,但您的期望是错误的。

让我们看一下它:

crontab -l

列出当前用户的crontab的所有现有条目。

echo "1 * * * * /usr/bin/firefox"

只是再次打印该行。然后将这两个命令分组到一个子外壳中,并将公共输出通过管道传递到

crontab -

因此,crontab被标准输入(在本例中为旧crontab加上新条目)输入的内容覆盖。

如您所说,它已添加到crontab文件中。并且,假设cron守护程序正在运行,该命令将在每分钟执行一次。

那么为什么不每分钟看到一个firefox窗口呢?-由于conrjob在cron守护程序下的另一个shell中运行,该shell无法访问您的X会话,因此firefox将失败并报告类似

(firefox:22376): Gtk-WARNING **: Locale not supported by C library.
    Using the fallback 'C' locale.
Error: GDK_BACKEND does not match available displays

并终止。怎么看那个错误?通常,cron守护程序会尝试向您发送邮件,/var/spool/mail最终请参见


关于两种形式:

{ crontab -l; echo "1 * * * * /usr/bin/firefox" } | crontab -

将必须写成

{ crontab -l; echo "1 * * * * /usr/bin/firefox"; } | crontab -

(注意多余的分号)

()之间的区别在于{}前者创建一个子shell,而后者则在同一shell上下文中执行命令。因此,变量分配以一种形式生存,而不以另一种形式生存。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章