首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何才能阻止crontab弄乱这个简单的BASH脚本(为什么会这样)?

我如何才能阻止crontab弄乱这个简单的BASH脚本(为什么会这样)?
EN

Stack Overflow用户
提问于 2010-08-25 19:01:39
回答 3查看 769关注 0票数 0

我有一个奇怪的问题,与通过cron (通过crontab -e调用)运行BASH脚本有关。

下面是脚本:

代码语言:javascript
复制
#!/bin/bash

SIG1="$(iwconfig wlan0 | awk '/Quality=/ { print $2} ' | cut -c 9-10)"
SIG2="$(iwconfig wlan0 | awk '/Quality=/ { print $2} ' | cut -c 12-13)"

echo "$SIG1:$SIG2" >> test.txt
exit

当从命令行运行时,我得到了回显到文本文件末尾的45:70的预期输出。但是,当我通过cron (使用crontab -e)和以下条目运行脚本时:

* * * * * bash /home/rupert/test.sh

我只是将冒号(:)回显到文本文件,值SIG1和SIG2没有创建,我不知道为什么。为什么通过cron运行会弄乱脚本?

这里是iwconfig wlan0的输出,没有额外的处理:

代码语言:javascript
复制
wlan0     IEEE 802.11abgn  ESSID:"plumternet"
          Mode:Managed  Frequency:2.452 GHz  Access Point: 00:18:84:2A:68:AD
          Bit Rate=54 Mb/s   Tx-Power=15 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=46/70  Signal level=-64 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

我之所以这样做,是因为我想在液晶屏上显示WiFi链接质量值"46/70“,而我使用的程序通过读取文本文件来实现这一点。但是,当通过cron运行时,值会丢失...?

我使用cut -c 9-10和cut -c 12-13,因为我认为"/“可能会在脚本中引起问题,我很乐意只使用cut -c 9-13,但我认为它可能会解决问题,但它没有。

救命!!

酷,感谢你们,我意识到这是一个路径问题,简单地给出iwconfig (/sbin/iwconfig)的完整路径就解决了这个问题。以下是显示所有正确信息的LCD屏幕的图片:

http://img835.imageshack.us/img835/4175/20100825122413.jpg

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-25 19:09:07

您需要提供通过cron执行的任何命令的完整路径。cron运行从任何终端分离的命令,这意味着您需要正确设置环境。cut可能是可用的,但给出了iwconfig和awk的绝对路径

票数 2
EN

Stack Overflow用户

发布于 2010-08-25 19:09:02

将此文件的权限更改为777

代码语言:javascript
复制
chmod 777 /home/rupert/test.sh

也许这会有帮助。

票数 0
EN

Stack Overflow用户

发布于 2010-08-25 19:09:22

我不知道(以一种干净的方式)防止这种情况发生的确切步骤(我并不完全是linux专家),但是,对我来说,这看起来像是权限问题。不允许运行cron作业的用户执行您要执行的命令之一。

如果你修复了权限,我想它可能会运行得很好!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3565164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档