我的 Ubuntu 机器出了问题。每隔 15-20 分钟,我的 wifi 就会停止工作。连接仍然正常,但无法访问互联网。
每当发生这种情况时 - 我都会重新启动网络管理器,并且在接下来的 15 分钟内一切都会正常。
我想做的是设置一个 CRON 作业来帮我完成这项工作。我的 crontab 中有以下内容...
*/2 * * * * service network-manager restart
(调试需要2分钟)
但这不起作用。我在网上看到,当通过 CRON 执行类似操作时,需要指定完整路径(我不知道)。
有人能帮我解决这个问题吗?
答案1
提问者表示他们最终将必要的路径添加到了 crontab 文件的顶部。我认为引导其他搜索此主题的人了解有关解决方案的更多信息很有用。
引用:
Cron 将一组最小的环境变量传递给您的作业。要查看差异,请添加如下虚拟作业:
- 环境 > /tmp/env.output
等待 /tmp/env.output 创建,然后再次删除该作业。现在将 /tmp/env.output 的内容与常规终端中 env run 的输出进行比较。
这里常见的“陷阱”是 PATH 环境变量不同。也许您的 cron 脚本使用了在 /opt/someApp/bin 中找到的命令 somecommand,而您已将其添加到 /etc/environment 中的 PATH?cron 不会读取该文件,因此使用 cron 运行时,从您的脚本运行 somecommand 将失败,但在终端中运行时可以正常工作。
...
您还可以在 crontab 文件中设置 PATH 变量,该变量将应用于所有 cron 作业。例如
> PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
>
> 15 1 * * * backupscript --incremental /home /root
答案2
您可以先查看日志文件 ( /var/log/*
),找出哪些文件提到了“您的 wifi”,可能是“ wlan0
”。如果没有,请使用ifconfig -a
列出您的接口。
在我的系统上,查找 wlan0 如下所示:
$ grep -li wlan0 /var/log/*
grep: /var/log/btmp: Permission denied
grep: /var/log/btmp.1: Permission denied
/var/log/dmesg.0
/var/log/kern.log
/var/log/kern.log.1
/var/log/pm-powersave.log
/var/log/pm-powersave.log.1
grep: /var/log/speech-dispatcher: Permission denied
/var/log/syslog
/var/log/syslog.1
/var/log/udev
请注意,我以非 root 用户身份运行了该命令,但是网络不使用btmp
日志speech-dispatcher
,因此我实际上不需要root
。
下一步是l
从中删除“ ”选项grep
,通过管道传输输出less
,并找到有趣的行(从时间戳或消息内容中)。
grep -i wlan0 /var/log/* | less
答案3
最后,我只需将所需的路径添加到 crontab 的顶部,一切就都成功了。互联网每 15 分钟就会不可用 30 秒左右,这对我来说没什么大不了的。
感谢大家的意见。