风景:

风景:

首先:

这不是重复的通过 cronjob 创建的 Cronjobs 不起作用这似乎可以通过简单地授予脚本执行权限和/或#!/bin/bash在脚本开头添加来解决。

我尝试过网络、论坛和其他地方发布的一些建议,但还没有成功。

风景:

我在尝试/usr/bin通过 cronjob 运行自定义脚本时遇到了一些问题。例如:我使用带有 i3WM 平铺窗口管理器的 Ubuntu 14.04.3,在其中尝试运行名为的自定义脚本,该脚本应通过命令wall行更改壁纸。feh

当通过终端或 i3wm 菜单栏调用时,墙上脚本确实运行良好,这表明脚本应该运行,但是,它却没有运行。

剧本

wall当我通过查找脚本时whereis wall,终端显示以下结果:

wall: /usr/bin/wall /usr/bin/X11/wall /usr/share/man/man1/wall.1.gz

/usr/bin我不知道为什么我在和目录中都有该脚本的副本,/usr/bin/X11但当我手动运行它时,它们都执行相同的操作。当我将它放在 crontab 上时,这两个都不执行任何操作。

脚本内容如下:

feh --bg-scale "`shuf -n1 -e ~/.i3/wall/*`"

此命令将从 ~/.i3/wall 文件夹中获取随机图像,并将该图像缩放到桌面大小,以用作背景图像。

脚本文件属性如下所示:

geppettvs@T400:~$ ls /usr/bin -l | grep wall
-rwxr-xr-x 1 root      root       2067448 oct 21  2013 fotowall
-rwxr-xr-x 1 root      root          6264 oct 27 09:21 kwalletd
-rwxr-sr-x 1 root      tty             45 ene 27 07:51 wall
-rwxr-xr-x 1 root      root          1747 abr 25  2014 wallpaper-changer

我刚刚注意到该属性仅在脚本中的“tty”上有所不同,我将其更改为 root 后就chown没有任何区别。

crontab

我的用户的 crontab 当前包含以下内容:

GNU nano 2.2.6 File: /tmp/crontab.Fb84OE/crontab                                                                            

# m h  dom mon dow   command
# * * * * * /home/geppettvs/wifirc.sh # JOB_ID_2
* * * * * /usr/bin/wall # JOB_ID_4

我的根用户 crontab 如下所示:

# m h  dom mon dow   command

@reboot sudo iwconfig wlan0 rate 54M
* * * * * wall

但是,用户的 crontab 和 root crontab 都不会对该脚本执行任何操作。

请记住,这次我谈论的是一个简单的壁纸更换器脚本。但我还有一些其他脚本,当我将它们放入 crontab 中时,它们不会运行。

其他尝试

我已经尝试#!/bin/bash在脚本的第一行使用,在脚本和/或 crontab 文件的顶部/底部保留或删除空白行。但似乎没有效果。尝试使用绝对路径或仅通过名称调用脚本(确实在终端上有效)也是如此。

日志

日志如下:

Feb 13 17:20:01 T400 CRON[9093]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:20:01 T400 CRON[9094]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:21:01 T400 CRON[10290]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:21:01 T400 CRON[10291]: (root) CMD (wall)
Feb 13 17:21:01 T400 CRON[10289]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:21:01 T400 CRON[10288]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:22:01 T400 CRON[11575]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:22:01 T400 CRON[11578]: (root) CMD (wall)
Feb 13 17:22:01 T400 CRON[11573]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:22:01 T400 CRON[11574]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:23:01 T400 CRON[12860]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:23:01 T400 CRON[12862]: (root) CMD (wall)
Feb 13 17:23:01 T400 CRON[12859]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:23:01 T400 CRON[12858]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:24:01 T400 CRON[14157]: (root) CMD (wall)
Feb 13 17:24:01 T400 CRON[14158]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:24:01 T400 CRON[14155]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:24:01 T400 CRON[14156]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:25:01 T400 CRON[15448]: (geppettvs) CMD (/usr/bin/wall # JOB_ID_4)
Feb 13 17:25:01 T400 CRON[15450]: (root) CMD (wall)
Feb 13 17:25:01 T400 CRON[15447]: (root) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)
Feb 13 17:25:01 T400 CRON[15446]: (geppettvs) MAIL (mailed 1 byte of output; but got status 0x00ff, #012)

这似乎正在运行脚本,但是每次脚本运行迭代时都没有发生任何事情。

问题

我是不是做错了什么?或者我应该尝试其他什么?

任何帮助都将受到赞赏。

更新

正如评论中提到的那样j0h 的建议,我也尝试使用图像文件夹的绝对路径。

命令现在看起来像

feh --bg-scale "`shuf -n1 -e /home/geppettvs/.i3/wall/*`" 

它确实在终端上运行,但不能通过 cron 运行。

我猜测问题出在重音符号 (`) 上,它可能会导致 cronjob 执行中断。

尽管如此,我还是尝试将重音符更改为其他符号,之后该命令在任何地方都停止工作。您可以看到终端的输出,如下所示:

geppettvs@T400:~$ feh --bg-scale "'shuf -n1 -e /home/geppettvs/.i3/wall/*'" 
feh WARNING: 'shuf -n1 -e /home/geppettvs/.i3/wall/*' does not exist - skipping
feh: No loadable images specified.
See 'man feh' for detailed usage information

欢迎任何帮助改进此命令的帮助。提前致谢。

相关内容